( 참고 : Fastcampus 강의 )
[ ZFNet & Network in Network ]
1. ZFNet (2013)
AlexNet의 변형 ( for 보다 효율적인 구조)
(1) De-convolution
- de-convolution을 수행해서, feature map이 잘 학습되는지 확인
- 과정) Unpooling → ReLU → Deconvolution
- convolution filter의 transpose
Convolution 연산은, 아래 그림과 같이 Matrix Multiplication으로 변형해서 표현할 수 있다.
( 출처 : https://analysisbugs.tistory.com/104 )
위의 Sparse Matrix \(C\)의 transpose를 \(Y\)에 곱하면, \(X\)를 복원할 수 있는데,
이를 Deconvolution이라고 한다
(2) UnPooling
Maxpooling된 지점을 저장 한 뒤, Unpooling할 때 해당 지점에서 재생성
(3) Overall Architecture
(4) Layers
Layer 1,2
- low level feature ( edge, color 등 )
- 비슷한 class에 대해 invariant
Layer 3
- middle level features ( texture 등 )
- 보다 정교한/세밀한 것 포착
Layer 4,5
- high level feature ( 개체의 일부분, 위치, 자세 등 )
- 가장 세밀한 부분 포착
Summary
- Rotation, Scaling, Translation에 robust하다!
- Image의 일부를 가려도, output에 민감하게 변화 X
- AlexNet과의 차이점 : 1개의 GPU만을 사용 + 70 epoch + 12일
2. Network in Network (2013)
GoogLeNet에 아이디어를 제공한 알고리즘이다
complex structure를 포착하기 위해, 네트워크 내에 네트워크를 추가 ( = convolution을 MLP로 대체 )
CNN vs NIN
- CNN) linear filter dot product
- NIN) NON-linear MLP
(1) Global Average Pooling
-
(출력층 직전의) FCNN은 parameter 수를 증가시키는 요인!
\(\rightarrow\) FCNN 대신에 CNN을 사용한 뒤, global average pooling을 적용
( overfitting 방지 효과 )
-
Feature Map의 개수를, classification되는 output의 개수와 일치시키기
(2) Overall Architecture
3. GoogLeNet의 1x1 conv
- Bottle Neck 구조라고도 함
- dimension reduction의 효과
- 1x1 conv : MLP와 비슷한 효과