항상 기술은 빠르게 발전한다...
CNN 분야는 10년 안에 많은 것이 쏟아졌다..
정보의 홍수의 시대에서 정확한 정보에 대해서 알아보도록 하자
사실 이 글도 정확하지 않을 수도 있지만,,,
최대한 노력해본다,,
Conventional CNN Archi.
📌 LeNet-5
- input의 사이즈는 28x28인데 zero padding을 하여 32x32 상태로 input layer에 집어 넣는다. 그 이외의 layer에서는 padding을 사용하지 않는다
- C1, C3, C5, F6, output layer 총 5개의 layer로 구성되어있다
- padding을 하지 않기에 size는 계속해서 줄어든다
- avg pooling은 현재의 pooling의 방식과는 다르다(더 많은 weight/bias 를 요구)
- output layer에서는 Euclidian distance를 사용한다 (현재는 cross-entropy를 사용하는 편. 더 큰 gradient를 생성하고, 빠르게 수렴하므로)
📌 AlexNet (2012)
- same padding : $\frac{kernel\ size -1}{2} $
- output size : $\frac{input\ size+2\times padding-kernel\ size}{stride} + 1 $
- LeNet-5와 비슷하지만, padding 덕분에 size가 줄지 않는다 -> 이 덕분에 layer를 더 깊게 쌓을 수 있다
- feature map(channel 수)의 개수가 많다 = layer를 쌓는 과정에서 가로로 커진다고 생각하면 된다
- activation function : ReLU
- 정규화를 하려고 했었고, 현재와는 다른 형태이지만 max pooling으로 overlapping pooling을 사용하였다
- 처음으로 convolutional + pooling의 형태가 아닌 convolutional 위에 convolutional layer를 쌓았다
- overfitting 방지를 위해 2가지의 regularization을 사용하였다
- Dropout : 일부 weight를 끊는 것(F9, F10 layer에서 사용)
- Data augmentation : input데이터를 랜덤하게 뒤집거나 밝기를 바꾸어 data set의 크기를 늘리는 것
📌 VGGNet
- 구현과 이해하기가 매우 쉽다. 그로 인해 성능이 좋은 architecture가 많이 나왔지만, 현재에도 많이 사용한다
- 구조 : 2 or 3 conv layers + pooling layer(repeat)
Network in Network(Inception module)
📌 GoogLeNet
- inception module이라고 불리는 subnetwork를 사용한다
- AlexNet보다 훨씬 깊게 구성되어있지만, 약 10배정도 parameter가 감소했다(parameter가 감소했다는 것은 architecture를 더 deep하게 구성할 수 있다는 뜻)
- inception module
- filter의 크기에서 stride를 1, same padding을 사용하여 input과 동일한 height, width를 output으로 나오게 한다
- 모두 다른 conv layer에서 나오는 크기의 output이 동일하기에 모든 다른 conv layer에서 나온 output을 합칠 수 있다
- 다양한 kernel size를 통해 다양한 scale의 pattern을 파악할 수 있다
- activation function : ReLU
- Depth concat : 모두 다른 layer에서 나온 다른 feature map을 합치는 것
- Inception module에서 1x1 conv layer가 필요한 이유
- depth dimension(spatial pattern에 대해서는 파악 불가)에 대한 pattern을 파악할 수 있다
- 동일한 size의 output이지만, depth를 줄여 fewer feature map을 출력할 수 있다
- pair of conv layers [1x1]&[3 or 5x3 or 5]을 사용한다면
- complexity를 줄일 수 있다
- generalization을 증가시킬 수 있다
- part A
- 1st two layers
- width, height의 크기를 각각 4씩 감소(총 16, 1/4감소)
- large kernel(7x7) 사용
- Local response normalization
- 2nd conv layers
- bottleneck layer처럼 사용
- 1x1과 3x3의 filter를 차례대로 사용하여 pair conv layer를 사용
- Local response normalization
- Max pool
- width, height의 크기를 1/2로 줄여 architecture의 속도를 올린다
- 1st two layers
- part B
- 9개의 inception module
- global average pooling을 통해 dense layer를 1024로 시작할 수 있다(VGGNet의 dense layer는 4096으로 시작)
- 큰 spatial 정보를 drop하여 dimensionality reduction을 진행한다
- parameter를 줄인다? -> limits overfitting, sparse net
'학교 공부 > 기계학습개론' 카테고리의 다른 글
21. RNN Part II(Code) & Autoencoder (0) | 2022.12.14 |
---|---|
20. RNN (0) | 2022.12.14 |
19. Famous CNN architecture - Part 2 (0) | 2022.12.14 |
17. CNN (Convolution Neural Network) (0) | 2022.12.07 |
16. DNN (2) | 2022.11.30 |