AI VIDEO BRIEFING
정규화 흐름(Normalizing Flow) 원리 정리: 변수변환 공식과 야코비 행렬식으로 만드는 생성모델
코넬대 딥 생성모델 강의가 자기회귀 모델과 잠재변수 모델의 장단점을 비교하고, 변수변환 공식과 야코비 행렬식을 이용해 정확한 우도 계산이 가능한 정규화 흐름을 단계별로 유도하는 과정과 이 모델에 남은 설계 과제를 함께 정리했다.

핵심 메시지
쉽게 이해하기
코넬대 딥 생성모델 수업의 이 회차는 새로운 모델 계열인 정규화 흐름(normalizing flow)을 소개하기에 앞서, 앞서 다룬 두 계열을 다시 정리하는 것으로 시작한다. 첫 번째는 확률의 연쇄법칙을 그대로 따르는 자기회귀 모델로, 이미지의 다음 픽셀을 이전 픽셀들로부터 예측하듯 데이터를 한 조각씩 만들어 내며 웨이브넷이나 픽셀 CNN이 이 계열에 속한다. 강점은 우도를 직접 계산하기 쉽다는 점인데, 강의자는 이것이 다른 생성모델 계열에서는 오히려 예외적인 성질이라고 강조한다. 대신 픽셀에 좌우 순서를 매겨야 하는 인위적인 가정이 들어가고, 생성이 한 원소씩 순차적으로 이루어져 느리며, 무엇보다 잠재변수가 없어 비지도 표현 학습을 할 방법이 마땅치 않다.
그 한계를 메우려고 도입한 것이 잠재변수 Z를 두는 모델이며 대표적인 예가 변분 오토인코더다. 비슷한 얼굴이 잠재 공간에서 가까이 모이기를 기대할 수 있고, 사전분포에서 Z를 뽑아 곧바로 X를 만드는 조상 샘플링이라 생성이 빠르다. 문제는 사후분포를 구할 때 복잡한 적분이 등장해 정확한 로그우도 계산이 불가능해진다는 점이다. 그래서 변분추론으로 근사할 수밖에 없고, 이상치 탐지처럼 밀도 추정 자체가 목적이라면 적합하지 않다.
정규화 흐름은 이 둘을 결합하려는 시도다. 단순한 가우시안이나 균등분포에서 출발해, 가역인 변환으로 확률질량을 재배치해 복잡한 분포를 만든다. 여기서 반드시 필요한 도구가 변수변환 공식이다. 강의자는 균등분포 Z를 4배 늘려 X를 만드는 간단한 예로, 밀도를 확률처럼 다루면 왜 틀리는지를 먼저 보여 준다. 구간이 네 배로 넓어졌으니 전체 질량 1을 유지하려면 각 지점의 밀도는 그만큼 낮아져야 하고, 그 조정이 바로 역함수의 미분값이다.
이 논리를 고차원으로 옮기려면 부피를 재는 도구가 필요하다. 선형대수의 행렬식이 평행사변형과 평행다면체의 부피를 재듯, 비선형 변환은 국소적으로 선형화한 야코비 행렬로 근사하고 그 행렬식이 부피 변화량이 된다. 그렇게 완성된 다변수 변수변환 공식이 정규화 흐름의 정의로 이어진다. 다만 가역이어야 하므로 X와 Z는 연속이어야 하고 차원이 같아야 한다는 제약이 따라붙는다.
차원이 같다는 제약은 실무적으로 두 가지 비용을 낳는다. 큰 텐서를 큰 텐서로 옮기는 함수라 메모리와 연산이 더 들고, 잠재변수를 압축하지 못해 표현 학습의 매력이 줄어든다. 그럼에도 정확한 우도 계산과 정확한 잠재변수 추론이 가능하다는 이점이 남는다. 남은 과제는 함수 f를 어떻게 잡느냐인데, 강의는 단순하고 가역인 변환을 여러 겹 합성하는 전략과 2015년 초기 논문에서 제안된 평면 흐름(planar flow) 예시를 소개하며 마무리한다.
주요 인사이트
- 밀도와 확률은 다르다는 기초적인 구분이 정규화 흐름 전체 수식의 출발점이다. 분포의 지지집합이 넓어지면 밀도는 반드시 그만큼 줄어야 한다.
- 변분 오토인코더는 생성기와 인코더에 아무 제약이 없는 대신 복잡한 근사 이론이 필요했다면, 정규화 흐름은 학습 목표는 단순해지지만 그 어려움이 신경망 설계 쪽으로 옮겨 간다.
- 단순한 가역 변환을 합성하면 전체 변환의 행렬식이 각 층 행렬식의 곱이 되므로, 층을 깊게 쌓아 표현력을 키우면서도 계산 가능성을 유지할 수 있다.
- n×n 행렬식 계산은 보통 n의 세제곱에 비례하므로, 정규화 흐름 설계의 실질적 목표는 그보다 빠르게 행렬식을 구할 수 있는 함수를 찾는 일이 된다. 야코비 행렬이 삼각행렬이면 대각 성분의 곱만으로 끝난다.
- 초기 평면 흐름 논문은 이 모델만으로 이미지를 생성한 것이 아니라, 변분 오토인코더의 사전분포를 더 유연하게 만드는 부품으로 사용했다.
자주 묻는 질문
정규화 흐름이라는 이름은 어디서 왔나요?
변수변환 공식을 적용할 때 야코비 행렬식으로 밀도를 정규화해 주어야 하기 때문에 '정규화'이고, 단순한 분포를 복잡한 분포로 매끄럽게 흘려보내듯 옮긴다는 뜻에서 '흐름'입니다.
왜 X와 Z의 차원이 같아야 하나요?
두 변수를 잇는 함수가 가역이어야 변수변환 공식을 쓸 수 있는데, 차원이 다르면 가역이라는 말 자체가 성립하기 어렵기 때문입니다. 그래서 잠재변수를 저차원으로 압축할 수 없다는 제약이 생깁니다.
정규화 흐름을 만들 때 가장 어려운 부분은 무엇인가요?
변환 함수 f가 가역이면서, 데이터를 표현할 만큼 충분히 유연하고, 정방향과 역방향 계산 및 야코비 행렬식 계산까지 감당 가능해야 한다는 세 조건을 동시에 만족시키는 일입니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗