3 적대적 신경망 실행하기
이제 생성자와 판별자를 연결시키고 학습을 진행하며 기타 여러 가지 옵션을 설정하는 순서입니다.
생성자와 판별자를 연결시킨다는 것은 생성자에서 나온 출력을 판별자에 넣어서 진위 여부를 판별하게 만든다는 의미입니다. 이 장의 처음에 나온 그림에 생성자를 G(), 판별자를 D(), 실제 데이터를 x, 입력 값을 input이라고 하여 다시 나타내면 그림 19-4와 같습니다.
그림 19-4 | 생성자 모델이 G( ), 판별자 모델이 D( ), 실제 데이터가 x, 입력 값이 input일 때 GAN의 기본 구조
생성자 G()에 입력 값 input을 넣은 결과는 G(input)입니다. 이것을 판별자 D()에 넣은 결과는 D(G(input))이 됩니다. 생성자는 D(G(input))이 참(1)이라고 주장하지만, 판별자는 실제 데이터인 x로 만든 D(x)만이 참이라고 여깁니다. 그러다 학습이 진행될수록 생성자가 만든 G(input)이 실제와 너무나 가까워져서 이것으로 만든 D(G(input))과 실제 데이터로 만든 D(x)를 잘 구별하지 못하게 됩니다. 너무나 유사해진 D(G(input))과 D(x)를 판별자가 더는 구별하지 못하게 되어 정확도가 0.5에 가까워질 때, 비로소 생성자는 자신의 역할을 다하게 되어 학습은 종료됩니다.