brunch

You can make anything
by writing

C.S.Lewis

by Jean Mar 08. 2023

[NLP 논문 리뷰]2 다국어 워드 임베딩

Using Image-Text Data

    

    다국어 워드 임베딩(Multilingual Word Embedding)이란, 두 개 이상의 언어를 한 개의 임베딩 스페이스에 위치시키는 작업이다. Multilingual Word Embedding을 위해서 필요한 데이터는 여러 언어가 쌍으로 되어있는 병렬적인(parallel) 데이터다. 쉽게 말하자면, 영어 문장과 그것을 완벽하게 변역한 한국어 문장을 한 쌍으로 볼 때, 이러한 쌍이 수 만 개 있어야 한-영 Bilingual Word Embedding을 제대로 구현할 수 있다. 그런데 이러한 word-aligned/sentence-aligned 데이터는 구하기가 어렵다. 이미 존재하는 다국어 단어/문장 쌍의 양이 적기도 하고, 모델 훈련을 위해 새로운 데이터를 생성하기에는 비용이 많이 들기 때문이다. 이를 해결하기 위해 Mulitingual Word Embedding에 image-text 데이터를 활용하는 방안이 제안되었다.



    스탠포드 대학의 Singhal이 제안한 논문 "Learning Multilingual Word Embeddings Using Image-Text Data"의 기본적인 전제는 다음과 같다. 


이미지는 특정 언어에 국한되지 않는 매체(language-agnostic medium)이다.

CNN(convolutional neural network)의 도입으로 컴퓨터 비전은 사람과 비슷하거나 어쩌면 사람 이상의 성능을 낼 수 있다.


    위 두 가지에 기반한다면, 한 개의 이미지를 매개로 하여 다양한 언어 문장 쌍으로 이루어진 데이터를 무수히 생성해낼 수 있다. 예를 들어 영어 "cat"을 검색했을 때 나오는 고양이 이미지는 독일어 "Katze"를 검색했을 때 나오는 이미지와 유사하다. 즉 고양이 이미지를 매개로 하여 (eng-cat, de-Katze)라는 word-aligned 데이터를 만들어낼 수 있고, 이는 multilingual word embedding을 위한 좋은 데이터가 된다.


    이러한 논리로 Singhal은 Google Image 검색 결과를 통해 얻은 (query, image) 쌍 데이터를 이용해 30억개의 (query, image, weight) 쌍 데이터를 생성했다. 본 논문에서 이용한 (query, image) 데이터는 아래 그림을 보면 쉽게 이해할 수 있다. 




   간단히는, 주어진 query와 image가 관계 있는 것인지 판단하는 task를 진행했다고 생각하면 된다. 각각의 image representation을 위해 사용한 식은 아래와 같다.


    fd차원의 열 벡터, Vm X d 행렬, b1m차원의 열 벡터, Un X m 행렬, b2n차원의 열 벡터를 나타낸다. 해당 식을 잘 따라가보면 결론적으로 image Ii representationn차원의 열 벡터가 된다.



    Query representation은 image보다 더 간단하다. Query의 각 단어들 앞에 해당 query가 어떤 언어인지 명시해뒀으며, 각 query의 임베딩은 그 query를 이루는 각 단어의 임베딩의 평균값이라는 점이 특징적이다. "back pain"이라는 query의 경우, "en:back"과 "en:pain"의 평균값을 가지게 된다. 각 단어 앞에 언어를 명시해둔 것은, 다른 언어지만 똑같이 생긴 단어가 동일한 임베딩을 갖지 않게 하기 위함이다. 예를 들어 "고통"은 영어로도 "pain"이고 프랑스어로도 "pain"이다. 이러한 경우 단어 앞에 언어를 명시해둔다면 영어 "pain"과 프랑스어 "pain"은 각각  "en:pain"과 "fr:pain"이 되어 별개의 임베딩을 갖게 된다.



    훈련은 query와 image의 코사인 유사도를 최대화시키는 방식으로 이루어졌다. 이를 위해서 코사인 유사도와 소프트맥스 함수를 혼용해 아래와 같은 방식으로 손실(loss)을 구했다.




       이러한 손실 계산을 매 데이터마다 진행하면 O(n2)의 계산 복잡도를 갖게 된다. 비효율을 해결하기 위해 Singhal은 손실을 batch(batch_size = 1000)마다 계산했다. 결론적으로 위 식을 통해 구해진 손실로 query와 image를 이용한 softmax classification task를 하게 된다. 이는 사실 2013년 Mikolov et al.이 제안한 skip-gram 모델과 유사하다. 물론 skip-gram에서는 스칼라곱을 사용했으나 해당 모델에서는 코사인 유사도를 사용한다는 차이가 존재한다.


    여기까지가 본 논문에서 어떻게 image와 query를 표현했고 손실을 구했는지이다. 이 방식의 기저에는 두 query가 하나의 image와 연관되어있다면 그 query들은 같은 임베딩 벡터를 가질 것이라는 아이디어가 깔려있다. 즉 이것을 통해 구하기 어렵고 생성하는 데에 많은 비용이 드는 word-aligned/sentence-aligned data를 대신할 수 있다는 것이다.


    Singhal는 image-text 데이터를 통해 학습시킨 multilingual embedding을 평가하기 위해 Crosslingual Semantic Similarity task, Multilingual Document Classification task, Monolingual Semantic Similarity task 결과를 기존 모델들과 비교했다.


    아래 표는 순서대로 Crosslingual Semantic Similarity task, Multilingual Document Classification task, Monolingual Semantic Similarity task 결과이다. 위쪽 행의 ImageVec 모델들이 image-text 데이터로 훈련한 Singhal의 모델들이고, 아래쪽 행의 multiSkip과 MUSE가 기존의 모델들이다.

   


    결과를 보면, Crosslingual Semantic Similarity에서는 Singhal의 모델이, Multilingual Document Classification와 Monolingual Semantic Similarity에서는 기존 모델들이 더 좋은 성능을 보여준다.


    괄목할 만한 성능 개선이 이루어진 것은 아니지만, Singhal의 시도는 text를 처리함에 있어서 multimodal data를 사용하려는 노력이었다는 점에서 의의가 있다.








브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari