CNN Architecture
CNN Architecture
LeNet-5
AlexNet
AlexNet
앞,,,공식들로,,,한번,,,따라가보세유,,,,ㅎㅎㅎㅎㅎ 난귀차나~
가장 윗줄부터 해석을 해보자면 227*227*3 차원인 input이 있었는데 이를 96개의 11*11 filter로 stride4,pad0으로 통과시켰을 때 55*55*96의 결과가 나온다.
위에서 보면 convolution과 pooling이 일정한 패턴 없이 뒤죽박죽이다. due date에 맞춰 hyperparameter의 하나인 filter size를 임의로 계속 조정하다보니 filter의 경향성이 규칙성 없이 중구난방해진 것이다!
마지막에서 넷째줄을 보면 6*6*256까지 만들어진 결과를 flatten시킨다. flatten 시킨 이후 약 10.000차원 정도로 vector가 만들어질텐데 그것을 4096차원으로 만들어주는 FC Layer가 있을거고, FC7의 경우 계산 후에도 차원 수가 유지되었으므로 4096*4096의 matrix였을 것이고 마지막 FC8에서는 1000*4096의 weight matrix였을 것이다. (matrix 곱에서 input이 앞으로 오니까)
Zeiler & Fergus (ZFNet)
ZFNet
: Improved hyperparameters over AlexNet
hyperparameter를 잘 튜닝한것이다. 예를 들어 첫번째 convolution을 11*11에서 7*7로 바꾸고 stride도 변경하듯이 alexnet의 일부를 변경하여 만들어낸 것이다.
하지만,, ZFNet은 그렇게 주목을 받지 못하였고 2014년도에 나온 VGG Net과 GoogleNet이 '어 되겠다!!!..'하는 더 큰 주목을 받았다.
VGGNet
VGGNet
layer를 count할 때에는 learnable한 부분만 세기 때문에 conv부분과 FC부분만 count한다.
AlexNet | VGGnet | |
Layer ( layer를 count할 때에는 learnable한 부분만 세기 때문에 conv부분과 FC부분만 count한다.) |
8개 | 두 버전으로 16,19개가 있다. AlexNet보다 상대적으로 deep하다 할 수 있다. |
filter size | 제각각 | 모두 3*3 |
channel | 중구난방 | 일정 패턴을 가짐 |
VGGNet : Receptive field
3*3의 filter를 쓴다는 것은 9개의 대한 공간정보를 하나의 점으로 압축하는 것이라고 할 수 있다.
이전 과정으로 계속 거슬러 올라가다 보면 결국 보라색으로 그려진 부분을 끝점으로 filter가 통과되는 7*7만큼의 공간이 A3에서 하나의 점을 mapping 된 것이라 할 수 있다. 그 7*7만큼의 공간이 A3의 빨간부분 점의 rece[tove field라고 할 수 있다.
이것이 VGGNet의 가장 큰 특징이다. AlexNet처럼 큰 filter를 사용하여 receptive field를 넓히는 것이 아니라, 동일 크기의 작은 filter를 연속해서 사용하면 receptive field를 넗힐 수 있음을 VGGNet을 통해 증명해낸 것이다.
Receptive field 관점에서는 7*7이라는 큰 filter를 큰 것이 결국엔, 3*3 filter를 연속해서 3번 쓴 것과 똑같다. 3*3 filter로 여러번 거치면 결국에 layer는 더 깊어지고, non-linear함수도 더 여러번 적용시킬 수 있으므로 더 복잡한 mapping이 가능해진다.
parameter관점에서 feature map을 구하는 공식으로 비교해보면, 결국, 3*3 filter를 여러번 쌓은 것이 7*7를 사용한 것보다 parameter도 더 적게 필요하다.
VGGNet : detail operation