normalization

scale normalization

  1. Normalization (정규화 / Min-Max Scaling)
  2. Standardization (표준화 / Z-Score Normalization)

넓은 의미에서 Normalization(정규화) 은 “데이터의 스케일을 조정하는 모든 행위”를 통칭하는 상위 개념으로 쓰임. 그래서 다음과 같이 분류하기도 함.

  • Min-Max Normalization: 우리가 흔히 말하는 Normalization (0~1 사이 압축)
  • Z-Score Normalization: 우리가 흔히 말하는 Standardization (평균 0, 표준편차 1)

• 입력 데이터의 스케일을 조정하는 작업 • 데이터 전처리 단계에서 수행. • 모델의 학습과 일반화 능력을 향상. • 데이터의 분포를 변경하지 않으면서 데이터를 일정한 범위나 척도로 조정하여 학습 알고리즘이 더 잘 동작하도록 돕는 방법 • 목적 ◦ 스케일 조정: 입력 데이터의 범위가 크게 차이나는 경우, 학습 알고리즘이 스케일이 큰 특성에 치우쳐져서 학습을 제대로 수행하지 못할 수 있습니다. 정규화는 입력 데이터를 일정한 범위로 조정하여 이러한 문제를 해결합니다. ◦ 그래디언트 안정화: 일부 머신 러닝 알고리즘에서는 그래디언트의 크기에 민감하게 반응하는 경우가 있습니다. 입력 데이터의 스케일이 큰 경우 그래디언트의 크기도 커져서 학습이 불안정해질 수 있습니다. 정규화는 그래디언트의 크기를 조절하여 학습 과정을 안정화시키는 역할을 합니다. ◦ 과적합 방지: 정규화는 모델의 복잡도를 제어하여 과적합을 방지하는 데 도움을 줍니다. 과적합은 모델이 학습 데이터에 지나치게 적합되어 일반화 성능이 떨어지는 현상을 말합니다. 정규화는 모델의 가중치를 제한하거나 제약을 가하여 과적합을 완화시키는 효과를 얻을 수 있습니다. • normalization 주요 기법 ◦ 표준화(Standardization): 입력 데이터를 평균이 0, 표준 편차가 1인 정규 분포로 변환하는 방법입니다. ◦ 최소-최대 스케일링(Min-Max Scaling): 입력 데이터를 주어진 범위(minimum과 maximum)로 조정하는 방법입니다. ◦ 정규화(Normalization): 입력 데이터를 특정 분포로 변환하는 방법으로, 예를 들면 0과 1 사이로 조정하거나 단위 길이로 조정하는 방법 등이 있습니다.

batch normalization

과대적합 방지와 훈련속도 향상을 위한 기법 내부 공변량 변화 현상을 해결하기 위한 기법

신경망 계층마다 입력 데이터 분포가 다르면 훈련 속도가 느려짐

계층 간 데이터 분포의 편차를 줄이는 작업이 필요

배치 정규화: 계층 간 데이터 분포의 편차를 줄이는 작업

  • 배치 단위로 정규화
  • 이때 배치는 미니배치
  • 정규화 (normalization) 은 데이터가 을 따르도록 분포를 변환
  • 이렇게 정규화한 데이터를 확대/축소 (scale) 하고 이동 (shift) 변환까지 수행

따라서

  1. 입력 데이터 미니배치를 이 되도록 정규화
  2. 정규화한 데이터의 스케일을 조정하고, 이동

정규화 과정은

  • 는 미니배치 B의 평균, 는 분산
  • 배치 정규화(Batch Norm) 수식에서 분모가 0이 되는 것을 막기 위해 더해주는 아주 작은 값.
    • 자체는 해석학의 논법(극한 정의)에서 ‘아주 작은 양수’를 표현할 때 가장 압도적으로 많이 사용되는 형태.

정규화한 데이터의 스케일 조정 / 이동 과정은

  • 는 스케일 파라미터, 데이터를 확대/축소
  • 는 이동 파라미터, 데이터를 이동

정규화를 하면 대부분 값이 0 근처로 몰린다. 스케일 조정 및 이동 없이 정규화한 값을 그대로 활성함수에 입력하면 선형성에 빠질 수 있음.

활성함수 중 하나인 sigmoid 는 0 근처에서 거의 선형성을 보이므로. 활성함수는 비선형적이어야 한다. 선형성을 보여서는 안된다.

  • [[활성함수는 비선형적이어야만 한다]]

이 문제를 해결하기 위해 정규화 후 스케일 조정 및 이동을 싱행.

이렇게 데이터를 정규화하고 스케일 및 이동 변환을 적용하면 계층 간 데이터 분포가 비슷해진다.

경우에 따라 다르지만 보통은 배치 정규화를 활성함수 이전에 수행한다.

• 인공 신경망의 각 층에 들어가는 입력을 평균과 분산으로 정규화하여 학습을 효율적으로 만듭니다. • 배치 정규화는 모델을 복잡하게 하며, 추가 계산을 하는 것이므로 테스트 데이터에 대한 예측 시에 실행 시간이 느려집니다. 그래서 서비스 속도를 고려하는 관점에서는 배치 정규화가 꼭 필요한지 고민이 필요합니다. • 동작 방식 ◦ 미니배치 내의 각 특성별로 평균과 분산을 계산합니다. ◦ 평균과 분산을 사용하여 각 특성을 정규화합니다. ◦ 정규화된 데이터를 스케일과 시프트 파라미터를 사용하여 조정합니다. ◦ 조정된 데이터를 출력으로 반환합니다. • 장점 ◦ 그래디언트의 전파 문제를 완화시킵니다. 입력 데이터가 평균이 0에 가까워지고 분산이 1에 가까워지므로, 그래디언트의 크기가 적절하게 조절됩니다. ◦ 학습 속도를 향상시킵니다. 정규화된 입력 데이터는 그래디언트를 보다 안정적으로 전달하므로, 모델이 더 빠르게 수렴할 수 있습니다. ◦ 모델의 일반화 성능을 향상시킵니다. Batch Normalization은 일종의 규제 역할을 수행하여 과적합을 완화시키고 일반화 능력을 향상시킵니다. ◦ 학습 과정에서 학습률을 더 높게 설정할 수 있습니다. 정규화된 입력 데이터는 학습률을 높일 때 발생할 수 있는 그래디언트 폭주 문제를 완화시킵니다. ◦ 가중치 초기화에 훨씬 덜 민감해집니다. ◦ 미니 배치마다 평균과 표준편차를 계산하여 사용하므로 훈련 데이터에 일종의 잡음 주입의 부수 효과로 과적합을 방지하는 효과도 냅니다. 다시 말해, 마치 드롭아웃과 비슷한 효과를 냅니다. 물론, 드롭 아웃과 함께 사용하는 것이 좋습니다. • 한계점 ◦ 작은 미니 배치에서는 배치 정규화의 효과가 극단적으로 작용되어 훈련에 악영향을 줄 수 있습니다( 배치 크기에 의존적 ) ◦ RNN에 적용하기 어렵다( RNN은 각 시점(time step)마다 다른 통계치를 가집니다. 이는 RNN에 배치 정규화를 적용하는 것을 어렵게 만듭니다 ) ▪ layer normalization 적용 • 주로 심층 신경망에서 사용되며, 합성곱 신경망(Convolutional Neural Network)과 완전 연결 신경망(Fully Connected Neural Network)에서 효과적으로 적용됩니다

layer normalization

• 배치 정규화(Batch Normalization)와 달리 배치 크기에 의존하지 않고 각 층 내의 데이터에 대해 적용. • 주어진 층의 입력 데이터의 평균과 분산을 계산하고, 평균과 분산을 사용하여 입력 데이터를 정규화합니다. 정규화된 데이터는 평균을 0으로, 분산을 1로 조정하여 특성 간의 스케일을 맞춥니다. • 층(layer)에서 입력 데이터의 평균과 분산을 정규화하여 모델의 학습을 안정화시키고 성능을 향상시키는 데 도움을 줍니다 • 층 정규화는 주로 딥 뉴럴 네트워크에서 사용되며, 이미지 분류, 자연어 처리 등 다양한 머신러닝 작업에 적용될 수 있습니다. • 장점 ◦ 학습 과정을 안정화시켜 학습 속도를 개선합니다. ◦ 그래디언트 소실 문제를 완화시켜 학습을 원활하게 진행합니다. ◦ 학습 과정에서 일어나는 내부 공변량 변화(Internal Covariate Shift)를 완화시켜 학습의 일관성을 향상시킵니다.