① 미니 배치 평균을 구합니다.
② 미니 배치의 분산과 표준편차를 구합니다.
③ 정규화를 수행합니다.
④ 스케일(scale)을 조정(데이터 분포 조정)합니다.
따라서 매 단계마다 활성화 함수를 거치면서 데이터셋 분포가 일정해지기 때문에 속도를 향상시킬 수 있지만 다음과 같은 단점도 있습니다.
첫째, 배치 크기가 작을 때는 정규화 값이 기존 값과 다른 방향으로 훈련될 수 있습니다. 예를 들어 분산이 0이면 정규화 자체가 안 되는 경우가 생길 수 있습니다.
둘째, RNN은 네트워크 계층별로 미니 정규화를 적용해야 하기 때문에 모델이 더 복잡해지면서 비효율적일 수 있습니다.
따라서 이러한 문제들을 해결하기 위한 가중치 수정, 네트워크 구성 변경 등을 수행하지만, 무엇보다 중요한 것은 배치 정규화를 적용하면 적용하지 않았을 때보다 성능이 좋아지기 때문에 많이 사용됩니다.
그럼 배치 정규화를 텐서플로 예제로 알아보겠습니다. 배치 정규화 예제에서 사용되는 데이터셋은 붓꽃(iris) 데이터셋입니다.
필요한 라이브러리를 호출하고 load_iris()를 사용하여 케라스에 내장된 데이터셋인 붓꽃 데이터셋을 내려받습니다.