# AI 이론/DeepLearning

규제를 사용해 과대적합 피하기

alz 2022. 4. 20. 16:06
  • l1,l2규제
  • 드롭아웃

 

앞선 글에서 배치 정규화를 통해 불안정한 그레이디언트 문제를 해결방안을 제시했습니다

이번 글에서는 신경망에서 널리 사용되는 다른 규제방법을 알아보겠습니다

 

 

 

L1,L2 규제

 

https://peaco.tistory.com/26?category=1253919

 

선형회귀(GD,Ridge,Lasso,ElasticNet)

선형회귀 및 경사하강법(배치 경사하강법, 미니배치 경사하강법, 경사하강법) 다항회귀 규제가 있는 선형 모델 선형회귀 입력 특성의 가중치 합과 편향 이라는 상수를 더해 예측을 만든다. y는

peaco.tistory.com

선형회귀에서 다루었던 것처럼 신경망의 연결 가중치를 제한하기위해 l2 규제를 사용하거나

(많은 가중치가 0인)희소모델을 만들기 위해 l1 규제를 사용했습니다.

케라스에서도 마찬가지로 다음과 같은 규제방법을 보여줍니다.

 

 

일반적으로 네트워크의 모든 은닉층에 동일한 활성화 함수, 동일한 초기화 전력을 사용하거나 모든 층에 동일한 규제를 적용하기 때문에 동일한 매개변수 값을 반복하는 경우가 많은데

이때 파이썬의 functools.partial() 방식을 사용할 수 있습니다.

 

 

 

드롭아웃 

드롭아웃이란 매 훈련스텝에서 각 뉴런(입력 뉴런은 포함하고 출력 뉴런은 제외)은 임시적으로 드롭아웃될 확률 p를 가집니다.

이번 훈련스텝에서는 완전히 무시되지만 다음 스텝에서는 활성화 될수 있는데 다음의 그림을 살펴보겠습니다

 

드롭아웃으로 훈련된 뉴런은 이웃한 뉴런에 맞추어 적응될 수 없기때문에, 자기자신이 유용해져야 합니다.

또 이런 뉴런들은 몇개의 입력 뉴런에만 지나치게 의존할 수 없기 때문에, 모든 입력 뉴런에 주의를 기울어야 해서 입력값의 작은 변화에 덜 민감해집니다. 결국 더 안정적인 네트워크가 되어 일반화 성능이 좋아집니다

 

드롭아웃의 능력을 이해하는 또다른 방법은 각 훈련 스텝에서 고유한 네트워크가 생성된다고 생각하는 것입니다

개개의 뉴런이 있을수도 없을수도 있기 때문에 2**N개의 네트워크가 가능합니다(N은 드롭아웃이 가능한 뉴런수)

1000번의 훈련스텝을 진행하면 1000개의 다른 신경망을 훈련하게 되는데, 이 신경망은 대부분의 가중치를 공유하고 있기 때문에 아주 독립적이지 않습니다. 결과적으로 만들어진 신경망은 이 모든 신경망을 평균한 앙상블로 볼 수 있습니다

 

 

Keras로 구현한 Dropout Model