Normalizing flows는 생성 모델의 한 종류로, 머신 러닝에서 단순한 기저 분포에 일련의 가역 변환을 적용하여 확률 분포를 명시적으로 모델링한다. 이 방법은 확률의 변수 변환 법칙을 활용하여 가우시안과 같은 단순한 분포를 복잡한 목표 분포로 변환한다. 이러한 우도(likelihood)의 직접 모델링은 장점을 제공한다. 즉, 음의 로그 우도를 손실 함수로 계산하고 최소화할 수 있으며, 기저 분포에서 샘플링하고 플로우 변환을 적용하여 새로운 샘플을 생성할 수 있다. 반면, 변분 오토인코더(VAE), 생성적 적대 신경망(GAN), 확산 모델과 같은 다른 생성 모델링 방법은 우도 함수를 명시적으로 표현하지 않는다.
'Normalizing flow'라는 용어는 두 가지 측면을 반영한다. 'Normalizing'은 변환이 정규화된 확률 밀도(적분 값이 1)를 생성한다는 사실을 나타내고, 'flow'는 기저 분포를 목표 분포로 '흐르게' 하는 변환의 순차적 구성을 의미한다. 플로우 기반 모델은 이미지 생성, 밀도 추정, 이상 탐지와 같은 분야에 적용되었으며, RealNVP 및 Glow와 같은 더 발전된 아키텍처의 기초를 형성한다.
방법
\( z_0 \)를 (아마도 다변량) 확률 변수로 하고 분포를 \( p_0(z_0) \)라고 하자. \( i = 1, \dots, K \)에 대해 \( z_i = f_i(z_{i-1}) \)를 \( z_0 \)에서 변환된 일련의 확률 변수라고 하자. 함수 \( f_1, \dots, f_K \)는 가역적이어야 하며, 즉 역함수 \( f_i^{-1} \)가 존재해야 한다. 최종 출력 \( z_K \)는 목표 분포를 모델링한다.
\( z_K \)의 로그 우도는 다음과 같이 주어진다.
\[ \log p_K(z_K) = \log p_0(z_0) - \sum_{i=1}^K \log \left| \det \frac{d f_i(z_{i-1})}{d z_{i-1}} \right| \]
이 공식은 각 변환의 야코비안의 절대 행렬식으로 밀도를 조정하는 변수 변환 규칙에서 비롯된다. 로그 우도를 효율적으로 계산하려면 함수 \( f_1, \dots, f_K \)가 쉽게 역변환 가능해야 하며, 야코비안의 행렬식 계산이 간단해야 한다. 실제로 이러한 함수는 딥 러닝 신경망을 사용하여 모델링되며, 목표 분포의 데이터 샘플에 대한 음의 로그 우도를 최소화하도록 훈련된다. 아키텍처는 역변환과 야코비안 행렬식 계산 모두에 네트워크의 순방향 패스만 필요하도록 설계된다. 예로는 NICE, RealNVP, Glow가 있다.
로그 우도 유도
\( z_1 \)과 \( z_0 \)를 고려하자. \( z_0 = f_1^{-1}(z_1) \)임을 주목하라. 변수 변환 공식에 의해 \( z_1 \)의 분포는 다음과 같다.
\[ p_1(z_1) = p_0(z_0) \left| \det \frac{d f_1^{-1}(z_1)}{d z_1} \right| \]
역함수 정리를 사용하면 역변환의 야코비안 행렬식은 순방향 변환의 야코비안 행렬식의 역수이므로 위의 로그 우도 표현식이 도출된다. 이 유도는 귀납법을 통해 여러 변환으로 확장된다.
아키텍처 혁신
초기 플로우 기반 모델은 계산 가능한 야코비안을 가진 변환 설계에 중점을 두었다. 2014년 Dinh 등이 도입한 NICE(비선형 독립 성분 추정)는 입력을 분할하고 단순한 아핀 변환을 적용하는 덧셈 결합 레이어를 사용하여 야코비안을 행렬식이 1인 삼각 행렬로 만들었다. RealNVP(실수 값 비체적 보존)는 이를 아핀 결합 레이어로 확장하여 스케일 및 시프트 연산을 허용함으로써 가역성을 유지하면서 표현력을 향상시켰다. 2018년 Kingma와 Dhariwal이 도입한 Glow는 가역 1x1 합성곱과 actnorm 레이어를 추가하여 고해상도 이미지에서 효율적인 훈련을 가능하게 했다.
이러한 아키텍처는 종종 차원을 혼합하는 순열 또는 합성곱을 가진 여러 결합 레이어로 구성된다. 가역성은 구조적으로 보장되며, 야코비안 행렬식은 삼각 야코비안의 대각 요소의 곱으로 계산되어 효율적이다.
응용 및 비교
Normalizing flows는 데이터 세트의 확률 분포를 학습하는 밀도 추정과 새로운 데이터 포인트를 생성하는 생성 샘플링에 사용된다. 이미지 생성, 오디오 합성, 분자 형태 생성에 적용되었다. 선명한 샘플로 알려져 있지만 우도 추정이 부족한 GAN과 대조적으로, 플로우는 정확한 로그 우도를 제공하므로 모델 비교와 이상치 탐지에 유용할 수 있다. 확산 모델과 비교할 때, 플로우는 단일 순방향 패스만 필요하므로 샘플링이 더 빠른 경우가 많으며, 확산 모델은 반복적인 노이즈 제거가 필요하다.
그러나 플로우는 가역 아키텍처와 야코비안 계산이 필요하므로 훈련 비용이 많이 들 수 있다. 또한 다른 방법에 비해 복잡한 분포를 포착하기 위해 더 많은 매개변수가 필요할 수 있다.
훈련 및 최적화
Normalizing flow 훈련은 훈련 데이터의 음의 로그 우도를 최소화하는 것을 포함한다. 손실 함수는 다음과 같다.
\[ \mathcal{L} = -\frac{1}{N} \sum_{n=1}^N \log p_K(x_n) \]
여기서 \( x_n \)은 데이터 샘플이다. 이는 일반적으로 확률적 경사 하강법을 사용하여 수행된다. 변환의 가역성은 로그 우도가 잘 정의되도록 보장하며, 야코비안 행렬식은 순방향 패스의 일부로 계산된다. 가중치 감쇠 및 드롭아웃과 같은 정규화 기법을 네트워크 매개변수에 적용할 수 있다.
관련 개념
Normalizing flows는 인공 지능 및 신경망의 더 넓은 분야의 일부이다. 생성적 적대 신경망 및 변분 오토인코더와 같은 다른 생성 모델과 자주 비교된다. 이 분야의 연구는 스탠포드 AI 연구소 및 버클리 AI 연구와 같은 기관과 다프네 콜러 및 아니마 아난드쿠마르와 같은 연구자들에 의해 발전되었다. 이론적 기초는 머신 러닝 및 딥 러닝과 연결된다.