<입력 정규화>
거의 모든 머신러닝 자료를 보면 이미지를 -1과 1 사이로 정규화하는 것이 좋다. 다른 머신러닝 분야처럼 정규화를 하면 일반적으로 계산이 용이하다. 입력을 제한한 것처럼 생성자의 출력도 tanh 활성화 함수 등으로 제한을 두는 것이 좋다.
<배치 정규화>
초기에 배치 정규화는 매우 좋은 기법이라고 널리 여겨졌다. 하지만 최근에는 이따금 나쁜 결과를 만든다. 특히 생성자에서 그렇다. 반면 판별자에서는 일반적으로 긍정적인 결과를 만든다.
<그레이디언트 페널티>
그레이디언트 노름이 너무 크면 무엇인가 잘못된다. 요즘에는 BigGAN 같은 모델이 이 분야에서 혁신을 만들고 있다. 하지만 기술적인 이슈가 여전히 있다. 단순한 가중치 클리핑은 다른 딥러닝 분야처럼 그레이디언트 소멸과 폭주를 만들 수 있다. 다른 말로 하면, 입력을 조금 바꾼다면 가중치를 너무 많이 바꾸어서는 안 된다.
<더 많은 판별자 훈련>
판별자를 더 많이 훈련하는 방법이 최근에 많은 성과를 거두고 있다. 크게 두 가지 접근 방법으로 나뉜다.
< 희소한 그레이디언트 피하기>
직관적으로 생각해도 (ReLU나 MaxPool에 의해 생성된) 희소한 그레이디언트는 훈련을 어렵게 만든다. 그 이유는 다음과 같다.
보통의 최대 풀링을 사용한다면 합성곱의 전체 수용장에서 최댓값을 제외하고 나머지는 모두 잃게 된다. 따라서 DCGAN에서 전치 합성곱을 사용하여 정보를 복원하기 더 어려워진다. 평균 풀링을 사용하면 적어도 평균 값이 무엇인지 알 수 있다. 여전히 완벽하지 않고 정보를 잃지만 이전보다는 덜 하다. 평균은 최댓값보다는 더 대표성을 띄기 때문이다.
또 다른 문제는 ReLU 활성화 함수를 사용할 때의 정보 손실이다. 이 연산을 적용했을 때 얼마나 많은 정보를 잃는지 고려하는 것이 이 문제를 바라보는 한 가지 방법이다. 나중에 이 정보를 복원해야 하기 때문이다. ReLU(x)는 단순히 max(0,x)이다. 즉 모든 음수에 대한 정보는 완전히 잃는다. 대신 음수 영역의 정보를 전달하여 이 정보가 다르다는 것을 보여주면 이 정보를 모두 보존할 수 있다.
다행히 이 두가지에 대해 간단한 해결책이 있다. 음수 X에서는 0.1 x X이고 양수 X에서는 X인 LeakyReLU와 평균 풀링으로 이런 문제를 해결할 수 있다.(시그모이드, ELU, tanh 같은) 다른 활성화 함수가 있지만 LeakyReLU가 가장 널리 사용된다.
<소프트 레이블과 잡음 레이블>
연구자들이 몇 가지 방법을 사용해 레이블에 잡음을 넣거나 완화시킨다. 원사이드(one-side)레이블 스무딩(smoothing)을 추천한다(예를 들어, 이진 레이블에 0과 0.9를 사용한다). 하지만 잡음을 넣거나 클리핑을 사용하는 것이 좋은 방향인것 같다.
'GAN > 이론' 카테고리의 다른 글
7. ProGAN - 주요한 혁신들(2) (0) | 2021.06.27 |
---|---|
6. ProGAN - 주요한 혁신들(1) (0) | 2021.06.27 |
7. 훈련의 어려움 (0) | 2021.06.24 |
6. 훈련 평가 (0) | 2021.06.24 |
5. DCGAN - 구현 (0) | 2021.06.23 |