[U-Level2]부스트캠프 AI Tech 3기(week9) - Day41

정재욱·2022년 3월 18일
0

Multi-modal Learning

Overview of multi-modal learning

Multi-modal Learning 이란 한 가지 type의 data가 아니라 여러가지 type의 data 를 함께 사용하는 방법이다.

Challenge(어려운 점)

Data 표현 상태가 제각각이다.


정보의 양과 feature space가 unbalance.
아래 예시를 보면 1개의 text가 있지만, 이에 대응되는 Image는 N개가 존재.


학습이 잘못되면 한가지 modal에만 편향돼서 성능이 더 떨어지는 경우가 있ek. ![](https://velog.velcdn.com/images%2Fwodnr0710%2Fpost%2F9f267861-65ae-4c51-bf76-ad9a292c92ff%2Fimage.png)

Despite the challenges, multi-modal learning is fruitful and important

  • Matching: 서로 다른 modality를 공통된 space로 보내서 match

  • Translating: 하나의 modality를 다른 modality로 translate

  • Referencing: 하나의 modality로 output을 내는데, 그때 다른 modality를 참조


Multi-modal tasks (1) - Visual data & Text

Text embedding

  • Characters are hard to use in machine learning -> word 레벨로 기본 unit을 설정

  • Word는 embedding vector로 표현

    • Multi-dimensional한 실수값을 갖게 해서 각 dimension에 대한 경향성을 나타냄

위 그림을 보면 word를 embedding하여 low dimension(2D)에 projection을 한 것을 볼 수 있다.

이때 연관이 있는 단어 cat & kitten은 가깝에 매칭이 된다.

놀라운 것은 단어끼리의 상관관계가 같으면 embedding vector에서도 같게 나타난다.
man 과 woman의 차이 벡터 만큼 king에 더해주면 queen을 가리키는 것을 확인할 수 있다. 이는 generalization(일반화) 가 가능하다는 것을 의미한다.


word2vec - Skip-gram model

  • WW : word embedding vector

  • xkx_k : Input. 그림을 보면 노드처럼 생긴게 하나의 word인데 이를 one-hot 벡터로 나타냄

  • $ h_i$ : word embedding vector가 추출된 hidden layer

  • Output layer : hih_iWW'을 곱해서 나온 결과로 xkx_k 전후에 어떤 단어가 나오는지 패턴을 학습


  • 주변의 N개의 word를 predict하게 학습해서 주변과의 관계를 학습

Joint embedding

Matching을 하기 위한 embedding vector를 학습하는 방법


아래 예시처럼 Tag를 Image로 만들거나, Image로부터 Tag를 생성



  • Text Data를 Word2vec을 이용하여 하나의 d-dimensional feature vector 형태로 표현.

  • Image Data 역시 d-dimensional feature vector 형태로 표현

  • Joint embedding : 두 vector가 연관성이 높으면 작은 distance를 가진다던지, 호환성이 있도록 학습.


  • Metric learning in visual-semantic space

    • Text, image를 같은 embedding space에 mapping

    • embedding간의 distance를 줄이는 방향으로 학습 (push)

    • 만약 matching되지 않는 경우엔 distance를 키움 (pull)

    • Distance를 기반으로 학습하기 때문에 metric learning 이다


위 그림을 보면, 풀밭에 있는 개 사진에서 dog embedding을 빼고 cat embedding을 더했더니 풀밭에 있는 고양이 사진이 나옴
--> Dog을 제외한 나머지 embedding vector는 유지됐기 때문!


Food image에서 recipe를 추출하거나, recipe에서 food image를 얻어낼 수도 있다


  • Recipe에는 ingredient, instruction의 순서가 정해져있기 때문에 RNN 계열의 model로 ingredient, instruction를 fixed vector로 만듬

  • Joint embedding의 loss는 cosine similarity loss를 사용해 food image와 recipe가 연관이 있다면 cosine similarity를 높게 만든다

  • 2번째 loss로 semantic regularization loss를 사용해 cosine similarity loss로 해결되지 않는 부분의 guide를 줘서 high-level semantics를 해결


Cross modal translation

Multi-modal을 translation으로 활용하는 방법



  • Image captioning : image가 주어졌을 때, image를 가장 잘 설명하는 text description을 생성해내는 방법

  • Image를 input으로 다루기 위해서 CNN을 사용하고, Sentence를 출력하기 위해 RNN을 사용

  • Encoder

    • Image는 pre-trained ImageNet을 사용해 fixed dimensional vector로 변환

    • Fixed dimensional vector를 condition으로 제공, token을 input으로 넣어 LSTM은 단어를 출력함




Show, attend and tell

  • 특정 word를 출력할 때 그 word를 image의 어떤 부분을 보고 출력했는지를 보여줌.

  • CNN의 출력을 fixed dimensional vector가 아니라 14x14의 공간정보를 가지고 있는 feature map으로 출력

  • RNN은 word를 생성할 때마다 feature map을 reference해서 어떤 부분이 활성화돼있을때 어떤 word를 출력해야되는지 예측


  • Attention: 특징적인 부분부터 훑어봄

  • Spatial한 feature map이 들어오면 RNN의 condition으로 사용해 어디를 참조해야 하는지 heatmap으로 만들고, 이를 feature map과 결합하여 z라는 결과를 출력. 이때 weighted sum을 사용.


  1. Input image를 CNN을 거쳐 feature map으로 만듬

  2. Feature map을 LSTM의 condition으로 넣음

  3. 어떤 부분을 reference할지 결정하는 spatial attention s1 을 만듬

  4. s1을 weight로 사용해, feature map과 inner product해서 pixel dimensional vector z1 을 만듬


  1. z1을 condition으로, start token y1 과 함께 RNN에 넣어줌

  1. RNN에서는 word 'A'를 출력하고 다음은 어떤 부분을 reference할지 예측하는 s2를 만듬

  1. s2 를 다시 feature map와 inner product해서 z2 라는 condition 생성

  2. y2 는 이전에 출력했던 단어인 'A'를 사용해 RNN에 넣어줌

  3. 다음 단계의 expected distribution인 s3 와 output word d2 를 생성


Text-to-image by generative model

text -> image는 1:N mapping이기 때문에 generative model이 필요!!



  • Generator

    • Text 전체를 fixed dimensional vector로 만들고, gaussian random code를 붙여서 같은 input에 대해 항상 똑같은 output이 나오는 것을 방지

    • 이후 decoder를 거쳐 image를 generate


  • Disriminator

    • Input image를 encoder에서 low dimensional spatial feature로 만들고, generator에서 썼던 sentence 정보를 붙임

    • Sentence condition 하에, input image가 True/False인지를 판별하도록 discriminator를 학습시킴


Cross modal reasoning

Cross modal 중 referencing을 이용하는 task


  • 영상과 질문이 주어지면 답을 도출

    • 질문 : text 형태로 RNN을 거침

    • 영상 : pre-trained NN을 거침

  • 2개의 embedding vector가 interact할 수 있도록 해줌



Multi-modal tasks (2) - Visual data & Audio

Sound representation

Sound data는 1-D signal로 존재 --> Spectogram, MFCC 등의 형태로 변환해서 사용


  • waveform 전체에 대해 FT(fourier transform)을 적용하면 시간축 t 에 대한 waveform을 주파수축 f 로 옮길 수 있음

    • 하지만 그냥 옮기면 시간에 따른 변화를 파악할 수 없기 때문에 짧은 window 구간에 대해서만 FT를 적용
    • Hamming window로 중앙에 가까울수록 weight를 줌
  • Window는 discrete하게 일정 간격을 띄어서, 적당히 overlap시켜서 결정


Fourier transform으로 time 축의 input signal의 삼각함수를 분해해서 각 삼각함수가 어느정도 성분으로 들어있는지 비교해서 frequency 축에 출력
--> Power spectrum에서 각 frequency가 어느정도 들어있는지 확인 가능


Spectogram: 각 spectrum을 세로로(시간축을 따라) stack --> 시간에 따라 주파수 성분이 어떻게 변해가는지 눈으로 확인 가능

i.e. 색이 연할수록 해당 주파수 성분이 적고, 진할수록 많은 등

Keyword: Melspectogram, MFCC


Joint embedding

위에서 알아본 Matching 형태



Sound tagging: 소리로 해당 장면을 인식


SoundNet

  • Video dataset의 image 는 pre-trained visual recognition network를 사용, object와 scene을 판별

  • Video dataset의 audio 는 1-D CNN에 입력, 2개의 head에서 object, scene을 판별 후 KL-div로 image 부분의 출력과의 오차를 줄임

  • Image network는 fixed, audio network는 학습하기 때문에 teacher-student 방식
    --> Visual knowledge를 sound에게 transfer

  • Raw waveform을 사용한 것이 특징(아직 MFCC 등이 발달하기 이전)


  • Pool5가 학습된 대표적 feature라고 생각했기 때문에 target task에서는 pool5에 classifier를 추가해서 target task를 수행

    • --> 그보다 뒤쪽 layer는 KL-div로 visual output과 너무 닮아있어서(specifically optimized) pool5 정도가 더 generalized semantic info를 갖고 있을거라 판단

Cross modal translation


Speech2Face : 음성에서 그 사람의 얼굴을 유추



  • 이를 위해 module network를 적극 활용

    • 각자 task에 맞는 pretrained-network를 조합해 활용
  • VGG-Face Model: 얼굴 image가 들어오면 fixed dimensional vector로 표현

  • Face Decoder: face feature가 들어오면 정규화된 무표정의 정면 얼굴을 reconstruct


  • Video의 image에서는 face recognition network의 input으로 넣어 face feature를 추출

  • Video의 audio는 spectogram으로 만든 후 Speech2Face model을 통과시켜 feature vector를 추출 후 face feature를 따라하도록 teacher-student식 학습(joint embedding learning을 응용)

  • Annotation이 필요없는 self-supervised learning

    • Video에서 image-audio가 미리 pair라 annotate 됐다고 볼 수 있음

Image-to-speech synthesis : Image를 넣으면 speech가 출력



  • Image는 CNN으로 14x14 feature map을 추출

  • 이후 Image-to-Unit model로 sub-word unit을 추출(완전한 word가 아니라 token 형식에 더 가까움)

  • Unit-to-Speech model(TTS, text to speech)에서 sub-word unit을 speech로 출력


  • Speech-to-Unit에서 나온 unit을 model 중간의 learned unit에 넣어줌

  • Image-to-Unit, Unit-to-Speech model은 각각 image-unit, unit-speech를 기반으로 학습.


Cross modal reasoning


Sound source localization : Sound가 image의 어떤 곳에서 발생하는건지 알려주는 task



  • Image, audio 모두 CNN으로 feature map 출력

    • Image는 spatial feature를 유지, audio는 fixed dimensional vector
  • Image feature와 sound feature의 내적으로 localization score

학습은 어떻게..?


  • Fully-Supervised: Ground truth가 있다면 KL-div, C-E, L-2 norm 등으로 학습

  • Video는 pair로 annotate 됐다 할 수 있다.

  • 그래서 Image feature map과 localization score를 weighted sum pooling 해서 image에 weight를 준다.


  • 이후 sound feature와 attended visual feature를 metric learn해서 같은 video에서 나왔으면 같게, 다른 video에서 나왔으면 다르게 만듬

  • Attended visual feature는 localization score에서 가장 weight가 높은 부분을 닮고있다. 이를 sound feature와 train해서 한 video에서 나왔다고 model에게 알려줌


Looking to listen at the cocktail party

칵테일 파티 효과(cocktail party effect) : 파티의 참석자들이 시끄러운 주변 소음이 있는 방에 있음에도 불구하고 대화자와의 이야기를 선택적으로 집중하여 잘 받아들이는 현상에서 유래한 말


위 그림처럼 크게 visual stream, audio stream, fusion, output seperation의 4가지 부분으로 나뉨.


각각의 얼굴을 face embedding을 해서 feature vector로 출력



Spectogram으로 speech에 대한 정보를 추출



  • Face feature, speech feature를 concat 후 complex mask 형태로 출력

  • Complex mask는 각각 spectogram을 어떻게 분리할지 결정하기 때문에, complex mask와 spectogram을 곱해서 seperated speech spectogram을 출력 후 다시 waveform으로 복원

  • Metric은 L2 loss를 사용

    • Clean spectogram(ground truth)가 있어야한다는 의미
    • Train data는 2개의 clean speech data를 합성(synthetically generate)해서 사용

Reference


Further study

(1) Multi-modal learning에서 feature 사이의 semantic을 유지하기 위해 어떤 학습 방법을 사용했나요?
(2) Captioning task를 풀 때, attention이 어떻게 사용될 수 있었나요?
(3) Sound source localization task를 풀 때, audio 정보는 어떻게 활용되었나요?

profile
AI 서비스 엔지니어를 목표로 공부하고 있습니다.

0개의 댓글

관련 채용 정보