Identity Mappings in Deep Residual Networks

classification
convolutional
imagenet
microsoft

#1

Resnet(OpenResearch Review, Paper) 에 대한 후속 논문입니다. Residual Block에 대한 더 자세한 Evaluation이 있습니다.

image

Resnet에서 제안한 것이 위와 같은 Residual block입니다. 위와 같은 네트워크를 수식으로 표현하면

y_l = h(x_l) + F(x_l, W_l)

이고, 말로 풀자면, 네트워크의 Output인 y_l 은 기존 대부분의 뉴럴 네트워크에서의 Weight와의 연산인 F(x_l, W_l) 에 추가로 h(x_l) 를 더한 모습입니다. 예를 들어, F(x_l, W_l) 가 Convolutional Layer를 표현한다면 h(x_l) 은 weight 없는 다른 형태의 Skip Connection을 표현하는 셈입니다.

그리고 원래 논문에서 제안한 Resnet 에서는 h(x_l) = x_l , 즉 Identity Mapping, Input을 Output으로 그대로 전달하는 형태로 모델링했었습니다.

이 논문에서는 왜 h(x_l) 함수가 Identity 함수여야하는지, 다른 방식으로 표현했을 때에는 어떤 차이가 있는지를 이론적으로, 실험적으로 설명합니다. 그리고 실험을 토대로 더 나은 방식을 제안하기도 합니다.


Analytical Review

Residual Block

Original Residual Unit을 다시 한번 표현해보면 아래와 같습니다.

y_l = h(x_l) + F(x_l, W_l)
x_{l+1} = f(y_l)

여기에서 F 는 Convolution 과 같은 Weight Matrix와의 연산을 표현하고, F 는 Activation Function을 표현합니다. 즉 x_l 을 인풋으로 받아 output y_l 을 계산하고, activation을 거쳐 다음 레이어의 input이 되는 x_{l+1} 까지의 과정을 표현한 것입니다.

h(x_l) 이 Identity Mapping, 즉 h(x_l) = x_l 인 경우

먼저, Identity Mapping에 대해 다시 살펴봅니다.

계산을 쉽게 하기 위해 하나의 가정을 하는데, activation function의 효과를 무시하는, 즉 x_{l+1} = y_l 이라고 하고 보면,

x_{l+1} = x_l + F(x_l, W_l)

이고 이를 Recursive하게 여러 layer에 대해 표현하면

x_L = x_l + \sum_{i=l}^{L-1}F(x_i, W_i)

와 같이 쓸 수 있습니다. 그리고 이를 미분해서 Back propagation의 특성을 살펴볼 수 있는데,

의 형태로, 이는 2개의 Term의 합으로 이루어져 있다는 걸 볼 수 있습니다. 2번째 텀인

\frac{\partial \epsilon}{\partial x_L}(\frac{\partial}{\partial x_l}\sum_{i=l}^{L-1}F(x_i, W_i))

는 기존의 Weight Layer들을 통과하면서 계산되는 Gradient 입니다. 그리고 1번째 텀은

\frac{\partial \epsilon}{\partial x_L}

은 Resnet에만 추가적으로 생긴 Term이고 이는 아무리 깊은 레이어라고 하더라도 더 낮은 레이어로 ‘Directly Propagate’ 되도록 보장하는 Additive Term 입니다.* 왜냐하면, 상위 레이어의 어떤 Gradient라고 하더라도 그 값이 변하지 않고 그대로 전파되기 때문에 언제나 Gradient를 받을 수 있도록 보장해주게 되는거죠. 즉 이러한 특성이 Gradient가 Vanish되지 않는 속성을 만들어낸다고 논문에서는 주장합니다.

h(x_l) = \lambda_l x_l 인 경우

즉, Identity Mapping이 아닌 경우를 h(x_l) = \lambda_l x_l 와 같은 General Form으로 표현하면, 여러 레이어에 걸친 Forward 연산은

x_L = (\prod_{i=l}^{L-1} \lambda_i) x_l + \sum_{i=l}^{L-1} F(x_i, W_i)

와 같이 표현되고 이를 미분하면,

\frac{\partial \epsilon}{\partial x_l} = \frac{\partial \epsilon}{\partial X_l} ( (\prod_{i=l}^{L-1} \lambda_i) x_l + \sum_{i=l}^{L-1} F(x_i, W_i) )

와 같이 표현되게 됩니다.

  • 만약 \lambda_i < 1 인 경우라면 Gradient가 Exponentially 작아지며 Vanish될 것이고
  • 만약 \lambda_i > 1 인 경우라면 Gradient가 Exponentially 커지면서 Exploded 할 것

이라는게 논문의 주장입니다. 그리고 이렇게 된다면 Resnet에서 제안한 Shortcut으로 Backprop 되기보다는 Weight layer들에 의해 학습이 될 것이라는게 주장이고요.

Experiments

다양한 Shortcut Connections

위와 같은 다양한 커넥션을 테스트해보면 역시 방금 전 표현했던 수식처럼, 학습 성능이 나오지 않으며 이는 아래의 표에서 확인할 수 있습니다.

한줄로 요약하면, “오리지날 빼고 다 성능 별로다.” 1x1 conv나 gating 방식은 더 강한 표현력을 갖는, 더 Representative한 모델링임에도 불구하고 성능이 나오지 않는다는 것을 강조합니다.

Activation Function에 대한 분석

위의 실험 전에 분석하실 때, Activation Function이 Identity Function이라는 가정 하에 진행되었지만, 실제 실험은 Activation Function이 ReLU 이므로, 이에 대한 분석도 추가적으로 수행합니다.

Analytic한 분석보다는 다양한 몇가지 변종을 직접 실험하는데,

이렇게 Batch Normalization - BN 이나 ReLU Activation의 위치 등을 바꾸어가며 변종들을 실험했습니다. 그리고, 아래와 같은 결과를 얻는데,

이는 Resnet Paper에서 애초에 제안했던 Residual Unit보다 더 나은 방식이 있음을 보여줍니다. 간단히 설명하면 (a) original 에 비해서 (e) full pre-activation 이 더 나은 성능을 보여주는데, 크게 달라진 점은 addtion 이후에 ReLU를 취하던 부분을 제거하여 activation에 의해 zero-out되는 element를 줄여두었다는 것입니다.

그리고 이를 통해

  • Ease of optimization
  • Reducing overfitting

의 2가지 이점이 있다고 분석합니다.

결론

결론적으로 이 논문에서는, Resnet Paper에서 제안한 것에 대해 좀 더 분석하고 다양한 실험을 통해 어떤 영향을 미치는지를 분석했다는 점에서 읽어볼 가치가 있습니다. Resnet에 대한 이해를 높일 수 있고, 특히 실험적으로 찾게된 'pre-activation’의 효과 역시도 practically 매우 유용할 것 같습니다.

ps. 헥헥 수식 쓰느라…


FusionNet - A deep fully residual convolutional neural network for image segmentation in connectomics