Xlera8

기계 학습을 위한 확산 모델 소개

이 기사는 원래에 게시되었습니다. 어셈블리AI 저자의 허가를 받아 TOPBOTS에 다시 게시.

확산 모델은 지난 몇 년 동안 상당한 인기를 얻은 생성 모델이며 그럴만한 이유가 있습니다. 2020년대에 발표된 소수의 획기적인 논문 혼자 GAN을 능가하는 것과 같이 Diffusion 모델이 무엇을 할 수 있는지 세계에 보여주었습니다.[6] 이미지 합성에. 가장 최근에 실무자는 다음에서 사용되는 확산 모델을 보았을 것입니다. 달-이 2, 지난달 공개된 OpenAI의 이미지 생성 모델.

DALL-E 2에서 생성된 다양한 이미지( ).

최근 확산 모델의 성공 물결을 감안할 때 많은 기계 학습 실무자는 내부 작동에 확실히 관심이 있습니다. 이 기사에서 우리는 확산 모델의 이론적 기초, 다음으로 이미지를 생성하는 방법을 보여줍니다. PyTorch의 확산 모델. 뛰어 들자!

이 심층 교육 콘텐츠가 도움이된다면 AI 메일링 리스트에 가입 새로운 자료를 공개 할 때 경고를받습니다. 

확산 모델 – 소개

확산 모델은 생성적인 이는 모델이 훈련된 데이터와 유사한 데이터를 생성하는 데 사용됨을 의미합니다. 기본적으로 확산 모델은 다음과 같이 작동합니다. 훈련 데이터 파괴 가우스 노이즈의 연속적인 추가를 통해 회복하는 법 배우기 에 의한 데이터 반전 이 소음 과정. 훈련 후, 우리는 확산 모델을 사용하여 간단히 데이터를 생성할 수 있습니다. 학습된 노이즈 제거 프로세스를 통해 무작위로 샘플링된 노이즈를 전달합니다.

확산 모델을 사용하여 노이즈로부터 이미지를 생성할 수 있습니다.  )

보다 구체적으로, 확산 모델은 고정 마르코프 체인을 사용하여 잠재 공간에 매핑되는 잠재 변수 모델입니다. 이 체인은 대략적인 사후 q(x1:티|x0), 여기서 x1,…,엑스T x와 같은 차원을 갖는 잠재 변수0. 아래 그림에서 우리는 이미지 데이터에 대해 이러한 Markov 체인이 나타나는 것을 볼 수 있습니다.

궁극적으로 이미지는 순수한 가우스 노이즈로 점근적으로 변환됩니다. 그만큼  확산 모델을 훈련하는 것은  프로세스 – 즉 교육 pθ(xt-1|xt). 이 체인을 따라 뒤로 이동하여 새로운 데이터를 생성할 수 있습니다.

확산 모델의 이점

위에서 언급했듯이 확산 모델에 대한 연구는 최근 몇 년 동안 폭발적으로 증가했습니다. 비평형 열역학에서 영감을 얻었습니다.[1], 확산 모델은 현재 생산 최첨단 이미지 품질, 그 예는 아래에서 볼 수 있습니다.

첨단 이미지 품질 외에도 확산 모델에는 다음과 같은 다양한 이점이 있습니다. 적대적 훈련이 필요하지 않음. 적대적 훈련의 어려움은 잘 문서화되어 있습니다. 그리고 성능과 교육 효율성이 비슷한 비적대적 대안이 있는 경우 일반적으로 이를 활용하는 것이 가장 좋습니다. 교육 효율성이라는 주제에 대해 확산 모델에는 다음과 같은 추가 이점이 있습니다. 확장성 및 병렬화 가능성.

확산 모델은 거의 무의미한 결과를 산출하는 것처럼 보이지만 이러한 결과의 기초를 제공하는 신중하고 흥미로운 수학적 선택과 세부 사항이 많이 있으며 모범 사례는 여전히 문헌에서 진화하고 있습니다. 이제 확산 모델을 뒷받침하는 수학 이론을 더 자세히 살펴보겠습니다.

확산 모델 – 심층 분석

위에서 언급했듯이 확산 모델은 다음으로 구성됩니다. 포워드 프로세스 (또는 확산 과정), 데이터(일반적으로 이미지)에 점진적으로 노이즈가 발생하고, 역 과정 (또는 역확산 과정), 노이즈가 대상 분포의 샘플로 다시 변환됩니다.

순방향 프로세스의 샘플링 체인 전환은 노이즈 레벨이 충분히 낮을 때 조건부 가우시안으로 설정할 수 있습니다. 이 사실을 Markov 가정과 결합하면 순방향 프로세스의 간단한 매개변수화로 이어집니다.

수학 노트

우리는 데이터 손상에 대해 이야기했습니다. 첨가 가우스 잡음이지만 처음에는 이 추가를 수행하는 위치가 명확하지 않을 수 있습니다. 위의 방정식에 따르면 체인의 각 단계에서 평균이 체인의 이전 값(즉, 이미지)인 가우스 분포에서 단순히 샘플링합니다.

이 두 문장은 동일합니다. 그건

그 이유를 이해하기 위해 다음을 주장함으로써 약간의 표기법 남용을 활용할 것입니다.

최종 의미는 확률 변수의 합과 분포의 컨볼루션 간의 수학적 동등성에서 비롯됩니다. 이 Wikipedia 페이지 

다시 말해서, 우리는 가우스 분포의 평균을 통해 이전 시간 단계에 대해 조건화된 시간 단계의 분포를 주장하는 것이 주어진 시간 단계의 분포가 가우스 노이즈가 추가된 이전 시간 단계의 분포라고 주장하는 것과 동일하다는 것을 보여주었습니다. 분산 일정에 의해 도입된 스칼라를 생략하고 단순화를 위해 이를 XNUMX차원으로 표시했지만 다변량 가우시안에 대해서도 유사한 증거가 있습니다.

어디 β1,…,βT 잘 행동하는 경우 분산 일정(학습된 또는 고정된)입니다. 보장 xT 충분히 큰 T에 대해 거의 등방성 가우스입니다.

마르코프 가정이 주어지면 잠재 변수의 공동 분포는 가우스 조건부 연쇄 전이의 곱입니다(다음에서 수정됨  ).

앞서 언급했듯이 확산 모델의 "마법"은 역 과정. 훈련 중에 모델은 새로운 데이터를 생성하기 위해 이 확산 프로세스를 역전시키는 방법을 학습합니다. 순수 가우스 잡음 p(xT):=N(엑스T,0,I) 모델은 공동 분포 p를 학습합니다.θ(x0:티) 처럼

여기서 가우스 전환의 시간 종속 매개변수가 학습됩니다. 특히 Markov 공식은 주어진 역확산 전이 분포가 이전 시간 단계(또는 보는 방법에 따라 다음 시간 단계)에만 의존한다고 주장합니다.

트레이닝

확산 모델은 다음과 같이 훈련됩니다. 훈련 데이터의 가능성을 최대화하는 역 마르코프 전이를 찾는 것. 실제로 훈련은 음의 로그 가능성에 대한 변동 상한을 최소화하는 것으로 동등하게 구성됩니다.

표기법 세부사항

참고 LVLB 기술적으로 상단 최소화하려는 경계(ELBO의 음수)이지만 L이라고 합니다.VLB 문헌과의 일관성을 위해.

우리는 L을 다시 쓰려고 합니다.VLB 측면에서 Kullback-Leibler(KL) 발산. KL Divergence는 하나의 확률 분포가 얼마나 많은지를 나타내는 비대칭 통계적 거리 측정입니다. P 참조 분포와 다름 Q. 우리는 L 공식화에 관심이 있습니다.VLB 마르코프 체인의 전이 분포가 가우스 분포이기 때문에 KL 발산의 관점에서 볼 때 Gaussian 사이의 KL divergence는 닫힌 형태를 가집니다.

KL 다이버전스란?

연속 분포에 대한 KL 발산의 수학적 형식은 다음과 같습니다.

이중 막대는 함수가 인수에 대해 대칭이 아님을 나타냅니다.

아래에서 다양한 분포의 KL 발산을 볼 수 있습니다. P (파란색) 참조 분포에서 Q (빨간색). 녹색 곡선은 위의 KL 발산에 대한 정의에서 적분 내의 함수를 나타내고 곡선 아래의 총 면적은 의 KL 발산 값을 나타냅니다. P 에 Q 주어진 순간에 숫자로도 표시되는 값입니다.

주조 레벨 KL 다이버전스의 관점에서

앞서 언급했듯이 [1] L을 다시 쓰다VLB 거의 완전히 KL 발산의 관점에서:

어디에

파생 세부 사항

변동 한계는 다음과 같습니다.

마르코프 가정에 따라 분포를 정의로 바꾸면 다음을 얻습니다.

로그 규칙을 사용하여 표현식을 로그의 합으로 변환한 다음 첫 번째 항을 꺼냅니다.

Bayes의 정리와 Markov 가정을 사용하면 이 식은 다음과 같이 됩니다.

그런 다음 로그 규칙을 사용하여 중간 기간을 분할합니다.

두 번째 항을 분리하면

이것을 다시 L에 대한 방정식에 대입하면VLB, 우리는

로그 규칙을 사용하여 재정렬

d8

다음으로 두 분포에 대한 KL 발산에 대해 다음과 같은 동등성을 확인합니다.

마지막으로 이 등가식을 이전 식에 적용하면 다음과 같이 됩니다.

x에 대한 후방 프로세스 컨디셔닝0 안에t-1 결과로 이어지는 다루기 쉬운 형태 모든 KL 발산은 가우시안 간의 비교입니다. 이것은 발산이 몬테카를로 추정보다는 폐쇄형 표현식으로 정확하게 계산될 수 있음을 의미합니다.[3].

모델 선택

목적 함수에 대한 수학적 기초가 확립되었으므로 이제 확산 모델을 구현하는 방법에 대해 몇 가지 선택을 해야 합니다. 전달 프로세스의 경우 필요한 유일한 선택은 분산 일정을 정의하는 것이며, 그 값은 일반적으로 전달 프로세스 동안 증가합니다.

역 프로세스의 경우 가우스 분포 매개변수화/모델 아키텍처를 많이 선택합니다. 참고 높은 유연성 확산 모델이 제공하는 –  우리 아키텍처의 요구 사항은 입력과 출력이 동일한 차원을 갖는 것입니다.

이러한 선택에 대한 세부 정보는 아래에서 더 자세히 살펴보겠습니다.

순방향 프로세스 및 LT

위에서 언급했듯이 전달 프로세스와 관련하여 분산 일정을 정의해야 합니다. 특히, 우리는 그것들을 다음과 같이 설정했습니다. 시간 종속 상수, 학습할 수 있다는 사실을 무시합니다. 예를 들어[3], β에서 선형 일정1= 10- 4 에 βT=0.2 또는 기하 급수를 사용할 수 있습니다.

선택한 특정 값에 관계없이 분산 일정이 고정되어 있다는 사실은 LT 학습 가능한 매개변수 세트와 관련하여 상수가 되어 훈련에 관한 한 무시할 수 있습니다.

역과정과 L1:T-1

이제 우리는 역 프로세스를 정의하는 데 필요한 선택에 대해 논의합니다. 위에서 우리는 역 마르코프 전환을 가우스로 정의했습니다.

이제 μ의 기능적 형태를 정의해야 합니다.θ 또는 Σθ. Σ를 매개변수화하는 더 복잡한 방법이 있지만θ[5], 우리는 단순히 설정

즉, 다변수 가우스는 시간에 따라 변할 수 있는 분산 값이 동일한 분산을 갖는 독립 가우시안의 곱이라고 가정합니다. 우리 이러한 차이를 앞으로의 프로세스 차이 일정과 동일하게 설정합니다.

Σ의 이 새로운 공식이 주어지면θ, 우리는

우리가 변형할 수 있게 해주는

여기서 차이의 첫 번째 항은 x의 선형 조합입니다.t 그리고 엑스0 이는 분산 일정 β에 따라 다릅니다.t. 이 함수의 정확한 형식은 우리의 목적과 관련이 없지만 [3].

위 비율의 의미는 μ의 가장 간단한 매개변수화θ 단순히 확산 사후 평균을 예측합니다. 중요한 것은 [3] 실제로 훈련 μθ 예측하다 소음 주어진 시간 단계에서 구성 요소를 사용하면 더 나은 결과를 얻을 수 있습니다. 특히, 하자

어디에

이것은 다음과 같은 대체 손실 함수로 이어집니다., [3] 더 안정적인 훈련과 더 나은 결과로 이어지는 것으로 나타났습니다.

[의 저자3] 또한 Langevin 역학을 기반으로 한 스코어 매칭 생성 모델에 대한 확산 모델 공식화의 연결에 주목하십시오. 실제로, 확산 모델과 점수 기반 모델은 동일한 현상의 두 가지 등가 공식을 나타내는 파동 기반 양자 역학 및 매트릭스 기반 양자 역학의 독립적이고 동시적인 개발과 유사한 동전의 양면일 수 있습니다.[2].

네트워크 아키텍처

단순화된 손실 함수가 모델 ϵ를 훈련하는 동안θ, 우리는 아직 이 모델의 아키텍처를 정의하지 않았습니다. 참고로  모델에 대한 요구 사항은 입력 및 출력 차원이 동일해야 한다는 것입니다.

이러한 제한을 감안할 때 이미지 확산 모델이 일반적으로 U-Net과 같은 아키텍처로 구현되는 것은 놀라운 일이 아닙니다.

역 프로세스 디코더 및 L0

역 과정을 따르는 경로는 연속 조건부 가우스 분포에서 많은 변환으로 구성됩니다. 역 과정이 끝나면 우리는 영상, 정수 픽셀 값으로 구성됩니다. 따라서 우리는 얻을 수 있는 방법을 강구해야 합니다. 이산(로그) 가능성 모든 픽셀에서 가능한 각 픽셀 값에 대해

이것이 수행되는 방법은 역확산 체인의 마지막 전환을 다음으로 설정하는 것입니다. 독립 이산 디코더. 주어진 이미지 x의 가능성을 결정하려면0 주어진 x1, 먼저 데이터 차원 간에 독립성을 적용합니다.

여기서 D는 데이터의 차원이고 위 첨자입니다. i 하나의 좌표 추출을 나타냅니다. 이제 목표는 각 정수 값이 주어진 픽셀에 대해 얼마나 가능성이 있는지 결정하는 것입니다. 주어진 시간 t=1에서 약간 노이즈가 있는 이미지의 해당 픽셀에 대한 가능한 값의 분포:

여기서 t=1에 대한 픽셀 분포는 대각선 공분산 행렬을 사용하여 분포를 데이터의 각 차원에 대해 하나씩 일변량 가우스의 곱으로 분할할 수 있는 아래의 다변량 가우시안에서 파생됩니다.

이미지가 [−0,1]로 선형으로 스케일된 255,…,1,1(표준 RGB 이미지와 같이)의 정수로 구성되어 있다고 가정합니다. 그런 다음 실제 라인을 작은 "버킷"으로 나눕니다. 여기서 주어진 스케일링된 픽셀 값에 대해 x, 해당 범위의 버킷은 [x−1/255, x+1/255]입니다. 픽셀 값의 확률 x, x에서 대응하는 픽셀의 일변량 가우스 분포가 주어졌을 때1, 이다 에 중심을 둔 버킷 내 해당 일변량 가우스 분포 아래의 영역 x.

아래에서 평균 픽셀 값이 0/255(반 밝기)인 분포에 해당하는 평균 2 가우시안에 대한 확률과 함께 이러한 버킷 각각의 영역을 볼 수 있습니다. 빨간색 곡선은 특정 픽셀의 분포를 나타냅니다. t = 1 이미지 및 영역은 해당 픽셀 값의 확률을 제공합니다. t = 0 영상.

기술 노트

첫 번째 및 마지막 버킷은 전체 확률을 유지하기 위해 -inf 및 +inf로 확장됩니다.

주어진 t = 0 각 픽셀에 대한 픽셀 값, p의 값θ(x0|x1)는 단순히 그들의 제품입니다. 이 프로세스는 다음 방정식으로 간결하게 요약됩니다.

어디에

p에 대한 이 방정식이 주어졌을 때θ(x0|x1), 우리는 L의 최종 항을 계산할 수 있습니다VLB 이는 KL 다이버전스로 공식화되지 않습니다.

최종 목표

마지막 섹션에서 언급했듯이 [3]는 주어진 시간 단계에서 이미지의 노이즈 성분을 예측하는 것이 최상의 결과를 생성한다는 것을 발견했습니다. 궁극적으로 다음 목표를 사용합니다.

따라서 우리의 확산 모델에 대한 훈련 및 샘플링 알고리즘은 아래 그림에서 간결하게 캡처할 수 있습니다.

확산 모델 이론 요약

이 섹션에서 우리는 확산 모델 이론에 대해 자세히 살펴보았습니다. 수학적 세부 사항에 빠지기 쉬울 수 있으므로 조감도에서 방향을 유지하기 위해 아래 이 섹션에서 가장 중요한 사항을 기록합니다.

  1. 우리의 확산 모델은 다음과 같이 매개변수화됩니다. 마르코프 사슬, 이는 우리의 잠재 변수 x를 의미합니다.1,…,엑스T 이전(또는 다음) 시간 단계에만 의존합니다.
  2. XNUMXD덴탈의 전이 분포 마르코프 사슬에서 가우시안, 순방향 프로세스에는 분산 일정이 필요하고 역방향 프로세스 매개변수는 학습됩니다.
  3. 확산 과정은 xT is 등방성 가우스 분포로 점근적으로 분포 충분히 큰 T.
  4. 우리의 경우, 변동 일정이 수정되었습니다, 그러나 그것은 또한 배울 수 있습니다. 고정 일정의 경우 기하학적 진행을 따르는 것이 선형 진행보다 더 나은 결과를 제공할 수 있습니다. 두 경우 모두 분산은 일반적으로 시계열에서 시간이 지남에 따라 증가합니다(즉, βij 나를 위해
  5. 확산 모델은 매우 유연한 그리고 허용 어떤 입력 및 출력 차원이 동일한 아키텍처를 사용합니다. 많은 구현이 사용 U-Net 같은 아키텍처.
  6. XNUMXD덴탈의 훈련 목표 훈련 데이터의 가능성을 최대화하는 것입니다. 이것은 모델 매개변수를 조정하는 것으로 나타납니다. 데이터의 음의 로그 가능성의 변동 상한 최소화.
  7. 목적 함수의 거의 모든 항은 다음과 같이 캐스팅할 수 있습니다. KL 다이버전스 Markov 가정의 결과입니다. 이러한 값 계산하기 쉬워지다 가우스를 사용하고 있으므로 Monte Carlo 근사를 수행할 필요가 없습니다.
  8. 궁극적으로 단순화된 교육 목표 주어진 잠재 변수의 노이즈 성분을 예측하는 함수를 훈련하는 것이 가장 좋고 가장 안정적인 결과를 산출합니다.
  9. 이산 디코더 역확산 프로세스의 마지막 단계로 픽셀 값에 대한 로그 가능성을 얻는 데 사용됩니다.

확산 모델에 대한 높은 수준의 개요를 염두에 두고 PyTorch에서 확산 모델을 사용하는 방법을 살펴보겠습니다.

PyTorch의 확산 모델

기계 학습의 다른 이전 아키텍처/접근법과 같은 정도로 확산 모델이 아직 민주화되지 않았지만 여전히 사용할 수 있는 구현이 있습니다. PyTorch에서 확산 모델을 사용하는 가장 쉬운 방법은 denoising-diffusion-pytorch 이 기사에서 논의된 것과 같은 이미지 확산 모델을 구현하는 패키지. 패키지를 설치하려면 터미널에 다음 명령을 입력하기만 하면 됩니다.

pip install denoising_diffusion_pytorch

최소한의 예

모델을 훈련하고 이미지를 생성하려면 먼저 필요한 패키지를 가져옵니다.

import torch
from denoising_diffusion_pytorch import Unet, GaussianDiffusion

다음으로 네트워크 아키텍처(이 경우 U-Net)를 정의합니다. 그만큼 dim 매개변수는 첫 번째 다운샘플링 전에 기능 맵의 수를 지정하고 dim_mults 매개변수는 이 값과 연속적인 다운샘플링에 대한 승수를 제공합니다.

model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
)

이제 네트워크 아키텍처가 정의되었으므로 확산 모델 자체를 정의해야 합니다. 생성할 이미지의 크기, 확산 프로세스의 시간 단계 수, L1 및 L2 표준 사이의 선택과 같은 몇 가지 매개변수와 함께 방금 정의한 U-Net 모델을 전달합니다.

diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
)

이제 확산 모델이 정의되었으므로 학습할 시간입니다. 학습할 무작위 데이터를 생성한 다음 일반적인 방식으로 확산 모델을 학습합니다.

training_images = torch.randn(8, 3, 128, 128)
loss = diffusion(training_images)
loss.backward()

모델이 훈련되면 최종적으로 다음을 사용하여 이미지를 생성할 수 있습니다. sample() 방법 diffusion 물체. 여기에서 우리는 훈련 데이터가 무작위인 경우 노이즈만 있는 4개의 이미지를 생성합니다.

sampled_images = diffusion.sample(batch_size = 4)

사용자 지정 데이터에 대한 교육

XNUMXD덴탈의 denoising-diffusion-pytorch 패키지를 사용하면 특정 데이터 세트에서 확산 모델을 훈련할 수도 있습니다. 간단히 교체 'path/to/your/images' 데이터 세트 디렉토리 경로가 있는 문자열 Trainer() 아래 개체 및 변경 image_size 적절한 값으로. 그런 다음 코드를 실행하여 모델을 훈련하고 이전과 같이 샘플링하면 됩니다. PyTorch를 사용하려면 CUDA가 활성화된 상태로 컴파일해야 합니다. Trainer 수업:

from denoising_diffusion_pytorch import Unet, GaussianDiffusion, Trainer
model = Unet(
 dim = 64,
 dim_mults = (1, 2, 4, 8)
).cuda()
diffusion = GaussianDiffusion(
 model,
 image_size = 128,
 timesteps = 1000, # number of steps
 loss_type = 'l1' # L1 or L2
).cuda()
trainer = Trainer(
 diffusion,
 'path/to/your/images',
 train_batch_size = 32,
 train_lr = 2e-5,
 train_num_steps = 700000, # total training steps
 gradient_accumulate_every = 2, # gradient accumulation steps
 ema_decay = 0.995, # exponential moving average decay
 amp = True # turn on mixed precision
)
trainer.train()

아래에서 역확산과 유사한 다변수 가우스 잡음에서 MNIST 숫자까지 점진적인 잡음 제거를 볼 수 있습니다.

최종 단어

확산 모델은 데이터 생성 문제에 대한 개념적으로 간단하고 우아한 접근 방식입니다. 비적대적 훈련과 결합된 그들의 최첨단 결과는 그들을 크게 발전시켰으며, 초기 상태를 감안할 때 향후 몇 년 동안 추가 개선이 예상될 수 있습니다. 특히, 확산 모델은 다음과 같은 최첨단 모델의 성능에 필수적인 것으로 밝혀졌습니다. 달-이 2.

참고자료

[1] 비평형 열역학을 사용한 심층 비지도 학습

[2] 데이터 분포의 기울기를 추정하여 생성 모델링

[3] 잡음 제거 확산 확률 모델

[4] 점수 기반 생성 모델 훈련을 위한 향상된 기술

[5] 개선된 잡음 제거 확산 확률 모델

[6] 이미지 합성에서 GAN을 능가하는 확산 모델

[7] GLIDE: 사실적인 이미지 생성 및 텍스트 유도 확산 모델 편집을 향하여

[8] CLIP Latents를 사용한 계층적 텍스트 조건부 이미지 생성

이 기사를 즐기십니까? 더 많은 AI 연구 업데이트에 가입하십시오.

이와 같은 더 많은 요약 기사를 발표하면 알려 드리겠습니다.

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?