GAN/이론

8. 훈련 노하우

jwjwvison 2021. 6. 26. 13:34

 

<입력 정규화>

거의 모든 머신러닝 자료를 보면 이미지를 -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