2 minute read

Regularization

명확한 수학적 정의는 없지만, 목적은 명확하다. 주된 목적은 over fitting 현상을 피하기 위함이다.

오버피팅은 학습 데이터를 너무 믿는 것을 의미한다.

  • 그래서 테스트 데이터를 못맞추게 된다. 주객전도.

오버피팅 예시이미지 image

image

  • 우리가 이것을 오버피팅이라고 할 수 있는 이유는 underline-function(초록색 선)이라는 정답이 어떻게 생긴지 알고 있기 떄문이다.
  • 그러나 대부분의 상황에서는 underline-function이 어떻게 생긴지 모른다.
  • 그래서 애초에 정답인 선이 주황색 선처럼 생겼을지도 모른다.
  • 그렇기에 training-error가 줄어든다고 무조건 안좋은 상황은 아닌 것이다.
  • training-error가 줄어드는데, test-error가 커질 때 오버피팅이 발생했다고 한다.
  • 완벽한, optimal하게 overfitting을 막을 수 있는 방법은 없다.
  • underline-function가 어떻게 생겼는지 모르기 때문에, 어떠한 경우에 오버피팅, 언더피팅이 나는지 알 수 없다.
  • 즉, proxy(training-error - test-error)를 통해 알 수 있다. (간접적으로 밖에 모른다.)

image

  • 데이터에 노이즈가 껴있을 때, 문제를 풀고자 하는 hypothesis 함수가 복잡하면 복잡할수록 오버피팅이 날 가능성이 높아진다. (2차함수보다 10차함수가 더 오버피팅이 날 가능성이 높다.)
  • 그러나 가능성이 높아질 뿐, 10차함수가 훨씬더 표현력이 크기 때문에 적절히 사용만하면 훨씬 더 좋은 성능이 날 수 있다.
  • 하지만 데이터에 노이즈가 많고, 적절한 regularizer를 걸지 않는다면 더 안좋을 수도 있다.

오버피팅의 대표적인 이유는 노이즈 때문이다. (random measurement error, 관측에러.)

  • 노이즈는 언제나 Deterministic noise와 Stochastic noise가 섞여있기 때문에, 완벽하게 decomposition할 수 없다. 즉, 원래 시그널을 완벽하게 복원하는 것은 불가능하다 생각하면된다.

수학적인 툴을 이용

수학적인 툴을 이용해서 오버피팅이 어떻게 나고, 어떻게 낮출 수 있는지를 분석할 수 있다.

  • vc dimension을 사용한다.

vc dimension

image

vc dimension이라는 것은 사용하고 있는 함수의 복잡도를 나타낸다.

  • 예를 들어, 뉴럴넷의 레이어 수를 의미한다.
  • in-sample error는 training error이다.
  • out-of-sample error는 test error또는 validation error를 의미한다.
  • 이 두개의 차이를 보통 Generalization performance라고 한다.
    • 이것이 높아지는 것이 제일 제일 중요하다.
  • 즉, regularization은 Generalization performance를 높이기 위한 것이 목적이다.

image

  • x축은 vc dimension 즉, 함수의 복잡도를 나타내며 이는 뉴럴넷을 더 복잡한 것을 사용할 수록 오버피팅이 거짐을 의미한다.

8분 21초부터 다시 보기

오버피팅을 방지하는 법

  1. 데이터를 많이 모으기
    1. 그 어떤 방법보다 제일 중요하고, 데이터가 적다면 augmentation으로 뻥튀기 시켜야 한다.
  2. 적절한 capacity를 갖는 모델을 활용한다.
  3. 앙상블을 활용한다.
  4. 그 다음 테크닉이 들어간다.
    1. Droput, DropConnect, BatchNorm

Capacity 줄이기

  • Architecture: 은닉층이나 레이어의 각 노드 줄이기 (네트워크 사이즈를 줄이기.)
  • Early stopping: validation error가 줄어들다 다시 커지면 오버피팅이 일어나기 전에 학습 멈추기
  • Weight-decay: 학습하는 모델의 파라미터를 너무 크게 하고 싶지 않은 것이다. 파라미터 자체가 너무 커지지 않도록 패널티를 추가한다. (L2, L1 penalty)

Dropout

  • 랜덤으로 노드 비활성화

DropConnect

  • Weight를 0으로 바꾸는 것

Batch Normalization

이게 정말 중요함. 웬만한 문제에서는 그냥 사용하면 됨.

  • 미니 배치 학습을 할 때, 예를 들어 512개로 미니 배치를 한다하면 512개의 데이터의 statistics를 항상 zero-mean unit 가우시안으로 만드는 것이다.
  • 전체 배치에 평균을 빼고 variance로 나누어주면 된다.

이점

  1. Learning rate를 늘려도된다. (보통은 늘리면 발산함)
    1. internal 뭐시기~ 때문에 보통은 발산하는데 ~
  2. Droput 안써도 됨.
  3. L2 Weight decat안써도 됨.
  4. learning rate decay를 빨리해도 잘된다.
  5. Local Response Normalization 안써도 잘된다.

결론

오버피팅은 언제나 일어난다.

  1. Data늘리기
  2. 파라미터 늘려보기
  3. 레이어 사이즈 늘려가며 줄여가며 학습해보기
    1. (256개의 노드가 있는 레이어를 하나 더 추가하고, 노드를 512개로도 늘려보고 1024개로도 늘려보고)
    2. 데이터가 적을 때는 정말 중요하다

문제에 어떤 regularization을 적용하는지는 감이 중요하다. 풀어본 사람만이 알 수 있음.

Regularization

Parameter Norm Penalties (weight decay)

  • L2 parameter regularization: 제곱을 더한다
  • L1 parameter regularization: 절대값을 더한다

멀티 태스크 러닝

  • 같은 이미지가 들어갔는데 다른 아웃풋 찾음.
  • shared 구조로 인해서 representation을 잘 찾을 수 있어서.
  • 몇 가지 데이터가 연관된 다른 태스크에서는 각각 성능이 좋아질 수도 있음.



출처

https://www.edwith.org/deeplearningchoi/lecture/15299?isDesc=false https://kr.mathworks.com/discovery/overfitting.html

Updated: