CHAPTER 6. 노멀라이징 플로 모델

2025. 2. 23. 20:11읽어보기, 교재/만들면서 배우는 생성 AI

노멀라이징 플로 모델은 자기회귀 모델처럼 다루기 쉽고 명시적인 데이터 생성 분포 p(x)를 모델링 할 수 있다. 또한 VAE처럼 데이터를 간단한 분포에 매핑한다. 다만, 매핑 함수는 반전 가능하게 제약을 한다.

6.2 노멀라이징 플로 모델

  • VAE : 인코더를 학습해 샘플링이 가능한 단순한 분포로 매핑. -> 디코더를 학습해 단순한 분포에서 복잡한 분포로 매핑.

=> 인코도와 디코더는 완전히 다른 신경망.

  • 노멀라이징 플로 모델 : 디코딩 함수는 인코딩 함수의 역함수여서 빠르고 다르기 쉬움.

=>신경망은 기본적으로 반전 가능한 함수 아님!
* 역함수 : y = x에 대칭이며 본함수의 x, y의 자리를 바꾸면 됨.
6.2.1 변수 변환

  • 가역 함수(invertible function) : 모든 z를 이에 해당하는 x로 다시 매핑할 수 있는 함수 g가 존재.
  • 면적(고차원에서는 부피)이 1/6로 줄어 적분하면 1/6이 되므로 유효한 확률 분포가 아님.(적분 결과가 1이 되어야 복잡한 확률 분포를 샘플링이 가능한 간단한 분포로 변환 가능.)

=> 면적 변화에 해당하는 정규화 계수(야코비 행렬식의 절대값)를 곱해야함.

확률 분포 함수의 예시

* 적분 : 함수의 그래프 아래 영역의 넓이를 구하는 식.
* 확률 분포 함수 : 확률의 분포를 나타낸 함수로 전체 범위에 대한 적분 값의 합은 1.(확률의 기본 원칙.)
=> 따라서 적분 값(면적)이 1/6이 되면 올바른 확률 분포가 아님.
6.2.2 야코비 행렬식

  • 함수 z = f(x) 의 야코비 행렬은 다음과 같은 1계 편도함수의 행렬.

이 공식의 시간 복잡도는 O(n^3)이다.

  • 행렬식 : 정방 행렬(squre matrix)에 대해서만 정의되며, 해당 행렬로 표현되는 변환을 단위 (초) 입방체에 적용하여 만들어진 평행육면체(parallelepiped)의 (부호가 있는) 부피와 같다.
  • 즉, 야코비 행렬식은 변형된 도형의 면적(2x2 행렬), 부피(3x3 행렬)를 나타내며 부호가 변화의 방향을 나타냄.

=> 상대적 부피 변화는 절대값을 사용.
6.2.3 변수 변환 방정식

  • 변수 변환 방정식 : 하나의 방정식으로 X와 Z 사이의 변수 변환 과정식.

  • 데이터 X에서 Z로 매핑할 적절한 가역 함수 f(x)와 샘플링된 z 를 원래 도메인 포인트 x로 매핑하는 역함수 g(z)를 찾기만 하면됨.
  • 실제 적용할 때 문제점.
  1. 계산 비용이 너무 큼.(시간 복잡도 O(n^3)).
  2. 신경망은 한 방향으로 동작 하므로 역함수를 찾을 수 없음.(입력 -> 출력 방향. 역함수는 y = x에 대해 대칭이므로 출력 -> 입력 방향.)

=> RealNVP 변환 기법 사용.


6.3 RealNVP

  • 이 논문에서는 복잡한 데이터 분포를 간단한 가우스 분포로 변환하는 신경망 만드는 방법 제안.
  • 또한 역변환 가능하고 야코비 행렬을 쉽게 계산.

6.3.2 커플링 층

  • 커플링 층 : 입력의 각 원소에 대해 스케일 계수와 이동 계수를 만듬. => 입력과 정확히 동일한 크기의 두개의 텐서 만듬.

* 스케일 계수 : 어떤 대상의 크기나 비율을 얼마나 변경할 지.
* 이동 계수 : 대상의 위치를 변경하는데 사용하는 변위량.

  • 복잡한 표현을 학습 하기 위해 차원을 늘렸다가 원본으로 축소 후 스케일 계수와 이동 계수로 출력.

  • 데이터의 처음 d차원만 주입되고 나머지 D-d 차원은 완전히 마스킹. 그 다음은 역마스킹.

=> 입력의 한 부분만 사용하고 나머지 부분을 변환.
=> 커플링 층을 쌓아 마스킹 패턴을 번갈아 적용하면 변경되지 않은 부분을 업데이트해 복잡한 표현 학습.

  • 이렇게 마스킹 하면 야코비 행렬 연산하기 쉬운 하삼각 행렬(대각선 위쪽이 모두 0)로 만들어 연산량이 줄어듬.

=> 노멀라이징 플로 모델을 만들기 위한 목표를 이룸.
(간단한 야코비 행렬식, 가역성)

커플링 층은 RealNVP 모델에서 입력 데이터를 가역적으로 변환하여 데이터의 확률 분포를 학습하고 새로운 데이터를 생성하는 데 핵심적인 역할을 수행합니다.

6.3.3 RealNVP 모델 훈련

  • RealNVP 모델은 음의 로그 가능도(-log px(x))를 최소화.

  • 모델 특징
  1. 타깃 분포는 표준 2D 가우스 분포.
  2. 번갈아 바뀌는 마스크 패턴.
  3. 신경망의 정의는 Coupling 층 리스트.
  4. direction 파라미터(1 or -1)에 따라 정방향과 역방향 식을 구현.
  5. 손실함수는 타깃 가우스 분포와 야코비 행렬식의 오그 값으로 결정되는 변화된 데이터의 음의 로그 확률.

6.3.4 RealNVP 모델 분석

훈련세트 - 정방향 함수 f(x) -> 잠재 공간 - 역방향 함수 g(x) -> 샘플링
  • 매핑과 역매핑 가능.



6.4 다른 노멀라이징 플로 모델

  • GLOW와 FFJORD 는 성공적인 노멀라이징 플로 모델.
  • RealNVP와 GLOW는 이산 시간 노멀라이징 플로.

* 이산 시간 : 이산적인 집합(각 단계에서 변환하며 변환 단계는 명확히 구분)을 통해 입력 반환.

  • FFJORD는 연속적인 시간 과정 노멀라이징 플로.
  • 연속 시간 과정 : 단계가 없이 연속적인 시간 흐름에 따라 목표 분포로 변환.

=> 단계 수가 무한대이며 단계 크기가 0에 가까움.

  • FFJORD에서 역학 관계는 신경망에 의해 파라미터가 정의되는 상미분 방정식(ODE)을 사용하여 모델링.

* 상미분 방정식 : 함수와 그 변화율 사이의 관계를 설명하는 수학적 도구.

 


* 후에 깨달은 것

  • 커플링 층을 더 이해하기
    • 그림 6-6 단층 커플링 층을 보면 차원 범위를 보면 이해가 쉬움.
      • D = 3 차원이고 d 파라미터를 2로 지정했다고 가정하자.
      • 입력 차원은 두 개의 층으로 나뉨.(위와 아래)(무조건 두개로 나뉘지만 d를 가변적으로 줄 수 있으므로 비율만 달라짐.)
      • 위 는 x의 1 ~ 2 차원, 아래는 x의 3 차원.
      • 6-6의 구조는 1 ~ 2차원의 스케일 계수와 이동 계수 를 추출해 3차원 입력의 역함수를 구하는데 사용.
      • 층을 쌓아서(그림 6-9) 마스킹을 반대로 하면 3차원의 스케일 계수와 이동 계수를 1 ~ 2차원의 역함수를 구하는데 사용.
      • 역함수를 구할때도 마찬가지.
728x90