02.GoogleNet
딥러닝의 성능을 높히는 방법은 뭘까?
- Layer를 깊게(Depth)
- width를 증가(Channel)
그러나 Overfitting 발생, Gradient vanishing 발생 문제...
=> Layer를 깊게 쌓되, 효율적으로 깊게 쌓자!
해서 나온것이 GoogleNet!!
- Level1
- 기본 CNN 사용 (효율적인 메모리 사용을 위해)
- Level2
- 9개의 Inception
- 다양한 conv layer의 병렬 사용
- 3x3 max-pooling
- 차원축소 1x1 conv layer 적용(연산량을 줄이기 위해 -> Bottle Neck)
- concat
- Level3
- Auxiliary classifier(보조분류기)
- layer 중간중간 softmax 함수를 출력하여 gradient 역전파를 진행
- Level4
- Global Average Pooling(GAP)
03.ResNet
VGG보다 8배 깊은 152개의 layer사용
깊이가 깊어지면 네트워크의 성능은 무조건 향상될까?
-> 더 높은 error발생 및 기울기소실,오버피팅,연산량증가 등의 문제 발생
-> 연산이 진행되면서 원래 정보를 잃게됨
=> Layer는 깊게 하되, 학습하는 양을 줄이자!
=> Layer를 거친 값에 x를 더해 기존의 정보를 살리자!
해서 나온것이 ResNet !!
주요특징
- Residual Learning (잔차학습)
- Short cout(skip) connection
- bottle neck 구조