multimodal learning2 - show, attend and tell, visual question answering -

1. visual and text cross modal translation

 

1-1) motivation

 

대표적으로 image captioning

 

image(CNN)에서 text sequence(RNN)로 변환하는 문제

 

이미지가 주어지면 이미지를 가장 잘 설명하는 text description을 생성하는 문제

 

image captioning 예시

 

1-2) show and tell

 

image captioning의 시초격인 모델

 

ImageNet에서 pre-train한 CNN을 이용하여 image를 encoding함

 

image encoding vector를 LSTM의 초기 vector로 사용

 

start token을 넣어 word를 생성

 

token을 넣기 전에 fully connected layer에 넣은 다음에 LSTM module에 넣는다

 

예측한 단어는 다음 LSTM의 input으로 넣는다

 

end token이 나올 때까지 반복적으로 word를 생성함

 

show and tell의 기본 구조

 

2. show, attend and tell

 

2-1) motivation

 

show and tell은 image를 주면 얻은 하나의 fix된 feature vector로 전체 sentence를 prediction하는 방식

 

그러나 예를 들어 다음과 같은 이미지로부터 문장을 생성한다고 생각해보자.

 

 

 

‘수지가 꽃을 들고 있다’라는 문장을 생성하고자 할 때 ‘수지’라는 단어를 말하고자 한다면

 

이미지에서 수지 얼굴에 더 주목을 해야할 것이고

 

‘꽃’이라는 단어를 말하고자 한다면 이미지에서 손에 든 꽃에 더 주목을 해야할 것이다.

 

모델이 image로부터 단 한번 feature vector를 뽑아 문장을 생성하는 것보다

 

그 때 그 때 생성하고자하는 단어별로 중요한 부분을 높게 반영하는 vector를 뽑는 것이 성능향상에 좋을 것

 

실제로 사람은 이미지를 볼 때 특징적인 부분을 집중적으로 본다

 

2-2) soft embedding attention

 

input image를 CNN에 넣어 D차원의 L개의 feature vector를 뽑는다

 

feature vector를 LSTM의 이전 hidden vector와 함께 어디에 attention을 해야하는지

 

attention model을 통해 spatial attention 형태로 attention weight를 구함

 

이 attention weight와 CNN에서 나온 L*D feature map과의 weighted sum을 하여 feature들의 weighted combination을 구함

 

 

 

attention weighted feature와 start token을 함께 다음 LSTM의 input으로 넣어주면 단어 하나를 생성하면서

 

마찬가지로 다음에 어떤 곳에 attention해야하는지 이전 hidden vector<현재 2step이니까 1step의 hidden vector>와

 

feature vector를 통해 spatial attention형태의 attention weight를 출력해줌

 

마찬가지로 attention weight와 L*D feature map과의 weighted sum을 구하고, 생성한 첫 단어와 함께 다음 LSTM의 input으로 넣어줌

 

end token이 나올 때까지 위 과정을 반복함

 

 

근데 봤는데 LSTM이 attention을 구해준다기보다는 LSTM에 들어가는 도중에 attention model이 따로 있어서 거기서 attention을 구하는건데

 

논문이나 각종 블로그 봤는데 hard model과 soft model이 있는데 너무 어렵다…

 

어쩄든 사람이 단어로 묘사할때 이미지에서 주목하는 부분이 있다는 아이디어+ 모델이 attention weight vector를 만들어가면서 단어를 생성한다는 것?

 

3. text to image generative model

 

3-1) motivation

 

image captioning이 image를 받아 text를 생성했는데 반대로 text를 받아 image를 생성하는 model은?

 

주어진 text로 만들어낼 수 있는 이미지는 사실 무수히 많다. 그래서 GAN같은 생성모델을 활용해야한다.

 

왜냐하면 생성모델이 probability model이라 가능한 많은 경우에서 일부를 random sampling을 할 수 있어서 그렇다.

 

 

3-2) 구조

 

text를 받아 fixed dimensional vector로 만들고 normal 분포에서 생성한 random latent vector와 함께 concatenation한다

 

앞에서부터 궁금했는데 GAN에서 random latent vector를 넣어주는 이유는

 

동일한 text를 넣더라도 생성한 output이 다르게 나올수 있게 만드는 one to many를 구현하기 위한 요소라고 보면 된다.

 

이렇게 만든 concatenation vector로 이미지를 생성하여 discriminator network에 넣는다

 

주어진 text condition하에 적절한 이미지를 생성하는 generator network

 

 

random latent vector는 동일한 input을 넣더라도 서로 다른 output이 생성될 수 있게 만드는 요소이다.

 

이제 generator network에서 생성한 이미지를 받아 CNN 등을 통해 feature vector를 만들고

 

generator에서 사용한 text condition을 받아와 text condition하에 생성한 이미지가 real인지 fake인지를 판별

 

generator에서 생성한 이미지를 text condition을 바탕으로 진짜인지 가짜인지 판별

 

 

4. visual and text cross modal reasoning

 

다른 modality를 참조하여 결론을 도출하는 referencing model

 

4-1) visual question answering

 

이미지(image)와 이미지에 대한 질문(text)을 받아 답을 도출하는 문제

 

visual question answering의 기본 구조

 

image modal(CNN계열)을 통해 image를 feature vector로 만들고

 

중간의 fully connected layer를 통해 text stream과 동일한 차원을 가지도록 fixed dimensional vector로 만들어줌

 

text modal(RNN계열)을 통해 text sequence를 RNN으로 encoding한 vector를 fully connected layer에 넣어

 

image stream과 동일한 차원을 가지도록 fixed dimensional vector로 만들어줌

 

두 stream에서 나온 vector들의 interaction을 위한 element wise multiplication을 한다.

 

joint embedding과 비슷한 개념

 

마지막으로 fully connected layer에 넣어 softmax를 취한 뒤 정답을 도출하는 형태로 학습을 진행

 

모두 미분가능한 network로 구성되어 end-to-end training이 가능

 

TAGS.

Comments