혁펜하임의 AI DEEP DIVE Chapter 7. Batch Normalization 해당하는 내용을 듣고 새롭게 배운 내용들을 정리해보겠습니다.

Note: 정리를 위해 혁펜하임님의 강의 자료를 일부 첨부했습니다.

완벽하게 해결되지 않은 Vanishing Gradient 문제

  • ReLU는 0 이상의 구간에서 identity 함수를 사용하여 기존 Sigmoid 함수로 인한 Vanishing gradient 문제를 해결합니다.
  • 하지만, 만약 데이터가 모두 ReLU의 0 이하 구간에 찍힌다면, 아예 그래디언트가 0으로 계산되며 극단적인 Vanishing gradient 현상이 나타날 수 있습니다.
  • 데이터가 모두 ReLU의 0 이상 구간에 찍힌다면, Non-Linearity를 잃고 모델의 표현력이 떨어지는 문제점이 있습니다.
  • 데이터가 한 쪽으로 쏠리는 이러한 케이스가 반복된다면, 모델의 학습에 악영향을 끼칠 것입니다.
  • 이를 방지하기위해 데이터를 재배치하는 것이 필요합니다. 이 때, 재배치 방식을 하나로 정하는 것보다 파라미터로 두어 가장 학습이 잘 이루어지는 방향으로 학습하게 하는 것입니다.

Batch Normalization 원리

  • Batch Normalization의 원리는 한 줄로 말하면 임의의 n노드에 대해 Non-linearity 보존 / Vanishing gradient 해결을 위한 적절한 데이터 재배치 방식입니다.
  • 활성화 함수 전에 들어가서 활성화 함수의 값이 한 쪽으로 쏠리지 않게 합니다.
  • Layer Normalization은 비슷한 원리이지만 node 기준이 아닌 layer 기준이라는 점에서 다릅니다.

Vanishing Gradient 정리

  • 정리하면, Vanishing gradient를 해결하는 방법은 크게 세 가지가 존재합니다.
    1. ReLU
    1. Batch Normalization
    1. Layer Normalization

실험!

  • 이미 ReLU로 Vanishing gradient가 해결된 상황 (충분히 성능이 나오는 상황)에서는 Batch Normalization을 적용해도 큰 차이가 없었습니다.

  • Sigmoid의 경우, Batch Normalization을 적용한 경우와 적용하지 않은 경우 간의 성능 차이가 확연했습니다. 또한, Epoch이 증가하며 사진 속 last layer value-5에서 0 중심으로 변함을 확인할 수 있었습니다.

  • Batch Normalization의 효과를 눈으로 확인해 볼 수 있어 정말 신기했습니다. :)

추가

  • 최근 Out-of-distribution detection 분야 관련 서베이 논문을 읽으면서 다음과 같은 언급을 본 적이 있습니다.

Recently, one fundamental cause of the overconfidence issue on OOD data is revealed that using mismatched BatchNorm statistics—that are estimated on ID data yet blindly applied to the OOD data in testing—can trigger abnormally high unit activations and model output accordingly.

  • 자세한 내용은 Out-of-distribution detection 문제와 overconfidence 문제에 대해 이해해야 알 수 있지만, 대략적으로 여기서 말하는 것은 학습 데이터에 대해 학습된 BatchNorm이 학습 데이터와 다른 분포를 가지는 OOD 데이터에 악영향을 줄 수 있다는 것입니다.

  • Batch Normalization을 통해 Vanishing gradient 문제를 해결할 수 있지만 Open World에 배포되었을 때 uncontrollable 할 수 있다는 문제점도 존재한다는 점이 짚어 볼 만 한 것 같습니다.

  • Group Normalization이라는 것도 본 적이 있는데, 이 원리는 어떤 방식인지 찾아보고자 합니다.

본 게시글은 패스트캠퍼스 [혁펜하임의 AI DEEP DIVE] 체험단 활동을 위해 작성되었습니다.
강의 링크 : https://bit.ly/3GV73FN

profile
초보 프로그래머

0개의 댓글