본문 바로가기
[ 딥러닝 ]

[ CNN ] ResNet / 층이 깊어지면 성능도 좋아지게!

by 불주먹고양이 2023. 6. 7.

마이크로소프트에서 개발한 알고리즘인 ResNet은 '층이 깊어지면 성능도 좋아질까?'에 대한 의구심으로 시작되었다.

 

우리의 일반적인 생각으로는 신경망의 층이 깊어질수록 성능도 좋아질 것이라고 생각되지만, 실제로 층의 개수가 성능을 보장하는 것은 아니었다.

20층일 때보다 56층일 때 training error와 test error 모두 더 높은 것으로 보이는데, 이는 오버피팅으로 인한 성능 저하가 아니라는 것을 알려준다. 

 

"plain convolutional neural network"를 여러 층 쌓았기 때문에 발생한 것으로, 층을 깊게 쌓을 수록

1) Gradient Vanishing 또는 Gradient Explosion

2) Degradation Problem

이 발생한다.

 

이를 해결할 방법으로는 크게 Optimizer와 Network 개선이 있는데, 옵티마이저를 새롭게 만든다는 것은 정말 어려운 일이기 때문에 신경망을 개선하는 방향으로 ResNet이 개발되었다.

 

 

 

1. 스킵 연결 (Skip Connection)

층 개수가 증가해도 성능 향상이 일어날 수 있도록 스킵 연결을 고안했다.

 

Input Data를 합성곱 계층을 건너뛰어 출력에 바로 더하는 구조로, 다음 그림과 같다.

출처 : https://thebook.io/080289/0390/

 

(1) 기존 방식

H(x) : CNN layer ▶ ReLU ▶ CNN layer ▶ ReLU

 

H(x) - y (y는 타겟값) 즉, 오차를 최소화하는 것을 목표로 가지고 학습을 진행한다.

이때 H 함수는 항등함수이므로 H(x) - x 의 값을 최소화하는 방향으로 한다.

 

 

(2) Residual Block (ResNet)

H(x) : CNN layer ▶ ReLU ▶ CNN layer

 

H(x) - x = F(x)로 두어서, F(x)의 값을 최소화하는 것을 목표로 한다. F(x)는 Residual (오차)라고 한다.

위의 식을 살짝 변형하여 H(x) = F(x) + x로 만든 것을 Residual Block이라고 하고, 이 Residual Block이 쌓여서 Residual Network 즉, ResNet이라고 한다.

논문에서는 위의 그림으로 나와있는데, weight layer는 합성곱 계층으로 생각하면 된다.

 

 

(3) Skip Connection

입력 값이 일정한 층들을 건너뛰어 출력에 더하도록 한다.

Residual Block에서 H(x) = F(x) + x 의 ' + x '를 하기 위해서는 skip connection이 필요하다.

 

skip connection은 숏컷 (shortcut)이라고도 하는데, 기울기가 잘 전파될 수 있도록 하여 역전파 상에서 기울기가 소실되는 현상을 방지한다.

 

 

 

2. Deeper BottleNeck Architecture

ResNet에서는 BottleNeck을 사용하는데, 왼쪽은 사용하지 않은 구조이며 오른쪽은 사용한 구조이다.

BottleNeck의 핵심은 1 x 1 convolution인데, 이는 GoogLeNet에서도 사용했던 구조이다.

 

Channel 개수가 많아지면 연산에 걸리는 속도도 증가하게 되는데, channel의 개수를 줄여서 연산량을 줄이는 것을 Bottleneck 이라고 한다.

 

1 x 1 convolution 필터에는 공간적인 (Spatial) 특징을 전혀 가지고 있지 않다.

(kernel 사이즈가 최소 2가 되어야지만 합성곱 연산이 공간적인 특징을 추출할 수 있다.)

 

ResNet에서도 BottleNeck 구조를 사용하여

채널을 축소하고 (1 x 1)

공간적인 특징을 추출하고 (3 x 3)

다시 채널을 증가시킨다. (1 x 1)

출처 : https://coding-yoon.tistory.com/116?category=825914

 

이 모습이 병목현상과 비슷하여 BottleNeck이라는 이름을 얻게 되었다.

출처 : http://www.jbnews.com/news/articleView.html?idxno=116332

 

 

 

3. 성능

 

다른 알고리즘과 비교했을 때 층이 깊어졌으며 skip connection이 일어나고 있음을 확인할 수 있다.

 

최종적으로 ResNet은 Human 에러를 능가하는 성능 3.57% Top-5 에러 기록을 세우며 2015년 ILSVRC에서 우승하였다.

ResNet은 층이 더 깊어졌음에도 더 좋은 성능을 보이고 있다.