You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 배치 정규화 on Google, you do not find the information you need! Here are the best content compiled and compiled by the Toplist.maxfit.vn team, along with other related topics such as: 배치 정규화 배치 정규화 단점, 배치정규화 과적합, 배치정규화 장점, 배치정규화 수식, CNN 배치 정규화, 배치정규화 감마 베타, 배치 정규화 역전파 함수, 배치 정규화 역전파 dx
batch normalization은 학습 과정에서 각 배치 단위 별로 데이터가 다양한 분포를 가지더라도 각 배치별로 평균과 분산을 이용해 정규화하는 것을 뜻합니다.
배치 정규화(Batch Normalization) – gaussian37
- Article author: gaussian37.github.io
- Reviews from users: 19394 Ratings
- Top rated: 3.4
- Lowest rated: 1
- Summary of article content: Articles about 배치 정규화(Batch Normalization) – gaussian37 Updating …
- Most searched keywords: Whether you are looking for 배치 정규화(Batch Normalization) – gaussian37 Updating
- Table of Contents:
목차
Batch
Internal Covariant Shift
Batch Normalization
Internal Covariant Shift 더 알아보기
Batch Normalization의 효과
학습 단계와 추론 단계의 Batch Normalization
Fully Connected Layer와 Batch Normalization
Convolution Layer와 Batch Normalization
Batch Normalization의 한계
Pytorch에서의 사용 방법
[Deep Learning] Batch Normalization (배치 정규화) — Enough is not enough
- Article author: eehoeskrap.tistory.com
- Reviews from users: 45532 Ratings
- Top rated: 3.3
- Lowest rated: 1
- Summary of article content: Articles about [Deep Learning] Batch Normalization (배치 정규화) — Enough is not enough 기본적으로 정규화를 하는 이유는 학습을 더 빨리 하기 위해서 or Local optimum 문제에 빠지는 가능성을 줄이기 위해서 사용한다. 아래 그림을 보면 이해 … …
- Most searched keywords: Whether you are looking for [Deep Learning] Batch Normalization (배치 정규화) — Enough is not enough 기본적으로 정규화를 하는 이유는 학습을 더 빨리 하기 위해서 or Local optimum 문제에 빠지는 가능성을 줄이기 위해서 사용한다. 아래 그림을 보면 이해 … 사람은 역시 기본에 충실해야 하므로 … 딥러닝의 기본중 기본인 배치 정규화(Batch Normalization)에 대해서 정리하고자 한다. 배치 정규화 (Batch Normalization) 란? 배치 정규화는 2015년 arXiv에 발표된 후..
- Table of Contents:
공지사항
블로그 메뉴
최근 댓글
티스토리
배치 정규화 (Batch Normalization) 란
Gradient Vanishing Exploding 문제
정규화(Normalization)
Internal Covariance Shift
Whitening 의 문제점
배치 정규화 (Batch Normalization)
Inference 시의 배치 정규화
CNN 구조에서의 배치 정규화
결 론
티스토리툴바
문과생도 이해하는 딥러닝 (10) – 배치 정규화
- Article author: sacko.tistory.com
- Reviews from users: 46196 Ratings
- Top rated: 3.7
- Lowest rated: 1
- Summary of article content: Articles about 문과생도 이해하는 딥러닝 (10) – 배치 정규화 간다하게 배치 정규화는 학습 시의 미니배치를 한 단위로 정규화를 하는 것으로 분포의 평균이 0, 분산이 1이 되도록 정규화하는 것을 말한다. 먼저 Input … …
- Most searched keywords: Whether you are looking for 문과생도 이해하는 딥러닝 (10) – 배치 정규화 간다하게 배치 정규화는 학습 시의 미니배치를 한 단위로 정규화를 하는 것으로 분포의 평균이 0, 분산이 1이 되도록 정규화하는 것을 말한다. 먼저 Input … 2017/09/27 – 문과생도 이해하는 딥러닝 (1) – 퍼셉트론 Perceptron 2017/10/18 – 문과생도 이해하는 딥러닝 (2) – 신경망 Neural Network 2017/10/25 – 문과생도 이해하는 딥러닝 (3) – 오차 역전파, 경사하강..
- Table of Contents:
1 배치 정규화 도입
2 배치 정규화 알고리즘
3 기타 참고
태그
관련글
댓글2
공지사항
최근글
인기글
최근댓글
태그
전체 방문자
[DL] 배치 정규화(Batch Normalization)
- Article author: wooono.tistory.com
- Reviews from users: 23377 Ratings
- Top rated: 3.8
- Lowest rated: 1
- Summary of article content: Articles about [DL] 배치 정규화(Batch Normalization) 배치 정규화 (Batch Normalization, BN) … 신경망을 학습시킬 때, 보통 전체 데이터를 한 번에 학습시키지 않고, 조그만 단위로 분할해서 학습을 시키는데 … …
- Most searched keywords: Whether you are looking for [DL] 배치 정규화(Batch Normalization) 배치 정규화 (Batch Normalization, BN) … 신경망을 학습시킬 때, 보통 전체 데이터를 한 번에 학습시키지 않고, 조그만 단위로 분할해서 학습을 시키는데 … 기존에는 Gradient Vanishing, Exploding 현상을 해결하고 학습을 안정화하기 위해서 새로운 활성화 함수를 찾거나 가중치를 초기화하는 방법을 사용했었다. 하지만, 배치 정규화를 통해서 보다 근본적으로 학습과..
- Table of Contents:
우노
[DL] 배치 정규화(Batch Normalization) 본문티스토리툴바
배치 정규화(Batch Normalization)
- Article author: daje0601.tistory.com
- Reviews from users: 33242 Ratings
- Top rated: 4.4
- Lowest rated: 1
- Summary of article content: Articles about 배치 정규화(Batch Normalization) 배치 정규화(Batch Normalization) · 훨씬 큰 학습률을 사용할 수 있어 학습 속도를 개선시킵니다. · 배치 정규화를 사용하면 시그모이드 함수나 하이퍼볼릭 … …
- Most searched keywords: Whether you are looking for 배치 정규화(Batch Normalization) 배치 정규화(Batch Normalization) · 훨씬 큰 학습률을 사용할 수 있어 학습 속도를 개선시킵니다. · 배치 정규화를 사용하면 시그모이드 함수나 하이퍼볼릭 … 안녕하십니까 다제입니다. 오늘은 배치 정규화에 대해서 살펴보도록 하겠습니다. 배치 정규화는 기울기 소실(Gradient Vainshing)과 폭주(Exploding)을 극복하기 위한 하나의 방안으로 사용됩니다. 이 외에도 가중..
- Table of Contents:
코딩일기
배치 정규화(Batch Normalization) 본문
티스토리툴바
[딥러닝] 배치 정규화의 알고리즘과 효과
- Article author: deep-learning-study.tistory.com
- Reviews from users: 13673 Ratings
- Top rated: 4.4
- Lowest rated: 1
- Summary of article content: Articles about [딥러닝] 배치 정규화의 알고리즘과 효과 배치 정규화의 기본 아이디어는 앞에서 말했듯이 각 층에서의 활성화 값이 적당히 분포되도록 조정하는 것입니다. 그래서 그림과 같이 데이터 분포를 … …
- Most searched keywords: Whether you are looking for [딥러닝] 배치 정규화의 알고리즘과 효과 배치 정규화의 기본 아이디어는 앞에서 말했듯이 각 층에서의 활성화 값이 적당히 분포되도록 조정하는 것입니다. 그래서 그림과 같이 데이터 분포를 … 사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다. 을 공부하고 정리해보았습니다. 가중치의 초깃값 신경망 학습에서 특히 중요한 것이 가중치의 초깃값입니다. 가중치의 초깃값을 무..까먹으면 다시 보려고 정리하는 블로그
- Table of Contents:
배치 정규화 – Batch Normalization
배치 정규화 알고리즘
배치 정규화의 효과
티스토리툴바
배치 정규화(Batch Normalization)의 설명과 탐구
- Article author: mole-starseeker.tistory.com
- Reviews from users: 10517 Ratings
- Top rated: 4.5
- Lowest rated: 1
- Summary of article content: Articles about 배치 정규화(Batch Normalization)의 설명과 탐구 BN(Batch Normalization)은 이 과정을 매 층마다 독립적으로 적용해서 각 미니 배치들이 표준 정규 분포를 따르도록 강제한다. 다시 말하면, 훈련하는 … …
- Most searched keywords: Whether you are looking for 배치 정규화(Batch Normalization)의 설명과 탐구 BN(Batch Normalization)은 이 과정을 매 층마다 독립적으로 적용해서 각 미니 배치들이 표준 정규 분포를 따르도록 강제한다. 다시 말하면, 훈련하는 … # 배치 정규화(Batch Normalization)의 기능과 그 효과는? 우선 공변량 시프트(covariate shift) 현상이라는 것을 한 번 살펴보자. 아래 그림을 보자. 층 1에 훈련셋이 입력되면 층 2는 층 1의 가중치에 따라 변..
- Table of Contents:
See more articles in the same category here: toplist.maxfit.vn/blog.
[Deep Learning] Batch Normalization (배치 정규화)
728×90
반응형
사람은 역시 기본에 충실해야 하므로 …
딥러닝의 기본중 기본인 배치 정규화(Batch Normalization)에 대해서 정리하고자 한다.
배치 정규화 (Batch Normalization) 란?
배치 정규화는 2015년 arXiv에 발표된 후 ICML 2015에 게재된 아래 논문에서 나온 개념이다.
Batch Normalization: Accelerating Deep Network Training b y Reducing Internal Covariate Shift
https://arxiv.org/pdf/1502.03167.pdf
Gradient Vanishing / Exploding 문제
신경망에서 학습시 Gradient 기반의 방법들은 파라미터 값의 작은 변화가 신경망 출력에 얼마나 영향을 미칠 것인가를 기반으로 파라미터 값을 학습시키게 된다. 만약 파라미터 값의 변화가 신경망 결과의 매우 작은 변화를 미치게 될 경우 파라미터를 효과적으로 학습 시킬 수 없게 된다. Gradient 라는 것이 결국 미분값 즉 변화량을 의미하는데 이 변화량이 매우 작아지거나(Vanishing) 커진다면(Exploding) 신경망을 효과적으로 학습시키지 못하고, Error rate 가 낮아지지 않고 수렴해버리는 문제가 발생하게 된다.
그래서 이러한 문제를 해결하기 위해서 Sigmoid 나 tanh 등의 활성화 함수들은 매우 비선형적인 방식으로 입력 값을 매우 작은 출력 값의 범위로 squash 해버리는데, 가령 sigmoid는 실수 범위의 수를 [0, 1]로 맵핑해버린다. 이렇게 출력의 범위를 설정할 경우, 매우 넓은 입력 값의 범위가 극도로 작은 범위의 결과 값으로 매핑된다. 이러한 현상은 비선형성 레이어들이 여러개 있을 때 더욱 더 효과를 발휘하여(?) 학습이 악화된다. 첫 레이어의 입력 값에 대해 매우 큰 변화량이 있더라도 결과 값의 변화량은 극소가 되어버리는 것이다. 그래서 이러한 문제점을 해결하기 위해 활성화 함수로 자주 쓰이는 것이 ReLU(Rectified Linear Unit) 이다. 또한 아래와 같은 방법들도 존재한다.
Change activation function : 활성화 함수 중 Sigmoid 에서 이 문제가 발생하기 때문에 ReLU 를 사용
Careful initialization : 가중치 초기화를 잘 하는 것을 의미
Small learning rate : Gradient Exploding 문제를 해결하기 위해 learning rate 값을 작게 설정함
위와 같은 트릭을 이용하여 문제를 해결하는 것도 좋지만, 이러한 간접적인 방법 보다는 “학습하는 과정 자체를 전체적으로 안정화”하여 학습 속도를 가속 시킬 수 있는 근본적인 방법인 “배치 정규화(Batch Normalization)”를 사용하는 것이 좋다. 이는 위와 마찬가지로 Gradient Vanishing / Gradient Exploding이 일어나는 문제를 방지하기 위한 아이디어이다.
정규화(Normalization)
기본적으로 정규화를 하는 이유는 학습을 더 빨리 하기 위해서 or Local optimum 문제에 빠지는 가능성을 줄이기 위해서 사용한다. 아래 그림을 보면 이해가 쉽게 될 것 같다. 아래 그림에서 최저점을 찾을 때 그래프를 전체적으로 이해하지 못하여 global optimum 지점을 찾지 못하고 local optimum 에 머물러 있게 되는 문제가 발생하게 된다. 이러한 문제점은 정규화 하여 그래프를 왼쪽에서 오른쪽으로 만들어, local optimum 에 빠질 수 있는 가능성을 낮춰주게 된다.
(좌) Normalization 적용 전 / (우) Normalization 적용 후
Internal Covariance Shift
배치 정규화 논문에서는 학습에서 불안정화가 일어나는 이유를 ‘Internal Covariance Shift’ 라고 주장하고 있는데, 이는 네트워크의 각 레이어나 Activation 마다 입력값의 분산이 달라지는 현상을 뜻한다.
Covariate Shift : 이전 레이어의 파라미터 변화로 인하여 현재 레이어의 입력의 분포가 바뀌는 현상
Internal Covariate Shift : 레이어를 통과할 때 마다 Covariate Shift 가 일어나면서 입력의 분포가 약간씩 변하는 현상
MNIST 에서의 배치 정규화 실험
Whitening 의 문제점
이 현상을 막기 위해서 간단하게 각 레이어의 입력의 분산을 평균 0, 표준편차 1인 입력값으로 정규화 시키는 방법을 생각해볼 수 있다. 이는 Whitening 이라고 일컫는데, 백색 잡음으로 생각하면 될 것 같다. 또한 Whitening은 기본적으로 들어오는 입력값의 특징들을 uncorrelated 하게 만들어주고, 각각의 분산을 1로 만들어주는 작업이다. 이는 covariance matrix의 계산과 inverse의 계산이 필요하기 때문에 계산량이 많을 뿐더러, Whitening은 일부 파라미터들의 영향이 무시된다. 예를 들어 입력 값 X를 받아 Z = WX + b 라는 결과를 내놓고 적절한 bias b 를 학습하려는 네트워크에서 Z에 E(Z) 를 빼주는 작업을 한다고 생각해보면, 이 과정에서 b 값이 결국 빠지게 되고, 결과적으로 b의 영향은 없어지게 된다. 단순히 E(Z)를 빼는 것이 아니라 표준편차로 나눠주는 등의 scaling 과정까지 포함될 경우 이러한 경향은 더욱 악화 될 것이며, 논문에서 실험으로 확인을 했다고 한다. 이렇듯 단순하게 Whitening만을 시킨다면 이 과정과 파라미터를 계산하기 위한 최적화(Backpropagation)과 무관하게 진행되기 때문에 특정 파라미터가 계속 커지는 상태로 Whitening 이 진행 될 수 있다. Whitening 을통해 손실(Loss)이 변하지 않게 되면, 최적화 과정을 거치면서 특정 변수가 계속 커지는 현상이 발생할 수 있다.
배치 정 규화 (Batch Normalization)
이러한 Whitening의 문제점을 해결하도록 한 트릭이 배치 정규화이다. 배치 정규화는 평균과 분산을 조정하는 과정이 별도의 과정으로 떼어진 것이 아니라, 신경망 안에 포함되어 학습 시 평균과 분산을 조정하는 과정 역시 같이 조절된다는 점이 단순 Whitening 과는 구별된다. 즉, 각 레이어마다 정규화 하는 레이어를 두어, 변형된 분포가 나오지 않도록 조절하게 하는 것이 배치 정규화이다.
배치 정규화의 입력 및 출력 값
배치 정규화는 간단히 말하자면 미니배치의 평균과 분산을 이용해서 정규화 한 뒤에, scale 및 shift 를 감마(γ) 값, 베타(β) 값을 통해 실행한다. 이 때 감마와 베타 값은 학습 가능한 변수이다. 즉, Backpropagation을 통해서 학습이 된다.
감마, 베타에 대한 Backpropatation 수식
이렇게 정규화 된 값을 활성화 함수의 입력으로 사용하고, 최종 출력 값을 다음 레이어의 입력으로 사용하는 것이다.
기존 output = g(Z), Z = WX + b 식은 output = g(BN(Z)), Z = WX + b 로 변경되는 것이다.
위 식에서 입실론(θ)은 계산할 때 0으로 나눠지는 문제가 발생하는 것을 막기 위한 수치적 안정성을 보장하기 위한 아주 작은 숫자이다(1e-5). 감마(γ) 값은 Scale 에 대한 값이며, 베타(β) 값은 Shift Transform 에 대한 값이다. 이들은 데이터를 계속 정규화 하게 되면 활성화 함수의 비선형 같은 성질을 잃게 되는데 이러한 문제를 완화하기 위함이다. 예를 들면 아래 그림과 같이 Sigmoid 함수가 있을 때, 입력 값이 N(0, 1) 이므로 95% 의 입력 값은 Sigmoid 함수 그래프의 중간 (x = (-1.96, 1.96) 구간)에 속하고 이 부분이 선형이기 때문이다. 그래서 비선형 성질을 잃게 되는 것이며, 이러한 성질을 보존하기 위하여 Scale 및 Shift 연산을 수행하는 것이다.
Sigmoid 함수
Inference 시의 배치 정규화
배치 정규화의 Training vs Testing
학습 시에는 배치 정규화의 미니 배치의 평균과 분산을 이용 할 수 있지만, 추론(inference) 및 테스트 할 때에는 이를 이용할 수 없다. inference 시 입력되는 데이터의 평균과 분산을 이용하면 배치 정규화가 온전하게 이루어지지 않는다. 애초에 배치 정규화를 통해 수행하고자 하는 것이 학습되는 동안 모델이 추정한 입력 데이터 분포의 평균과 분산으로 정규화를 하고자 하는 것인데 inference 시에 입력되는 값을 통해서 정규화를 하게 되면 모델이 학습을 통해서 입력 데이터의 분포를 추정하는 의미 자체가 없어지게 된다. 즉, inference 에서는 결과를 Deterministic 하게 하기 위하여 고정된 평균과, 분산을 이용하여 정규화를 수행하게 된다. 그래서 Train 모드와 Test 모드를 따로 두는 이유이기도 하다.
Batch Normalization 의 Inferecne 시 Moving Average 계산 식
그래서 이러한 문제를 미리 저장해둔 미니 배치의 이동 평균(Moving Average)을 사용하여 해결한다. 즉, inference 전에 학습 시에 미리 미니 배치를 뽑을 때 Sample Mean 및 Sample Variance 를 이용하여 각각의 이동 평균을 구해놔야한다. 위 수식에서 Inference 시에 평균은 각 미니 배치에서 구한 평균들의 평균을 사용하고, 분산은 분산의 평균에 m/(m-1) 을 곱해주게 된다. 이를 곱하는 이유는 통계학적으로 unbiased variance 에는 “Bessel’s correction”을 통해 보정을 해주는 것이다. 이는 학습 전체 데이터에 대한 분산이 아니라 미니 배치들의 분산을 통해 전체 분산을 추정할 때 통계학 적으로 보정을 위해 Bessel의 보정 값을 곱해주는 방식으로 추정하기 때문이다…
길이가 2인 경우의 이동 평균 예시는 다음과 같다. 처음엔 값이 100 하나 밖에 없기 때문에 이동 평균이 100이지만, 값이 업데이트 됨에 따라 가장 최근 2개 정보만을 통해 평균을 구한 것이 길이가 2인 경우의 이동 평균이다.
입력값 100 110 130 120 140 이동평균 100 105 120 125 130
CNN 구조에서의 배치 정규화
컨볼루션 레이어에서 활성화 함수가 입력되기 전에 WX + b 로 가중치가 적용되었을 때, b의 역할을 베타가 완벽히 대신 할 수 있기 때문에 b 를 삭제한다. 또한 CNN의 경우 컨볼루션 성질을 유지 시키고 싶기 때문에 각 채널을 기준으로 각각의 감마와 베타를 만들게 된다. 예를 들어 미니배치가 m 채널 사이즈가 n 인 컨볼루션 레이어에서 배치 정규화를 적용하면 컨볼루션을 적용한 후의 특징 맵의 사이즈가 p x q 일 경우, 각 채널에 대해 m x p x q 개의 스칼라 값(즉, n x m x p x q 개의 스칼라 값)에 대해 평균과 분산을 구한다. 최종적으로 감마 베타 값은 각 채널에 대해 한 개씩, 총 n개의 독립적인 배치 정규화 변수 쌍이 생기게 된다. 즉, 컨볼루션 커널 하나는 같은 파라미터 감마, 베타를 공유하게 된다.
결 론
결과적으로 정리해보자면, 배치 정규화의 알고리즘과, 배치 정규화의 장점은 다음과 같다.
배치 정규화는 단순하게 평균과 분산을 구하는 것이 아니라 감마(Scale), 베타(Shift) 를 통한 변환을 통해 비선형 성질을 유지 하면서 학습 될 수 있게 해줌
배치 정규화가 신경망 레이어의 중간 중간에 위치하게 되어 학습을 통해 감마, 베타를 구할 수 있음
Internal Covariate Shift 문제 로 인해 신경망이 깊어질 경우 학습이 어려웠던 문제점을 해결
gradient 의 스케일이나 초기 값에 대한 dependency 가 줄어들어 Large Learning Rate 를 설정할 수 있기 떄문에 결과적으로 빠른 학습 가능함 , 즉, 기존 방법에서 learning rate 를 높게 잡을 경우 gradient 가 vanish/explode 하거나 local minima 에 빠지는 경향이 있었는데 이는 scale 때문이었으며, 배치 정규화를 사용할 경우 propagation 시 파라미터의 scale 에 영향을 받지 않게 되기 때문에 learning rate 를 높게 설정할 수 있는 것 임
regularization 효과가 있기 때문에 dropout 등의 기법을 사용하지 않아도 됨 (효과가 같기 때문)
학습 시 Deterministic 하지 않은 결과 생성
Learning Rate Decay 를 더 느리게 설정 가능
입력의 범위가 고정되기 때문에 saturating 한 함수를 활성화 함수로 써도 saturation 문제가 일어나지 않음, 여기서 saturation 문제란 가중치의 업데이트가 없어지는 현상임
참고자료 1 : https://ydseo.tistory.com/41
참고자료 2 : https://blog.naver.com/PostView.nhn?blogId=laonple&logNo=220808903260
참고자료 3 : https://sacko.tistory.com/44
참고자료 3 : https://light-tree.tistory.com/139
참고자료 4 : https://light-tree.tistory.com/132
참고자료 5 : https://wegonnamakeit.tistory.com/47
참고자료 6 : https://hcnoh.github.io/2018-11-27-batch-normalization
참고자료 7 : https://m.blog.naver.com/laonple/220808903260
참고자료 8 : https://nittaku.tistory.com/267
참고자료 9 : https://wwiiiii.tistory.com/entry/Batch-Normalization
참고자료 10 : https://shuuki4.wordpress.com/2016/01/13/batch-normalization-%EC%84%A4%EB%AA%85-%EB%B0%8F-%EA%B5%AC%ED%98%84/
참고자료 11 : https://nittaku.tistory.com/271
728×90
728×90
반응형
문과생도 이해하는 딥러닝 (10) – 배치 정규화
2017/09/27 – 문과생도 이해하는 딥러닝 (1) – 퍼셉트론 Perceptron
2017/10/18 – 문과생도 이해하는 딥러닝 (2) – 신경망 Neural Network
2017/10/25 – 문과생도 이해하는 딥러닝 (3) – 오차 역전파, 경사하강법
2017/12/24 – 문과생도 이해하는 딥러닝 (4) – 신경망구현, 활성화함수, 배치
2017/12/26 – 문과생도 이해하는 딥러닝 (5) – 신경망 학습 실습
2018/01/05 – 문과생도 이해하는 딥러닝 (6) – 오차역전파법 실습 1
2018/01/05 – 문과생도 이해하는 딥러닝 (7) – 오차역전파법 실습 2
2018/01/07 – 문과생도 이해하는 딥러닝 (8) – 신경망 학습 최적화
2018/01/07 – 문과생도 이해하는 딥러닝 (9) – 신경망 초기 가중치 설정
어느덧 10번째 포스팅이 됐다. 슬슬 다음 코스로는 무엇을 할지 고민해야 겠다.
이전 포스팅에서는 초기 가중치 설정에 따라서 활성화 값의 분포가 어떻게 나타나는지 파악했으며 활성화함수 별로 적절한 초기 가중치 설정 방법이 있다는 것을 알았다. 이번에는 또다른 이슈에 대해 다루고자 한다. 4번째 포스팅에서 배치(Batch)에 대해서 포스팅을 했었다. 배치는 일종의 랜덤 샘플링으로 전체 학습데이터를 한 번 학습할 때 다 학습에 사용하면 많은 시간이 걸리기 때문에… (수천만, 수억 개의 데이터를 한 번에 다 사용한다면???) 미니배치 방식으로 랜덤하게 학습 데이터에서 배치 크기만큼 꺼내서 한 번의 학습에 사용하는 방식이다.
이번 포스팅에서 다루는 배치 정규화는 초기 가중치 설정 문제와 비슷하게 가중치 소멸 문제(Gradient Vanishing) 또는 가중치 폭발 문제(Gradient Exploding)를 해결하기 위한 접근 방법 중 하나이다. 정규화(Normalization)는 통계에서 다루는 정규화를 말한다. 기본적인 개념으로 사용되기 때문에 먼저 이를 숙지해야 된다.
배치 정규화 Batch Normalization
문과생도 이해하는 딥러닝 (10)
1. 배치 정규화 도입 학습의 효율을 높이기 위해 도입되었다. 배치 정규화는 Regularization을 해준다고 볼 수 있음 학습 속도가 개선된다 (학습률을 높게 설정할 수 있기 때문)
가중치 초깃값 선택의 의존성이 적어진다 (학습을 할 때마다 출력값을 정규화하기 때문)
과적합(overfitting) 위험을 줄일 수 있다 (드롭아웃 같은 기법 대체 가능)
Gradient Vanishing 문제 해결
배치 정규화는 활성화함수의 활성화값 또는 출력값을 정규화(정규분포로 만든다)하는 작업을 말한다. 배치 정규화를 활성화함수 이전에 하는지 이후에 하는지는 계속된 논의와 실험이 진행중이라고 한다. 신경망의 각 layer에서 데이터(배치)의 분포를 정규화하는 작업이다. 일종의 노이즈를 추가하는 방법으로 (bias와 유사) 이는 배치마다 정규화를 함으로써 전체 데이터에 대한 평균의 분산과 값이 달라질 수 있다. 학습을 할 때마다 활성화값/출력값을 정규화하기 때문에 초기화(가중치 초깃값) 문제에서 비교적 자유로워진다.
각 hidden layer에서 정규화를 하면서 입력분포가 일정하게 되고, 이에 따라 Learning rate을 크게 설정해도 괜찮아진다. 결과적으로 학습속도가 빨라지게 된다. 출처: http://sanghyukchun.github.io/88/
입력 분포의 균일화 학습을 할 때 hidden layer의 중간에서 입력분포가 학습할 때마다 변화하면서 가중치가 엉뚱한 방향으로 갱신될 문제가 발생할 수 있다. 신경망의 층이 깊어질수록 학습 시에 가정했던 입력분포가 변화하여 엉뚱한 학습이 될 수 있다.
2. 배치 정규화 알고리즘 간다하게 배치 정규화는 학습 시의 미니배치를 한 단위로 정규화를 하는 것으로 분포의 평균이 0, 분산이 1이 되도록 정규화하는 것을 말한다.
먼저 Input으로 사용된 미니배치의 평균과 분산을 계산을 한다. 그 다음 hidden layer의 활성화값/출력값에 대해서 평균이 0, 분산이 1이 되도록 정규화(Normalization)를 한다(=변환; transform). 그럼으로써 데이터 분포가 덜 치우치게 되고 배치 정규화 단계마다 확대scale와 이동shift 변환(transform)을 수행한다.
파란색 선이 배치 정규화를 했을 때의 결과이다. 훨씬 학습이 빠른 것을 알 수 있다. 가중치 초깃값에 영향을 받지 않는 것도 확인할 수 있다.
3. 기타 참고 배치 정규화는 가중치의 scale을 정규화하여 gradient exploding을 방지한다
기타 참고자료 출처: https://image.slidesharecdn.com/normalization1-170224122539/95/normalization-17-1024.jpg?cb=1487939204
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariance Shift NIPS 2015와 관련하여 그리고 배치 정규화와 연결되어 본 논문이 많이 언급된다. 국내, 해외 가릴 것 없이 리뷰가 많이 되고 있으며 대부분의 배치 정규화에 대한 블로그 정리 글은 이 paper에 기반한 것들이 많다. 활성화함수의 변경(ReLU 사용)이나 낮은 학습률의 설정, 초기화 작업 등은 간접적으로 Gradient Vanishing 또는 Gradient Exploding을 해결하는 방법이라고 보고 training 과정 자체에서 학습을 안정화시키고(vanishing, exploding 해결) 학습속도를 개선하는 방법으로 배치 정규화가 제안되었다. 일종의 Whitening 이라고 한다.
“Training 할 때는 mini-batch의 평균과 분산으로 normalize 하고, Test 할 때는 계산해놓은 이동 평균으로 normalize 한다. Normalize 한 이후에는 scale factor와 shift factor를 이용하여 새로운 값을 만들고, 이 값을 내놓는다. 이 Scale factor와 Shift factor는 다른 레이어에서 weight를 학습하듯이 back-prop에서 학습하면 된다.” 출처 : https://shuuki4.wordpress.com/2016/01/13/batch-normalization-%EC%84%A4%EB%AA%85-%EB%B0%8F-%EA%B5%AC%ED%98%84/
참고자료
배치 정규화에 대해서 잘 정리된 블로그
Batch Normalization (ICML 2015)
http://sanghyukchun.github.io/88/ Normalization in Deep Learning
https://calculatedcontent.com/2017/06/16/normalization-in-deep-learning/ Batch Normalization 설명 및 구현
https://shuuki4.wordpress.com/2016/01/13/batch-normalization-%EC%84%A4%EB%AA%85-%EB%B0%8F-%EA%B5%AC%ED%98%84/ Layer Normalization
https://www.slideshare.net/ssuser06e0c5/normalization-72539464 배치정규화 (Batch Normalization)
http://astralworld58.tistory.com/65
[DL] 배치 정규화(Batch Normalization)
감마(γ), 베타(β) 값은 학습 가능한 변수이며, Backpropagation을 통해서 학습이 된다.
하지만, 감마(γ), 베타(β)를 통해 활성함수로 들어가는 값의 범위를 바꿔줌으로써, 비선형 성질을 보존하게 된다.
해당 부분이 선형이기 때문에, 비선형 성질을 잃게 되는 것이다.
예를 들면, 아래 그림과 같이 Sigmoid 함수가 있을 때, 입력 값이 N(0, 1) 이라면, 95% 의 입력 값은 Sigmoid 함수 그래프의 중간 (x = (-1.96, 1.96) 구간)에 속하게 된다.
데이터를 계속 정규화 하게 되면, 활성화 함수의 비선형 성질을 잃게 되는 문제가 발생한다.
정규화 이후, 배치 데이터들을 scale(감마(γ)), shift(베타(β)) 를 통해 새로운 값으로 바꾼다.
먼저, hidden layer의 활성화함수 입력값or출력값 상태인 배치의 평균과 분산을 계산한다.
테스트 단계나 추론 단계에서는 평균과 분산을 계산할 미니배치가 없기 때문에, 전체 Training Set의 평균과 분산을 사용한다.
하지만, 엄청나게 많은 전체 Training set에 대한 평균과 분산을 계산하는 것은 무리이기 때문에,
아래의 식과 같이 모델 학습 단계에서 사용한, 각 n개의 미니배치에 대한 평균과 분산을 이용해, 전체 Training Set의 평균과 분산을 대신할 수 있다.
So you have finished reading the 배치 정규화 topic article, if you find this article useful, please share it. Thank you very much. See more: 배치 정규화 단점, 배치정규화 과적합, 배치정규화 장점, 배치정규화 수식, CNN 배치 정규화, 배치정규화 감마 베타, 배치 정규화 역전파 함수, 배치 정규화 역전파 dx