Deep Residual Learning for Image Recognition, 2015

본 글은 2015년 MS에서 개발/발표한 알고리즘 논문을 초특급으로 간단하게 리뷰할 예정!

 

ILSVRC(ImageNet Large Scale Visual Recognition Challenge)에서 우승을 차지한 뛰어난 성능을 자랑했던 모델이고,

현재에도 다양한 논문에서 많이 참조되고 있다.(고 한다.)

 

Background

앞서 말했듯이, Resnet은 바로 직전 2014년 GoogleNet이 22개 층으로 구성되어 있던 것에 비해, 152층을 갖는다.

그럼 네트워크가 깊어질 수록, 성능이 올라가는 거구나! 라고 생각할 수 있다.

하지만 Resnet저자들은 이를 20층, 56층 네트워크의 성능을 비교/테스트 해보았따.

그림을 보면 알 수 있듯이, 56층 네트워크가 더 나쁜 성능을 갖는 것을 확인할 수 있다.

(층의 깊이가 능사가 아니라는 점)

그럼 152층의 네트워크를 가진 Resnet은 어떻게 지금까지 활용되고, 좋은 성능을 낸 것 일까? 핵심은 아래에 후술하겠다.

 

Residual Block

Resnet논문의 핵심은 Residual Blcok개념이다. 아래 그림을 보고 이해해보자.

Residual Block = "기존 CNN에서 conv층 네트워크에서, input인 x를 더해주는 지름길 (short cut)만 더해주는 개념이다."

따라서, 동일한 연산을 하고 나서 input x를 더하는 것 & 더하지 않는 것이 유일한 차이다.

이 단순한 개념이 얼마나 대단한 것인지 잘 생각해보자.

<기존 Network>

레이어의 output인 Feature Map(vector)을 y라 하면, y = f(x)일 것이다. 

아웃풋인 y는 x를 통해 새롭게 학습하는 정보일 것이다. (기존에 학습한 정보를 보존X, 새롭게 생성해야함.)

 

CNN이 고차원 Feature vector로 매핑해야한다는 점을 생각하면, 층이 깊어질 수록 한번에 학습해야 할 Mapping이 너무 많아져 학습이 어려워질 것이다. 여기서 Gradient Vanishing(기울기 소실)이 발생한다고 함

기울기 소실 자세히 -> https://heytech.tistory.com/388

 

[딥러닝] 기울기 소실(Vanishing Gradient)의 의미와 해결방법

📚 목차 1. 기울기 소실의 의미 2. 기울기 소실의 원인 3. 기울기 소실의 해결방법 1. 기울기 소실의 의미 딥러닝 분야에서 Layer를 많이 쌓을수록 데이터 표현력이 증가하기 때문에 학습이 잘 될

heytech.tistory.com

 

<Residual Network> 

기존 network와 달리, y = f(x) + x 라고 설명할 수 있다.

여기서는 x가 input 그대로 보존되고, f(x)에 대해서만 학습을 진행하면 된다.

이는 곧 output에서 이전 레이어에서 학습한 정보를 연결함으로써 현재 층에서는 추가적으로 학습해야 할 정보만을 Mapping(학습)하면 된다는 것을 의미한다.

 

그리고 학습이 계속 진행되면서, 층의 깊이가 깊어질수록 (학습이 많이 될 수록) x는 출력값 y에 근접하게 되어 f(x)는 최종적으로 0에 수렴하게 될 것이다.

수식을 보면서 이해하자면, y = f(x) + x 에서 추가 학습량에 해당하는 F(x) = H(x) - x가 최소값(0)이 되도록 학습이 진행된다.

 

Architecture

 Renset은 기본적으로 VCG-19의 구조를 뼈대로 하고 있다고 한다.

VCG-19층에 ConV층들을 추가해서 깊게 만든 이후에, shortcut(Residual Block)을 추가하는 것이 전부라고 한다.

 

아래 그림은 34층의 ResNet과 거기에서 shortcut들을 제외한 버전인 plain 네트워크의 구조이다.

그림 -> 34층의 Resnet은 처음을 제외하고 균일하게 3x3 사이즈의 ConV 필터를 사용함을 알 수 있다.

그리고 특성맵의 사이즈가 반으로 줄어들 때, 특성맵의 Depth를 2배로 높였다.

 

아래 그림은 18층&34층의 기존 network와 Resnet을 비교한 것이다.

y축(오차)를 동일하게 보았을 때, Resnet의 오차율이 더 적은것을 볼 수 있다.

 

왼쪽 그래프를 보면 plain 네트워크는 망이 깊어지면서 오히려 에러가 커졌음을 알 수 있다. 34층의 plain 네트워크가 18층의 plain 네트워크보다 성능이 나쁘다. 반면, 오른쪽 그래프의 ResNet은 망이 깊어지면서 에러도 역시 작아졌다! shortcut을 연결해서 잔차(residual)를 최소가 되게 학습한 효과가 있다는 것이다.
아래 표는 18층, 34층, 50층, 101층, 152층의 ResNet이 어떻게 구성되어 있는가를 잘 나타내준다.

18-Layer의 경우는 conv2_x에서 2X2, conv3_x에서 2X2, conv4_x에서 2X2, conv5_x에서 2X2, 입력1, 출력1해서 이 된다.

다음 표는 ResNet에서 Layer가 깊을 수록 더 좋은 성능을 보여준다는 것을 나타낸다.

CIFAR-10, CIFAR-100은 머신러닝 용 이미지 분류 데이터셋을 말하며 CIFAR-10 dataset이 10개의 클래스로 분류가 되고 CIFAR-100 dataset이 100개의 클래스로 분류가 된다.
위의 표를 보면 CIFAR-10, CIFAR-100둘다 ResNet의 layer가 깊을 수록 error율(%)이 더 작은 것을 볼 수 있다. 

 

심화

Resnet은 2개 이상의 Conv Layer와 skip-connection을 활용해서 Residual Block을 만들어서 네트워크를 구성한다.

 

앞서 말했듯, Neural Network 층을 깊게 쌓으면 기울기 소실이 발생하기 때문에 마냥 좋은 것이 아니다.

그렇다면 Residual Block이 기울기 소실을 어떻게 피할까? 

 

먼저 용어부터 정리하고 가자.

 : 현재 layer의 index
 : 전체 layer의 갯수
 : 가중치 행렬
 : Residual Function
 : Activation Function(ReLU)
 : Identity Mapping을 위한 Dimension 세팅용 함수

활성함수 을 identity mapping이라고 가정하면,


(참고로 identify mapping은 입력으로 들어간 가 어떠한 함수를 통과해도 다시 가 나오는 것으로 항등함수 가 대표적인 identity mapping에 해당한다.)
(도 identity mapping으로 가정했으므로 가 그대로 사용된다.)
이 식으로부터 일반화식을 표현하면 다음과 같이 나타낼 수 있다.

Loss function의 gradient의 계산식은 backward propagation chain rule로 부터 아래 식으로 나타낼 수 있다.

오차 역전파 & chain rule : https://amber-chaeeunk.tistory.com/18

 

딥러닝) 오차 역전파 backpropagation , 연쇄법칙 chain rule , 기울기 효율적으로 구하기

신경망 모델을 최적화 하기 위해서는 손실 함수의 값을 최소화하는 가중치 매개변수를 찾아야 한다. 복잡한 손실 함수에서 더 좋은 가중치를 찾기 위해 경사하강법(Gradient Descent)을 이용하여 가

amber-chaeeunk.tistory.com

 

위 식에서 우리는 가 두 개 값의 합으로 분해할 수 있다는것을 알 수 있다.


먼저,(1) 앞 부분의 은 weight layer와 무관하게 다이렉트로 전파되는 정보이다. 따라서 정보는 어떤 layer든 같은 정보가 전파된다.
(2) 뒷 부분의  은 weight layer를 거쳐 전파되는 정보이다.
backward propagation을 할 때  이 0이 되기 위해서는 weight layer를 거쳐 역전파되는 값이 -1이 되어야 한다.
실제 학습을 할 때 전체 데이터를 한번에 학습하는것이 아닌 데이터의 일부분씩 학습하는 mini-batch방식이 사용되는데, 모든 mini-batch에서 역전파값이 -1이 되는것은 불가능에 가깝다. 때문에  은 항상 0이 아닌 어떠한 값을 갖게 되고, 역전파된 값이 0에 가깝게 되는 vanishing gradient가 발생하지 않게 된다.

 

Resnet논문에 BottleNeck / 배치 정규화 적용 여부에 따른 성능 비교 부분은 패스~~

'부록' 카테고리의 다른 글

기울기 소실  (0) 2024.04.23
오차 역전파 & chain rule  (0) 2024.04.23
Style GAN & Style GAN2  (1) 2024.04.07
LSTM  (0) 2023.08.02
[Modeling] XGB Classifier + 그리드서치 / 베이지안 옵티마이저  (0) 2023.03.18

+ Recent posts