인공신경망

오버피팅(overfitting) 해결 및 방지 방법

왕눈임 2024. 10. 29. 13:44

주로 신경망 학습에서 발생하는 오버피팅을 해결하기 위한 방법을 살펴봅니다.

1.drop out

이름에서 알 수 있듯,

 

인공신경망을 구성하는 뉴런들을 "전부" 활성화하는 것이 아니라

일부를 끄고 반복적으로 뉴런의 활성화 상태를 재구성한다.

 

이게 왜 오버피팅을 방지하는지?

 

train data에 대해  학습할 때 모델이 fit 되는 상황을 살펴보면 이해할 수 있다.

아래는 어디서든 볼 수 있는 오버피팅을 설명하는 그래프다

 

 

train에 과도하게 학습할수록 test data에 대해서는 loss가 커지는 것이 오버피팅

 

학습 초기에는 모델이 traintest공통된 특징들을 위주로 학습합니다.

 

train에 대한 학습이 길어지면 train에만 존재하는

덜 중요한 특징들에 대해 학습하게 되는데..

 

이것이 오버피팅

 

따라서 중요한 특징들을 학습하는 초기 상태를 유지해 주자는 것

 

그래서 임의의 뉴런을 비활성화함으로써 

구성하는 뉴런의 종류를 달리한다.

 

결과로 학습 초기와 유사한 상태를 유지함으로써

tarin에 과도하게 fitting되는 상황을 방지하게 되는 것이다.

 

 

drop out은 활성화 함수로 Relu를 사용하면 할 수 있습니다.

 

 

Relu 함수 (파란색은 미분한 함수)

 

input 이 음수로 들어오면 그 값을 0으로 출력하여 

뉴런이 비활성화 상태가 되어

drop out과 같은 효과를 기대할 수 있음.

 


 

2.weight decay

추정하고자 하는 모수 w의 크기를 제한하자는 것.

 

w의 크기 제한이 왜 오버피팅을 방지하는지 

오버피팅 된 상황에서의 w의 크기를 생각해 보자.

 

 

이와 같은 다항함수 회귀에서

 

초록색의 데이터 분포를 예측하는데 학습 결과로 빨간색 다항 함수를 구했다고 하자

현재 그래프는 전형적인 오버피팅으로 예측 함수를 구성하는 회귀계수들은 

그 값이 매우 클 것임을 쉽게 유추 할 수 있다.

 

그래서 일반적인 목적함수에 w의 크기에 대한 penalty 항을 추가하여 

목적함수 최소화를 진행할 때 w의 크기를 작게 할 것을 요구하는 방법을 씁니다.

릿지와 라쏘 회귀에서 본 목적함수와 같다.


 

3.배치정규화

배치데이터란?

 

인공신경망을 학습할 때에는 효율성 때문에 데이터 전체를 넣어 학습하지 않습니다.

 

인공신경망 학습 시 stochastic gradient descent 를 사용하기 위해서도

데이터를 묶음 단위로 분할한 "배치데이터"를 사용합니다.

 

(참고)

2024.10.30 - [인공신경망] - Stochastic gradient descent (SGD)

 

각각에 배치데이터에 대해서 한번 학습할 때마다 정규화를 해줍니다.

 

 

정규화란 무엇이고 왜 하는지

 

(픽셀데이터라면)

 훈련 데이터와 테스트 데이터의 밝기 차이를 예시로 들 수 있습니다.

 

가령 훈련 데이터테스트 데이터에 비해 더 밝다고 해보자.

그러면 훈련 데이터의 이미지를 학습한 모델은

테스트 데이터의 전반적인 이미지를

어두운 영역으로 인식하고 분류하게 된다.

 

즉 상대적 밝기 차이가 아닌 절대적인 차이에 의해 test 데이터의 이미지를 분류하게 된다.

train_data에 오버피팅이 되어버린 상황이다.

 

그래서 train_data를 학습할 때 상대적 밝기 차이를 학습하도록

데이터를 중앙으로 가져와 학습하는 것이 바로 배치 정규화.

'인공신경망' 카테고리의 다른 글

AdaGrad/RMSprop/Adam 이란?  (2) 2024.11.03
Stochastic gradient descent (SGD)  (0) 2024.10.30
역전파(Backpropagation)/vanishing gradient problem  (0) 2024.10.27
MLP(multi-layer perceptron)  (0) 2024.10.15