[Review] Unsupervised Learning of Video Representations using LSTMs
paper link: arxiv.org/pdf/1502.04681.pdf
github: github.com/mansimov/unsupervised-videos
github (PyTorch): github.com/JoungheeKim/autoencoder-lstm
최근 self-supervised learning을 이용한 비디오 데이터의 representation learning 쪽을 조사해 봐야겠다는 생각을 하고 있었는데, 마침 관련된 논문들을 리스트업 해 놓은 깃허브가 있어 맨 첫번째 논문부터 시작해 몇 개를 골라 리뷰를 할 생각이다.
이번에 정리할 논문은 ICML2015에 올라온 Unsupervised Learning of Video Representations using LSTMs 이다.
간단히 요약하자면, multi-layer LSTM을 이용한 self-supervised learning으로 비디오 시퀀스로부터 고정된 사이즈의 representation을 학습하는 모델을 제시했으며, 이렇게 학습된 representation의 유용성을 별개의 supervised learning task로 검증하고 있는 논문이다.
한번 디테일을 살펴보도록 하자.
Introduction
이 논문의 핵심 목표는, 비디오 시퀀스의 representation을 얻어내는 것이다. 어떤 데이터의 representation 이라는 것은, 어떤 데이터 도메인 위에 정의된 classifier나 predictor를 만들 때, 유용한 정보를 뽑아내기가 더 쉬운, 데이터의 또다른 표현이라 이해하면 쉽다.
흔한 예시를 들면, linear regression으로 데이터를 학습하기가 더 쉽도록, kernel trick을 사용해 데이터를 다른 공간으로 embedding하는 것이 친숙한 예일 것이다.
그리고 representation learning이라 하면, 데이터의 representation에 더욱 유용한(쓸모있는) 정보가 담기도록, 데이터와 representation 간의 map을 학습하는 태스크라 볼 수 있다. 이는 SIFT와 같은 manual feature engineering과 대치되는 개념이다.
그렇다면 이런 데이터의 representation은 어떻게 학습하는 것일까? 이미지 데이터 같은 경우, 이미지 내에 표현된 object의 class를 분류하는 태스크를 딥러닝 모델로 학습시킨 후, 비교적 general 한 image feature가 학습되어 있는 네트워크 앞 단을 이미지의 feature extractor로 이용하는 방식을 흔하게 사용한다 (VGG, Resnet과 같은 backbone 네트워크가 하나의 예시).
주어진 task를 잘 수행하기 위해선, 네트워크의 앞 부분이 이미지로부터 어느 정도 general하고 유용한 정보를 뽑아내고 있을 것이라는 철학으로부터 출발하는 방법론이다.
비디오 데이터는 이미지 데이터와 많은 특성을 공유하고 있지만, 비디오 프레임 한장한장 사이를 독립적으로 보는 것이 아니라 time 축으로의 correlation이 필수적으로 고려되어야 한다는 점이 다르다. 결국 sequence data의 특성과, image data의 특성을 동시해 고려해 주어야 한다는 뜻이다.
따라서 비디오 데이터의 representation을 학습하기 위해서는, 모델이 time 축 상에서 나타나는 information을 다룰 수 있어야 하며, representation 학습을 위한 learning task 또한 모델이 최대한 time 축으로 인접한 frame들 사이의 관계를 이용하도록 유도해야 한다.
이를 위해, 논문에서 제시된 모델은 어떤 방식을 취하고 있는 지 한번 알아보자.
Method
본 논문에서는 multi-layer LSTM 모델을 사용해 비디오의 representation을 학습해 내고 있다. 모델은 크게 Encoder LSTM과 Decoder LSTM으로 이루어진다.
- Encoder는 (time 축으로) arbitrary length를 가지는 비디오 시퀀스를 어떤 고정된 사이즈의 representation으로 매핑하는 역할을 한다.
- 그리고 decoder는 앞의 encoder에서 출력하는 representation을 이용해 인풋 비디오 sequence를 reconstruct 하거나, 인풋 비디오 이후에 이어지는 비디오 sequence를 predict 하는 역할을 한다.
LSTM
LSTM의 구조와 관련된 내용은 여기서 따로 다루지는 않을 생각이다. 연속된 데이터 각각을 동일한 방식으로 inference 하되, 내부의 cell state가 계속 업데이트 되면서 이전의 inference history에 dependant한 결과가 나온다.. 정도만 알고 있으면 될 듯 하다.
비디오 데이터를 다루는 데에 왜 굳이 LSTM을 이용하는가에 대해서는 논문에 간략한 설명이 있다. LSTM을 비디오 시퀀스 데이터에 적용하게 되면, 매 time step마다 비디오 frame에 동일한 operation이 적용되면서 information이 다음 스텝으로 전달되는데, 이런 방식이 physical world에서 어떤 state 든 동일한 dynamics를 통해 다음 state로 propagate 되는 방식과 유사하기 때문이라 설명한다.
모델을 이루는 element가 image sequence를 다룰 능력이 있다는 것은 확인했다. 그렇다면 어떤 태스크를 부여해 모델 element가 time 축으로의, temporal information을 이용하도록 만들 수 있을까? 논문에서는 여러 태스크를 제시했는데, 전체적인 모델 구조는 이 태스크에 따라 달라진다. 한번 같이 살펴보도록 하자.
LSTM Autoencoder
첫 모델은 LSTM을 이용한 오토인코더 모델이다. 일반적으로 오토인코더는 인풋 데이터를 복원하는 네트워크이되, 중간 intermediate layer output이 input의 dimension보다 현저히 낮은 dimension을 가지도록 설계하는 모델을 말한다. 이런 일종의 information 병목을 이용해, 데이터 복원을 위한 데이터의 가장 중요한 특성만이 intermediate layer output에 표현되도록 유도한다.
여기서도 비슷한 철학을 이용하고 있다. 인풋 시퀀스에 대해서 LSTM 셀(encoder LSTM)을 이용해 반복적으로 forward 한 후, 마지막으로 출력된, temporal information을 담은 hidden state를 남겨 둔다. 이것이 인풋 비디오의 representation이 된다. 그리고 이 hidden state가 다른 LSTM 셀(decoder LSTM)로 전달되면서 다시 인풋 시퀀스 길이만큼 반복적으로 forward를 하게 되는데, 여기서 나오는 output이 인풋 시퀀스를 역순으로 복원하도록 한다.
디코딩 단계에서는 LSTM 셀의 인풋을 빈 상태로 두거나, 혹은 이전 순서의 ground truth 프레임을 넣어주는데 이것은 선택 사항이다. 여기서는 실제 프레임을 추가로 넣어주는 것을 conditioned, 비워두는 것을 unconditioned 세팅으로 부르고 있다.
기존의 오토인코더에서와 같이, 중간 단계의 dimension이 인풋보다 훨씬 낮기 때문에, 인풋 데이터를 그대로 복원하는 identity function을 배우는 것이 아니라 중간 단에서 비디오 복원에 필요한 어떤 중요한 정보만을 추출해 넘겨 주는 것을 기대하는 설계이다.
또한 이 모델은 인풋 시퀀스의 길이에 상관없이 동일한 크기의 representation을 뽑아낼 수 있다 (LSTM 셀을 시퀀스 길이만큼 forward 해 주면 됨).
LSTM Future Predictor
두 번째 모델은 LSTM future predictor로, 이전 모델과의 차이점은 모델 아웃풋이 인풋 비디오 시퀀스의 복원 결과가 아닌, 인풋 시퀀스 바로 다음의 동일 길이 시퀀스라는 것이다. 5 frame으로 이루어진 비디오 시퀀스가 들어가면, 그 다음 5 frame을 예측한다고 이해하면 된다.
이전 모델과 유사하게, 이후의 시퀀스를 예측하기 위해서는 앞 단에서 time 축 relation을 포함한 예측에 필요한 중요한 정보를 추출할 것이고, 이것이 representation에 담길 것으로 기대하고 있다.
특히 이 모델에서 저자들은 unconditioned(디코딩 과정에서 인풋이 주어지지 않음) 세팅이 훨씬 history로부터 정보를 많이 이용할 것이라고 기대하고 있는데, conditioned 세팅에서 이전 프레임이 LSTM의 인풋으로 주어지게 되면 거기서부터 아주 조그만 difference만을 붙여서 다음 프레임을 예측할 수가 있고, 이것이 이전의 긴 history를 들여다 볼 필요성을 줄이기 때문이라고 주장한다. 실제로 time 축으로 인접한 프레임들은 apperance가 굉장히 유사하기 때문이다.
Composite Model
마지막 모델은 두 태스크와 그에 해당되는 모델을 합쳐 놓은 모델로, 인코더 단에서 얻어낸 representation을 이용해 reconstruction, prediction 두 가지 모두를 수행하는 버전이다. Reconstruction 태스크는 단순히 비디오의 프레임을 외우고, prediction 태스크는 인풋 데이터의 마지막 몇 프레임의 정보만을 이용할 가능성이 크기 때문에 두 태스크를 합하면 각각의 문제가 서로 상호 보완될 것이라는 철학이다.
이제 주요 실험 결과들을 보도록 하자.
Results
Qualitative results
먼저 MNIST 데이터를 이용해 생성한, moving MNIST 비디오 데이터셋을 toy example로 사용했다. 아래의 사진에 composite 모델을 사용한 간단한 정성적 결과가 표현되어 있다.
각 digit은 일정 사이즈 박스 내에서 자유롭게 직선 운동을 하며 서로 겹쳐지기도 하고, 벽에 부딪히면 튕겨 나오는 양상을 보이는데, 이런 bouncing이나 entanglement와 같은 비디오의 dynamics를 모델이 잘 학습한 것을 볼 수 있다. 각 라인의 첫 row에선 인풋 시퀀스가 digit이 겹쳐진 모습으로 끝나고 있는데, 그 후의 prediction 결과들을 보면(2,3,4번째 라인의 중반 이후 첫 row) 각 digit이 진행 방향을 유지하며 다시 잘 분리되고 있다.
사족으로, LSTM을 두 층으로 쌓은 버전이 prediction 결과가 좀 더 sharp 했다고 리포트 하고 있다.
특이한 점으로는, 인풋 길이만큼을 predict를 하는 것이 아니라 뒤로 계속 이어서 추가 인풋 없이 forward를 수행해 긴 시퀀스를 만들어낼 경우, 결과 비디오가 주기성을 가지고 반복된다는 사실을 관측했다. 이런 주기성은, random 인풋을 representation으로 제공할 경우엔 나타나지 않았다고 리포트 하고 있다. 아래는 그 예시들이다. 왼쪽은 실제 비디오로 첫 10 프레임만이 인풋으로 제공되었고, 오른쪽은 10 프레임 인풋으로부터 얻어낸 100 프레임 prediction 결과이다.
실제 real scene video를 이용한 결과도 보여주고 있다. 데이터셋으로는 UCF-101를 사용했다.
Moving MNIST에서와 달리 real scene 데이터에 대해서는 결과가 썩 좋은 편은 아니다.
Action Recognition on UCF-101/HMDB-51
학습을 통해 얻어낸 video representation의 유효성을 정량적으로 검증할 때는, 보통 다른 supervised learning task를 scratch로 학습하는 것과, representation을 학습에 이용하는 것의 performance를 비교한다. Representation이 학습 결과에 도움이 되었다면, 실제로 유용한 정보를 담고 있다는 뜻이 된다.
본 논문에서는 데이터 representation을 얻어내기 위해 LSTM을 사용하기 때문에, 이것을 그대로 적용할 수 있는 classification 모델을 supervised learning을 위한 모델로 선정했다 (Zaremba et al. 2014). 비교를 위한 베이스라인 모델은 위 모델을 random initialize해 학습시키며, representation을 이용하는 모델은, 미리 학습된 encoder LSTM 셀의 weight로 initialize 한다.
Representation 학습 데이터셋으로는 유튜브 영상을 모아 놓은 Sports-1M 데이터셋의 subset을 사용했으며, supervised learning 학습 데이터셋으로는 UCF-101과 HMDB-51 데이터셋을 이용했다. 학습 태스크는 비디오 클립에 표현된 action을 분류(classify)하는 태스크이다.
결과적으로는 실제로 미리 학습된 weight로 LSTM cell을 initialize해 학습한 결과가 더 좋음을 보여주고 있다.
또한 composite 모델로 pretrain한 결과가 전반적으로 좋았음을 리포트 하고 있다.
학습한 representation을 이용해 베이스라인 모델보다 성능 향상이 있었음을 보여 주었지만, 동일 데이터셋의 동일 태스크에 대한 당시의 SOTA(state of the art) 모델들보다 높은 성능을 보여주지는 못 했다. LSTM 셀을 이용해야 한다는 제약 조건 때문에 선택 가능한 fine-tune용 classifier model에 한계가 있었기 때문이 아닐까 생각된다.
사실 이 논문에서 제시된 모델은, 기존에 시퀀스 데이터를 다루던 Sequence to Sequence Learning with Neural Networks 에서 제시된 언어 translation 모델을 비디오 데이터에 맞게 변형한 버전이다. 하지만 적절한 intuition을 바탕으로 큰 틀에서의 모델 구조만을 유지한 채 완전히 새로운 문제인 unsupervised representation learning 에 적용해 보았으며, 실제로 유의미한 성능 향상을 이루어 냈다는 점이 높게 볼 점이 아닌가 생각한다.
아래는 참고가 될 만한 자료들이다.
References
베이스가 된 모델:
Sequence to Sequence Learning with Neural Networks
Representation Learning:
Video representation learning 관련 논문 리스트업 (Github)
Representation Learning 리뷰 페이퍼 (Yoshua Bengio et al.)
데이터셋:
HMDB-51: a large human motion database
UCF-101 - Action Recognition Data Set