더 깊은 네트워크는 항상 더 좋은 성능을 가진다? X
: 점점 깊어지면서 gadient accuumulation -> gradient의 magtitude가 너무 커져서 explosion/ 너무 작아서 gradient vanishing. 계산복잡도가 너무 커짐.
GoogLeNet
: Inception module: 하나의 레이어에서 다양한 크기의 filter를 사용 (수평확장) -> 계산복잡도가 커질 수 있어서 1*1conv를 사용.
- Stem network: vanilla convolution networks
- Stacked inception modules
- Auxiliary classifiers
- Classifier output
ResNet
network layer depth가 성능을 올릴 수 있다.
층이 깊어 질수록 문제가 되는 것은 overfitting아닌 degradation.
shortcut connection을 통해 해결, residual connection은 2^n의 gradient가 지나갈 수 있는 방법이 생김.
He initialization(뒤에서 더해지면서 너무 커지는 것을 방지)
3*3 conv를 가진 residual block을 쌓음.
DenseNet
상위 레이어에서 모든 하위 레이어들을 참조할 수 있는 구조(concatenation으로)
SENet
squeeze: global average pooling으로 각각 채널의 공간정보를 없애고 분포를 구함.
excitation: FC layer로 채널간의 연관성 고려.
efficientNet
base line에 width scaling, depth scaling, resolution scaling, compound scaling을 통해 성능 향상.