비전공자도 이해할 수 있는 AI지식 - 딥러닝은 기계번역을 어떻게 바꾸었는가-

1. 신경망 기반, 자연스러운 번역의 시작

 

2010년대 들어 드디어 딥러닝이 주목받기 시작합니다.

 

먼저 구문 기반으로 분석하는 방식에 딥러닝을 적용해봅니다. 그리고 우리나라의 조경현 교수가 몬트리올대학교에서 박사 후 과정 중에 성공적인 결과를 넀습니다.

 

이때부터 바야흐로 딥러닝을 본격적으로 기계번역에 도입합니다. 이후에는 구문 단위를 넘어 아예 문장 전체에 딥러닝을 적용하죠.

 

이를 신경망 기반 기계번역(Neural Machine Translation)이라고 합니다.

 

그렇다면, 신경망 기반 기계번역은 어떻게 작동할까요?

 

앞서 단어 기반에서 구문 기반으로 확장하면 보다 자연스러운 문장이 나온다고 얘기한 바 있습니다.

 

신경망 기반은 한발 더 나아가 문장 전체를 마치 하나의 단어처럼 통째로 번역해서 훨씬 더 자연스러운 번역이 가능하게 했습니다.

 

인공 신경망이라는 풍부한 모델과 이를 견인할 수 있는 방대한 데이터를 확보하면서 이것이 가능해졌습니다.

 

사실 문장을 통째로 번역해냈기 때문에 번역 과정 자체는 훨씬 더 단순해졌습니다.

 

필요한 건 방대한 데이터뿐이었습니다.

 

 

2. 문장을 하나의 단어처럼 본다는 것은..

 

조금 다른 얘기를 해보죠. 오렌지 주스는 어떤 과정을 거쳐 우리 식탁 앞에 놓일까요?

 

오렌지를 산지 또는 공장에서 착즙한 후 유통 기한을 늘리고 유통 비용을 줄이기 위해 약 7배 이상 농축합니다.

 

가열하고 끓여서 액즙을 졸인 다음 엑기스만 모아서 부피를 줄이는 거죠.

 

이렇게 하면 똑같은 오렌지 주스를 한번에 훨씬 더 많이 운반할 수 있습니다.

 

그렇게 농축 상태로 운반한 후에는 다시 물을 희석해 원래의 오렌지 주스로 만듭니다.

 

농축과 환원 과정에서 영양소가 날아가고 맛이 살짝 변하기는 하지만 오렌지 향이나 비타민 C등 첨가물을 넣고 나면 농축하기 전의 오렌지 주스와 비슷한 맛을 낼 수 있습니다.

 

시중에서 사먹는 오렌지 주스는 대부분 이런 과정을 거칩니다.

 

https://www.eroun.net/news/articleView.html?idxno=1353

 

신경망이 문장을 통째로 번역하는 과정은 오렌지 주스를 농축한 후 물을 섞어 희석하는 과정과 닮아 있습니다.

 

먼저 문장을 통째로 압축해 숫자로 표현한 벡터(방향과 크기를 나타내는 값)를 만들어냅니다.

 

오렌지 주스를 농축하는 과정이죠.

 

그리고 이 값으로 다시 번역문을 만듭니다.

 

각각의 벡터에 해당하는 번역문을 찾아내는 거죠. 물을 섞어 다시 주스로 만드는 과정입니다.

 

여기까지가 번역 과정의 전부입니다.

 

 

 

이렇게 번역문을 만들어내면 더 이상 규칙 기반처럼 단어와 단어 간의 관계, 순서, 구조 등을 파악할 필요가 없습니다.

 

통계 기반처럼 단어나 구문을 확률로 번역해 조합하고, 이 문장을 자연스럽게 만들기 위해 애쓸 필요도 없습니다.

 

그냥 문장을 통째로 한번에 번역하면 됩니다.

 

이렇게 단순한 방식으로 어떻게 훨씬 더 좋은 번역문을 만드는 걸까요?

 

사실 이러한 번역 과정은 우리 일상에서도 찾아볼 수 있습니다.

 

학창 시절에 공부로만 영어를 접한 평범한 형과 미국에서 살다온 사촌 동생의 번역 실력을 비교해보죠.

 

보통은 먼저 주어와 동사를 찾아서 문장이 어떻게 끝나는지 예상한 다음 다시 형용사를 찾아서 어디를 수식하고 접속사는 어디와 연결되어 있는지 등을 파악합니다.

 

어릴때부터 열심히 공부한 영문법과 영한사전을 붙들고 말이죠.

 

그러나 좀처럼 제대로 번역이 되지 않습니다. 반대의 경우는 더욱 심각합니다.

 

우리말을 영어로 만들어보라고 하면 어디서부터 써야할지 막막하고, 단어 뜻을 찾아내기도 쉽지 않고, 문장을 다 만들긴 했는데 과거형인지 과거분사인지 헷갈리고, 정작 영어로 한마디도 내뱉지 못하는 때가 부지기수입니다.

 

그런데 어릴때 미국에서 살다온 사촌 동생이 집에 오더니 형의 영어책을 보면서 우리말로 읽습니다. 

 

"이런 문장은 영어로 뭐라고 하니?"라고 묻자 1초의 망설임도 없이 영어로 술술 말을 했죠.

 

형은 동생을 데리고 방에 들어가 도대체 어떻게 했는지 물어봅니다.

 

그랬더니 동생은 "난 그냥 평소에 말하는 대로 했을 뿐인데?"라며 주어나 목적어를 공부해본 적도 없다고 합니다.

 

그 말을 들은 형은 지금까지 자신은 무슨 공부를 했던 것인지 떠올리며 정말 울고 싶어집니다.

 

여기서 영문법 책을 열심히 공부한 형은 규칙 기반, 술술 문장을 번역하는 동생은 신경망 기반에 비유할 수 있습니다.

 

형은 문법을 열심히 공부했지만, 아무리 공부해도 일정한 수준 이상으로 영어 실력을 쌓기는 어렵습니다.

 

규칙 기반이 일정한 수준 이상으로 성능을 내기 어려운 것과 비슷하죠.

 

하지만 유학을 다녀온 사촌 동생은 문법도 잘 모르지만 책을 보면서 술술 번역합니다.

 

단지 어릴 때 영어로 많이 얘기했을 뿐인데 영어를 잘하게 된거죠.

 

신경망 기반은 사촌 동생처럼 엄청나게 많은 데이터를 학습하여 자연스럽게 영어를 번역해냅니다.

 

사촌 동생과 마찬가지로 주어가 뭔지 설명하지 못하지만, 문장을 이해하고 번역합니다.

 

그저 수많은 문장을 열심히 학습하며 점점 더 좋은 성능을 내는거죠.

 

 

3. Encoder로 압축하고, Decoder로 풀어낸다

 

인공신경망을 적용해 훨씬 뛰어난 번역문을 만들 수 있게 됐지만 여기서 멈추지 않았습니다.

 

연구자들은 번역 성능을 더욱 높일 수 있도록 끊임없이 연구를 거듭합니다.

 

앞서 오렌지 주스로 비유했던 신경망 기반 기계번역의 과정을 좀 더 구체적으로 살펴보겠습니다.

 

 

 

문장을 압축하는 과정과 풀어내는 과정을 구체적으로 그려보면 위와 같습니다.

 

먼저 문장을 압축하는 과정에서는 문장을 띄어쓰기 단위로 구분한 다음 차례대로 인공신경망을 통과하며 핵심적인 특징을 추출합니다.

 

여러 번의 계산을 거쳐 최대한 압축하죠.

 

이렇게 하면 마지막 단계에서 문장 전체의 의미를 압축한 벡터가 나옵니다. 

 

이처럼 문장을 압축하는 부분을 인코더(encoder)라고 합니다.

 

반대로 문장을 푸는 부분은 디코더(decoder)라고 합니다.

 

압축된 벡터를 받아서 순서대로 풀어내는 거죠. 한 단어씩 차례대로 푸는데, 이때 2가지 입력을 받습니다.

 

첫번째는 앞선 단어의 번역이고, 두번째는 인코더가 압축한 벡터입니다.

 

영어 시험을 볼때 문제를 차례대로 해석하다가 막힐 때는 영어 지문 전체를 힐끗 살피는 것과 비슷합니다.

 

문장 번역이 끝날때까지 디코더는 계속해서 인코더가 압축한 벡터를 참조하면서 보다 자연스러운 문장을 만들어냅니다.

 

이런 방식으로 인공 신경망을 활용한 기계번역은 엄청난 성능을 보입니다.

 

문법은 하나도 모르지만 영어를 엄청 잘하는 사촌 동생처럼 말이죠.

 

그런데 여기서 끝이 아닙니다. 이 방식에는 2가지 문제가 있습니다.

 

첫번째 문제는 번역할 원문의 길이와 관계없이 원문을 일정한 길이의 벡터로 한번만 압축한다는 점입니다.

 

마치 발표 시간이 얼마나 되든 연설문을 단 1줄로 요약해서 올라간 것과 비슷합니다.

 

발표시간이 1분이라면 별문제가 없겠지만, 10분이 넘어가면 연설문 1줄로는 하고 싶은 말을 조리있게 할 수 없겠죠.

 

두번째 문제는 한번 만든 벡터를 계속 참조하다 보니 번역문이 길어질수록 핵심 단어를 놓친다는 점입니다.

 

중요하지 않은 단어 중심으로 엉뚱하게 번역하거나 어순이 틀리기도 했죠.

 

 

4. 어텐션(attention), 기계번역의 핵심

 

이 문제들을 두고 다시 조경현 교수가 등장합니다. 

 

2014년에 제2저자로 참여해 출판한 논문에서 위의 한계를 극복하는 혁신적 개념인 어텐션(attention)을 제안하죠.

 

원리 자체는 간단합니다. 보다 중요한 단어를 강조하는 원리입니다. 

 

우리말로 하면 중요한 단어에 주목한다는 거죠.

 

어텐션은 앞서 언급한 2가지 한계를 모두 해결해냈습니다.

 

기존에는 입력 문장의 길이에 상관없이 압축한 문장을 항상 일정한 길이의 벡터에 한번만 담아냈습니다.

 

하지만 어텐션은 번역문의 단어를 생성할 때마다 출력 문장의 길이에 맞춰 압축 벡터를 생성합니다.

 

이렇게 하면 번역문이 길어질수록 벡터도 함께 길어지기 때문에 보다 긴 문장을 번역하는데도 문제가 없겠죠.

 

이전에는 어떤 분량이든 1줄로 요약했지만, 어텐션은 5분을 발표할때는 5줄, 10분을 발표할때는 10줄로 요약합니다.

 

무엇보다 어텐션의 핵심은 중요한 단어에 별도로 가중치를 부여할 수 있다는 점입니다.

 

그래서 주목을 뜻하는 어텐션이라는 명칭이 붙은 거죠.

 

압축할때 매번 다르게 중요한 단어에 표시를 할 수 있습니다. 

 

이전에 아무런 표시 없이 문장 전체를 통째로 압축했을 때는 번역할 때 강조해야 하는 내용을 염두에 두지 않아서 번역의 질이 떨어졌죠.

 

10분짜리 연설문에 1분 단위로 중요한 부분을 표시해둔다면, 연설 내용이 아주 좋아질 겁니다.

 

어텐션의 핵심은 바로 이처럼 중요한 부분을 적재적소에 표시해둘 수 있다는 점이죠.

 

어텐션은 실제로 기계번역의 성능을 크게 높였습니다. 기존에는 문장 안에서 거리가 먼 단어의 관계를 파악하기 어려운 문제가 있었습니다.

 

특히 영어를 우리말로 바꾸는 경우 어순이 뒤집어지면서 문장 맨 처음에 나오는 단어를 가장 마지막에 해석해야하는 경우도 있었습니다.

 

이럴 때 영어 단어와 그에 해당하는 우리말 단어 사이의 위치가 너무 멀어 서로 간의 의미를 제대로 파악하지 못하는 경우가 많았죠.

 

우리가 영어 문장을 번역할 때도 앞에서부터 쭉 번역해나가다 보면 뒷부분에 와서 "참 주어가 뭐였지?"라고 기억이 안 날 때가 있는 것처럼 말이죠.

 

그런데 어텐션은 단어 사이의 거리가 아무리 멀어도 서로 관련이 있는 단어라면 그 단어에 별도로 표시를 해두어 가중치를 높일 수 있습니다.

 

그래서 어텐션은 특히 긴 문장에서 높은 성능을 낼 수 있습니다.

 

어텐션을 처음 소개한 논문에서도 장문 번역에서의 성능을 강조했고, 이를 어텐션 도입의 효과로 언급하죠.

 

덕분에 기계번역은 이제 전문 번역가의 번역 못지않게 양질의 성능을 낼 수 있게 됐습니다.

 

 

5. 어텐션이 동작하는 과정

 

어텐션은 실제로 어떻게 동작할까요?

 

 

 

기존에는 인코더에서 값을 한번만 만들어 사용했지만 어텐션을 쓰면 한 단어, 한 단어 번역할때마다 인코더에서 새로운 값을 만듭니다.

 

게다가 중요하다고 여겨지는 단어에 가중치가 책정되어 내려옵니다.

 

그림을 보면 먼저 인코더에서 'I'가 중요하다고 보고 여기에 가중치를 부여해 "나는"으로 번역합니다.

 

 

 

그 다음에는 'lunch'에 가중치를 부여해 내려보냅니다.

 

디코더는 이를 '점심을'으로 번역하죠. 어텐션이 없을 때와는 방식이 좀 다릅니다.

 

이전에는 문장 전체를 한번에 압축해서 매 단계마다 같은 값을 내려보냈기에 이는 영어 시험을 볼 때 긴 지문을 모두 살펴보는 것과 비슷했습니다.

 

매번 지문 전체를 일일이 살펴봐야 한다면 정확한 정답을 골라내기가 쉽지 않겠죠.

 

그런데 어텐션은 중요한 단어를 강조하기 때문에 정답을 제대로 골라낼 수 있습니다.

 

마치 지문에서 정답과 관련 있는 중요한 부분을 형광펜으로 굵게 색칠해서 내려주는 것과 같죠.

 

중요한 부분이 표시되어 있다면 정답을 훨씬 더 정확하게 찾아낼 수 있습니다.

 

이렇게 어텐션은 매 단계마다 인코더가 가중치를 다르게 해서 압축 벡터를 내려보냅니다. 

 

번역문이 10개 단어로 구성되어있다면, 10번 모두 다르게 내려보내죠.

 

 

 

다시 번역 과정을 살펴보겠습니다. 그 다음에는 'had'에 가중치를 매긴 후 내려보내 이에 대응하는 의미인 '먹었다'로 번역합니다.

 

 

 

마지막으로 문장이 완성되어 번역이 끝날 때쯤이면 끝을 의미하는 태그 <끝>에 가중치를 매겨 내려보냅니다.

 

그러면 디코더는 <끝>을 출력하고 번역을 종료합니다.

 

여기까지가 어텐션이 작동하는 방식입니다.

 

매 단계마다 가중치를 부여하고, 중요한 부분에는 가중치를 더 높입니다.

 

그저 문장 전체를 한번만 압축했던 초기에 신경망 기반 방식보다 훨씬 더 효율적이죠.

 

실제로 어텐션을 도입하면서 번역 품질이 향상되었고 계속해서 좋은 성과를 내면서 최근에는 어텐션을 보다 적극적으로 활용하고 있습니다.

 

 

6. 트랜스포머(transformer), 자연어 처리 분야를 주도하다

 

아예 어텐션만으로 인공 신경망을 구성한 <Attention Is All You Need>라는 재미난 제목의 논문도 나왔죠.

 

<러브 액츄얼리>의 테마곡 <Love Is All You Need>을 패러디한 제목이네요. 

 

재미있는 제목과는 별개로 이 논문은 자연어 처리 분야에서 엄청난 혁신을 일으켰습니다.

 

특히 이 논문에서 소개한 딥러닝 모델인 트랜스포머(transformer)는 각종 분야를 휩쓸면서 모든 자연어 처리 분야의 성능을 월등히 높입니다.

 

https://arxiv.org/abs/1706.03762

 

트랜스포머의 구조는 얼핏 복잡해보이지만 핵심만 나열해보면 신경망 기계번역의 원칙을 그대로 따르고 있습니다.

 

인코더는 입력 문장을 압축하여 핵심적인 특징을 추출하는 역할을 맡고, 디코더는 인코더가 압축한 벡터를 받아와 출력문장을 생성하는 역할을 맡죠.

 

자세히 들여다보면 인코더는 한 종류 어텐션, 디코더는 두 종류의 어텐션으로 구성되는 등의 사소한 차이만 있을 뿐입니다.

 

여기서 핵심은 기존의 복잡한 딥러닝 구조를 사용하는 대신 오로지 어텐션만으로 모델을 구성했다는 점입니다.

 

(feedforward network도 있기는 한디..)

 

그래서 논문 제목이 <Attention Is All You Need>이죠.  이처럼 어텐션은 기계번역의 성능을 보조하는 역할로 등장했으나, 이제는 기계번역의 핵심이 되었습니다.

 

어텐션을 핵심 알고리즘으로 삼은 트랜스포머 모델은 사실상 모든 기계번역 모델을 대체하며 최근의 신경망 기반 기계번역은 모두 이 트랜스포머 모델을 기반으로 하고 있습니다.

 

이후에 살펴볼 BERT와 GPT-3라는 모델도 모두 트랜스포머를 기반으로 하고 있습니다.

 

기계번역에서 인코더가 문장의 의미를 압축해낼 수 있다는 데 착안해 자연어 이해 모델인 BERT가 등장했고, 

 

디코더가 문장을 생성하는 데서 착안해 자연어 생성 모델인 GPT-3가 등장했습니다.

 

두 모델 모두 매우 뛰어난 성능을 보여주죠.

 

무엇보다 이 모든 혁신이 트랜스포머 모델에서 시작됐다는 점이 중요합니다.

 

트랜스포머 모델은 이제 자연어처리를 넘어 최근에는 이미지나 음성인식에까지 널리 쓰이고 있습니다.

 

이 모든 게 중요한 부분에 가중치를 높여 "어텐션"을 하겠다는, 즉 중요한 단어에 "주목"하겠다는 간단한 아이디어에서 시작했습니다.

 

간단한 아이디어가 나비효과를 일으킨 셈이죠.

 

 

TAGS.

Comments