머신러닝

[딥러닝] 딥러닝 2단계: 심층 신경망 성능 향상시키기 - 5. 하이퍼파라미터 , 6. 배치 정규화

sa_woll 2024. 5. 20. 14:32

좋은 하이퍼파라미터를 찾을 수 있는 방법?

 

튜닝 프로세스

- 하이퍼파라미터의 종류

+ mini batch size

- 무작위 접근 방식: 격자 모양이 아니라, 랜덤하게 하이퍼파라미터를 시도한다.

-> 어떤 하이퍼파라미터가 문제 해결에 더 중요한지 미리 알 수 없기 때문이다.

- 정밀화 접근: 전체 하이퍼파라미터 공간을 미리 탐색하여 좋은 점을 찾고, 그 근방에서 더 정밀하게 탐색한다.

 

적절한 척도 선택하기

- 은닉 유닛의 수, 은닉층의 수는 무작위로 뽑는 것이 합리적인 파라미터들이다.(1과 0.0001 사이의 값 중에 고른다.)

- 학습률의 경우에는 그렇지 않다. 거의 모든(90%) 값이 1과 0.1 사이에 존재하기 때문이다. 따라서 선형척도 대신 로그척도에서 하이퍼파라미터를 찾는 것이 합리적이다.

- 지수 가중 이동 평균에서 사용되는 β 또한 로그척도를 사용해 탐색한다. 

- 학습률과 β는 1에 가까울수록 탐색결과에 더 큰 영향을 미친다. 

 

하이퍼파라미터 튜닝 실전

- 한 어플리케이션에서 얻은 하이퍼파라미터에 대한 직관이 다른 영역에서 쓰일 수도, 아닐 수도 있다.

- 모델 돌보기(판다 접근):

  • 컴퓨터의 자원이 많이 필요하지 않거나 적은 숫자의 모델을 한번에 학습시킬 수 있을 때 사용한다.
  • 하나의 모델로 매일 성능을 지켜보며 학습 속도를 조금씩 바꾼다.

- 동시에 여러 모델 훈련(캐비어 접근):

  • 컴퓨터의 자원이 충분히 많아 여러 모델을 한 번에 학습시킬 수 있을 때 사용

배치 정규화

- 딥러닝의 부상과 함께 떠오른 가장 중요한 알고리즘.

- 하이퍼파라미터 탐색을 쉽게 만들어 준다.

- 신경망과 하이퍼파라미터의 상관관계를 줄여 준다.

- 대개 활성화 함수 이전에 사용된다.

- 정규화 이후, 항상 같은 분포값을 갖지 않게 하기 위해서 다시 선형변환한다.

배치 정규화 적용시키기

- 은닉층에서의 배치 정규화 적용은 두 단계로 나뉜다.

1. 선형결합인 z를 계산하고 이를 배치 정규화한다.

2. 정규화 된 값들을 활성화 함수를 거쳐 a를 얻는다.

- 선형결합단계에서 상수항 b는 없어진다. 배치 정규화 과정에서 z의 평균을 빼 주면 사라지기 때문이다. 

배치 정규화가 잘 작동하는 이유

- 배치 정규화는 입력 특성의 평균을 0, 분산을 1로 만듦으로써 학습 속도를 빠르게 한다.

- 배치 정규화가 잘 되는 이유 중 하나는 이전 층의 가중치 영향을 덜 받게 하는데 있다. 은닉층 값의 분포 변화를 줄여줘서, 입력 값의 분포를 제한하기 때문이다. 즉, 배치 정규화는 입력값이 바뀌어서 발생하는 문제를 안정화한다. 앞층과 뒷층의 매개변수의 상관 관계를 줄여주기 때문에, 학습 속도를 향상시킬 수 있다.

- 배치 정규화의 또 다른 효과는 파라미터의 정규화(regularization)이다: 미니배치로 계산한 평균과 분산은 전체 데이터의 일부로 추정한 것이기 때문에 잡음이 끼어 있다.

- 드롭아웃의 경우 은닉 유닛에 확률에 따라 0 혹은 1을 곱하기 때문에 곱셈 잡음이 있다. 배치 정규화의 경우 곱셈 잡음(×1/)과 덧셈 잡음()이 동시에 있다. 따라서 약간의 정규화 효과가 있다.

- 은닉층에 잡음을 추가한다는 것은 이후 은닉층이 하나의 은닉 유닛에 너무 의존하지 않도록 만든다. 큰 미니배치를 사용할 때 이 정규화 효과는 상대적으로 약해진다.

테스트시의 배치 정규화

- 테스트 시에는 배치가 하나이다. 따라서 평균과 분산을 계산할 수 없다. 그래서 학습시에 사용된 미니 배치들의 지수 가중 이동 평균을 추정치로 사용한다.