공부자료/Deep Learning

하이퍼파라미터를 이용한 성능 최적화

mogazi 2022. 9. 26. 03:02

 

 

하이퍼 파라미터를 이용한 성능 최적화의 추가적인 방법으로 배치 정규화, 드롭아웃, 조기 종료가 있다.

 

 

 

 

 

 

 

  •   배치 정규화

 

 

 

용어

 

 

정규화(normalization)

 

 

정규화는 데이터 범위를 사용자가 원하는 범위로 제한하는 것을 의미.

예로 이미지 데이터는 픽셀 정보를 0~255 가시의 값을 갖는데, 이를 255로 나누면 0~1.0 사이의 값을 갖게 된다.

 

 

 

 

 

 

 

 

정규화는 각 특성 범위(스케일(scale))를 조정한다는 의미로 특성 스케일링(feature scaling)이라고도 하며, 

스케일 조정을 위해 MinMaxScaler() 기법을 사용하므로 수식은 다음과 같다.

 

 

( x : 입력 데이터 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

규제화(regularzation)

 

 

규제화는 모델 복잡도를 줄이기 위해 제약을 두는 방법이다.

이때 제약은 데이터가 네트워크에 들어가기 전에 필터를 적용한 것과 비슷하다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

표준화(standardization) 

 

 

 

표준화는 기존 데이터를 평균은 0, 표준 편차는 1인 형태의 데이터로 만드는 방법이다.

다른 표현으로 표준화 스칼라(standard scaler) 혹은 z-스코어 정규화(Z-score normalization)라고 한다.

 

 

 

 

 

 * 데이터 분포가 가우시안 분포 (정규 분포) 를 따를 때 다음 수식 사용

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

배치 정규화 (batch normalization) 

 

 

배치 정규화는 기울기 소멸(gradient vanishing)이나 기울기 폭발 (gradient exploding) 같은 문제를 해결하기 위한 방법이다.

 

 

일반적으로 기울기 소멸이나 폭발 문제를 해결하기 위해 손실함수로 렐루(ReLU) 함수를 사용하거나 초기값 튜닝, 학습률을 조정한다.

 

 

 

*  기울기 소멸 :  오차 정보를 역전파시키는 과정에서 기울기가 급격히 0에 가까워져 학습이 되지 않는 현상

*  기울기 폭발 :   학습 과정에서 기울기가 급격히 커지는 현상

 

 

 

 

 

 

 

 

 

 

 

 

 

 

기울기 소멸과 폭발 원인은 내부 공변향 변화(internal covariance shift) 때문인데, 

이것은 네트워크의 각 층마다 활성화 함수가 적용되면서 입력 값들의 분포가 계속 바뀌는 현상을 의미. 

 

 

 

분산된 분포를 정규 분포로 만들기위해 표준화와 유사한 방식을 미니 배치(mini batch)에 적용하여 평균은 0으로,

표준편차는 1로 유지하도록 하며, 수식은 다음과 같다.

 

 

 

* 참고   미니 배치 : 훈련 데이터에서 일부를 무작위로 뽑아 학습하는 것으로, 표본을 무작위로 샘플링하는 것과 개념적으로 유사

 

 

 

 

 

 

 

 

 

 

 

 

 

 

① - 미니 배치 평균을 구한다.

② - 미니배치의 분산과 표준 편차를 구한다.

③ - 정규화를 수행한다.

④ - 스케일(scale)을 조정 (데이터 분포 조정) 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  •   드롭아웃

 

 

과적합은 훈련 데이터를 과하게 학습하는 것을 의미한다.

 

 

일반적으로 훈련데이터셋은 실제 데이터셋의 부분 집합이므로 훈련 데이터셋에 대해서는 오류가 감소하지만, 

테스트 데이터셋에 대해서는 오류가 증가한다.

 

 

훈련 데이터셋에 대해 훈련을 계속한다면 오류는 줄어들지만 테스트 데이터셋에 대한 오류는 어느 순간부터 증가하는데,

이러한 모델을 과적합 되어있다고 한다.

 

 

 

 

 

 

 

 

 

드롭아웃(dropout)이란 훈련할 때 일정 비율의 뉴런만 사용하고, 나머지 뉴런에 해당하는 가중치는 업데이트하지 않는 방법

 

 

매 단계마다 사용하지 않는 뉴런을 바꾸어 가며 훈련시킨다. 

 

 

 

즉, 드롭아웃은 노드를 임의로 끄면서 학습하는 방법으로, 은닉층에 배치된 노드 중 일부를 임의로 끄면서 학습한다. 

꺼진 노드는 신호를 전달하지 않으므로 지나친 학습을 방지하는 효과가있다..

 

 

 

 

 

 

어떤 노드를 비활성화할지는 학습할 때마다 무작위로 선정되며, 검증 데이터로 평가할 때는 노드들을 모두 사용하여 출력하되 노드 삭제 비율(드롭아웃 비율)을 곱해서 성능을 평가.

 

 

드롭아웃을 사용하면 훈련 시간이 길어지는 단점이 있지만, 모델 성능을 향상하기 위해 상당히 자주 쓰는 방법이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  •   조기 종료(Early stopping) 

 

조기 종료는 뉴럴 네트워크가 과적합을 회피하는 규제 기법이다.

 

훈련 데이터와 별도로 테스트 데이터를 준비하고, 매 에포크마다 테스트 데이터에 대한 오차 (vaildation loss)를 측정하여 모델의 종료 시점을 제어한다.

 

 

 

과적합이 발생하기 전까지 훈련에 대한 손실(training loss)과 검증에 대한 손실 모두 감소하지만, 과적합이 발생하면 훈련에 대한 손실은 감소하는 반면 검증에 대한 손실은 증가한다. 

 

따라서 조기 종료는 검증에 대한 손실이 증가하는 시점에서 훈련을 멈추도록 조정한다.

 

 

 

 

 

 

 

 

 

조기 종료는 훈련을 언제 종료시킬지를 결정할 뿐이지 최고의 성능을 갖는 모델은 보장하지 않는다. 

조기 종료는 종료 시점을 확인하기 위한 콜백(callback) 함수를 반드시 함께 사용해야 한다.