지금까지 우리는 기계가 인간의 언어를 이해하는 원리와 이 과정을 보다 수월하게 해주는 다양한 원리들에 대해 배워보았습니다. 자연어처리의 원리를 공부하고 나면 이것이 우리와는 관계없는 어려운 기술적 개념이 아닌 매우 친숙한 개념으로 다가올 것입니다. 이번시간부터는 우리 일상속에 쓰이는 다양한 자연어처리(NLP) 기법들에 대해 알아보도록 하겠습니다.
사실 초거대언어모델(LLM)과 생성형AI가 등장하기 이전부터 자연어처리는 이미 일상 속 많은 부분에서 우리의 삶을 편리하게 해주었습니다. 자연어처리는 외국어 번역, 텍스트 자동 완성, 스마트 어시스턴트, 텍스트 분석 등 다양한 분야에서 활발하게 활용되고 있지만, 적용되는 핵심 기술과 그 원리는 크게 다르지 않습니다.
자연어처리의 적용은 큰 틀에서 보면 위에서 살펴본 자연어이해와 자연어생성 그리고 언어모델(LM)에 기반하고 있으며 언어모델의 발전에 따라 진화해 왔습니다. 초기의 언어모델은 통계학의 분포 가설(distribution hypothesis)에 기반하여 다음 문장의 확률을 예측하는 방식으로 다양한 자연어처리 태스크를 훌륭히 수행해왔지요. 2010년대 초중반에 이르러서는 인공신경망을 활용한 RNN(Recurrent Neural Network)과 LSTM(Long Term Short Memory)와 같은 딥러닝 기반 언어모델이 도입되면서 다양한 자연어처리에서 개선된 성능을 보여주었습니다.
그러나 자연어처리의 역사에서 가장 중대한 변화는 단연 구글에서 발표한 ‘all you need is attention’이라는 논문과 트랜스포머(transformer)가 등장과 함께 찾아왔다고 할 수 있을 것입니다. 2장에서 자세히 배우겠지만, 자연어처리는 어텐션(attention) 메커니즘과 전이학습(transfer learning)으로 대표되는 트랜스포머의 등장 이전과 그 후로 나뉩니다.
2018년을 기준으로 구글/파파고 번역과 챗봇 등 우리 일상 속 서비스가 일취월장한 모습을 보여주며 점점 더 사람과 구분할 수 없는 자연스럽고 매끄러운 문장과 뛰어난 성능을 보여주게 된 데에는 이 트랜스포머 모델이 지대한 영향을 끼쳤습니다. 이번장의 세 번째 파트 ‘일상속의 자연어처리’에서는 우리 일상에서 만나볼 수 있는 다양한 자연어처리의 활용사례와 기술의 발전에 따른 각 기술들의 변천사를 소개하겠습니다.
기계 번역(Machine Translation)
기계번역은 우리가 가장 쉽게 접할 수 있는 자연어처리 분야의 하나로, 딥러닝 기술의 발전으로 기하급수적인 발전을 이루어 낸 분야입니다. 외국어 번역기는 번역하고자 하는 언어를 입력 값으로 받아 자연어이해와 자연어생성성에서 공부한 자연어이해(NLU) 기술을 적용해 문장의 구문, 의미, 문맥 등을 이해하고 토큰화, 형태소 분석, 구문 분석 등의 기술을 사용하여 문장을 구조화하고 의미를 해석합니다.
입력 받은 값에 대한 전처리 과정을 거친 뒤 본격적으로 기계번역을 처리하는 번역모델은 여러 가지 방식으로 구현될 수 있는데, 딥러닝 기술이 발전하지 않았던 자연어처리 초기에는 주로 통계적 기계 번역(Statistical Machine Translation, SMT) 기법이 많이 사용되었습니다. 통계적 기계 번역은 대규모 병렬 코퍼스를 활용하여 문장과 그에 상응하는 영어 문장의 쌍을 학습하여 문장을 번역하는 방식으로 이루어지는데, 문장의 번역은 통계적 확률 모델과 언어 모델을 기반으로 결정됩니다.
SMT의 예씨(출처 : Localizationlab)
통계적 기계 번역은 대규모 병렬 코퍼스(언어 간 번역 쌍)를 필요로 하기 때문에 데이터의 양에 의존한다는 단점이 있습니다. 또한 번역할 문장을 각 단어나 구조 요소로 분리하여 번역을 수행하기 때문에 언어의 전체적인 문맥을 파악하기 힘들고 단어의 다의성이나 문장의 모호성을 반영하지 못하기 때문에 전체적으로 번역 퀄리티가 낮아질 수밖에 없다는 한계점이 있습니다.
딥러닝 아키텍쳐를 활용한 기계번역(출처 : Medium)
딥러닝의 발전과 GPU 컴퓨팅 파워의 향상으로 이러한 SMT의 한계점을 해결할 수 있게 되었습니다. 딥러닝 기술을 활용한 기계 번역 방법을 인공신경망 기계 번역(Neural Machine Translation, NMT)라고 하는데, NMT에서는 주로 순환 신경망이나 변형된 형태의 장단기 메모리 또는 변형된 트랜스포머 아키텍처를 사용합니다.
통계적 기계 번역 기법과는 다르게 인공신경망 기계 번역은 전체 문장의 의미와 문맥을 고려하여 번역 결과를 생성하며 자연스럽고 높은 퀄리티의 번역 결과를 자랑합니다. 2020년대에 들어 구글 번역(Google Translate)와 네이버 파파고(Papago)의 번역 성능이 비교도 안 되게 좋아진 것의 배후에는 SMT에서 NMT로의 전환이 큰 영향을 미쳤다. 그리고 이는 점점 더 모델이 거대화되는 자연어처리의 트랜드와도 무관하지 않습니다.
텍스트 자동 완성
검색 플랫폼에 빼놓을 수 없는 텍스트 자동 완성 기능은 사용자의 검색 기록, 연령, 성별 등 특성을 반영하여 사용자에게 적합한 검색어 자동완성 기능을 제공한다. 텍스트 자동완성은 사용자의 입력에 기반하여 다음에 올 단어나 문장을 예측하는 방식으로 작동하는데, 외국어 번역과 마찬가지로 텍스트 자동완성 역시 주로 딥러닝을 기반으로 한 언어 모델인 순환 신경망이나 트랜스포머와 같은 모델을 사용합니다. 대량의 텍스트 데이터를 학습한 언어모델은 단어들 사이의 패턴과 문맥을 학습하고 이를 기반으로 보다 정확하게 다음 단어를 예측할 수 있습니다.
구글 자동완성(출처 : tobetong)
텍스트 자동완성을 위해 학습된 언어모델은 사용자가 입력한 텍스트의 문맥을 파악하는 과정을 거칩니다. 문맥 파악을 마친 언어 모델은 다음에 올 수 있는 가능한 단어들을 예측하는데, 예측 시 이 책의 후반부에 자세히 배우게 될 softmax 함수와 같은 확률적 방식을 사용합니다. 예측된 단어들은 확률에 따라 우선순위를 부여받습니다. 예를 들어 ‘자동 완성’이라는 입력 값에 대해 언어모델은 ‘자동 완성 기능’ ‘자동 완성 끄기’ ‘자동 완성 기록’ 등 다음 단어가 오게 될 확률순으로 사용자에게 자동완성 될 텍스트를 제안합니다.
다른 언어모델과 마찬가지로 텍스트 자동완성 언어모델 역시 사용자의 입력과 선택에 따라 학습과 개선이 지속적으로 이루어집니다. 사용자가 자동완성 제안을 선택하거나 수정할 때마다 이를 기반으로 모델이 학습하여 사용자 경험을 개선하는 방식으로 발전합니다.