일상 속 공감을 공유하다.

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

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

ohhw 2021. 6. 22. 09:42
728x90
반응형

희소성을 위한 정규화

 

이 모듈에서는 많은 차원을 갖는 특성 벡터에 대해 학습한 모델의 특수 요구사항에 중점을 둡니다.

 

 

특성 교차로 돌아가기

  • 주의: 희소 특성 교차는 특성 공간을 크게 늘릴 수 있습니다.
  • 가능한 문제:
    • 모델 크기(RAM)가 매우 커질 수 있음
    • '노이즈' 계수(과적합의 원인)

 

 

L1 정규화

  • L0 가중치 기준에 페널티를 주고자 함
    • 볼록하지 않은 최적화, NP-난해
  • L1 정규화로의 완화:
    • 절대값(가중치)의 합에 페널티를 줌
    • 볼록 문제
    • L2와는 달리 희소성을 유도

 

희소성을 위한 정규화: L₁ 정규화

 

희소 벡터는 종종 많은 차원을 포함합니다. 특성 교차를 생성하면 더 많은 차원이 발생합니다. 이러한 고차원 특성 벡터가 주어지면 모델 크기가 커질 수 있으며 엄청난 양의 RAM이 필요합니다.

 

가능하다면 고차원의 희소 벡터에서는 가중치가 정확하게 0으로 떨어지도록 유도하는 것이 좋습니다. 가중치가 정확하게 0일 경우 모델에서 해당 특성을 삭제합니다. 특성을 없애면 RAM이 절약되고 모델의 노이즈가 줄어들 수 있습니다.

 

예를 들어, 캘리포니아뿐만 아니라 전 세계를 포괄하는 주택 데이터 세트를 생각해 보겠습니다. 분 단위(1분 =1/60도)로 전 세계 위도를 버케팅하면 약 10,000개의 차원을, 전 세계 경도를 버케팅하면 약 20,000개의 차원을 희소 인코딩에서 사용할 수 있습니다. 이러한 두 가지 특성에 대한 특성 교차를 통해 약 2억 개의 차원이 생성됩니다. 2억 개의 차원 중 많은 부분이 제한된 거주 지역(예: 바다 한가운데)을 나타내므로 이러한 데이터를 효과적인 일반화를 위해 사용하기는 어려울 것입니다. 이와 같이 불필요한 차원을 저장하기 위해 RAM을 낭비하는 것은 어리석은 일일 것입니다. 따라서 무의미한 차원의 가중치가 정확히 0이 되도록 하는 것이 중요합니다. 그러면 추론 단계에서 이러한 모델 계수에 대한 저장 비용을 지불하지 않아도 됩니다.

 

적절히 선택한 정규화 항을 추가함으로써, 학습 시 수행한 최적화 문제에 이 아이디어를 적용할 수 있습니다.

 

L2 정규화를 통해 목표를 달성할 수 있을까요? 안타깝게도 그렇지 않습니다. L2 정규화는 가중치를 작은 값으로 유도하지만 정확히 0.0으로 만들지는 못합니다.

 

이에 대한 대안은 모델에서 0이 아닌 계수 값의 수에 페널티를 주는 정규화 항을 생성해 보는 것입니다. 0이 아닌 계수 값의 수를 늘리는 것이 정당화되는 유일한 경우는 모델의 데이터 적합성을 충분히 확보한 경우입니다. 하지만 이 개수 기반 접근 방식은 직관적으로는 매력적이긴 하지만 볼록 최적화 문제를 NP-난해인 볼록하지 않은 최적화 문제로 바꿔버리는 단점이 있습니다. 자세히 살펴보면 배낭 문제와 관련이 있다는 것을 알 수 있습니다. 그렇기 때문에, L0 정규화로 알려진 이 아이디어를 실제로 효과적으로 사용할 수는 없습니다.

 

하지만 L0에 가까우면서도 볼록하다는 이점이 있어 계산하기에 효율적인 L1 정규화라는 정규화 항이 있습니다. 따라서 L1 정규화를 사용하여 모델에서 유용하지 않은 많은 계수를 정확히 0이 되도록 유도하여 추론 단계에서 RAM을 절약할 수 있습니다.

 

 

L1 정규화와 L2 정규화 비교

 

L2와 L1은 서로 다른 방식으로 가중치에 페널티를 줍니다.

 

  • L2는 가중치2에 페널티를 줍니다.
  • L1은 |가중치|에 페널티를 줍니다.

 

결과적으로 L2와 L1은 서로 다르게 미분됩니다.

 

  • L2의 미분계수는 2 * 가중치입니다.
  • L1의 미분계수는 k(가중치와 무관한 값을 갖는 상수)입니다.

 

L2의 미분계수는 매번 가중치의 x%만큼 제거한다고 생각하면 됩니다. 그리스 철학자 제논이 말했듯이 어떤 수를 x%만큼 무한히 제거해도 그 값은 절대 0이 되지 않습니다. 제논은 사실상 정확히 0을 만들 수 있는 부동 소수점 정밀도 한계에 대해서는 잘 알지 못했습니다. 어쨌든, L2는 일반적으로 가중치를 0으로 유도하지 않습니다.

 

L1의 미분계수는 매번 가중치에서 일정 상수를 빼는 것으로 생각하면 됩니다. 하지만 절대값으로 인해 L1은 0에서 불연속성을 가지며, 이로 인해 0을 지나는 빼기 결과값은 0이 되어 제거됩니다. 예를 들어, 빼기 연산으로 인해 가중치가 +0.1에서 -0.2이 된다면 L1은 가중치를 정확히 0으로 만들 수 있습니다. 드디어 발견했습니다. L1을 통해 가중치가 제거되었습니다.

 

모든 가중치의 절대값에 페널티를 주는 L1 정규화는 다양한 모델에서 아주 효율적으로 활용할 수 있습니다.

 

이 설명은 1차원 모델에만 적용되는 점에 유의하세요.

 

재생 버튼 () 을 클릭하여 L1 정규화와 L2 정규화가 가중치 네트워크에 미치는 영향을 비교해 보세요.

 

 

주요 용어

 

 

 

희소성을 위한 정규화: 이해도 확인

 

L1 정규화

아래 옵션을 확인하세요.

 

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

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

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

 

 

 

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

 

일반적으로, 충분한 람다에 대한 L1 정규화는 유용하지 않은 특성이 정확히 가중치 0.0이 되도록 유도하는 경향이 있습니다. L2 정규화와 달리 L1 정규화는 가중치가 0.0에서 얼마나 떨어져 있는지에 관계없이 0.0을 향해 강력하게 '밀어붙입니다.'

 

다시 시도해 보세요.

 

L1 정규화는 유용한 특성이 정확히 0.0의 가중치를 얻게 할 수 있습니다.

 

L1 정규화는 다음과 같은 특성에 정확하게 가중치 0을 부여할 수 있으므로 주의하세요.

  • 약하게나마 유용한 특성
  • 다양한 조정 상황에서 매우 유용한 특성
  • 비슷하게 유용한 다른 특성과 상관 관계가 매우 높은 유용한 특성

 

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

 

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

 

충분한 람다에 대한 L1 정규화는 유용하지 않은 가중치가 정확히 0.0이 되도록 유도하는 경향이 있습니다. 이렇게 함으로써 유용하지 않은 특성이 모델에서 사라지게 됩니다.

 

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

 

L1 정규화와 L2 정규화 비교

 

아래 옵션을 확인하세요.

 

모두 -1에서 1 사이의 값을 갖는 100개의 입력 특성을 사용하는 선형 모델을 떠올려 보세요.

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

어떤 유형의 정규화가 더 작은 모델을 만들 수 있을까요?

 

 

L1 정규화

 

L1 정규화는 특성 개수를 줄이는 경향이 있습니다. 다시 말해 L1 정규화는 종종 모델 크기를 줄입니다.

 

정답입니다.

 

L2 정규화

 

L2 정규화는 특성 개수를 줄이는 일이 거의 없습니다. 다시 말해 L2 정규화는 모델 크기를 줄이는 일이 거의 없습니다.

 

다시 시도해 보세요.

728x90