multi-modal의 한계
우리 일상의 대부분의 문제는 시각적인 정보만을 가지고도 해결이 되기 때문에 다른 task와 결합하여 사용한다면 오히려 bias가 생길 수 있다.
e.g. 시각적 정보와 다른 task와 결합했을 때보다 시각적 정보만을 활용했을 때가 더 결과가 좋더라~
multi-model learning에는 위와 같이 3 가지의 방법이 있다.
Matching
Translating
Referencing
그렇다면 워드 임베딩을 어떻게 학습시킬까?
word2vec ( Skip-gram model )
W에서 하나의 raw는 하나의 워드 임베딩 벡터가 되고, 원 핫 벡터로 이루어져 있다고 생각하면 된다.
input인 벡터가 가중치와 곱해져서 1에 해당하는 특징만 hidden layer로 들어가게 된다.
이후 hidden layer와 W`를 곱해서 output layer로 주변에 어떤 단어들이 나오는지 패턴을 학습한다.
Matching 방법
Application - Image tagging
joint embedding space를 학습하기 위해서 그 둘이 유사하다면 거리를 줄이는 방향으로(push), 유사하지 않다면 거리를 벌리는(pull) 방향으로 학습을 진행한다.
이렇게 학습하게되면 아래의 사진과 같이 재밌는 관계성이 생긴다.
강아지 사진의 임베딩 벡터에서 강아지라는 단어의 임베딩 벡터를 빼고, 고양이라는 단어의 임베딩 벡터를 더하면 고양이와 매칭되는 사진을 출력할 수 있다.
레시피 & 요리
CNN과 RNN을 합친 방식
encoder
decoder
show, attend, and tell
이전의 show and tell 은 하나의 fixed dimensional vector에서 이미지 전체를 한번에 예측하게 되는데, 더 알맞은 텍스트를 생성하기 위해서는 각 단어에 맞는 부분을 더 중요하게 볼 필요가 있다.
따라서, show , attend, tell에서는 각 단어에 대한 중요도를 영상 전체에서 하나로 표현하기 보다는 국지적인 부분에 대해 중요도를 측정하여 조금 더 정확한 문장을 출력할 수 있게 설계하였다.
architecture
사람의 시선을 기록하기 위해 눈, 코, 입 등 사람 얼굴의 특징적인 부분을 추출하는 것과 같다.
전체적인 흐름은 다음과 같다.
조금 더 자세히 보자.
지금껏 이미지가 주어지면 텍스트를 생성하는 것을 해봤지만 이를 반대로도 할 수 있다.
다만, 반대인 경우 1:N구조가 되므로 이 때 generative model을 사용한다.
Architecture
텍스트 전체를 어떤 네트워크를 통해 fixed dimensional vector를 만들고, 이 앞에 Gaussian random code를 추가해줌으로써 항상 같은 output이 나오는 것을 방지한다.
Generator
Discriminator
시간 축의 input signal이 주어지면 FT를 통해 다양한 주기 함수들을 합하고 분해하여 표현하는 것
Short-time Fourier transform
Waveform에서 spectrogram으로 변환시키기 위해 사용한다.
Waveform 전체를 주파수 축으로 변환하게 되면 시간에 따른 변화를 관찰할 수 없다.
따라서, window 구간 내에서만 Fourier transform을 적용하여 spectrogram으로 만들어준다.
또, 여기에서 바로 FT를 적용하는 것이 아닌 Hamming window를 사용하여 boundary에 대한 weight를 약하게 해줌과 동시에 가운데 부분만 강조한다. (elementwise product)
spectrogram
Image
Audio
이렇게 학습된 SoundNet을 우리가 원하는 특정 target task에 응용할때는 pool5의 feature를 추출하여 사용한다. → 맨 마지막 layer를 사용하지 않는 이유는 pool5가 조금 더 일반화 성능이 좋을 거라고 예상.