배치 정규화의 필요성
공변량 변화 현상
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fbe67dd32-51ee-40c0-b09d-160688e84303%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.57.54.png)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F6fc5c698-e9d1-42df-809f-c0d7df2ce830%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.58.59.png)
- 학습이 두세번 진행되면서 첫번째 층의 매개변수가 변화함에 따라 분포가 달라짐
- 그 달라진 분포가 다음층으로 넘어가면서 또 변화가 일어남
- 층2, 층3, ...으로 깊어짐에 따라 더욱 심각
- 학습을 방해하는 요인으로 작용
배치 정규화(batch normalization)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Ff9f9c207-0e3a-42d3-ac8a-33b67c5a3979%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.04.11.png)
- 공변량 시프트 현상을 누그러뜨리기 위해 정규화를 층 단위 ㅈ거용하는 기법
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fe617d227-cef3-4652-95e2-98209229ca31%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.05.06.png)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F0cfea1f0-6304-4f84-b719-cca4c62ef686%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.05.22.png)
- 입력 또는 중간 결과 z 중 z에 적용하는 것이 유리
- 일반적으로 완전연결층, 합성곱층 후 혹은 비선형 함수 전 적용시킴
- 훈련집합 전체 또는 미니배치중 미니배치에 적용하는 것이 유리
배치 정규화 과정
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fccc6799d-890c-44ed-badf-bd11d2960954%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.10.31.png)
- 미니배치 단위로 평균과 분산 계산
- 구한 평균과 분산을 통해 정규화
- 비례(감마, 크기를 결정하는 값, 스케일)와 이동(베타, 편향성을 결정, 좌우로 움직여서 0점 맞춰줌) 세부 조정
배치 정규화 장점
- 신경망의 경사도 흐름 개선
- 높은 학습률 허용
- 초기화에 대한 의존성 감소
- 의도하지 않았지만 규제와 유사한 행동을 하며, 드롭아웃의 필요성을 감소시킴
정규화 변환을 수행하는 코드
미니배치 단위
미니배치 단위로 노드마다 독립적으로 아래 코드 수행(감마, 베타 값을 구하기 위해)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F481e6133-b59a-4700-8428-ffd72e164ba1%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.27.59.png)
미니배치 입력에 가중치와 바이어스텀을 연산한 값에 아래 코드를 수행
감마와 베타는 노드마다 고유한 매개변수이기 때문에 학습으로 알아냄
- 미니배치 평균
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fb833e72f-eaca-4355-92bd-aca98b87ff13%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.35.33.png)
- 미니배치 분산
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fb2ae0677-7774-49ef-836f-d3c23f383fb1%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.36.11.png)
- 정규화
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fb07f45e9-aaea-48f4-aed9-8add20f51194%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.36.25.png)
- 비례(scale)와 이동(shift)
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Fe011c03a-79d8-4321-bc0e-5d0317b8d994%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.36.54.png)
전체훈련집합 단위
각 노드는 전체 훈련집합을 가지고 독립적으로 아래 코드를 수행
- 전체훈련집합 평균
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F3ff09867-9bb6-4538-b8e6-69f2f20097b4%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.45.28.png)
- 전체훈련집합 공분산
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F0b257330-9f04-456c-8f07-7be9d4d4805b%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.45.50.png)
각 노드에 전체훈련집합의 평균, 공분산, 그 노드에 해당하는 감마(스케일), 베타(좌우 0점맞추기)값을 저장
예측 단계
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2Ff4c56474-907c-4782-bf82-4abbc4a1bf3f%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.52.19.png)
- 전체훈련집합 평균과 공분산, z에 대항하는 미니배치의 감마와 베타 값을 활용해서 최정 정규화를 진행
CNN에서 배치정규화
- CNN에선 노드 단위가 아닌, 특징 맵 단위로 정규화과정 적용
- 특징 맵의 크기가 p*q라면 미니배치에 있는 샘플마다 pq개의 값이 발생
- 코드1은 총 pqm개의 값을 가지고 미니배치 평균, 공분산을 계산
- 감마와 베타는 특징 맵마다 하나씩 존재
배치 정규화의 긍정적 효과 실험사례
- 가중치 초기화에 덜 민감함
- 학습률을 크게 하여 수렴 속도 향상 가능
- sigmoid활성함소로 사용하는 깊은 신경망도 학습이 이루어짐
- 의도하지 않은 규제효과가 생겨 드랍아웃을 적용하지 않아도 높은 성능을 보여줌
다양한 정규화 방법들
![](https://velog.velcdn.com/images%2Fpeterpictor%2Fpost%2F4972e9bb-f5d3-4c94-94d7-cdda6568c0ab%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-07%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.00.38.png)
- 피처맵 단위 -> 배치노멀라이제이션
- 필터로 생성된 맵 단위 -> 레이어 노멀라이제이션(RGB같은 채널)
- 요소 하나하나는 인스턴스 노멀라이제이션
- 이 모든 것을 섞어서 사용하는 그룹 노멀라이제이션