https://arxiv.org/abs/1603.05027
1. Introduction
-
기존 Resnet은 다음과 같이 표현 할 수 있다.
-
yl = h(xl) + F(xl,Wl)
xl+1 = f(yl)
-
xl : l-th input
xl+1 : l-th output
F : Residual function
f : Activation funtion ( Relu )
h : Identity mapping ( Short-cut )
-
ResNets은 100-layer가 넘는 모델에서 좋은 성능을 보여주었다.
-
ResNet의 핵심 아이디어는 추가적인 identity mapping h을 추가하여 F residual을 학습시킨다는 것이다.
-
이 논문에서는 Residual unit뿐 아니라 network를 전반적으로 보았을때, information을 전달하는 Direct
( Short-cut )에 초점을 맞춰 deep residual network를 분석한다.
-
skip-connection의 역할을 이해하기 위해 Identity mapping h에 다양한 변화를 주었다.
그 결과 h(xl) = xl 라고 Clean
하게 유지하는 것이 중간에 다른 과정을 다양하게 추가한 여러 모델보다 training loss가 가장 적고 error감소가 가장 빨랐다.
( 유지(keeping)라고 한것은 이전 논문에서도 h(xl) = xl 라고 했기 때문 )
- 다음 그림은 위의 결과로 기존 모델을 수정한 모델이다.
- (a)는 이전 논문의 모델이며 indentity h(xl) 와 Residual F(xl,Wl)을 더하여 Relu f를 통과한다.
아래그림 참고
- (b)는 이번 논문에서 제시한 수정된 모델로 indentity h(xl)의
Clean
하게 유지하기위해
Pre-Activation
즉, activation function을 Convolution에만 주게끔 위치를 Convolution 직전으로 바꾼다.
이렇게 하여 새로운 Residual unit을 디자인하고 1001-layer을 쌓아서 기존 ResNet보다 더 좋은 결과를 얻었고 이는 현재 Deep Learning의 Key가 되는 깊은 신경망이 더 좋다는(?) 것을 시사한다.
2. Analysis of Deep Residual Networks
-
이번 논문의 수정된 모델은
기존 ResNet
yl = h(xl) + F(xl,Wl)
xl+1 = f(yl)
에서 f : activation은 F(xl,Wl)으로 pre-activation으로 들어간다.
즉, 위의 formular에서 Activation funtion f와 Identity mapping h 가 사라지므로 같은 dimension일때 만을 식으로 나타내면
xL = xl + i=l∑L−1F(xi,Wi) 으로 간단하게 표현할 수 있다.
이렇게 하면 크게 이점이 있다.
-
Deeper unit L의 feature xL은 shallower unit l의 feature xl에 Residual function
i=l∑L−1F(xi,Wi)을 합한 것으로 표현 할 수 있다.
이는 unit L과 unit l 사이에서 model이 Residual Fashion
으로 존재함을 나타낸다.
-
Deep unit L의 feature에 대해 항상 xL = x0 + i=0∑L−1F(xi,Wi) 로 나타낼수 있다.
Plain network에서는 xL = i=0∏L−1Wi x0으로 거듭곰셉의 형태로 나타난다.
-
xL = xl + i=l∑L−1F(xi,Wi)는 역전파에 좋다.
Ɛ을 loss fuction이라고 해보자
-
∂xl∂Ɛ 은 두개의 덧셈으로 표현할 수 있다.
- ∂xL∂Ɛ는 shallower unit l에 deeper unit L의 기울기가 direct하게 다른 layer를 거치치 않고 전달된다.
- ∂xL∂Ɛ (1+∂xl∂i=l∑L−1F(xi,Wi))에서 (1+∂xl∂i=l∑L−1F(xi,Wi))이 모든 mini batch의 모든 sample마다 항상 0이 될 가능성이 극히 드물므로 gradient vanishing이 발생할 가능성이 없다.
3. On the Importance of Identity Skip Connections
- 위에서 skip connection을 clean하게 유지 하였을때, 즉 completely Identity로 하였을 때의 장점을 보여주었다.
여기에서는 Identity shortcut을 break했을때의 단점을 보여준다.
h(xl) = xl 라고 하여
xl+1 = λlxl + F(xl,Wl)
이때 위와같은 점화식으로 나타내면 다음과 같다.
xL = (i=l∏L−1λi)xl + i=l∑L−1F^(xi,Wi)
F^는 F앞에 붙어야 할 λ를 생략한 notation
( f는 여전히 identity라고 하고 이렇게만 변화했을때도 문제가 생김을 보여준다. )
마찬가지로 역전파를 위한 기울기를 구해보면
이다.
여기서 앞의식( 완전한 identity에서의 기울기 )과는 다르게 (i=l∏L−1λi)xl 부분이 있는데
만약 ∀i, λi<1 or λi>1 이면 shortcut의 역전파를 방해한다. 이는 constant scaling일 경우이고 convoultion같은 더 복잡한 경우에도 더욱 그렇하다.
3.1 Experiments on Skip Connections
- 위 사실을 증명하기 위해 다음과 같이 network를 설계한다.
- 여기서는 activation은 유지한채로 identity mapping을 clean하지 않게끔 변경.
다음은 결과이다.
4. On the Usage of Activation Functions
- 위에서는 short cut에서 Activation은 유지하고 여러가지 variation을 주었고 그 결과 Clean하게 두는 것이 가장 좋은 방법이라는 것을 알았다. 그래서 To keep short -cut completly, modify f to Identity by re-arranging the activation functions
4.1 Experiments on Activation
다음은 Keras의 Resnet이다.
model plot을 그려보면 본 논문의 Resnet이 아닌 이전의 ResNet임을 알 수 이다.
convolution-BN-Relu의 순서이고 idntity를 더하여 Relu을 통과한다.
import tensorflow as tf
from tensorflow.keras.utils import plot_model
model=tf.keras.applications.ResNet50(
include_top=True,
weights="imagenet",
input_tensor=None,
input_shape=None,
pooling=None,
classes=1000)
plot_model(model)
plot_model(model)