자동 번역의 혁신, 알파고 딥러닝, 스스로 학습하는 기계
앞서 살펴본 것과 같이 변화무쌍한 언어 규칙을 찾거나 최적화된 통계 모델을 찾기 위한 컴퓨터 알고리즘을 만드는 작업은 수많은 언어공학박사들이 있어야 하고 어마어마한 노력이 필요합니다. 만약 학습데이터만 입력해주면 컴퓨터 “스스로” 번역하는 방법을 찾을 수 있다면 획기적이겠죠? 그렇습니다. 최신 자동 번역 기술은 알파고를 만들었던 인공지능 딥러닝 시스템으로 컴퓨터 스스로 학습데이터를 분석해서 번역하는 방법을 찾아냅니다.
한 가지 흥미로운 사실은 이 기술의 선구자가 바로 한국인입니다. 조경훈 씨가 2014년에 발표한 논문에서 딥러닝 기법을 이용하여 획기적인 돌파구를 만들었습니다. 이 시스템은 병렬 코퍼스(원문과 번역문 쌍으로 된 학습데이터)를 이용해서 사람의 개입 없이 두 언어 간 번역하는 방법을 스스로 학습하도록 하였습니다.
Recurrent Neural Network(순환신경명, 약자로 RNN)과 Encoding(인코딩)이라는 두 가지 컨셉을 영리하게 조합함으로써 스스로 학습하는 번역 시스템이 탄생하게 되었습니다.
RNN (Recurrent Neural Network, 순환신경망)이 뭔가요?
General Neural Network (기본신경망)
일반적인 신경망 구조의 딥러닝은 일련의 숫자를 입력 데이터로 받아서 결과를 도출하는 기계 학습 알고리즘입니다. 신경망 딥러닝은 블랙박스 방식(개발자는 틀만 만들어 둔 것이며, 실제 어떤 내용이 들어가게 될지 모름)으로 다양한 문제에 대한 해법을 제시할 수 있습니다. 예를 들어, 렌터카 업체에서 지난 몇 년간 예약 데이터를 학습시켜서 미래 특정 날짜에 얼마나 많은 손님이 예약할지 예측해 볼 수 있습니다.
Recurrent Neural Network (RNN)
RNN은 기본신경망의 변형된 형태로 이전 결과값을 다시 Input으로 사용해서 다음 결과값을 얻습니다. 즉, 이전 결과값이 다음 결과값에 영향을 미치게 됩니다.
RNN은 데이터 시퀀스 패턴을 학습하는 것인데요. 시간 흐름이나 연속된 값의 패턴을 찾는데 용이합니다. 렌터카 예약 예측 모델에서 환경 변수가 아니라 이어지는 추세 패턴이 더 적절한 것이라면 RNN 방식이 더 정확한 결과를 도출할 수 있습니다.
RNN은 다음에 나올 값을 예측하는 것이므로, 예를 들어, 문장의 첫 단어를 제시하면 다음에 어떤 단어가 나오는 것이 가장 확률이 높은지 예측하는 모델을 만들 수 있습니다. 셰익스피어 문집을 몽땅 RNN으로 학습시켜 만든 신경망 모델에 아무 단어나 하나를 넣으면 셰익스피어 문체를 닮은 문장이 자동으로 만들어집니다.
RNN을 이용하면 번역, 챗봇, 주가 예측 등 시퀀스 기반의 다양한 모델을 만들 수 있습니다. 예를 들어, RNN으로 사인(sine) 파동을 수학 모델 없이 정확하게 그릴(예측) 수 있습니다.
Encoding(인코딩)
인코딩은 쉽게 말해서 컴퓨터가 이해할 수 있는 값으로 변환하는 것을 의미합니다. 예를 들어, 사람 얼굴을 컴퓨터가 비교하려면 얼굴의 특성값을 수집해야 합니다. 미간의 넓이, 눈 크기, 눈썹 길이 등의 값을 측정하고 두 얼굴에서 이런 특성값을 비교합니다. 이와 같이 얼굴 사진을 특성값으로 변환하는 과정을 인코딩이라고 할 수 있습니다.
딥러닝에서는 어떤 특성값을 찾아야 하는지 별도로 지정할 필요가 없습니다. 신경망을 이용하면 얼굴 사진 비교를 위한 특성값을 자동으로 추출할 수 있습니다.
바로 이 과정이 인코딩입니다. 위 그림은 얼굴 사진을 128개의 특성값으로 인코딩한 것입니다. 사진마다 이렇게 128개 숫자로 인코딩하면, 숫자의 유사성을 비교해서 “같은 사람일 확률 92%” 이런 식으로 결과를 얻을 수 있죠.
대충 감을 잡으셨겠지만, 언어 문장도 같은 방식으로 변환할 수 있습니다. 아래 그림과 같이 모든 문장을 각각 고유한 숫자 값으로 인코딩할 수 있습니다.
RNN 모델에 한 번에 한 단어씩 넣어주고, 마지막 단어까지 처리되면 최종적으로 문장의 인코딩을 값을 얻을 수 있습니다.
이런 방식으로 모든 문장을 숫자로 표현할 수 있게 되었습니다. 이들 숫자가 무엇을 의미하는지는 중요하지 않습니다. 문장을 고유한 값으로 식별하는 방법이 생긴 것입니다.
RNN으로 번역하기
RNN을 이용해서 문장을 고유한 값으로 인코딩하는 방법까지 알아봤습니다. 그렇다면, RNN을 두개 장착해서 첫 번째 RNN은 문장을 숫자로 인코딩하고, 두 번째 RNN은 다시 인코딩된 숫자를 문장으로 되돌려(디코딩) 놓을 수 있지 않을까요? 혁신적인 아이디어는 바로 이것입니다.
물론, 원문으로 다시 되돌려 놓는 게 무슨 의미가 있겠습니까. 만약, 두 번째 RNN에서 문장을 영어 원문이 아닌 스페인어로 디코딩하도록 학습시킨다면? 확보해둔 병렬 코퍼스(원문과 번역문 쌍으로 된 학습데이터)를 이용해서 이 과정을 학습시킬 수 있습니다.
바로 이것입니다. 영어 단어가 나열된 문장을 스페인어 문장으로 변환시킬 수 있는 모델이 탄생했습니다.
획기적인 시스템인 이유:
- 학습데이터와 컴퓨터 파워만 있으면 번역기를 만들 수 있음. 이 방식이 탄생한 지는 겨우 3년밖에 되지 않았으나 20년 넘게 개발했던 기존 번역기보다 월등한 성능을 보여주고 있음
- 언어 규칙 알고리즘이 필요하지 않음. 딥러닝 신경망이 스스로 규칙을 찾아냄. 즉, 수많은 언어공학자가 필요하지 않음
- 언어마다 다른 개발이 필요하지 않으며, 학습데이터만 충분히 준비하면 됨
특별 연재 마지막 편에서는 “인공지능 자동번역이 휴먼번역을 대체할 수 있을 것인지”에 대해 얘기해 보겠습니다.
-다음 특별편 이어서-
Click here > WiseTranslate.net ▼