GAN - Generative Adversarial Networks
Abstract
GAN은 생성 모델링 문제를 해결하기 위해 고안된 인공지능 알고리즘 중 하나입니다.
생성 모델의 목표인 학습용 예시 데이터 집합을 분석하여, 이를 생성해낸 확률 분포를 학습하는 것입니다. GAN은 이렇게 추정된 확률 분포로부터 새로운 예시들을 생성할 수 잇습니다.
딥러닝 기반 생성 모델은 여러 형태가 있지만, GAN은 특히 현실적힌 고해상도 이미지를 생성하는 능력 면에서 성공적인 생성 모델 중 하나입니다. GAN은 다양한 작업에 성공적으로 적용해왔으며 기존 생성모델과는 달리 Game Theory를 기반(다른 생성 모델은 optimization임)
INTRODUCTION
입력 - 출력 쌍으로 데이터셋 입력 받는 지도학습이 주류
입력을 출력과 연관시키는 법 학습하며, 입력 -> 출력의 매핑을 학습
입력 예시는 이미지, NLP, 오디오 파형 등 복잡한 데이터 객체이며 출력은 비교적 단순한 경우가 많음, 가장 흔한 건 분류로 지도학습은 인간보다 높은 정확도를 종종 달성한다.
PROB
학습 과정 자체는 인간의 학습 능력에 비해 많이 부족, 입력 예시에 대해 사람이 직접 출력 예시 제공 전제, 지도학습은 수백만 개의 학습 예시가 필요하기에 인간은 단 몇 개의 예시만으로 유사한 작업을 가능하다.
SOL
비지도 학습에 주목, 생성 모델 (Generative Model) GAN
GENERATIVE MODELING
생성 모델링
지도학습은 명확, 개 사진을 개 카테고리로 정확히 분류, 비지도는 목표 명확X 군집화, 차원 축소 등 다양한 방식 존재
생성 모델링이란?
x가 특정 확률 분포 Pdata(x)에서 샘플링되었다고 가정하고, 이를 근사할 수 있는 모델 분포 Pmodel(x)을 학습하는 목적 가짐 이는 밀도 함수를 명시적으로 정의하고, maximum likelihood를 통해 매개변수를 찾는 것
pdata와 pmodel 간의 KL divergence를 최소화하는 방법
간단한 확률 분포에서는 효과적이지만, 딥러닝으로 복잡한 함수 형태를 사용할 경우 밀도 함수를 계산하기는 어려움
기존 접근 방식
1. 밀도 함수가 계산 가능한 모델 설계
2. 근사 학습 알고리즘 구성
고해상도 생성의 문제점 해결책
- 명시적 밀도는 건너뛰고, 샘플만 생성하고 학습하는 것 -> 암시적 생성 모델 새로운 시작
GAN
- 이전 암시적 생성 모델은 Markov Chain 기반 생성 과정을 필요로 했으나,
- GANs는 단계 없는(single step) 샘플 생성 과정을 통해 진짜같은 이미지 바로 생성할 수 있도록
GANs, VAE, fully-visible belief nets 등이 있음
Markov chain 없이 작동
GENERATIVE ADVERSARIAL NETWORKS
게임 이론으로 기반한 두 개의 학습 모델 간 경쟁 구조입니다. 이 두 모델은 보통 신경망을 사용합니다.
생성자 (Generator)
- Pmodel(x)을 암시적으로 정의
- 생성자는 밀도 함수 Pmodel(x)를 직접 계산하지 않아도 되지만, 이분법적으로 샘플을 생성할 수 있는 능력을 가짐
- z라는 랜덤 벡터(p(z)는 일반적으로 고차원 정규분포 혹은 균등분포)를 입력으로 하여, 신경망 G( z;θ_G)을 통해 사실적인 출력 이미지 x를 생성함
판별자 (Discriminator)
- 또 다른 네트워크 판별자가 x가 진짜인지 가짜인지 구분하는 D(x; θ_D) 값을 추정
- 일반적으로 출력 값은 해당 입력이 real일 확률
Game Formulation
- 두 모델이 서로 다른 목적함수를 가지고 경쟁
- J(D) : 진짜 / 가짜를 잘 구분하는 방향으로 학습
- J(G): 판별자가 속일 수 있는 이미지를 생성하도록 학습
- 생성자의 목적은 가짜를 진짜처럼 평가하도록 하는 것이며 손실함수는 판별자가 가짜로 판단할 확률의 로그값 등을 사용하여 구성
- 생성자는 판별자의 gradient(미분 정보)를 통해 학습되며,
“진짜라고 판단되게끔 속이기” - 이 과정에서 판별자도 계속 변화하고, 학습이 동적으로 진행
Figure 3. GAN 학습 과정
GAN 학습한다는 것은 생성자(generator)와 판별자(discriminator) 네트워크 두 개를 동시에 학습하는 것, 실제로 실제 데이터와 가짜 데이터 모두 사용
판별자 (왼쪽)
- 일반 분류기처럼 학습
- 학습 중에는 실제 데이터셋에서 가져온 데이터를 입력받아 이를 진짜클래스로 분류하도록 훈련
생성자학습(오른쪽)
- 가짜 데이터 잠재 공간(latent space)에서 무작위 벡터 z를 샘플링
- 생성자 함수 G(z)를 통해 샘플 x로 변환
- G는 신경망으로 구성되며 무작위 벡터 Z를 FAKE 데이터로 바꾸어줌
- 이 가짜 데이터 x는 다시 판별자에게 가서 가짜 클래스 분류되도록 훈련
GAN의 특징은 판별자 출력에 대한 gradient를 활용해 생성자를 훈련
판별자 vs 생성자
- 판별자의 학습은 일반적인 이진 분류기(binary classifier)와 유사하지만,
하나 다른 점은 가짜 데이터의 분포가 고정되어 있지 않고 계속 바뀐다는 것입니다. - 생성자는 명시적인 정답이 없이, 상대방(판별자)을 속이는 능력에 따라 간접적으로 학습됩니다. 즉, 출력이 옳다/틀리다는 피드백이 아닌, "얼마나 속였는가"라는 신호로 학습
Figure 4
생성자 목표 : 누적분포함수(CDF)를 스케일하여 학습하는 것과 유사
GAN 학습 과정에서 두 네트워크(판별자, 생성자)를 동시에 업데이트
- 판별자 D(파란색, 점선)는 실제 데이터 분포(검은색 점선)와 생성자 분포(녹색 실선)을 잘 구분할 수 있어야
- 가로선은 잠재변수 z가 균등분포에서 샘플링되는 구간을 나타내고, 왼쪽 가로선은 생성된 x 값이 위치할 수 있는 도메인
- 위로 향하는 화살표는 x = G(z)라는 매핑이 어떻게 적용되어서 출렁이는 분포 pmodel을 만들어내는지 보여줌
- 밀도가 높은 구간에서는 매핑이 좁혀지고(contract),
- 밀도가 낮은 구간에서는 매핑이 늘어나는(expand) 방식입니다.
초기설정
- 생성자 G는 처음에 단순한 단위 가우시안 (uniform -> Gaussian mapping)을 띄;고 있으며,
- 판별자 D는 랜덤 초기화된 신경망
D만 수렴한다고 가정
- G가 고정되었을 때, D는 데이터 분포와 생성자 분포 완벽히 구분할 수 있어야
G와 D가 함께 학습하는 과정
- G는 점점 밀도가 높다고 판단되는 영역으로 샘플을 밀어 이동하며,
- D는 아예 맞추어 판별 기준을 계속 조정함
나쉬 균형(Nash equilibrium)에 도달하면
- pmodel= 이 되고,
- DD는 항상 0.50.5, 즉 입력이 어디서 왔는지 구분할 수 없는 상수 함수가 됩니다.
잠재변수 z는 균등분포에서 뽑혀 생성자로 전달
생성자는 G를 통해 샘플 x로 배매핑
밀도 pmodel(x)는 이 매핑의 결과로 암시적으로 정의됨
1. 초기상태 : G는 아무 구조 없고 D는 무작위 -> D는 생성자 출력과 실제 데이터를 쉽게 구분 가능
2. 판별자 단독 학습 : 실제와 생성 결과를 거의 완벽하게 구분하는 D -> 생성자 이를 속이기 어려움
3. 공동학습 : 생성자는 자신이 만든 샘플이 진짜처럼 보이도록 D를 속이는 방향으로 업데이트됨
4. 수렴 지점 : 두 분포가 같아짐 -> 판별자는 더 이상 구분할 수 없고, 출력 확률은 항상 0.5
f가장 작게 만드는 x 값을 구하는 것
각 플레이어의 비용 함수가 상대방의 파라미터에 의존하지만, 각 플레이어는 자신의 파라미터만 제어할 수 있기 떄문에 단순한 최적화 문제로 모델링하기가 쉽지 않음 argmin 연산을 다루기 어렵기 때문에 일반적으로 널리 사용되지 않음
대신 두 플레이어 간 게임으로 간주
일반적인 게임이론
- 이산적이고 유한한 행동 공간(discrete and finite action spaces),
- 볼록 손실 함수(convex losses) 등을 가정하기 때문에 이론 전개가 용이
GAN
- 비볼록 손실(non-convex losses)
- 연속적이고 고차원적인 정책 및 행동 공간 을 갖는 복잡한 상황에서 게임 이론을 적용
GOAL
각 플레이어의 파라미터에 대해 각자의 비용 함수가 지역 최소값이 되도록 만드는 Local Nash Equilibrium을 찾는 것
상대방의 파라미터가 고정되어 있다고 가정할 때, 자신의 비용을 더 이상 줄일 수 없는 상태를 찾는 것
일반적인 GAN 학습 방법
- 각 플레이어가
- 자신의 COST FUNCTION에
- 동시에 미분 기반 최적화를 수행하며,
- 자신의 파라미터를 조정하는 것
GAN의 강점
- density function 명시적 추정, 근사 필요 x
GAN의 단점
- 통계적 오류, 실제 데이터 분포 전체 알 수 없기에 유한한 수의 학습 데이터 사용
- 학습 알고리즘 수렴 실패, 학습이 이론적으로 최적 파라미터에 도달하지 못하는 경우
하지만 다른 GAN 모델은 이거와 더불어 마르코브 체인 기반 샘플링, 실제 비용 함수가 아닌 bound를 최적화, 계산 가능성을 위한 수학적 단순화
CONVERGENCE OF GANS
1. 모델의 확률 분퐈 Pmodel와 판별자 함수 D의 공간에서, 유일한 Local Nash equilibrium은 Pmodel = Pdata에서만 존재
2. 만약 확률 밀도 함수 공간에서 직접 최적화가 가능하다면, 내부 루프에서 D를 최적화하고, 외부 루프에서 Pmodel에 대해 작은 gradient step을 수행하는 알고리즘은, 이 내시 균형에 수렴한다.
이거는 딥러닝 기반 GAN 학습 방식과는 거리가 있음
- 실제 GAN은 확류 밀도 함수 공간에서 직접 움직이는 것이 아님
- 뉴럴 네트워크의 파라미터 공간 안에서 움직임
- 이 파라미터 공간도 유한한 수의 파라미터와 유한한 비트 수로 표현되는 제한된 구조임
Local Nash Equilibrium은 주변 범위에서는 더 이상 개선이 불가능한 상태, G와 D가 각각 자신의 파라미터를 조금씩 바꿔도 손실함수를 더 이상 바꿀 수 없다면 이 상태를 Local Nash Equilibrium이라고 함
균형 상태에 수렴해야 진짜 같은 이미지를 생할 수 있지만 자주 수렴하지 않거나 안정된 학습 기법이 중요한 연구 주제
아직 여러가지 이런 문제로 인해서 연구
OTHER GAN TOPICS
공간상의 제약 때문에 다를 수 없는 다양한 주제들이 있음
조건부 생성
모멘트 매칭 (최적 수송)
이산 데이터 생성 도전적
극소량 라벨로 분류 학습 가능
GAN 머신러닝 스스로 COST 효과적 방버
다양한 정답이 가능한 문제 적합
도메인간 이미지 변환
과학 시뮬레이션
CONCLUSIONS
GAN은 생성자와 판별자가 서로 경쟁하는 게임 구조로 학습
이 구조는 매우 강력한 생성 능력을 가졌지만, 학습 안정선
Nash Equilibrium
양쪽이 서로 최선의 전략을 취하고 있어 어느 쪽도 일방적으로 개선할 수 없는 상태
문제점 : GAN에서는 이 균형점에 도달하기가 이론적으로 어렵고 실전에서도 불안정하게 수렴