여러 언어를 다루는 NLP 모델을 학습시키기 전에 이러한 질문을 해봅니다:

  • 여러 개의 언어를 이해한다는 것은 어떤 것일까?

저는 다양한 국가에서 생활을 하기 위해서는 여러 외국어 단어를 배워야 했습니다. "사과" 같은 물리적인 물체라든가, 과거, 현재, 미래 같은 시간적 추상적인 개념, 또는 좋다, 싫다 같은 감정도 표현해야 하는 경우가 많았습니다.

언어를 한마디로 정의하기는 정말 어렵습니다만, 저는 "내가 보고, 듣고, 느끼고, 생각한 무언가를 다른 사람에게 전달하기 위한 수단"이라고 생각합니다. 음성, 문자, 몸짓 등을 통해 다른 사람이 나의 의도를 이해할 수 있게 하는 것이죠.

요즘은 공용어 영어를 전세계가 폭넓게 사용하지만, 아직도 다양한 언어가 존재합니다. 일본어처럼 비슷한 점이 많은 언어도 있지만, 유럽이나 아프리카처럼 다른 대륙의 언어는 한국어와 비슷하지 않습니다. 그럼에도 불구하고, 이러한 외국어를 공부하여 이해하고 소통하는 사람들이 많습니다.

도대체 인간은 어떻게 여러 개의 언어를 이해할 수 있는 것일까요?

사실 인간이 살아가며 소통에 필요한 것은 전세계 어디나 비슷한 면이 많습니다. 배고프면 음식을 찾아야 하고, 생명에 위험이 있으면 알려야 하죠. 또한, 우리가 사는 지구의 자연은 공통점이 많습니다.

인간은 이러한 세상에 대한 공동 이해를 통해 모국어와 외국어의 공통점을 맞추고, 때로는 차이점을 공부하며 여러 언어를 이해해갑니다.

그렇다면 AI가 여러 언어를 이해한다는 것은 무슨 의미일까요? AI는 인생을 살아가며 다른 사람과 공통적인 경험을 쌓아가는 것도 아니고, 태어나 자라면서 배운 모국어가 있는 것도 아닌데 말이죠.

이번 글에서 Multi-lingual NLP 모델이 여러 언어를 학습하는 방법을 조금은 추상적으로 설명해보도록 하겠습니다.

컴퓨터의 입장에서는...

여러분은 이 네 문장을 보시면 어떤 생각이 드시나요?

배고파
I’m hungry
お腹空いた
饿了

"네 가지 다른 언어가 쓰여 있구나"라고 느끼실 것 입니다.

그런 반면에 컴퓨터에게는 네 문장에 큰 차이가 없습니다. 전부 그저 문자열(string)로 표현된 데이터입니다.

Unicode의 발명으로 “전 세계의 모든 문자를 컴퓨터에서 일관되게 표현”할 수 있게 되었습니다. 그렇기 때문에 컴퓨터에게는 a, b, c, 가, 나, 다, あ, い, う, え, お는 각각 다른 종류의 문자일 뿐이지, 다른 "언어"라는 개념이 존재하지 않습니다.

심지어 emoji 역시 unicode 중 하나의 문자입니다. (https://home.unicode.org/)

<위클리 NLP>를 차근차근 읽으셨던 구독자라면 Week 7에서 이 질문을 다루었던 것이 기억하실지 모르겠습니다. NLP는 언어를 하나의 큰 X-Y 함수로 보고 데이터를 통해 이 함수를 학습하기 때문에 머신 러닝이라는 강력한 기술이 함께 갈 수 밖에 없다는 이야기를 했습니다.

머신 러닝 기반의 NLP 모델은 주어진 데이터가 무엇이냐에 따라 문자열들의 조합, 관계의 의미를 학습합니다.

그렇다면 Multi-lingual NLP를 학습시키려면 모든 언어를 큰 X-Y 함수로 보고, 여러 언어 데이터를 전부 섞어 넣으면 되는 것일까요?

최근 연구 결과를 보면 놀랍게도 답은 “그렇다"에 가깝습니다.

여러 언어 데이터를 벡터 공간에 넣어보자

(벡터 공간; vector space 복습하기)

여러 언어를 다루는 문제 중에 가장 중요한 문제는 역시 기계 번역(Machine Translation)입니다. Week 20에서도 번역 문제가 NLP에서 가장 실용적이고 중요한 분야라고 소개한 적이 있습니다.

기계 번역의 문제를 조금 수학적, 추상적으로 생각해보면 결국 두 개의 벡터 공간 사이의 함수를 찾는 것입니다.

하나의 문장을 하나의 벡터 공간의 점이라고 보았을 때, “영어"라는 공간의 점에서 “한국어"라는 공간으로 치환하여 알맞는 점의 문장을 찾아내는 문제가 바로 기계 번역입니다.

영어 문장의 벡터 공간, 한국어 문장의 벡터 공간, 그리고 치환 함수

위 예시의 함수를 학습하는 것은 영한 번역에는 굉장히 효과적이지만, 그 외의 문제에는 쓸 수 없습니다. 하다 못해 한영 번역은 반대 방향이기 때문에 다른 함수가 필요합니다. 게다가 여기에 일본어 같은 제3의 언어가 등장한다면 어떻게 해야 할까요?

이러한 “확장성" 문제를 인지한 NLP 연구자들은 같은 공간에 여러 언어가 공존할 수 있는 방법을 고민했습니다.

여러 언어가 한 개의 벡터 공간에 존재하는 경우

초기에 시도된 방법은 단어 임베딩(word embedding)을 Multi-lingual로 학습하는 것이었습니다. 그 중 하나가 2018년 Facebook AI Research에서 나온 MUSE

따로 학습된 영어와 스페인어 단어 임베딩 공간을 하나의 공간으로 끼워 맞추는 MUSE (Conneau et al., 2018)

사전(dictionary)에 있는 같은 의미의 두 언어의 단어 쌍 (ex. 고양이 <=> Cat)을 이용하는 등 여러 가지 학습 방식이 나왔습니다. 여기서 중요한 것은 같은 공간에 여러 언어의 단어를 하나의 공간에 함께 공존하도록 학습하려고 했다는 것이죠.

단어에서 문장으로, Multi-lingual BERT!

그러다가 NLP의 끝판왕인 BERT가 등장하였습니다. 트랜스포머 기반으로 Masked Language Model이라는 독특한 학습 방법으로 이 분야의 판도를 바꾸어놓았지요.

Multil-lingual Bert (mBERT)는 영어 뿐만 아니라 104개 언어로 구성된 위키피디아 데이터를 함께 학습시킨 모델입니다. BERT의 학습 방법은 문장 한 개 안에서 이루어지기 때문에 여러 언어로 데이터가 섞여 있더라도 모델은 한번에 한 가지 언어 밖에 보지 못합니다. 그런데도 mBERT는 언어 간의 특성을 학습할 수 있을까요?

놀랍게도 mBERT는 언어 간 특성을 잘 학습하였습니다. 심지어 아랍어, 한국어, 일본어 같이 알파벳이 아닌 문자를 써 영어와 겹치는 단어가 없는 언어에도 효과적인 성능을 보입니다.

이를 테스트하기 위해 NLP에서 교과서 같은 문제인 개체명 인식(NER)과 품사 분석(POS)을 사용하였습니다. Week 44에서 공부했다시피, 이 두 NLP 문제는 언어 모델이 언어학적 특성을 잘 파악하고 있는지 아닌지 분석하기 위해 활용됩니다.

물론 완벽하지는 않습니다. 104개의 언어 중 학습 데이터 양 기준 하위 30% low-resource 언어들은 아직 유럽 계통 언어 같은 high-resource 언어들보다 좋은 성능(80% 이상)을 보여주지 못합니다. 그럼에도 불구하고 low-resource 언어에서는 단일 모델을 학습했을 때보다는 다른 언어와 함께 학습된 mBERT가 더 좋은 성능을 보인다는 긍정적인 결과가 있습니다.

데이터가 없는 언어에도 좋은 성능을 보이는 mBERT

더 놀라운 것은 학습 데이터에 없는 언어에 대해서도 그럭저럭 좋은 성능을 보였다는 것 입니다.

mBERT의 이러한 시나리오에서의 성능을 측정하기 위해 학습 데이터에 타겟 언어를 제외하고 나머지 언어로 mBERT를 학습시킨 후, 타겟 언어에서의 성능을 측정하는 방식으로 실험해보았습니다. 예를 들어, 프랑스어를 학습 데이터에 뺀 후에, 프랑스어 테스트 데이터에 어떤 성능이 나오는지 보는 것이죠.

이렇게 했을 때도 꽤 유의미한 성능이 나온다는 것이 여러 논문을 통해 증명되었습니다. 특히 언어 간 공통 특성이 많을수록 더 성능이 올라갔습니다.

파란 선은 mBERT, 빨간 선은 그냥 영어 BERT, 가로 축은 언어 특성 공통 점수

그저 여러 언어의 문장을 각각 보았을 뿐인데 어떻게 mBERT는 공통적인 언어학적 특성을 파악하고 있는 것일까요?

이 역시 하나의 벡터 공간에 여러 언어의 문장과 단어를 존재하도록 학습하기 때문입니다. 한 논문은 mBERT의 벡터 공간을 분석한 결과, 언어가 다르더라도 한 문장의 품사(ex. 주어, 목적어)가 같다면, 비슷한 공간에 배치하도록 학습되었다는 것을 밝혀냈습니다.

여러 언어들의 품사가 공통적인 벡터 공간에 모이는 것을 시각화 (Chi et al., 2020)

예를 들어, 이 벡터 공간에서 아래 두 문장의 밑줄 친 단어들은 품사가 같기 때문에 가깝게 학습되는 것이죠.

I ate an apple.
나는 을 던진다.

비록 의미가 다르고, 언어가 다르더라도 목적어(object)라는 공통점을 벡터 공간을 통해 mBERT는 알 수 있다는 것입니다. 그렇기 때문에 개체명 인식(NER)과 품사 분석(POS) 같은 문제를 여러 언어에서 잘 풀 수 있는 것 입니다.


오늘은 Multi-lingual 모델이 학습하는 벡터 공간에 대해서 알아보았습니다. 하지만 아직은 다루지 못한 질문이 많습니다. 예를 들어, NER 또는 POS 말고는 어떤 다른 응용 문제를 풀 수 있는 것이지? mBERT 말고는 다른 모델은 없나? Low-resource 언어의 낮은 성능을 끌어 올리기 위해선 어떤 방법이 있지?

Multi-lingual은 그만큼 방대하고 재밌는 주제입니다. 차근차근 하나씩 풀어가보도록 하겠습니다.

Reference