일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 시계열
- 컴퓨터비전
- Time Series
- 딥러닝
- 활성화함수
- 이상탐지
- deep learning
- nlp
- 오차역전파
- 합성곱 신경망
- visual instruction tuning
- 활성화 함수
- leetcode
- 머신러닝
- LLaVA
- LLM
- Cross Entropy Error
- pdf parsing
- Non-Maximum Suppression
- 퍼셉트론
- Mean squared error
- CNN
- 손실함수
- segmentation
- rag parsing
- E
- anomaly detection
- computer vision
- 데이터 파싱
- Today
- Total
굴러가는 분석가의 일상
딥러닝의 학습 #2.3 (배치 정규화) 본문
※ 앞선 포스팅에서는 가중치의 초깃값을 적절히 설정하여 분포가 적절히 퍼지는 기법 (Xavier & He 초기화)에 대해서 알아보았습니다. 본 게시물에서는 각 층의 활성화값을 강제적으로 적당히 퍼뜨리도록 하는 방법인 배치정규화에 대해 알아보겠습니다.
💡 Gradient Vanishing & Exploding
심층 신경망을 훈련할 때 대표적으로 어려운은 네트워크의 가중치를 일정한 범위에서 유지해야한다는 점 입니다. 역전파 과정에서 초기 부분의 입력층으로 갈수록 기울기가 점차적으로 작이지는 현상을 Gradient Vanishing 커지는 현상을 Gradient Exploding 이라고 칭합니다.
인공신경망의 역전파를 기울기 소실에 대해 알아보도록 하겠습니다. 연쇄 법칙을 통해 기울기를 계산하고, 이를 학습률과 곱한 후에 기존 가중치와 계산 (뺄셈)을 통해 가중치를 업데이트 하게 됩니다. 하지만, 이러한 a~f 값들이 1보다 적으면 점점 작아지게 되면서, 큰 의미가 되며, 가중치는 최적의 값에 도달하지 못하는게 기울기 소실입니다. 또한, 기울기 계산이 기하급수적으로 증가하면서, 가충치 값이 큰폭으로 출렁이는 것을 기울기 폭주라고 합니다.
이러한 문제점들을 해결하기 위해 다음과 같은 방법을 사용하게 됩니다.
- 가중치 초기화 : Xavier 및 He 초기화 기법을 사용하여, 학습 단계에서 기울기의 분포 조절
- Gradient Clipping : 일정한 Threshhold 값을 설정하고, 기울기 값이 초과한다면 조정
- Activation Function 변경 : Sigmoid 및 tanh 함수보다는 ReLU 및 leakyReLU 사용을 통한 기울기 조절
위와 같은 기법을 이용하여 Gradient Vanishing/Exploding 해결할 수 있지만, 학습 과정을 안정화하고 속도를 극대화할 수 있는 배치 정규화 (Batch Normalization)를 사용하는 것이 효율적입니다.
💡 Internal Covariate Shift (내부 공변량 변화)
각 레이어의 데이터 분포가 변경됨에 따라, 인공신경망 학습에 많은 제약사항이 생긴다고 합니다. 배치 정규화 논문의 저자는 학습이 불안정한 이유를 "Internal Covariate Shift" 라고 주장하고 있습니다.
Covariate Shift : 이전 레이어의 파라미터 변화로 인하여 현재 레이어의 입력 분포가 바뀌는 현상
Internal Covariate Shift : 레이어를 통과할 때 마다 Covariate Shift가 일어나면서 분포가 변하는 현상
📌 논문에서는 Internal Covariate Shift 감소 시킬수 있는 기법인 Whitening 기법을 소개하였습니다. 이는 각 레이어 입력의 분산을 평균 0, 표준편차 1인 입력값으로 정규화하며, 입력값의 특징들을 uncorrelated 하게 만들어줍니다. 하지만 이는 다양한 문제점이 존재합니다.
- Covariance Matrix 및 Inverse 계산이 필요하기 때문에 계산량 급증
- 일부 파라미터들의 영향이 무시되어 Gradient Descent 효과 감소
💡 Batch Normalization (배치 정규화)
위에서 언급되었던 Whitening 문제점을 해결할 수 있는 기법이 배치 정규화입니다. 배치 정규화의 기본 아이디어는 각 층에서의 활성화값이 적당히 분포되도록 조정하는 것 입니다. 이에 그림과 같이 Batch Norm 계층을 신경망에 삽입하게 됩니다. 즉 각 레이어마다 정규화 하는 레이어를 삽입하여, 변형된 분포가 나오지 않도록 하는 것이 Whitening 기법과 구별되는점 입니다.
배치 정규화는 이름과 같이 미니배치를 단위로 정규화하게 됩니다. 구체적으로는 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화하며, scale 및 shift 를 감마(γ) 값, 베타(β) 값을 통해 실행하게 됩니다. 이러한 과정을 활성화 함수의 앞 (혹은 뒤)에 삽입함으로써 데이터 분포가 변형되지 않도록 유지시킬 수 있습니다. 조금 더 자세하게 학습과정에 대해 알아보도록 하겠습니다.
💡 Batch Normalization (배치 정규화) 학습 과정
- 미니배치 샘플링: 학습 데이터셋으로부터 미니배치를 랜덤하게 선택합니다.
- 순전파(Forward Propagation):
- 미니배치에 있는 입력 데이터를 받아서 순전파 수행
- 각 층에서의 가중치와 편향을 사용하여 활성화 함수를 통과시킨 결과 계산
- 배치 정규화 적용:
- 각 은닉층의 활성화값에 대해 배치 정규화 수행
- 입력 데이터의 평균과 표준편차를 계산하여 정규화 진행
- 정규화된 결과를 스케일(scale) 및 시프트(shift)을 이용하여 네트워크 특성의 평균과 분산 조정
- 역전파(Backward Propagation):
- 배치 정규화의 파라미터들(스케일과 시프트 매개변수)에 대한 그레디언트 계산
- 배치 정규화 층을 통과한 그레디언트와 역전파 알고리즘을 사용하여 가중치 및 편향에 대한 그레디언트 계산
- 가중치 및 편향 업데이트:
- 그레디언트 하강법(gradient descent) 또는 다른 최적화 알고리즘을 사용하여 가중치와 편향 업데이트
- 배치 정규화의 파라미터들(스케일과 시프트 매개변수) 또한 그레디언트 하강법을 사용하여 업데이트
📌 여기에서 주목해야할 점이 있습니다!
일반적으로 배치 정규화를 훈련할 때는 각 미니배치에서 평균과 분산을 계산하는 것을 알아보았습니다. 하지만 테스트할 때는 단일 포인트에 대해 평균과 분산을 계산하는 것이 불가능합니다. 이에 배치 정규화 논문의 저자는 이를 효율적으로 계산하기 위해 Exponential Moving Average (지수 이동 평균)을 소개하였습니다. 훈련하는 과정에서 추정된 평균과 분산을 Exponential Moving Average을 통해 갱신한다면, 테스트 시에 이러한 추정치를 사용하여 모델을 평가할 수 있습니다.
'Deep Learning 이해' 카테고리의 다른 글
딥러닝의 학습 #2.4 (오버피팅 억제) (0) | 2024.02.16 |
---|---|
딥러닝의 학습 #2.2 (가중치 초깃값-Xavier&He) (0) | 2024.01.16 |
딥러닝의 학습 #2.1 (Optimizer 종류와 학습) (0) | 2023.12.18 |
딥러닝의 학습 #1 (Backpropagation) (0) | 2023.12.05 |
딥러닝의 구조 #4 [경사하강법] (0) | 2023.11.23 |