본문 바로가기
딥러닝(DL)

성능 개선을 위한 regularization 기법들

by KwonSoonBin 2022. 7. 10.

Weight Decay 
Weight Decay는 과적합을 억제하는 학습 기법의 하나
학습 과정에서 큰 가중치에 대해서 그에 상응하는 큰 패널티를 부과하여 overfitting을 억제하는 방법이다. overfitting은 weight 매개변수의 값이 커서 발생하는 경우가 많기 때문이다.

전체적인 관계의 강도를 제한하여 출력 노드가 다수의 입력 노드로 부터 많이 배우지 않도록 제한 

두 term 사이의 균형을 유지하는 것이 관건 : hyper parameter를 통해 조절

wight decay는 SDG,  Adam의 초기화 파라미터로 제공한다(직접구현x)
거의 사용할 일 없음, 성능차이가 많이난다.


데이터 첨가 (Data augmentation)
핵심 특징(feature)를 간직한 채, noise를 더하여 데이터를 확장하는 방법
-> 더 noise robust한 모델을 얻을 수 있다.

딥러닝의 고질적인 문제인 overfitting을 해결하기 위해 충분히 많은, 양질의 데이터를 필요로 합니다. 그러나 데이터의 수를 늘리는 것은 비용과 시간이 많이 필요하며, 어떤 경우에는 데이터 수집하거나 가공하는 것 조차 어려운 경우도 많다.


Dropout (nn.Dropout((0.1~0.5)))  
Dropout은 신경망의 뉴런을 부분적으로 생략하여 모델의 과적합(overfitting)을 해결해주기 위한 방법중 하나
전체 weight를 계산에 참여시키는 것이 아닐 layer에 포함된 weight 중에서 일부만 참여시키는 것이다.  학습 시 임의로 노드를 동작하지 않도록 함

학습 시 : 활률p에 따라 노드를 turn-off
추론 시 : 모든 노드를 turn-on, 하지만 학습 때보다 평균적으로 1/p배 더 큰 입력을 받게 함 -> 따라서 p를 w에 곱하여 이를 상쇄

사용 위치 : 레이어 - 함수 - Dropout - 레이어 - 함수

valid set Loop에서는 Dropout 이 off 상태여야 한다. 
train set Loop에서는 model.train(), valid set Loop에서는 model.eval() 기입해주어야 한다.  modeldms trainning mode가 default.
모델 모드 전환 필요


배치 정규화 (Batch normalization)
층으로 들어가는 입력값이 한쪽으로 쏠리거나 너무 퍼지거나 너무 좁아지지 않게 해주는 인공신경망 기법이다. 여러 입력값을 모은 배치에 대해, 각 층의 입력값의 평균과 표준편차를 다시 맞추어 주어, 입력값이 쏠리는 것을 막는다.
신경망의 각 layer에서 데이터(배치)의 분포를 정규화하는 작업이다.
신경망을 학습시킬 때, 보통 전체 데이터를 한 번에 학습시키지 않고, 조그만 단위로 분할해서 학습을 시키는데, 이 때 조그만 단위가 배치이다.
큰 사이즈의 데이터를 한 번에 학습시키는 것은 시간이 오래걸린다.

Dropout대체 가능, 보통 둘 중 하나만 사용하는 것이 관례

사용 위치 : 레이어 - 함수 - (BN) - 레이어 - 함수
또는         : 레이어 - (BN) - 함수 - 레이어 - 함수

hyperparameter 추가 없이 빠른 학습과 높은 성능 모두 보장,  쓰면 무조건 좋음, 모델 모드 전환 필요
RNN (시계열, 시귄스) 사용 불가 , 대체로 -> Layer Normalization


































'딥러닝(DL)' 카테고리의 다른 글

Word-Embedding - Embedding Layer  (0) 2022.07.24
Word-Embedding  (0) 2022.07.24
역전파(backpropagation) + 미분  (0) 2022.07.08
Loss Function, Cost Function, Objective Function의 차이  (0) 2022.06.26

댓글