지난 시간(LLM과 자연어처리의 역사(2))까지 컴퓨터가 단순히 단어의 등장 횟수와 0과 1의 이진수만으로 텍스트를 표현하는 방식인 bow(bag-of-words) 방식과, 한 단계 진화하여 숫자에 더욱 많은 정보를 표현하는 워드 임베딩(word embedding) 방식에 대해 알아보았다. 이 두 가지 방식은 각각 매우 단순하고 직관적인 방식으로 단어를 표현할 수 있다는 장점과, 통계학 이론에 기반하여 단어를 예측(predict) 할 수 있으며 단어와 단어 사이의 유사도와 관계를 어느 정도 구현해 낼 수 있다는 장점이 있었다.
출처:Forbes
이러한 방법론을 통해 인간의 언어를 구현해 낸 모델을 임베딩 모델(embedding model)이라고 한다. 그러나 단어 임베딩을 통한 기존의 단어 표현 방식들은 이번시간에 배우게 될 딥러닝 기반 언어모델(Deep Learning Language Model, DLM)에 비해 다음과 같은 한계점을 갖는다.
- 다의어 문제
원핫 인코딩의 한계점에서 살펴보았던 것과 동일하게, 통계 기반의 Word2 vec 방식으로는 여전히 단어의 다의어적 의미를 구분하는 것에 한계가 있다. 예를 들어, "like"라는 단어는 문맥에 따라 '~과 같은'이나 '좋아하다'의 전혀 다른 의미로 사용될 수 있지만, Word2 vec과 Glove, Fasttext 등 텍스트 데이터를 단어 단위로 임베딩 모델에 입력하는 벡터(vector)의 표현방식으로는 이러한 다의적인 의미를 명확히 구분해 내지 못한다.
따라서 우리는 다의어 처리에 있어서 임베딩 방식이 아닌 오롯이 딥러닝 알고리즘에 의존할 수밖에 없다. 이처럼 기존 모델의 한계점을 극복하기 위해 등장한 임베딩 방식의 언어모델이 ELMO(Embeddings from Language Model)와 BERT(Bidirectional Encoder Representations from Transformers)이다. ELMO와 BERT는 단어 단위가 아닌 문장을 통으로 입력하기 때문에 문장 기반 임베딩 모델이라고도 한다. 이러한 알고리즘의 작동원리는 간단히 말해 문장을 통으로 받아줌으로써 단어 하나하나의 의미가 문장에 따라 다르게 사용될 수 있음을 기계에게 이해시키는 것이라고 생각할 수 있다.
- 희소 문제
출처 : 딥러닝을 이용한 자연어처리 입문
확률을 할당하고자 하는 시퀀스(sequence)에 들어갈 단어가 corpus(말뭉치) 안에 등장하지 않을 때, Word2vec은 확률을 0으로 계산해 버리는 문제를 희소 문제라고 한다. 예를 들어 위와 같이 기존 방식으로는 사전 입력된 어휘사전에 ‘An adorable little boy’라는 문장이 존재해도 ‘An adorable little boy is’이라는 단어가 없다면 언어모델은 해당 문장을 표현할 수 없게 되어버린다.
- 데이터 부족 및 의존성 문제
기존의 방식은 학습에 많은 양의 텍스트 데이터가 필요하다. 특히, 전문 분야에 국한된 단어나 특수한 문맥에 대해서는 적절한 단어 표현을 제공하기 어려울 수 있다. 또한 Word2vec은 대량의 텍스트 데이터와 통계적인 모델 학습이 필요하기 때문에, 데이터의 품질과 양, 그리고 모델 학습에 필요한 계산 자원에 의존하게 된다.
- 비언어적 특성을 반영할 수 없는 문제
지난 시간에 분포가설(distribution theory)에 대해 알아보았다. 이처럼 분포가설에 근거한 Word2vec은 주로 단어의 분포 패턴이 비슷한 확률을 띌 것이라는 가정(assumption)하에 단어 간 유사성을 계산한다. 이는 유사한 문맥에서 함께 자주 등장하는 단어들이 비슷한 벡터로 표현되는 경향이 있음을 의미한다.
그러나 언어의 문맥을 파악할 때 많은 경우 단어의 의미적 유사성을 정확하게 포착하기 위해서는 문맥 이외에도 상황적 특수성이나 제스처나 말의 높낮이 같은 비언어적 특성을 반영할 필요가 있다. 그러나 이는 기존 자연어처리 모델만의 한계가 아닌 언어모델(Language Model) 전체의 한계점이라고 볼 수도 있다.
2. 다양한 딥러닝 기반 언어모델의 등장
- 딥러닝 기반 언어모델이란?
딥러닝 기반 언어모델(Deep learning based Language Model, DLM)은 인공신경망을 기반으로 하는 다양한 딥러닝 알고리즘을 사용하여 문장 시퀀스에 각 단어에 확률을 할당해 주는 언어모델을 통칭한다. DLM은 퍼셉트론(perceptron)으로 이루어진 인공신경망(ANN)을 기반으로 하는 여러 개의 입력층(input layer)과 은닉층(hidden layer) 그리고 출력층(output)을 가지고 있는 다층구조를 활용한다. 복잡한 연산과정을 통해 설명력은 떨어지지만 좋은 성능을 내는 딥러닝의 특성을 자연어처리에도 활용하여 통계 기반 언어모델과 비교하여 더 복잡한 문맥과 단어 간 상호작용을 모델링하고 특성(feature)을 추출해 내서 더욱 정교한 언어 이해와 생성이 가능하게 되는 것이다.
딥러닝 기반 언어모델은 인공신경망(artificial neural network, ANN)을 사용하여 텍스트 데이터를 처리하며, 이를 통해 복잡한 자연어의 의미와 문맥을 더욱 잘 이해할 수 있게 된다. 딥러닝 알고리즘은 다양한 레이어를 거쳐 입력 데이터를 처리하고 가중치를 조정하면서 학습을 진행하며, 이를 통해 언어모델은 텍스트 데이터에 대한 확률 분포를 학습하게 된다.
자연어처리는 기본적으로 단어의 배치 순서에 따라 의미가 달라지는 연속성을 띄는 데이터이기 때문에 시계열(time series) 데이터와 비슷한 성격을 띤다. 따라서 시간순서대로 분석 태스크를 수행하는 순환신경망(Recurrent Neural Network, RNN), 장단기메모리(Long-Short Term Memory, LSTM), GRU(Gated Recurrent Units) 모델이 주로 사용되어 왔다. 그러나 주로 이미지 처리(image processing) 태스크에 많이 활용되었던 컨볼루션 뉴럴 네트워크(Convolutional Neural Network, CNN)를 자연어처리에 적용하여 병렬처리를 통해 학습시간을 줄이고 준수한 성능을 거둔 사례도 나오는 등 다양한 연구 사례가 발표되고 있다.
출처 :semiengineering.com
- 자연어처리에 있어서 다양한 딥러닝 모델의 활용사례
위에서 언급한 다양한 딥러닝 모델은 자연어처리 태스크에 따라 맞춤형으로 적용할 수 있다.
예를 들어 RNN은 텍스트를 순차적으로 읽어나가는 방식으로 동작하므로 긴 문장을 핵심만 요약하는 텍스트 요약(text summarization) 태스크에 적합한다. 반면에 CNN 알고리즘은 텍스트를 전체적으로 훑고 지나가는 방식으로 동작하므로 텍스트 감지(Text Detection)나 텍스트 인식(Text Recognition)과 같은 태스크에서 텍스트 영역을 검출하고 인식하는 데에 활용될 수 있다.
자연어처리에서 RNN과 CNN(출처 : Data Science Duniya)
또한 한 가지 딥러닝 모델만을 사용하는 것이 아닌, 두 개 이상의 딥러닝 모델을 혼합하여 더욱 좋은 성능을 내도록 설계하는 것도 가능하다. 예를 들어 인코더와 디코더로 이루어진 어텐션 메커니즘을 사용한 트랜스포머(Transformer)를 사용해 광역(global) 정보를 더욱 잘 이해하는 동시에 지역(local) 정보를 잘 이해하는 CNN 네트워크를 혼합시켜 Conformer라는 모델을 만들어내어 더욱 좋은 성능을 자랑하는 모델을 만들기도 한다.
위에서 살펴보았듯이 딥러닝 기반 언어모델의 중요한 장점 중 하나는 범용성이다. 각 태스크에 따라 가장 적합한 딥러닝 알고리즘을 선택하여 사용할 수 있으므로 자연어처리 분야에서 다양한 문제를 다룰 수 있다. 이러한 유연성과 성능 향상은 자연어처리 기술의 발전에 큰 기여를 하고 있으며, 더욱 다양하고 정교한 자연어처리 애플리케이션의 개발과 연구를 가능하게 한다. 이번 시간에는 대표적인 딥러닝 알고리즘의 하나인 순환신경망이 자연어처리에 어떻게 적용되는지 공부해 보자.
RNN 기반 언어모델은 문장을 정독하는 방식과 유사하게 하나하나의 단어를 해석하고 읽어나가는 방식으로 동작한다. 이러한 모델은 시계열 데이터나 자연어와 같이 입력 데이터의 값이 출력 데이터에 큰 영향을 미치고, 순서에 따라 의미가 달라지는 연속형 데이터를 처리하는 데에 많이 사용된다.
RNN의 작동 방식은 Hidden State(은닉상태)가 출력값에 어떻게 영향을 미치는지 이해하는 것이 중요하다. RNN 모델은 입력값으로 들어온 x0 값이 첫 번째 시퀀스를 거치면서 h0라는 은닉상태를 출력한다. 그리고 다음 x1 값이 두 번째 시퀀스에 입력될 때 이전 시퀀스의 정보를 저장하고 있는 h0라는 은닉상태가 반영되어 새로운 은닉상태인 h1이 생성된다. 이러한 방식으로 이전 시퀀스의 정보를 가지고 있는 은닉상태가 다음 시퀀스에 영향을 미치는 반복과정이 진행되면서 RNN이 작동한다.
RNN은 순전파(Feed-Forward)와 역전파 알고리즘(Backpropagation)을 통해 모델의 가중치를 조정하면서 시퀀스 데이터를 처리하고 다음 요소를 예측한다. 이러한 방식을 통해 RNN 모델은 문맥을 이해할 수 있게 된다. 예를 들어 'I cycle to work(나는 자전거로 출근한다)'와 'I work to cycle(나는 자전거를 타려고 일한다)'이라는 문장이 있을 때, 기존의 언어모델 방식으로는 두 문장의 차이를 구분하기 어렵다.
그러나 RNN은 'cycle'이라는 단어 뒤에 'I'라는 단어가 오고, 'work'라는 단어 뒤에 'I cycle to'라는 단어들의 집합이 온다는 정보를 이미 포함하고 있기에 두 문장의 차이점을 명확히 구분해 낼 수 있다. RNN은 텍스트 데이터와 시계열 데이터 등에서 매우 유용하게 사용되며, 문장의 의미와 문맥을 파악하는 데에 뛰어난 성능을 보여준다.
*역전파(Backprogagation) : 기울기 기반 최적화 알고리즘에 따라 출력층에서 입력층(입력과 반대 방향)으로 오차를 전파해 가중치를 조정하는 방식
이번시간에는 딥러닝 기반 언어모델(DLM)의 개요와 다양한 알고리즘이 자연어처리 태스크에 어떻게 적용될 수 있는지 간략히 살펴보았다. 또한 자연어처리분야에서 전통적으로 가장 많이 활용되어 왔던 순환신경망의 학습과정에 대해서도 배워보았다. 그러나 이러한 RNN 기반 딥러닝 모델에는 기울기 소실(gradient vanishing)이라는 치명적인 한계가 있다. 다음시간에는 기울기 소실 문제를 해결하기 위한 알고리즘인 LSTM과 GRU에 대해 알아보도록 하겠다.