이전까지, 딥러닝의 유망함을 널리 알려져왔고 무언가를 판별(discriminative)하는 분야에서 딥러닝이 많은 성공을 가져왔다.
반면, 무언가를 생성(generate)하는 분야에서 딥러닝은 그만큼의 임팩트를 남기지 못했다.
이는 maximium likelihood estimation이나 관련된 통계적 계산이 너무 복잡해 해결하기 어려웠고, 무언가를 생성해낼때 linear한 요소들이 가지는 장점을 활용하기 어려웠기 때문이다.
논문에서 제안하는 adversarial nets 프레임워크를 쉽게 생각해보자면, generative model은 걸리지 않고 위조지폐를 만드려는 팀으로, discriminative model은 위조지폐를 잡아내려는 경찰로 생각할 수 있다.
이러한 game에서의 경쟁은 양 팀에 모두 성능 향상을 불러와 결국 generative가 진짜를 만들어낼 때까지 계속될 것이다.
다양한 종류의 모델과 최적화 기법을 사용하는 수많은 adversarial 학습 방법 중, 본 논문에서는 MLP로 이루어진 discriminative 와 generative 모델을 사용한다. generative model은 랜덤 노이즈를 input으로 주어 샘플을 만들어내도록 한다.
이를 adeversarial nets라고 부를 것이다.
Markob chain이나 기타 다른 방법의 사용 없이 오직 MLP에서의 역전파와 dropout 만으로 학습을 진행할 것이다.
Generator
input : noise variables $p_z(z)$
learn : generator’s distribution $p_g$
a mapping to data space as $G(z;\theta_g)$
G : 파라미터 $\theta_g$를 가지는 MLP로 구성된 미분가능한 함수
즉, generator는 noise를 input으로 받아 특정한 분포 $p_g$를 학습한다.
Discriminator
$D(x;\theta_d)$, output : single scalar
represent the probability that x came from the data rather than $p_g$
즉, D는 input x가 실제 data에서 온 것인지, generator가 생성한 확률분포 $p_g$에서 온 것인지 판단한다.
train
D : 실제 example과 Generator에 의해 생성된 sample을 각각 최대한 잘 알아맞추도록 학습
G : $log(1-D(G(z)))$를 최소화하도록 학습
즉, 일종의 two-player minimax game을 진행하는 셈.
해당 Figure를 보면, D와 G를 어떻게 학습시키는지에 대한 내용을 알 수 있다.
disciriminative distribution이 파란색, 실제 data의 distribution이 검정색, generative distirbution이 초록색 line이다.
아래 있는 수평선은 uniformly sampling된 z들이, generative distribution에 의해 x에 어떻게 mapping 되는지를 보여준다. ($x = G(z)$)
(a)를 보면, 먼저 학습이 어느 정도 진행 되어 G와 D가 수렴에 가까워져 가고 있는 상황이다.
(b)에서 볼 수 있듯, iteration으로 이루어지는 학습 내부에서 먼저 D를 학습시켜 수렴에 가까워지도록 한다.
(c)에서는 그 후 G를 업데이트 하는 모습을 보여주고 있는데, D의 gradient가 G(z)를 실제 데이터로 판단될 수 있는 방향으로 이끈다.
(d)에선, 충분히 학습이 진행되어 $p_g = p_{data}$가 되어 더 이상 학습이 진행될 수 없이 수렴된 상황이다. 이 경우, discriminator는 진짜와 가짜를 구분할 수 없어 D(x) = 0.5가 된다.
다만 논문에서는, 한 iteration마다 D를 끝까지 학습시키는 것은 계산적으로도 어렵고 overfitting의 우려도 있기 때문에 D를 k step 학습시키고, G를 한번 학습시키는 방향으로 학습을 진행하였다고 설명하고 있다.
이렇게 학습을 진행한다면 G가 천천히 변화할때, G가 최적화된 해에 가깝게 유지될 수 있다.
실제 학습을 진행할때, 위에 등장한 수식은 G가 잘 학습될 정도의 충분한 gradient를 제공하지 못할 수 있다.
학습 초기에 G의 초기화가 잘 되어있지 않다면, D가 가짜와 진짜를 잘 판별할 것이고, $log(1-D(G(z)))$가 수렴하게 되기 때문이다.
따라서, G로 하여금 $log(1-D(G(z)))$를 최소화하도록 학습하는 것이 아닌, $log D(G(z))$를 최대화하도록 학습을 진행한다.
이렇게 objective function을 변경하여도 G와 D는 전과 같은 곳으로 수렴하되, 초기 학습에서 더 strong gradient로 학습이 잘 진행될 것이다.
최적의 discriminator D와 임의의 고정된 generator G에 대하여,
다음과 같이 증명할 수 있다.
와 같이 표현되고, y → alog(y) + blog(1-y)일때 maximum은 $\frac{a}{a+b}$일 때 이다.
따라서 가정한 D*g(x)가 옳다.
댓글 영역