공부/구글 머신러닝 단기집중과정

구글 머신러닝 단기집중과정 - ML 개념 - 정규화 : 단순성

ohhw 2021. 6. 21. 16:24
728x90
반응형

단순성을 위한 정규화

 

정규화란 모델의 복잡도에 페널티를 줌으로써 과적합을 줄이는 것입니다.

 

일반화 곡선

 

 

 

모델 복잡도에 페널티 부여

 

  • 가능하면 모델 복잡도를 방지하려고 합니다.
  • 학습 단계에서 수행하는 최적화에 이 아이디어를 적용할 수 있습니다.
  • 경험적 위험 최소화
    • 학습 오류를 낮추는 것이 목표
      \( 최소화:\,손실(데이터|모델) \)
    • 또한 복잡도를 낮출 수 있도록 조정
      \( 최소화:\,손실(데이터|모델)\,+\,복잡도(모델) \)

 

정규화

 

  • 복잡도(모델)를 정의하는 방법
  • 더 작은 가중치 선호
  • 여기에서 벗어나면 비용이 발생함
  • L2 정규화(일명 능선)를 통해 이 아이디어를 구현할 수 있음
    • 복잡도(모델) = 가중치의 제곱의 합
    • 아주 큰 가중치에 대한 페널티 부여
    • 선형 모델에서는 더 평평한 기울기를 선호
    • 베이지안 사전 확률:
      • 가중치는 0을 중심으로 배치되어야 함
      • 가중치는 정규 분포되어야 함

 

L2 정규화를 이용한 손실 함수

 

$$ L(w,D)+\lambda||w||{_2^2} $$

 

설명:

L: 학습 오류를 낮추는 것이 목표

λ: 가중치의 균형을 유지하는 방법을 제어하는 스칼라 값

w: 복잡도를 낮출 수 있도록 조정

\({_2^2}\): 다음의 제곱

L2: 가중치의 정규화

 

 

 

단순성을 위한 정규화: L₂ 정규화

 

다음에 제시된 일반화 곡선은 학습 반복 횟수에 대해 학습 세트와 검증 세트의 손실을 보여줍니다.

 

그림 1. 학습 세트와 검증 세트에서의 손실

 

그림 1은 학습 손실은 점차 감소하지만 검증 손실은 결국 증가하는 모델을 보여줍니다. 즉, 이 일반화 곡선은 모델이 학습 세트의 데이터에 대해 과적합하다는 것을 보여줍니다. 이전에 언급했던 Occam 개념을 활용하면 복잡한 모델에 페널티를 부여하는 정규화라는 원칙을 사용하여 과적합을 방지할 수 있을지도 모릅니다.

 

다시 말해 다음은 단순히 손실을 최소화하는 것만을 목표로 삼습니다 (경험적 위험 최소화).

 

$$ 최소화\,(손실\,(데이터|모델)\,) $$

 

이제 구조적 위험 최소화를 통해 다음과 같이 손실과 복잡도를 함께 최소화해 보겠습니다.

 

$$ 최소화\,(손실\,(데이터|모델)\,+\,복잡도\,(모델)\,) $$

 

이제 우리의 학습 최적화 알고리즘은 모델이 데이터에 얼마나 적합한지 측정하는 손실 항과 모델 복잡도를 측정하는 정규화 항의 함수가 됩니다.

 

 

본 머신러닝 단기집중과정에서는 일반적인 (그리고 어느 정도 서로 관련이 있는) 2가지 방법으로 모델 복잡도를 다루게 됩니다.

 

  • 모델의 모든 특성의 가중치에 대한 함수로서의 모델 복잡도
  • 0이 아닌 가중치를 사용하는 특성의 총 개수에 대한 함수로서의 모델 복잡도 (후속 강의에서 이 접근 방식을 다룹니다.)

 

모델 복잡도가 가중치에 대한 함수인 경우 높은 절대값을 사용하는 특성 가중치는 낮은 절대값을 사용하는 특성 가중치보다 더 복잡합니다.

 

모든 특성 가중치를 제곱한 값의 합계로서 정규화 항을 정의하는 L2 정규화 공식을 사용하여 복잡도를 수치화할 수 있습니다.

 

$$ L2정규화 항=||w||_2^2=w_1^2+w_2^2+...+w_2^n $$

 

이 공식에서 0에 가까운 가중치는 모델 복잡도에 거의 영향을 미치지 않는 반면, 이상점 가중치는 큰 영향을 미칠 수 있습니다.

 

예를 들어 다음과 같은 가중치를 갖는 선형 모델이 있습니다.

 

$$ \{w_1=0.2,w_2=0.5,w_3=5,w_4=1,w_5=0.25,w_6=0.75\} $$

 

위 모델의 L2 정규화 항은 다음과 같이 26.915입니다.

 

$$ w_1^2+w_2^2+w_3^2+w_4^2+w_5^2+w_6^2 $$

$$ =0.2^2+0.5^2+5^2+1^2+0.25^2+0.75^2 $$

$$ =0.04+0.25+25+1+0.0625+0.5625 $$

$$ =26.915 $$

 

하지만 제곱한 값이 25인 위의 굵은 글씨체로 된 w3는 거의 모든 복잡도에 기여합니다. 다른 5개의 모든 가중치를 제곱한 값의 합계는 L2 정규화 항에 1.915를 더하기만 하면 됩니다.

 

 

주요 용어

 

 

단순성을 위한 정규화: 람다

 

모델 개발자는 람다라는 스칼라(정규화율이라고도 함)를 정규화 항의 값에 곱하여 정규화 항의 전반적인 영향을 조정합니다. 즉, 모델 개발자는 다음을 수행하는 것을 목표로 합니다.

 

$$ 최소화\,(손실\,(데이터|모델)\,+\,\lambda복잡도\,(모델)\,) $$

 

L2 정규화를 수행하면 모델에 다음과 같은 효과를 줄 수 있습니다.

 

  • 가중치 값을 0으로 유도(정확히 0은 아님)
  • 정규 (종 모양 또는 가우시안) 분포를 사용하여 가중치 평균을 0으로 유도

 

람다 값을 높이면 정규화 효과가 강화됩니다. 예를 들어 높은 람다 값에 대한 가중치 히스토그램은 그림 2처럼 보일 수 있습니다.

 

 

 

 

그림 2. 가중치 히스토그램

 

람다 값을 낮추면 그림 3과 같이 더 평평한 히스토그램이 산출되는 경향이 있습니다.

 

 

 

 

그림 3. 더 낮은 람다 값으로 생성된 가중치 히스토그램

 

람다 값을 선택할 때 세워야 할 목표는 단순성과 학습 데이터 적합성 사이에 적절한 균형을 맞추는 것입니다.

 

  • 람다 값이 너무 높으면 모델은 단순해지지만 데이터가 과소적합해질 위험이 있습니다. 그렇게 되면 모델은 유용한 예측을 수행할 만큼 학습 데이터에 대해 충분히 학습하지 못할 수 있습니다.
  • 람다 값이 너무 낮으면 모델은 더 복잡해지고 데이터가 과적합해질 위험이 있습니다. 모델이 학습 데이터의 특수성을 너무 많이 학습하게 되고 새로운 데이터로 일반화하지 못하게 됩니다.

 

★ 참고: 람다를 0으로 설정하면 정규화가 완전히 제거됩니다. 이 경우 학습이 손실을 최소화하는 데에만 초점을 맞추게 되어 가장 높은 수준의 과적합 위험을 낳습니다.

 

이상적인 람다 값은 이전에 보지 못했던 새로운 데이터로 효과적으로 일반화되는 모델을 만들어냅니다. 하지만 이상적인 람다 값은 데이터 의존적이므로 조정

 

 L2 정규화와 학습률에 대해 자세히 알아보려면 여기를 클릭하세요.

학습률과 람다는 밀접하게 연결되어 있습니다. 강력한 L2 정규화 값은 특성 가중치를 0에 가깝게 유도하는 경향이 있습니다. 낮은 학습률(조기 중단 포함)도 종종 같은 효과를 가져오는데 이는 0과의 보폭 차이가 그다지 크지 않기 때문입니다. 결과적으로 학습률과 람다를 동시에 변경하면 혼동스러운 효과를 낳을 수 있습니다.

 

조기 중단이란 모델이 완전히 수렴되기 전에 학습을 끝내는 것을 뜻합니다. 실제로 학습이 온라인 (연속적) 방식일 경우 일정 부분 암묵적으로 학습을 조기에 중단하는 경우가 많습니다. 즉, 일부 새로운 추세에는 아직 수렴을 위한 데이터가 충분하지 않습니다.

 

이미 언급했듯이 정규화 매개변수 변경으로 인한 효과는 학습률 또는 반복 횟수의 변경으로 인한 효과와의 혼동을 일으킬 수 있습니다. 한 가지 유용한 방법(고정된 데이터 배치를 가지고 학습하는 경우)은 조기 중단의 영향이 발생하지 않도록 반복 횟수를 충분히 높이는 것입니다.

 

 

주요 용어

 

 

단순성을 위한 정규화: 이해도 확인

 

L2 정규화

 

아래 옵션을 확인하세요.

 

100개의 입력 특성이 있는 선형 모델을 떠올려 보세요.

 

  • 10개는 매우 유용합니다.
  • 90개는 유용하지 않습니다.

모든 특성이 -1과 1 사이의 값을 갖는다고 가정했을 때 다음 중 참인 내용은 무엇일까요?

 

 

 

L2 정규화는 대부분의 유용하지 않은 가중치가 정확히 0.0이 되도록 유도합니다.

 

L2 정규화는 가중치가 정확히 0.0이 되도록 강제하는 경향이 없습니다. L2 정규화는 작은 가중치보다 큰 가중치에 더 페널티를 줍니다. 가중치가 0.0에 가까워지면 L2는 0.0을 향해 덜 강하게 '밀어붙입니다'.

 

다시 시도해 보세요.

 

L2 정규화로 인해 모델이 일부 유용하지 않은 특성에 대해 적정 가중치를 학습하게 될 수 있습니다.

 

놀랍게도 유용하지 않은 특성이 라벨과 상관 관계가 있을 때 이러한 일이 발생할 수 있습니다. 이 경우 모델은 유용한 특성에 부여되어야 할 '크레딧'의 일부를 그러한 유용하지 않은 특성에 잘못 부여하게 됩니다.

 

정답 2개 중 1개를 맞췄습니다.

 

L2 정규화는 많은 유용하지 않은 가중치를 (정확히는 아니지만) 0.0에 가깝게 유도합니다.

예, L2 정규화는 가중치가 0.0에 가까워지도록 유도하지만 정확히 0.0이 되지는 않습니다.

 

정답 2개 중 2개를 맞췄습니다.

 

 

L2 정규화와 상관 특성

 

아래 옵션을 확인하세요.

 

밀접한 상관 관계가 두 개의 특성을 떠올려 보세요. 이 두 특성은 서로 거의 동일하지만 둘 중 하나의 특성에는 임의의 노이즈가 조금 포함되어 있습니다. L2 정규화를 사용해 이 모델을 학습한다면 이러한 두 특성에 대한 가중치는 어떻게 될까요?

 

한 특성은 큰 가중치를 갖게 되고 다른 하나는 정확히 0.0의 가중치를 갖게 됩니다.

 

L2 정규화가 가중치를 정확히 0.0이 되도록 강제하는 경우는 드뭅니다. 반대로 L1 정규화(나중에 설명)는 강제로 가중치가 정확히 0.0이 되게 합니다.

 

다시 시도해 보세요.

 

한 특성은 큰 가중치를 갖게 되고 다른 하나는 0.0에 가까운 가중치를 갖게 됩니다.

 

L2 정규화는 작은 가중치보다 큰 가중치에 더 페널티를 줍니다. 따라서 한 가중치가 다른 가중치보다 더 빠르게 줄어들기 시작했어도 L2 정규화는 큰 가중치가 작은 가중치보다 더 빨리 줄어들도록 강제합니다.

 

다시 시도해 보세요.

 

두 특성 모두 대체로 동일하며 적정한 가중치를 갖게 됩니다.

 

L2 정규화는 두 가지 특성 중 하나만 모델에 포함한 경우의 대략 절반 수준인 대체로 동일한 가중치를 향하여 특성을 이끌어 갑니다.

 

정답입니다.

728x90