Alexnet, VGG→ skip connection, shortcut 사용 x = plain network

plain network가 깊어지면 gradient vanishing and gradient exploding ⇒ gradient descent과정에서의 미분에서 chain rule 에 의해 작은 기울기가 여러번 곱해지면 vanishing, 큰 기울기가 여러번 곱해지면 exploding ⇒ 이러한 현상때문에 깊이가 깊어질수록 성능 저하 현상 (degradation)

Untitled

이를 해결하기 위해 skip connection, shortcut connection 적용

Skip connection, Shortcut Connection

Untitled

plain network : H(x) = x가 되도록 학습이 목표

ResNet : skip connection으로 출력값에 x가 더해져 H(x) = F(x) + x가 되도록 학습 == F(x) 가 0이 되도록 학습 == H(x) = 0+x가 되도록 학습 ⇒ 최적화가 쉬워진다 왜? 미분했을 때 더해진 x가 1이 돼 기울기 소실 문제가 해결되기 때문

$F(x)$ 는 보통 2~3 레이어지만 자유롭게 설정 가능하다. 그러나 1개의 레이어로 이뤄져있을 경우 $W_1x + x$ 와 같이 선형이 되므로 얻을 수 있는 장점이 없다

Untitled

skip connection과 shortcut connection은 결국 더해주는 것(element-wise addition)이기 때문에 더해지는 값 x와 출력값의 차원($F(x)$) 의 차원(채널수) 가 같아야 합니다.

또한 이를 통해 activation function외에 또 하나의 nonlinearity를 적용하게 된다.

입력차원(x의 차원) < 출력차원의 경우 사용하는 2가지

두 옵션 모두 두개의 사이즈에서 shortcut이 진행될 때 stride 2로 실행된다.

  1. shortcut의 경우 증가한 차원에 대해 추가적인 zero padding 적용 ( Bottle neck 구조에서 사용)
  2. 차원 증가시에만 projection shortcut 사용 다른 경우의 shortcut은 identity : 추가 파라미터 ($W_s$)필요 (1x1conv연산으로 실행되기 때문) 1x1 conv → spatial 정보는 최대한 건드리지 않으면서 채널만 F(x)와 맞춰줌

Untitled

Untitled

Bottleneck Design