SW/인공지능

인공지능 : Batch Normalization : 개념, 원리, 개요

얇은생각 2019. 8. 15. 07:30
반응형

신경망에서의 배치 정규화

배치 정규화를 간단한 방법으로 설명합니다. Fast.ai와 deeplearning.ai에서 배운 내용을 읽은 후, 기사를 번역하였습니다. 필요한 이유, 작동 방식, VGG와 같은 사전 훈련된 네트워크에 포함시키는 방법부터 시작하겠습니다.




배치 정규화를 사용하는 이유는 무엇입니까?

활성화를 조정하여 입력 레이어를 정규화합니다. 예를 들어 0에서 1까지, 1에서 1000까지의 기능이 있으면 학습 속도를 높이기 위해 정규화해야합니다. 입력 레이어가 이익을 얻는다면, 항상 변경되는 숨겨진 레이어의 값에 대해서도 동일한 작업을 수행하고 훈련 속도를 10 배 이상 향상 시키십시오.


배치 정규화는 숨겨진 단위 값이 이동하는 양 (공분산 이동)에 따라 양을 줄입니다. 공분산 변화를 설명하기 위해 고양이 식별에 대한 심층적인 네트워크를 만들어 봅시다. 검은 고양이의 이미지에만 데이터를 훈련시킵니다. 따라서 이 고양이를 고양이 색이 있는 데이터에 적용하려고 한다면 분명합니다. 잘 동작하지 않을 것입니다. 훈련 세트와 예측 세트는 모두 고양이의 이미지이지만 약간 다릅니다. 다시 말해, 알고리즘이 X 대 Y 매핑을 학습하고 X 분포가 변경되면 X 분포를 Y 분포와 정렬하여 학습 알고리즘을 재교육해야 할 수도 있습니다. 


또한 배치 정규화를 사용하면 네트워크의 각 계층이 다른 계층과 독립적으로 조금 더 학습 할 수 있습니다.


인공지능 : Batch Normalization : 개념, 원리, 개요



배치 정규화를 통해 활성화가 실제로 높거나 낮아지지 않도록하기 때문에 더 높은 학습 속도를 사용할 수 있습니다. 그리고 이전에는 훈련을 할 수 없었던 것들이 훈련을 시작합니다.


약간의 정규화 효과가 있으므로 과적합을 줄입니다. 드롭 아웃과 마찬가지로 숨겨진 각 레이어의 활성화에 약간의 노이즈가 추가됩니다. 따라서 배치 정규화를 사용하는 경우 드롭아웃을 줄이게됩니다. 많은 정보를 잃지 않기 때문에 좋은 것입니다. 그러나 정규화를 위한 배치 정규화에만 의존해서는 안됩니다. 드롭 아웃과 함께 사용하는 것이 좋습니다.




배치 정규화는 어떻게 작동합니까?

신경망의 안정성을 높이기 위해 배치 정규화는 배치 평균을 빼고 배치 표준 편차로 나누어 이전 활성화 계층의 출력을 정규화합니다.


그러나 무작위로 초기화된 일부 매개 변수에 의한 활성화 출력의 이러한 이동/스케일 후에는 다음 계층의 가중치가 더 이상 최적이 아닙니다. 손실 함수를 최소화 할 수 있는 방법 인 경우 SGD (Stochastic Gradient Descent)는 이 정규화를 취소합니다.


결과적으로 배치 정규화는 각 계층에 두 개의 학습 가능한 매개 변수를 추가하므로 정규화된 출력에 "표준 편차" 매개 변수 (감마)를 곱하고 "평균" 매개 변수 (베타)를 추가합니다. 즉, 배치 정규화를 통해 SGD는 모든 가중치를 변경하여 네트워크의 안정성을 잃지 않고 각 활성화마다 이 두 가중치만 변경하여 비정규화를 수행 할 수 있습니다.




VGG와 같은 배치 정규화 및 사전 훈련된 네트워크

VGG 이전에는 배치 정규화가 없었기 때문에 VGG에는 배치 규범 레이어가 없습니다. 처음부터 그것을 훈련하면 사전 훈련 된 가중치는 활성화의 정상화로부터 이익을 얻습니다. 따라서 배치 표준 레이어를 추가하면 실제로 ImageNet이 향상됩니다. 밀도가 높은 레이어와 컨볼루션 레이어에 추가 할 수 있습니다.


사전 훈련된 네트워크에 배치 규범을 삽입하면 사전 훈련된 가중치가 변경됩니다. 왜냐하면 평균을 빼고 활성화 계층의 표준 편차로 나눕니다. 필요로 인해 발생하지 않기 때문입니다. 사전 훈련된 가중치는 동일하게 유지됩니다. 따라서 출력 변경을 취소하기 위해 배치 규범 레이어를 삽입하고 감마 및 베타를 파악해야합니다.


모든 것을 요약하면 배치 정규화에 대해 네트워크의 모든 계층에서 전처리를 수행하는 것으로 생각할 수 있습니다.

반응형