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계 편도함수의 행렬.
- 행렬식 : 정방 행렬(squre matrix)에 대해서만 정의되며, 해당 행렬로 표현되는 변환을 단위 (초) 입방체에 적용하여 만들어진 평행육면체(parallelepiped)의 (부호가 있는) 부피와 같다.
- 즉, 야코비 행렬식은 변형된 도형의 면적(2x2 행렬), 부피(3x3 행렬)를 나타내며 부호가 변화의 방향을 나타냄.
=> 상대적 부피 변화는 절대값을 사용.
6.2.3 변수 변환 방정식
- 변수 변환 방정식 : 하나의 방정식으로 X와 Z 사이의 변수 변환 과정식.
- 데이터 X에서 Z로 매핑할 적절한 가역 함수 f(x)와 샘플링된 z 를 원래 도메인 포인트 x로 매핑하는 역함수 g(z)를 찾기만 하면됨.
- 실제 적용할 때 문제점.
- 계산 비용이 너무 큼.(시간 복잡도 O(n^3)).
- 신경망은 한 방향으로 동작 하므로 역함수를 찾을 수 없음.(입력 -> 출력 방향. 역함수는 y = x에 대해 대칭이므로 출력 -> 입력 방향.)
=> RealNVP 변환 기법 사용.
6.3 RealNVP
- 이 논문에서는 복잡한 데이터 분포를 간단한 가우스 분포로 변환하는 신경망 만드는 방법 제안.
- 또한 역변환 가능하고 야코비 행렬을 쉽게 계산.
6.3.2 커플링 층
- 커플링 층 : 입력의 각 원소에 대해 스케일 계수와 이동 계수를 만듬. => 입력과 정확히 동일한 크기의 두개의 텐서 만듬.
* 스케일 계수 : 어떤 대상의 크기나 비율을 얼마나 변경할 지.
* 이동 계수 : 대상의 위치를 변경하는데 사용하는 변위량.
- 복잡한 표현을 학습 하기 위해 차원을 늘렸다가 원본으로 축소 후 스케일 계수와 이동 계수로 출력.
- 데이터의 처음 d차원만 주입되고 나머지 D-d 차원은 완전히 마스킹. 그 다음은 역마스킹.
=> 입력의 한 부분만 사용하고 나머지 부분을 변환.
=> 커플링 층을 쌓아 마스킹 패턴을 번갈아 적용하면 변경되지 않은 부분을 업데이트해 복잡한 표현 학습.
- 이렇게 마스킹 하면 야코비 행렬 연산하기 쉬운 하삼각 행렬(대각선 위쪽이 모두 0)로 만들어 연산량이 줄어듬.
=> 노멀라이징 플로 모델을 만들기 위한 목표를 이룸.
(간단한 야코비 행렬식, 가역성)
커플링 층은 RealNVP 모델에서 입력 데이터를 가역적으로 변환하여 데이터의 확률 분포를 학습하고 새로운 데이터를 생성하는 데 핵심적인 역할을 수행합니다.
6.3.3 RealNVP 모델 훈련
- RealNVP 모델은 음의 로그 가능도(-log px(x))를 최소화.
- 모델 특징
- 타깃 분포는 표준 2D 가우스 분포.
- 번갈아 바뀌는 마스크 패턴.
- 신경망의 정의는 Coupling 층 리스트.
- direction 파라미터(1 or -1)에 따라 정방향과 역방향 식을 구현.
- 손실함수는 타깃 가우스 분포와 야코비 행렬식의 오그 값으로 결정되는 변화된 데이터의 음의 로그 확률.
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차원의 역함수를 구하는데 사용.
- 역함수를 구할때도 마찬가지.
- 그림 6-6 단층 커플링 층을 보면 차원 범위를 보면 이해가 쉬움.
'읽어보기, 교재 > 만들면서 배우는 생성 AI' 카테고리의 다른 글
CHAPTER 8. 확산 모델 (0) | 2025.03.10 |
---|---|
CHAPTER 7. 에너지 기반 모델 (0) | 2025.03.02 |
CHAPTER 5. 자기회귀 모델 (4) | 2025.02.16 |
CHAPTER 4. 생성적 적대 신경망 (4) | 2025.02.14 |
CHAPTER 3. 변이형 오토인코더 (6) | 2025.02.14 |