주로 신경망 학습에서 발생하는 오버피팅을 해결하기 위한 방법을 살펴봅니다.
1.drop out
이름에서 알 수 있듯,
인공신경망을 구성하는 뉴런들을 "전부" 활성화하는 것이 아니라
일부를 끄고 반복적으로 뉴런의 활성화 상태를 재구성한다.
이게 왜 오버피팅을 방지하는지?
train data에 대해 학습할 때 모델이 fit 되는 상황을 살펴보면 이해할 수 있다.
아래는 어디서든 볼 수 있는 오버피팅을 설명하는 그래프다
train에 과도하게 학습할수록 test data에 대해서는 loss가 커지는 것이 오버피팅
학습 초기에는 모델이 train과 test에 공통된 특징들을 위주로 학습합니다.
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 |