GAN의 생성기 부분은 구분자의 의견을 통합하여 가짜 데이터를 만드는 방법을 학습합니다. 판별자가 출력을 실제로 분류하도록 학습합니다.
생성기 학습에는 구분자 학습보다 생성기와 구분자 간의 더 긴밀한 통합이 필요합니다. 생성기를 학습하는 GAN의 부분에는 다음이 포함됩니다.
- 무작위 입력
- 생성자 네트워크: 무작위 입력을 데이터 인스턴스로 변환
- 생성된 데이터를 분류하는 판별자 네트워크
- 분류자 출력
- 생성기 손실: 판별자를 속이지 못한 생성기에 불이익을 줍니다.
그림 1: 생성기 학습의 역전파
무작위 입력
신경망에는 어떤 형태로든 입력이 필요합니다. 일반적으로 분류하거나 예측하려는 인스턴스와 같이 어떤 작업을 할 데이터를 입력합니다. 하지만 완전히 새로운 데이터 인스턴스를 출력하는 네트워크의 입력으로 무엇을 사용해야 하나요?
가장 기본적인 형태의 GAN은 무작위 노이즈를 입력으로 사용합니다. 그러면 생성기가 이 노이즈를 의미 있는 출력으로 변환합니다. 노이즈를 도입하면 GAN이 타겟 분포의 여러 위치에서 샘플링하여 다양한 데이터를 생성하도록 할 수 있습니다.
실험에 따르면 노이즈의 분포는 중요하지 않으므로 균등 분포와 같이 샘플링하기 쉬운 것을 선택할 수 있습니다. 편의를 위해 노이즈를 샘플링하는 공간은 일반적으로 출력 공간의 크기보다 작습니다.
구분자를 사용하여 생성기 학습
신경망을 학습시키려면 신경망의 가중치를 변경하여 출력의 오류나 손실을 줄입니다. 하지만 GAN에서는 생성기가 영향을 주려는 손실과 직접 연결되어 있지 않습니다. 생성기는 분류자 네트워크에 피드되고 분류자는 영향을 주려는 출력을 생성합니다. 생성기 손실은 분류자 네트워크가 가짜로 분류하는 샘플을 생성한 생성기에 불이익을 줍니다.
이 추가 네트워크 청크는 역전파에 포함되어야 합니다. 역전파는 가중치가 출력에 미치는 영향(가중치를 변경하면 출력이 어떻게 달라지는지)을 계산하여 각 가중치를 올바른 방향으로 조정합니다. 하지만 생성기 가중치의 영향은 생성기에 제공되는 판별자 가중치의 영향에 따라 달라집니다. 따라서 역전파는 출력에서 시작하여 판별기를 통해 생성기로 다시 흐릅니다.
동시에 생성기 학습 중에 구분자가 변경되지 않도록 해야 합니다. 움직이는 타겟을 맞추려고 하면 생성기에서 어려운 문제를 해결하기가 더 어려워집니다.
따라서 다음 절차에 따라 생성기를 학습합니다.
- 무작위 노이즈를 샘플링합니다.
- 샘플링된 무작위 노이즈에서 생성기 출력을 생성합니다.
- 생성기 출력에 대한 분류자 '진짜' 또는 '가짜' 분류를 가져옵니다.
- 판별자 분류에서 손실을 계산합니다.
- 분류자와 생성기 모두를 통해 역전파하여 기울기를 얻습니다.
- 기울기를 사용하여 생성기 가중치만 변경합니다.
이는 생성기 학습의 한 번 반복입니다. 다음 섹션에서는 생성자와 판별자의 학습을 조정하는 방법을 알아봅니다.