Resnet

joelchoi·2022년 9월 28일

DeepLearning

목록 보기
1/1

ResNet Paper : https://arxiv.org/abs/1512.03385

Background

네트워크 깊이가 깊을 수록 학습은 무조건 좋을까??
하지만 아래의 그림과 같이, 네트워크가 깊어질수록 오히려 학습에 악영향을 끼치는 것을 볼 수 있다.

이러한 원인으로는
1. Gradient Vanishing/ Exploding.

  • 이러한 문제는 가중치 초기화, BatchNormalization과 같은 기법으로 해결하였다.
  1. Degradation.
  • Overfitting과는 다르게, 깊이가 깊어질수록 최적화가 잘 되지 않는 현상이다.

이를 해결하기 위해 제안된 방법이 ResNet 이다.

Deep Residaul Learning


좌측은 평범한 CNN 구조이다. input x가 2개의 weight layer를 거쳐 output H(x)가 나오고 H(x)는 다음 Layer의 Input으로 적용되는 구조이다.

우측은 논문에서 말하는 Residual block이다.
H(x) = F(x) + x라고 할 때, H(x) - x, 즉 F(x)만을 학습시켜 최적화가 더 잘 되게끔 하는 것을 제안한다.
여기서 H(x)보다 잔차인 F(x)를 최적화 시키는 것이 쉽다고 가정을 한다.

Point

  • H(x) = x
  • Output F(x) = 0

쉽게 말하자면, H(x) = F(x) + x가 나온다. F(x) = 0으로 하면 결국 H(x) = x를 학습하는 모양이 나온다.

이를 통해서 H(x) = F(x) + x 를 미분하면, H'(x) = F'(x) + 1 이 되어, Vainshing Gradient를 해결할 수 있게 된다.

이를 Identity Shortcut Connection으로 부른다.

ResNet Structure

  • 실선은 Identity Shortcut Connection , 이는 Input과 Output dimension이 동일한 경우이다.

  • 점선은 Projection Shortcut Connection
    이는 Output의 dimension이 Input보다 증가한 경우이다.

  • Resnet-18, Resnet-34는 BasicBlock을 사용한다.

  • 그 외의, Resnet은 Bottleneck Block을 사용한다.

  • 첫 번째, 1x1 convolution은 차원을 줄이는 역할을 한다

  • 두 번째, 1x1 convolution은 차원을 늘리는 역할을 한다

profile
Good artists copy, Great artists steal

0개의 댓글