간단한 2개 층의 피드포워드 신경망 대신에 생성자와 판별자를 합성곱 신경망으로 구현해보자. 이런 GAN 구조를 심층 합성곱 GAN(deep convolutional generative adversarial network) 이라고 한다. 이 기법을 연구한 연구진이 사용한 핵심 기법중 하나는 배치 정규화이다.
<배치 정규화>
정규화는 평균이 0이고 단위 분산을 가지도록 데이터의 스케일을 조정하는 것이다.
정규화에는 여러 가지 장점이 있다. 가장 중요한 것은 스케일이 다른 특성을 쉽게 비교하고 더 나아가 특성의 스케일에 훈련 과정이 민감하지 않게 만든다.
배치 정규화의 아이디어는 많은 층을 가진 심층 신경망을 다룰 때 입력을 정규화하는 것이 충분하지 않다는 것에서 출발한다. 입력 값이 네트워크를 통과하여 한 층에서 다음 층으로 전달될 때 각 층에 있는 훈련된 파라미터에 의해 스케일이 바뀐다. 이 파라미터가 역전파에 의해 조정되기 때문에 연속적으로 훈련이 반복되는 동안 각 층의 입력의 분포가 바뀌기 쉬워 학습 과정을 불안정하게 만든다. 학계에서는 이 문제를 공변량 변화(convariate shift)라고 부른다. 배치 정규화는 각 미니 배치의 평균과 분산으로 미니 배치 데이터의 스케일을 조정하여 이 문제를 해결한다.
배치 정규화를 계산하는 방식은 앞서 소개한 간단한 정규화 식과는 몇 가지 점에서 다르다.
케라스의 keras.layers.BatchNormalization 함수는 모든 미니 배치 계산과 업데이트를 자동으로 처리한다.
배치 정규화는 이전 층의 파라미터 업데이트가 현재 층의 입력 분포에 미치는 영향을 제한한다. 층 간의 원치 않는 파라미터 상호 의존성을 줄여서 신경망의 훈련 속도를 높이고 안정적으로 만든다. 특히 신경망 파라미터 초기화에 대해 안정적이다.
배치 정규화는 DCGAN을 비롯해 많은 딥러닝 구조를 구현하기 위해 필수적이다.
'GAN > 이론' 카테고리의 다른 글
6. 훈련 평가 (0) | 2021.06.24 |
---|---|
5. DCGAN - 구현 (0) | 2021.06.23 |
3. GAN 훈련 알고리즘 (0) | 2021.06.22 |
2. 생성자와 판별자 (0) | 2021.06.22 |
1. GAN 기초: 적대적 훈련 (0) | 2021.06.22 |