티스토리 뷰

MLDL

Highway_Network

Lazyer 2018. 3. 24. 01:28
highway_network

Highway Networks _ Lazyer

[arXiv:1505.00387v2] - Rupesh Kumar Srivastava - 03.11.15


Abstract

학습 모델의 깊이가 증가함에 따라 성능이 증가한다는 사실은 일반화되었다. 하지만 깊이가 증가할수록 최적화가 어려워지며 훈련에 어려움이 따른다.Highway Network는 모델을 깊게 만들면서도 정보의 흐름을 통제하고 학습 가능성을 극대화할 수 있도록 해준다.


1. Introduction

생략

notice
bold : Vectors, Matrices
capital letters : transform function
0, 1 : Vectors of zeros and ones
I : Identify matrix
σ(x) : sigmoid of x


2. Highway Networks

plain feedforward는 l의 레이어가 L개로 구성된 레이어를 가지며 non_linear한 H 변환함수를 가지고
input x에 대하여 input y의 값을 가진다. 명확하기 표시하기 위해 bias를 생략하면 다음과 같이 표현할 수 있다.



highway networks 에서는 non_linear한 변환 T와 C를 추가로 가진다.




output이 input에 대하여 얼마나 변환되고 옮겨졌냐를 표현해주기 때문에 T를 transform gate, C를 carry gate라고 부른다.
x, y, H, T는 (2)의 식에 따라 모두 같은 차원임을 알 수 있다.

간단히 표현하기 위해 C = 1-T라고 정의했을 때, 다음과 같이 정리할 수 있다.


위의 식에 따라 output y는 다음과 같다.


또한 식에 대한 Jacobian행렬은 다음과 같다.


highway network의 output y 는 transform gate의 출력에 따라 plain layer의 동작과 input을 단순히 통과시키는 층의 동작간에 유연성을 가진다.

plain_layer에서 i번째 유닛이 i번째의 y=H(x)를 계산하듯, highway network의 i번째 유닛은 H(x)와 T(x)를 계산하도록 구성된다.
highway network의 layer은 Equation(3)의 output을 다음 레이어로 전달한다.


2.1 Construction Highway networks

representation의 크기 변화가 필요할 때, input x에 zero padding, sub-sampling을 거친 ^x를 입력으로 사용할 수 있으며, highway network가 아닌 일반 plain network를 통과시키고 그 output을 highway network의 output에 stack할 수 있다.


2.2 Training Deep High Network

일반적으로 plain network에서 forward, backword를 진행할 때 가중치들에 대하여 local minimum을 방지하는 특정한 초기화 작업을 시행하지 않는 한, SGD가 사용된다. 이 때의 정확도는 H의 초기화에 의존한다.

Highway Network의 trangsform gate T는 다음과 같이 정의된다.


W는 weight, b는 bias를 의미한다. 여기서 중요한 것은 bias b가 음수로 초기화될 수 있으며 이는 'carry'의 행위를 위함이며, 학습 초기에 장기적인 시간 종속성을 연결하는데에 도움이 된다고 한다..
(negative bias의 역할은 Felix A. Gers의 논문에서 확인할 수 있으며, LSTM 블록에서 memory를 다루기 위한 'forget'의 구현에 사용되었다. )

*보충

LSTM 등 RNN에서 주로 사용되는 CELL과 같은 동작을 하며 Memory(T), Carry(C)를 이용하여 unit을 block 형식으로 만들었다.


3. Experiments

3.1 Optimization

실험을 위해 mnist, cifar data를 활용했으며 일반 plain network 와 비교한다.
transform gate, carry gate의 추가로 parameter개수가 늘어난다. 따라서 실험 조건을 보면 parameter 수를 맞추기 위하여 plain network와 highway network의 깊이는 같지만 highway network가 더 얇은 것을 알 수 있다.

동일한 깊이와 parameter 수가 주어졌을 때 충분히 비슷하거나 우수한 성능을 보였음을 설명한다.



3.2 Comparison to fitnets

최적화에 이점을 가지고 있지만 supervisor learning의 일반화 성능은 어떤지 확인한다.
(Deep highway networks are easy to optimize, but are they also beneficial for supervised learning where we are interested in generalization performance on a test set?)
Romero의 Fitnets(about 'deep thin network')와 비교하며 결과는 아래와 같다.



비슷한 깊이 조건, 비슷한 parameter 수에 있어서 비슷하거나 더 뛰어난 성능을 보였음을 알 수 있다.


4. Analysis



MNIST 네트워크보다 CIFAR-100 의 네트워크를 보는 것이 더 편하다.
두 네트워크의 transform gate의 bias는 각각 -2와 -4로 초기화되었지만 train 후, 1열과 같이 분산이 줄어드는 것이 흥미롭다. CIFAR-100 네트워크에서 bias는 깊이가 증가함에 따라 증가합니다. 흥미롭게도두 번째 열에서 볼 수 있듯이 transform gate의 평균 활동과 반비례 관계가 된다.
따라서 낮은 깊이에서 강하게 나타나는 negative bias가 게이트를 차단하는 데 사용되지 않고 더 선택적으로 만드는 것을 알 수 있다.
하나의 sample(column 3)에 대한 transform gate 활동이 매우 드물다는 것을 볼 수 있는데, sample을 선택적으로 사용한다는 것을 뒷받침한다.

마지막 열을 보면 "information highway"의 개념을 명확히 알 수 있다. 대부분의 output은 sprite 패턴에서 나타나듯 여러 레이어에서 일정하게 유지됨을 알 수 있다. output 변화는 대부분 낮은 깊이에서만 발생하며 이후 유지된다.




보충설명


Transform gate의 output이 작을수록 output y는 input x에 가까워진다.

transgate bias는 초기 레이어에서 작고, 레이어가 깊어질수록 커진다.
transgate output은 초기 레이어에서 크고, 레이어가 깊어질수록 작아진다(반비례).
transgate output이 클수록 H(X,W)에, 작을수록 input(X)에 가까워 지기 때문에 초기 레이어에서는
H(X,W), 깊은 레이어에서는 input(X)에 가깝다. 따라서 정보의 변형은 초기 레이어에서 발생한다.

요약하면, highway network 실제로 많은 층을 통해 거의 변하지 않는 정보를 전달하기 위해 gate mechanism을 사용한다.
이 메커니즘은 보다 쉬운 학습을 도와주며, 학습 된 네트워크에서 정보를 라우팅하는데도 많이 사용된다.입력 패턴에 대하여 강하게 변하는 transgate 의 선택적 활동을 관찰할 수 있다.


5. Conclusion

도전적인 문제에 대하여 neural network의 적용을 확장하는것에 더 쉬운 교육방법을 제공할 수 있게 되었다. 하지만 여전히 deep neural network을 학습하는 것은 어려우며, 특히 netework의 크기를 늘이지 않고는 더 어렵다.
highway network는 간단한 SGD를 사용하여 깊은 네트워크를 교육 할 수있는 새로운 신경망 모델이다.
일반적인 신경망 모델은 네트워크 깊이가 증가함에 따라 훈련하기가 어려워진다. 하지만 실험에 따르면, highway network는 레이어의 깊이가 100개로 증가하더라도 최적하에 어려움이 없었다.

특정한 분야에 대해서만 적합할 수 있지만, highway network는 강력한 initializing을 할 수 없을 때에 좋은 대안이 될 것이다.

Reference_1505.00387.pdf


6. Python Code

def highwaynet(inputs, scope):
    highway_dim = int(inputs.get_shape()[-1])

    with tf.variable_scope(scope):
        H = tf.layers.dense(
            inputs,
            units=highway_dim,
            activation=tf.nn.relu,
            name='H')
        T = tf.layers.dense(
            inputs,
            units=highway_dim,
            activation=tf.nn.sigmoid,
            name='T',
            bias_initializer=tf.constant_initializer(-1.0))
return H * T + inputs * (1.0 - T)

Carpedm20-tacotron


18.3.24



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함