오버피팅

 머신러닝을 진행하다보면 후년데이터에 너무 적응해 그외에 시험 데이터는 좋지 못한 정답을 보여주는 경우가 있는데 이걸 오버피팅이라고 말합니다. 이번 포스팅에서는 그런 오버피팅을 해결하는 몇가지 방법을 알아보겠습니다.

1. 가중치 감소(weight decay)

 큰 가중치는 큰 영향을 미치며 이는 오버피팅으로 들어갈 확률이 높아집니다. 그래서 우리는 이런 가중치에 크기에 비례하는 패널티를 부과하는 방식으로 오버피팅을 방지할 수 있는데 이를 가중치 감소라고 합니다. 가중치 감소에서는 가중치의 양만큼 소실함수에 더해주는 방식으로 진행됩니다. 이러면 손실함수를 최소로 유지하려는 머신러닝의 목적과 가중치가 증가되는 가중치 감소의 메커니즘이 서로 상쇄되면서 가중치를 적당한 값으로 유지하고 이는 오버피팅을 막을 수 있습니다. 

2. 드롭아웃(Dropout)

가중치가 분명히 중요한 역할을 하는 것은 맞습니다만 신경망 모델이 복잡해지면 복잡해질 수록 가중치 감소만으로는 점점 대응하기 어려워집니다. 이럴 경우 사용하는 방법이 바로 드롭아웃입니다. 드롭아웃은 말 그대로 복잡한 신경망에서 몇몇 노드를 인위적으로 드롭아웃(제외)시키는 방법으로 오버피팅을 방지한다. 

보통 구현은 순전파시 삭제할 뉴런의 값을 false로 표기하고 사용하는 방법을 이용하고 역전파시에도 동일하게 적용한다. 

댓글

이 블로그의 인기 게시물

MongoDB와 VScode 이용한 드라이빙app 개발 일지 (2022.4.10)

다양한 계층 구현을 통한 오차역전파법 구현하기(2)