머신러닝/Vision

ResNet 이해하기

망나 2019. 6. 4. 17:01

아래 두 논문을 통해서 ResNet에 대해서 가볍게 이해해보자

 

 

CNN이 이미지 인식 분야에서 뛰어난 성능을 보여주고 있었고, 네트워크의 층(layer)을 더 쌓으며 아주 깊은 네트워크를 구현하여 성능 향상을 이루고 있었습니다. 하지만 실제로 어느정도 이상 깊어진 네트워크는 오히려 vanishing/exploding gradient 문제 때문에 성능이 더 떨어졌는데 이러한 현상을 degradation problem이라고 합니다. 문제가 발생하는 이유는 weight들의 분포가 균등하지 않고, 역전파가 재대로 이루어지지 않기 때문입니다.

 

ResNet은 이러한 neural network의 구조가 깊어질수록 정확도가 감소하는 문제를 해결하기 위해 제안 되었습니다.

 

From "Deep Residual Learning for Image Recognition"

 

문제 해결을 위해 제안한 방법이 바로 "residual learning"이 입니다. 기존의 네트워크를 \(H(x)\)라고 할 때(\(x\)는 layer의 input) \(F(x) = H(x) - x\)로 네트워크를 변형시켜 \(F(x) + x\)를 \(H(x)\)에 근사하도록 학습하는 것 입니다. 즉, 이렇게 되면 layer에 대해서 입력과 출력의 차이에 대해서 학습이 되어 degradation problem을 해결할 수 있다는 것 입니다. 이러한 개념을 적용한 모습이 아래 보이는 Shortcut connection입니다.

 

Shortcut connection

위의 shortcut connection을 적용한 네트워크의 학습할때 역전파과정에서 identity mapping(x)를 미분하면 적어도 1이상의 값이 나오기 때문에 네트워크가 깊더라도 이전보다 안정적으로 학습이 가능해집니다. 위 Figure 2의 구조(residual block)를 수식으로 정의하면 다음과 같습니다.

\(y = F(x, \{W_{i}\}) + x\)

\(F = W_{2}\sigma(W_{1}x)\)

 

여기서 \(\sigma\)는 ReLU를 나타내고 biases는 표기상 생략되었습니다. 만약 \(x\)와 \(F\)의 차원이 다를 경우 Linear projection \(W_{s}\)를 적용할 수 있고 다음과 같이 정의할 수 있습니다.

 

\(y = F(x, \{W_{i}\}) + W_{s}x\)

 

논문에서는 성능 검증을 위해서 다음과 같은 3가지 구조를 비교하는 실험을 진행하였습니다.

결과적으로 ResNet이 추가적인 파라미터 없이 기존 네트워크보다 좋은 성능을 보였습니다.

 

'머신러닝 > Vision' 카테고리의 다른 글

About GAN  (0) 2020.08.12
The Lottery Ticket Hypothesis  (4) 2019.06.24
Generative Adversarial Networks (GANs)  (0) 2019.02.27
Batch Normalization?  (0) 2018.10.23
Recurrent Neural Networks ?  (0) 2018.09.30