목차

  1. Feature Scaling
    1. Scaling 기법
      1. Min-Max scaling : 0~1 사이 값으로 변환
      2. Z score 정규화 : 평균이 0, 표준편차가 1 인 데이터셋으로 변환
    2. Scaling 적용 유무에 따른 Loss함수의 Gradient Descent 변화
  2. Batch Normalization
    1. Batch Normalization의 필요성 - Internal Covariate Shift
    2. Batch Normalization 개요
    3. Batch Normalization의 적용
    4. CNN에서 Batch Normalization 구성
    5. Batch Normalization의 효과
  3. Batch size 변화에 따른 모델 성능

Feature Scaling

서로 다른 Feature 값들을 동일한 척도로 변환시키는 것


Scaling 기법


Min-Max scaling : 0~1 사이 값으로 변환


Z score 정규화 : 평균이 0, 표준편차가 1 인 데이터셋으로 변환


Scaling 적용 유무에 따른 Loss함수의 Gradient Descent 변화

왜 스케일링이 중요하냐? 

딥러닝은 Gradient Descent 로 기반으로 Loss function을 최적화 할 수 있게 파라미터들을 업데이트 한다.

 

Scaling을 안해주면,

Linear regression을 한다고 할 때, Gradient descent로 w2값만 조정하면 Loss function이 최적화 되겠지? 라고 판단을 하게 된다.

w1이 중요한지, w2가 중요한지는 상관 없이 Loss 만 줄이는 방향으로 학습되어 버릴 수 있다.

그러나 Scaling을 한다면 어느정도 균일하게 가져갈 수 있다.


Batch Normalization


Batch Normalization의 필요성 - Internal Covariate Shift

원본 이미지가 딥러닝의 히든 레이어를 통과할 때마다 데이터 분포가 점점 달라지게 된다. (Internal Covariate Shift)

이게 누적이 된다면 맨 첫번째 데이터와 마지막 아웃풋이 굉장히 달라지게 된다.

딥러닝이 굉장히 많은 파라미터와 비선형성을 포함하고 있기 때문에 당연히 달라질 수 밖에 없다.

 

그런데 이게 너무 달라지면서 학습을 하기에 어려울 수 있고, 하나의 weight가 튈 수 있다.

그렇게 되면 그 하나의 weight가 다른 weight보다 영향력이 크게 되어버린다.

그러면 또, loss function이 그 weight만 업데이트 하는데에 집중을 하게 된다. 

이런 문제들이 있다.

 

그래서 어느정도 나가는 output 값을 규제해 줄 필요가 있다.

그렇기 때문에 Z-score scaling을 하는 것이다.

 

계속 레이어를 거치면서 벌어지는 아웃풋 데이터에 대해서 뭔가 제한이 필요하다!

그것을 적용해준 것이 바로 Batch Normalization 이다.


Batch Normalization의 개요

배치 정규화는 평균과 분산을 조정하는 과정이 별도의 과정으로 떼어진 것이 아니라, 신경망 안에 포함되어 학습 시 평균과 분산을 조정하는 과정 이다.

배치 정규화는 간단히 말하자면 미니배치의 평균과 분산을 이용해서 정규화 한 뒤에, scale 및 shift 를 감마(γ) 값, 베타(β) 값을 통해 실행한다. 이 때 감마와 베타 값은 학습 가능한 변수이다. 즉, Backpropagation을 통해서 학습이 된다.

 

감마(γ) 값은 Scale 에 대한 값이며, 베타(β) 값은 Shift Transform 에 대한 값이다. 이들은 데이터를 계속 정규화 하게 되면 활성화 함수의 비선형 같은 성질을 잃게 되는데 이러한 문제를 완화하기 위함이다.

예를 들면 아래 그림과 같이 Sigmoid 함수가 있을 때, 입력 값이 N(0, 1) 이므로 95% 의 입력 값은 Sigmoid 함수 그래프의 중간 (x = (-1.96, 1.96) 구간)에 속하고 이 부분이 선형이기 때문이다. 그래서 비선형 성질을 잃게 되는 것이며, 이러한 성질을 보존하기 위하여 Scale 및 Shift 연산을 수행하는 것이다. 

 

Sigmoid 함수 


Batch Normalization의 적용


CNN에서 Batch Normalization 구성

Batch Normalization은 Conv 적용 후에 적용한다.

그리고 그 이후에 Activation을 적용한다.

 


Batch Normalization의 효과

 

1. 뛰어난 성능 향상 효과

2. Regularization 효과 : 정규화 후에 스케일링, Shift 로 일종의 Noise 추가 효과

3. Batch Normalization이 효과가 좋기 때문에 가중치 초기화(Weight Initialization) 설정은 크게 신경 쓸 필요가 없다. 즉, 배치 정규화만 해줘도 된다.


Batch size 변화에 따른 모델 성능

 

  • 큰 배치를 적용하면 더 많은 데이터를 SGD를 위해 sampling하므로 더 나은 가중치 update 가 될 것으로 생각되었으나 테스트 결과는 달랐다.
  • Batch size를 적용하는 것 보다 작은 Batch Size적용하는 것 이 성능이 더 좋다.
  • Batch size 보다는 작은 Batch Size가 상대적으로 더 자주 SGD 를 계산하고 WeightUpdate하므로 보다 정확한 최적화가 가능하다.
  • 논문에서는 8보다는 크고, 32보다는 작을 것을 권고한다.

 

'🖼 Computer Vision > CNN' 카테고리의 다른 글

CNN - Data Augmentation  (0) 2022.03.04
CNN - Global Average Pooling  (0) 2022.03.04
CNN - Weight Initialization  (0) 2022.03.03
CIFAR10  (0) 2022.03.03
CNN - Convolution 연산 후 Feature map 크기 계산 이해하기  (0) 2022.03.02
복사했습니다!