YongWook's Notes

<논문정리> Delving Deeper Into Convolutional Networks for learning Video Representation 본문

-software/AI

<논문정리> Delving Deeper Into Convolutional Networks for learning Video Representation

글로벌한량 2017. 5. 16. 19:30
-개인적 공부를 위해 작성하는 포스트입니다.


Delving Deeper Into Convolutional Networks for learning Video Representation
GRU를 이용하여 percept라는 '시각적 표현의 중간단계'로부터 비디오의 일시적 공간특징 (spatio-temporal features)을 학습한다.
high level percept -> highly discriminative video representation. / low spatial resolution
low level percept -> high spatial resolution

high spatial resolution을 가지고 있는 low level percept를 사용하면 motion pattern을 눈으로 확인하면서 모델링 할 수 있기 때문에 더 좋아보인다.
하지만 이것은 high-dimentionality video representation을 수반하므로 문제가 생긴다. (parameter가 너무 많아져서 복잡해진다.)

결국 parameter의 수를 줄이기 위해서 이 논문에서는 GRU를 이용하여 sparse connectivity를 강화하고, spatial input location끼리 parameter들을 공유하게 만들어보겠다는 것이다.


- GRU는 무엇인가? (1/3)

     Gated Recurrent Unit Network. RNN의 한 종류이다.

     - 그렇다면 RNN은 무엇인가?    - 참고 사이트 : Andrej Karpathy blog

Neural Network는 크게 두가지 모델로 분류된다. 첫번째가 CNN(Convolutional Neural Network)이며 두번째는 RNN(Recurrent Neural Network)이다.
CNN은 주로 정적인 2-dimensional image를 학습할 때 사용되며 RNN은 language와 같은 sequence data를 다룰 때 사용된다.

간단한 모델을 예로 들어 설명해보자.
다음은 Character-Level Language Model이다.

RNN의 가장 두드러진 특징은 hidden layer가 서로 연결되어 있다는 것이다. 이 때문에 두번째 입력에서는 첫번째 입력의 영향을 받게 된다. 세번째 입력에서는 두번째 입력의 영향을 받게 되는데, 두번째 입력은 이미 첫번째 입력을 받았으므로 첫번째 입력도 세번째 입력에 영향을 미치게 되는 효과를 가진다.

간단히 하자면, RNN은 단일 input data가 아니라 이전의 input들이 이미 만들어냈던 hidden layer의 가중치도 입력으로 받아들여서 ordered sequence data에 대응하게 만들어진 네트워크 모델이다.

이러한 기본적인 RNN 구조에서는 BPTT와 Vanishing Gradient 문제가 발생한다. 이 중, Vanishing Gradient문제를 해결하기 위해서 초기 W행렬을 적당한 값으로 잘 초기화시켜주는 방법과 regularization에 신경쓰는 방법, 또는 activation function으로 sigmoid를 사용하지 않고 ReLU 등을 사용하는 방법이 있다. 하지만 Vanishing Gradient 문제가 우려되는 긴 sequence를 다루는 문제에서는 기본 RNN 구조를 사용하기 보다는 LSTM(Long Short-Term Memory)GRU(Gated Recurrent Unit)을 사용하는 것이 더 보편적이다.

-LSTM(Long Short-Term Memory)GRU(Gated Recurrent Unit) 는 무엇인가? (2/3)

     그 전에, 같은 목적으로 만들어진 LSTM먼저 보자.

     -LSTM
LSTM은 vanishing gradient 문제가 발생하던 기존 RNN구조에서 특수한 게이트를 추가하여 해결책을 내놓은 네트워크 모델이다. 원래의 기본 RNN과 다른점은 hidden state를 계산하는 방식이다. 기존의 tanh를 이용하는 방식을 그대로 쓰지만 입력, 망각, 출력게이트로 이를 세분화하여 내부 메모리를 구성한다. 여기서 내부 메모리는 이전 스텝까지의 가중치가 들어있는 블랙박스로 취급된다.
최종출력을 보면 결국 내부메모리를 tanh로 처리하고 이와 출력 게이트를 곱한다. 연산자 o는 element-wise 곱이다.

          


          내부의 계산은 차치하고 결국 위의 그림과 같이 s(t-1)에 입력값 x(t)가 곱해져서 s(t)를 만드는 모양새가 된다.
          

위 그림은 LSTM 내부의 게이트구조를 보여준다. 내부메모리 c에 의해 계산이 이루어진다. LSTM의 Unit이 Black Box로 취급되는 이유는 이 내부메모리가 외부로 나가지 않기 때문이라 할 수 있다.

     -GRU (3/3)

      GRU는 LSTM과 약간의 차이는 있지만 근본적인 구조는 비슷하다.
이전 네트워크에서 만들어진 메모리와 현재의 입력을 적절히 섞는 과정을 GRU 또한 거치게 되는데, LSTM에서는 내부메모리라는 이름의 c를 사용하여 모듈 외부에서는 이를 참조할 수 없었던 것과 달리 GRU에서는 리셋게이트 r과 업데이트 게이트 z를 사용하여 내부메모리값을 hidden state값과 동일시 했다.

다음 그림은 GRU 내부 모듈의 게이트 구성이다.

 
결국 업데이트 게이트와 리셋게이트를 적절히 활용하여 sequence data에서 상대적으로 거리가 있는 정보에 대한 인식률을 높이게 된다.
LSTM과 GRU을 모듈화하여 단순히하면 다음과 같이 표현할 수 있다.

Unit은 두가지 입력값, 이전 상태값과 현재 input값을 이용해 현재 상태를 계산하게 된다.


드디어 GRU에 대해 알게되었다. 원래 알아보려헀던 논문으로 돌아가보자. Delving Deeper Into Convolutional Networks for learning Video Representation 이다.
본 논문에서 제시하는 모델은 GRU-RCN와 stacked GRU-RCN 두가지이다. 여기서 RCN은 Recurrent Convolutional netwrok를 말한다.
사실 앞서 공부한 GRU를 공부하고 나면 이 모델의 구조는 그렇게 어렵지 않다. 그저 GRU와 CNN를 용도에 맞게 결합하고 그를 조금 변형한 것이라고 볼 수 있다.

먼저 GRU-RCN 모델을 살펴보자. Convolutional map input으로 3D tensor(spatial dimension & input channels)를 넣으면 parameter 수가 너무나 증가한다. 이 글의 초반부에 언급했듯이이 논문의 최종 목표는 sparse connectivity를 강화하고, spatial input location끼리 parameter들을 공유하게 하여 사용되는 parameter의 수를 줄이고자 하는 것이다. 3D tensor를 전부 쓰는 대신에 Convolutional map의 spatial size와 channel수를 input으로 한다.
그리고 Convolutional map은 이미지의 서로 다른 spatial location에서 반복적으로 출현하는 strong pattern들로 이루어져 있으며 특히 video에서는 시간에 따라 제한된 spatial location에서 feature들이 발견되기 때문에 GRU구조에서는 fully-connected가 가지는 이점이 적다. 따라서 논문의 모델에서는 fully-connected를 convolution operation으로 대체한다. 이를 통해서 recurrent unit끼리 sparse connectivity를 얻고 서로 다른 location의 unit간에 parameter 공유가 이루어진다.

다음은 GRU-RCN모델의 구조이다.

hidden state h는 (i,j)좌표에서의 feature vector들로 이루어진 matrix다.

hidden representation h, activation gate z, reset gate r 모두 이전의 hidden-state와 input data x의 (i, j) 위치에서 local neigborhood size에 기반한다. 이 때문에 시간이 지남에 따라 (t의 간격이 증가함에 따라) receptive field(반응하는 영역)이 점차 넓어진다. 다시 말하자면, GRU에 의해 이전 시간과 연결되어 있는 unit들은 더 과거로 갈 수록 비디오 상에서 더 넓은 범위에 영향을 미친다는 것이다. 상식적으로 생각했을 때 시간이 오래 흐를 수록 해당 feature가 이동했을 확률이 높으니까 말이다. 이를 논문에서는 "capable of characterizing spatio-temporal patterns with high spatial varaition in time" 이라고 서술한다.

GRU로 시간축을 연결하고, CNN으로 2D 좌표공간을 연결한다는 발상은 상당히 참신하다. 그리고 시간이 지날 수록 feature의 작용거리가 멀어지는 것까지 구현하는 이 부분이 이 논문의 핵심이다.

두번째로 이들이 소개한 stacked GRU-RCN은 크게 위의 원래 GRU-RCN모델과 큰 차이점은 없다.
그저 activation gate z와 reset gate r에 현재 스텝에서 이전 상태에서의 output을 저장하는 하나의 element를 추가하는 것이 유일한 차이이다.

다음은 stacked GRU-RCN모델의 구조이다.

이 추가적인 connection을 더함으로서 모델의 flexibility를 끌어올릴 수 있었다고 한다.


Comments