목차
오차역전파
경사하강
활성함수
최적화 함수
초기 가중치 설정함수
배치 정규화
머신러닝 모델링할때, 데이터 표준화하는 거랑 똑같다.
회귀예측할 때도 특정 변수의 단위가 지나치게 크면 예측력에 영향을 많이 준다.
신경망에서도 특정 변수/학습노드의 데이터 단위가 달라지면 모델의 예측력이 낮아진다.
또한 신경망은 데이터를 여러번 짤라내서 학습을 하기 때문에 "샘플데이터의 확률분포"에 매번 달라진다.
따라서 샘플데이터에 의한 변동성을 최소화시키면서 학습시키면 더 빠르고 정확한 모델을 만들 수 있다.
배치정규화의 장점
- 학습 속도가 개선된다 (학습률을 높게 설정할 수 있기 때문)
- 가중치 초깃값 선택의 의존성이 적어진다 (학습할 때마다 출력값을 정규화하기 때문)
- 과적합(overfitting) 위험을 줄일 수 있다 (드롭아웃 같은 기법 대체 가능)
- Gradient Vanishing 문제 해결
딥러닝은 여러 노드가 입력/출력을 반복하기 때문에
출력값들이 새로운 노드의 입력값으로 들어갈 때, "정규화"되어 있지 않으면,
나중에 gradient 계산할 때, gradeint가 발산하거나 0으로 수렴할 수 있다.
쉽게 생각해보라. 0.2의 제곱을 수십번 반복하면 숫자가 엄청 작아지겠찌?
오차역전파는 편미분의 합성곱이므로 모든 gradient를 곱해서 구함.
그래서 역전파 깊이가 깊어지면 gradient를 계산해도 실질적으로 모델의 최적화 되지 않는 현상이 벌어짐..
그럼 학습하는 의미가 없어지는 거다...
이를 막기 위해서 배치 정규화함.
왜 배치냐?
--> 전체 데이터를 말하는 배치일수도 있고, 미니배치 일수도 있다.
머신 러닝에서 표준화할때, 평균과 표준편차를 알려면
최소한 샘플데이터의 평균과 표준편차를 알아야 함.
즉, 최소한의 데이터셋 필요함. 그런 의미에서 배치라는 단어가 붙음.
정규화하는 방법이 또 무엇이 있나?
- batch 정규화 : featrue의 분포(row만큼)를 보고 각feature의 row들을 정규화함
- layer 정규화 : row의 분포(feature만큼)를 보고 각row의 feature을 정규화함 (이미지/시계열 데이터처럼 자기상관성 높은 경우에만)
- Instance/grouped 정규화 : 일정 크기의 feature만 가져와 row의 분포를 보고, 각 row의 feature를 정규화함
- weight 정규화 : layer/node 간 학습 가중치도 표준화(배치정규화와 같은 방식)함..
* 아래는 CNN학습 filter에 대한 용어들.
- pointwise : 최소 단위의 element별로 학습
- depthwise : spatial ; 일부 그룹의 row만을 보겠다는 의미.
- groupwise : 모든 픽셀(input;N, feature;Channel, element;Width/Height)에 대햇
출처:
다양한 정규화방법1 : wingnim.tistory.com/92
다양한 정규화방법2 : www.slideshare.net/ssuser06e0c5/normalization-72539464
excelsior-cjh.tistory.com/178?category=940400
'DataMining > Deeplearning' 카테고리의 다른 글
DL - 기초; RNN ; LSTM, GRU (0) | 2021.03.03 |
---|---|
DL-기초; 어텐션 Attention (0) | 2021.03.03 |
DL - 기초; 초기화 (0) | 2021.02.27 |
DL - 기초; 신경망소개/CNN/RNN (0) | 2021.02.27 |
DL - 기초; 활성함수 (0) | 2021.02.27 |