이전 장에서 본 LeNet, AlexNet의 경우 컨볼루션 레이어가 3개, 5개밖에 되지 않았다.
최근의 신경망은 100개 이상의 컨볼루션 레이어를 가지고 있다.
이렇게 층을 깊게 한 Deep Neural Network를 사용하는 것을 Deep Learning이라고 한다.
8.1.3 깊게 하는 이유
층을 깊게 하는 이유가 무엇일까?

위와 같은 convolution 연산을 생각해보자.
5x5 합성곱 연산 1회는 3x3 합성곱 연산 2회로 대체 할 수 있다.
매개변수의 개수도 25개에서 16개로 줄어들며, 층을 더 깊게 할 수록 더 많이 줄일 수 있다.
- 같은 receptive field를 가지면서, 학습할 매개 변수의 개수는 줄어든다.
- 문제를 계층화 하여 각 층의 문제를 더욱 단순한 문제로 대체할 수 있다.
- 활성화 함수가 겹치면서 비선형 함수, 더 복잡한 함수를 나타낼 수 있다.
* receptive field: 특정 뉴런에 변화를 일으키는 국소적인 공간 영역을 의미한다.
8.2.2 VGG
2014년 ILSVRC에서 준우승을 한 모델로, 논문 제목은
Very deep convolutional networks for large-scale image recognition이다.
GoogLeNet에 비해 성능은 낮지만 구조가 간단하다는 큰 장점이 있다.
층의 깊이에 따라 VGG16, VGG19 등으로 구분한다. 논문에서는 층의 깊이에 따라 성능을 비교하고 있다.

구조는 간단하지만, 층이 매우 깊어진 것을 볼 수 있다.
- 3x3 padding 1, stride 1의 작은 필터를 사용한 convolution 계층을 연속으로 거친 후, stride 2로 풀링을 하여 크기를 절반으로 줄이는 과정을 반복한다. feature map의 개수(깊이)는 점점 증가한다.
- 마지막에는 FC layer를 거쳐 결과를 출력해낸다.
8.2.3 GoogLeNet
8.2.4 ResNet
2015년 ILSVRC 대회에서 우승을 차치한 알고리즘으로, 마이크로소프트의 팀이 개발했다.
논문 제목은 Deep Residual Learning for Image Recognition이다.
딥러닝의 층을 늘리는 것이 무조건 좋은 것은 아니다.
층이 깊어지면서 gradient가 0으로 빠르게 감소하여 gradient descent가 느려지는
vanishing gradient 문제가 발생하기도 한다.

실제로 plain한 deep neural network는 성능이 그렇게 좋지 못하다.
Residual block
ResNet은 이런 문제를 해결하면서 층을 깊게 만들기 위해 Skip connection을 도입한다.
결과 값 y와 입력 값 x의 desired underlying mapping을 H(x)라고 하자. 기존에는 여러 레이어를 쌓아서 이 H(x)를 예측하려고 했다.
ResNet paper에서는 이와는 다른 방식인 Residual Learning을 제안한다.
H(x)가 아니라 F(x) := H(x) - x 를 fit 하자는 것이다. 기존의 매핑(H)은 F(x) + x로 recast할 수 있다.
이러한 방식으로 train하기 때문에 Residual 이라고 칭하며, 논문에서는 이 방식이 optimizing하기 더 쉽다고 주장한다.
예를 들어, identity function이 optimal한, 우리가 찾고자 하는 목표라고 해보자.
이 때, H(x)가 identity mapping이 되도록 layer를 fit 시키는 것은 어렵지만,
F(x)가 0이 되도록 fit 시키는 것은 훨씬 쉽다.

이를 표현한 네트워크가 위의 shortcut connection이 있는 neural network이다.
입력 x를 연속한 weight layer(convolutional layer)를 건너 뛰어 출력에 바로 연결시킨다.
기존 방식에서는 입력 x를 넣으면 weight layer - ReLU - weight layer를 거쳐 F(x)가 결과 값으로 나온다.
Residual block에서는 스킵 연결을 통해 x를 더해 F(x) + x를 출력으로 내보낸다.
skip connection 을 통해 입력 데이터가 그대로 흐르면서, 역전파 때도 최소 1이상의 기울기를 하류로 보낸다. 따라서 gradient가 너무 작아지는 상황을 방지할 수 있다.
ResNet에는 다음과 같이 두 가지 종류의 block이 존재한다.
Identity block

- shortcut과 main path의 차원이 같은 경우이다.
Convolutional block

- shortcut과 main path의 차원이 다른 경우이다.
- shortcut path에 CONV2D layer가 있다. 차원을 맞추기 위한 convolution 연산을 거친다.
ResNet은 VGG의 구조를 바탕으로, 더 많은 레이어들을 추가해 만들었다.
그림을 보면 위에서 말한 Residual block들이 사용된 것을 볼 수 있으며,
대략 2개의 층마다 skip connection이 존재한다.

'Deep Learning' 카테고리의 다른 글
| CH7 - CNN(Convolutional Neural Network) (0) | 2022.08.12 |
|---|---|
| CH6 - 학습 관련 기술들 (2) | 2022.07.20 |
| CH5 - Back Propagation (0) | 2022.07.13 |
| CH4 - 신경망 학습(Training Neural Network) (0) | 2022.07.06 |
| CH3 - 신경망(Neural Network) (0) | 2022.06.30 |