13.4.2 cGAN
cGAN은 GAN의 출력에 조건을 주어 통제하려는 시도에서 만들어졌습니다. 기존 GAN은 노이즈 벡터를 받아들여서 출력을 만들어 내는데, 이때 사람이 통제할 수 있는 부분이 없었습니다. 그렇다면 통제는 왜 필요할까요?
GAN을 이용하면 입력 이미지와 유사한 출력 이미지가 생성되었습니다. 그런데 입력 이미지에 새로운 객체를 추가하거나 이미지에 자동으로 문자열 태그를 붙이고 싶다면 어떻게 해야 할까요? 기존 GAN 기술을 이용할 때는 불가능했습니다. 하지만 cGAN을 이용하여 조건을 변경한다면 이 모든 것이 가능합니다.
cGAN 원리를 좀 더 자세히 살펴보겠습니다.
기본적으로 GAN 원리와 비슷하지만, 다음 그림과 같이 생성자와 판별자에 조건을 입력하는 부분에서 차이가 있습니다.
▲ 그림 13-21 cGAN 원리
예를 들어 MNIST 데이터셋을 사용하여 데이터를 훈련시킨 후 숫자 1을 출력한다고 합시다. 이때 생성자에 노이즈 벡터와 더불어 그것을 뜻하는 조건 C(Condition C)(예 [0,0,1])를 넣어 줍니다. 물론 판별자에도 조건 C([0,0,1])가 추가되어야 합니다.
이런 식으로 생성자와 판별자에 조건이 추가되면서 이미지에 대한 변형(기존 이미지에서 변형된 이미지를 생성)이 가능하게 됩니다.