신경망에서의 학습
안정적인 학습을 위한 간접적인 방법
Sigmoid, tanh : 매우 비선형적인 방식으로 입력 값을 매우 작은 출력 값의 범위로 squash
e.g. sigmoid는 실수 범위의 수를 [0, 1]로 맵핑
위의 문제점 :
정규화를 하는 이유
학습 불안정화가 일어나는 이유
각 레이어나 엑티베이션 마다 입력값의 분산이 달라지기 때문
배치정규화
배치란?
모델의 가중치를 한번 업데이트시킬 때 사용되는 샘플들의 묶음
-> 헷갈렸던 부분 : cnn의 배치란 batch_size = 10이면 mnist 데이터의 0~9행
수식
미니 배치의 평균과 분산을 이용해서 정규화 한 뒤 scale 및 shift 를 감마(γ) 값, 베타(β) 값을 통해 실행
-> 미니 배치의 평균과 분산으로 정규화하는 것은 말 그대로 전체 데이터의 측정치로 정규화하는 것이 아니라는 의미
-> 중요 포인트는 감마(γ) 값, 베타(β) = 일반 정규화와 다른 부분
위에서...
특징
이전 스터디에서
정규화 : 학습셋 전제 집합에 정규화 실시
배치 정규화 : 미니 배치 단위로 정규화 실시 근데 cnn에 적용하고자 할 때는 cnn의 특성을 고려해줘야한다.
DNN의 배치 정규화
세로 120451이 하나의 샘플이다.
가로 1, 3, 6이 feature가 된다. (여기서 feature란 cnn의 feature 맵이랑 연결시켜 보면 하나의 픽셀을 feature라고 하고 feature들이 모여서 feature 맵이라고 하는 것 같다.)
∴ BN은 batch에 있는 “모든” sample들에 대해서 “각 feature의 평균과 분산”을 구하여 정규화
batch_size = m
입력 사이즈 = n
위의 모양으로 입력x와 가중치w의 곱(wixi+b)가 생김
CNN의 경우 컨볼루션 성질을 유지 시키고 싶기 때문에 각 채널을 기준으로 각각의 감마와 베타를 만들게 된다.(★ 채널을 따져야한다.)
batch_size = m
필터 사이즈 = p x q
채널 개수 = n