네 가지 주요 architectures
1. AlexNet
: LeNet-5(산업에 아주 성공적으로 적용된 최초의 conv Net) / 이미지를 입력으로 받아서 stride=1인 5X5 필터를 거치고 몇 개의 conv layer와 pooling layer를 거친다.
그리고 끝 단에 FC Layer가 붙음
AlexNet은 2012년에 발표된 획기적인 최초의 large scale CNN으로서, ImageNet classification을 아주 잘 수행한다. 기본적으로 conv-pool-normalization 구조가 두 번 반복된다.
Q1. 첫 레이어의 출력 사이즈?
->Input: 227X227X3 images, First layer (CONV1): 96개의 11X11 filters이 stride 4
출력값의 차원: (227-11)/4+1 = 55. 따라서 출력 사이즈는 55X55X96이다.
Q2. 이 레이어의 전체 파라미터 개수?
->96X11X11X3이다.
Second layer (POOL1): 3X3 filters이 stride 2
Q3. 출력값 사이즈는?
->출력값의 차원: (55-3)/2+1 = 27, 따라서 출력 사이즈는 27X27X96이다. (96=입력의 depth,출력의 depth)
Q4. 이 레이어의 전체 파라미터 개수?
->pooling layer에는 파라미터가 없다. 파라미터는 우리가 학습시키는 가중치로, Conv layer에는 학습할 수 있는 가중치가 있지만, pooling의 경우에는 가중치가 없고 그저 특정 지역에서 큰 값을 뽑아내는 역할만 수행.
(Pooling layer는 위치한 필터 안의 데이터 값 중 특정값을 골라서 데이터사이즈만 변환시키기 때문에, 따로 가중치가 없다.)
1) 전체 layer 구조
(CONV1-MAX Pooling1) - (CONV2-MAX Pooling2) - CONV3 - CONV4 - CONV5 - MAX Pooling3 - FC 6,7,8
마지막 Fully Connected layer는 Softmax함수를 거쳐 1000개의 ImageNet classes로 최종분류된다.
2) AlexNet 특징
1. 비선형함수로 ReLU를 사용
2. regularization
① Data augmentation(regularization의 일환으로 train data에 변형을 주는 것)을 많이 했다.
: flipping, jittering, clipping, color normalization 모두 적용
② Dropout 0.5
3. batch size 128
4. SGD Momentum 방식 Optimization
5. Learning rate 1e-2 에서 시작해 val accuracy가 더이상 올라가지 않는 학습지점부터 서서히 1e-10으로 내림
6. weight decay : L2
7. ensemble 기법 사용
▲ CNN 기반 모델의 발전과정
AlexNet은 2012년에 ImageNet 대회에서 처음으로 CNN을 기반으로 한 모델의 우승을 거머쥐었고, 이를 시작으로 CNN이 발전하면서 앞서 배운 transfer learning 의 기반 모델로도 많이 사용되었다.
2013년도의 우승자였던 ZFNet은 AlexNet의 파라미터값만 바꿔서 출전했는데도 우승을 했다.
그리고 2014년도의 GoogleNet과 VGG이 나왔는데, 확실히 layer가 깊어지면서 성능도 우수해졌다.
2. VGG
● VGGNet의 AlexNet과 가장 큰 차이점
① layer가 깊어졌다 (8에서 16~19layers로)
② 3x3 , stride 1, pad1 CONV필터와 2x2 stride 2 MAX POOL 필터만 사용
layer가 깊어지는만큼 non-linearity가 증가하니 더 자세히 특징을 잡아낼 수가 있다.
3X3 필터만 쓰는데, 이렇게 작은 필터를 쓰는 이유:
필터의 크기 ↓ = 파라미터의 수 ↓
∴ 큰 필터에 비해 레이어를 조금 더 많이 쌓을 수 있음 => depth를 더 키울 수 있음
7X7 필터와 실질적인 receptive field가 같으면서도 더 깊은 레이어를 쌓을 수 있게 된다.
-> Non-linearity를 더 추가할 수 있고 파라미터 수도 더 적어지게 된다.
3. GoogLeNet
더 깊어진 layer
Inception module을 사용
FC layer가 사라짐 => 파라미터 개수가 집중돼있는 layer를 없애 파라미터 개수를 효과적으로 줄였다.
● Inception module
네트워크와 네트워크 사이에 있는 네트워크들의 네트워크,,,
내부에는 동일한 입력을 받는 서로 다른 다양한 필터들이 “병렬”로 존재
Input의 depth(256)은 결국 output의 depth(529k)로 굉장히 커진다.
=>solution: “bottleneck”
계산량을 줄이고 depth를 줄이기 위해 1X1 필터층인 일명 bottle neck layer를 추가한다.
파란 박스: 보조 분류기의 loss를 전체 loss와 더하고 그 평균을 계산.
네트워크가 깊을수록(레이어의 개수↑) gradient 신호↓, 결국에는 0에 수렴할 수 있기에 보조 분류기를 이용해서 추가적인 gradient 신호를 주기 위함
- FC layer 대신 global average pooling layer(첫번째보라색)을 깔았는데, 기존 FC layer는 feature map을 1차원벡터로 펼쳐서 Relu와 같은 활성화함수를 거친뒤 Softmax로 분류하게 되었는데, Global Average Pooling은 직전층에서 산출된 feature map 각각 (그림에서는 depth방향으로 1024개) 평균내는 방식의 Pooling layer라고 생각하면 된다.
4. ResNet
ResNet 이름은 Residual network로, layer가 깊어질 때 생기는 graidnet vanishing문제를 residual block이라는 방식을 통해 해결하고자 한 데에서 착안한 이름
'비전딥러닝 > cs231n' 카테고리의 다른 글
Lecture 11. Detection and segmentation (0) | 2022.09.18 |
---|---|
Lecture 10. Recurrent Neural Networks. (0) | 2022.09.18 |
Lecture 8. Deep Learning Software (0) | 2022.09.18 |
Lecture 7. Training Neural Networks, part II (0) | 2022.09.18 |
Lecture 6. Training Neural Networks, part I (0) | 2022.09.18 |