brunch

You can make anything
by writing

C.S.Lewis

by 알바트로스 Jan 07. 2024

컴퓨터는 어떻게 인간의 언어를 인식할까?(3)

분포기반 단어표현이란?


지난시간에 우리는 0과1로 된 매우 간단한 행렬만으로도 다양한 자연어처리 테스크가 가능하다는 것을 배웠습니다. 그러나 0과1로 된 행렬 만으로 테스크를 처리하는 카운트 기반 방식에는 희소성 문제라는 치명적인 한계가 있었죠. 


카운트 기반 방식의 치명적인 한계를 극복하기 위해 분포 기반 단어표현(distribution based word representation)이 등장합니다. 분포 기반 단어표현 방식은 통계학의 분포가설(distributional hypothesis)에 그 뿌리를 두고 있는데, 간단하게 말하면 문장 속에서 인접한 단어가 무엇인지 알면 그 사이의 단어도 확률적으로 유추할 수 있다는 것입니다. 분포 기반 단어표현 방식은 단순히 등장 단어의 빈도수만 고려하던 카운트 기반 단어표현 방식에 비해 실제 언어의 모습에 더 가깝게 구현해냈다고 할 수 있습니다.


예를 들어 ‘The student reads a book’이라는 문장 속에서 각 위치에 어떤 단어가 올지 유추해 보고 싶다고 가정해 봅시다. ‘The student’와 ‘a book’이라는 단어들만 가지고도 우리는 그 사이에 위치하는 단어가 그 어떠한 단어보다 ‘reads’이 될 확률이 높다는 사실을 알 수 있습니다. 즉 분포 기반 단어표현은 ‘대체로 자연어의 문장은 비슷한 분포를 띄기 때문에, 확률적으로 어떤 단어가 올지 예측해 볼 수 있다.’라는 생각에서 비롯된 것입니다.


이러한 분포가설을 구현한 핵심 알고리즘은 단어를 벡터로 변환하는 Word2Vec입니다. Wor2Vec은 또다시 주변 단어들을 통해 가운데 들어갈 단어를 예측하는 CBOW(Continuous Bag-of-Words)와 반대로 한가지 단어를 보고 그 주변에 들어갈 단어들을 예측하는 Skip-gram 방식으로 나뉩니다. 이러한 Word2Vec 알고리즘을 업그레이드하여 성능을 개선한 알고리즘들도 등장하였는데, 이에는 Word2Vec에 철자 방식의 임베딩을 더해준 Fasttext와, 이전 시간에 배운 카운트 기반 단어표현과 분포 기반 단어표현을 모두 사용한 Glove가 있습니다.


워드 임베딩으로 표현한 단어들은 Dense 하며, 유사도를 측정할 수 있다.


(출처 : The Ultimate Guide to Word Embeddings)


단어 임베딩에서 배웠듯이, 분포기반 단어표현에서는 단어표현에 원핫 인코딩방식이 아닌 워드 임베딩(word embedding[비비81] )방식을 사용합니다. 0과1로 구성된 원핫 인코딩에서는 단어와 단어 사이의 관계를 계산하기가 불가능 했지만, 실수로 구성된 워드 임베딩을 거치면 단어 간의 유사도(similarity) 계산이 가능해집니다. 이러한 원리로 위에서 살펴본 분포가설을 통한 단어 예측(prediction)이 가능해지는 것입니다.


컴퓨터도 빈칸 채우기로 언어를 배운다! : Word2Vec


Word2Vec은 2013년 개발된 인공신경망(Artificial Neural Network , ANN) 기반 모델입니다. 문장 속 단어를 유추해 내는 비지도 학습(unsupervised learning) 방식을 사용합니다. 즉, 사람이 일일이 단어의 유사성을 지정해 주지 않아도, 분포가설을 통해 스스로 단어 간의 유사성을 예측해 내 문장 속 단어를 맞추는 방식으로 작동하는 것이죠. Word2Vec이 작동하는 방식은 크게 CBOW와 Skip-gram 두 가지로 나뉩니다.


CBOW(Continuous Bag-of-Words)


주변의 여러 단어를 보고, 그사이에 들어갈 단어를 예측하는 방식입니다. 어학 시험에 자주 등장하는 빈칸 채우기를 생각하면 직관적으로 이해할 수 있습니다.


CBOW 예시 (출처 :Continuous Bag of Words (CBOW) – Single Word Model – How It Works)


Skip-gram


한가지 단어를 보고 그 주변에 올 단어들을 예측하는 방식입니다. 한가지 단어만 보고 앞뒤의 단어를 예측해 내야 한다는 개념이 우리 인간에게는 낯설지만, 오히려 CBOW보다 좋은 성능을 내는 것으로 알려져 있습니다.


Skip-gram 예시 (출처 : Word2vec Skip gram Explained)


분포 기반 단어표현방식 알고리즘인 Word2Vec에 대해 소개했습니다. 컴퓨터는 워드 임베딩(word embedding) 과정을 통해 단어를 표현하면서 카운트 기반 단어표현방식이 가진 희소행렬 문제와 단어 간의 관계 파악이라는 문제를 해결했습니다. 또한 분포가설(distribution hypothesis)을 도입함으로써 예측(prediction)이라는 개념을 구현할 수 있게 해주었습니다. 그러나 분포 기반 단어표현방식 역시 완벽하지는 않습니다. 이제 분포 기반 단어표현방식의 한계점을 알아보고 이를 보완하기 위한 새로운 NLP 기법인 딥러닝 방식 언어모델에 대해 알아보도록 합시다.


기존 통계 기반 언어모델(Statistical Language Model, SLM)의 문제점


컴퓨터가 단순히 단어의 등장 횟수와 0과 1의 이진수만으로 텍스트를 표현하는 방식인 BoW(bag-of-words)  방식과, 이에 한 단계 진화하여 숫자에 더욱 많은 정보를 표현하는 워드 임베딩 방식에 대해 알아보았습니다. 이 두 가지 방식은 각각 매우 단순하고 직관적인 방식으로 단어를 표현할 수 있다는 장점과, 통계학 이론에 기반하여 단어와 단어 사이의 유사도와 관계를 어느 정도 구현해 낼 수 있다는 장점이 있었죠.


이러한 방법론을 통해 인간의 언어를 구현해 낸 모델을 통계 기반 언어모델(Statistical Language Model, SLM)이라고 합니다. 그러나 기존 단어 표현 방식들은 아래와 같은 한계점들은 딥러닝 기반 언어모델(Deep learning Language Model, DLM)에 비해 다음과 같은 한계점을 갖는다.


다원현상(polysemy) 문제


워드 임베딩  방식에 기초한 Word2vec 방식으로는 단어의 다의어적 의미를 구분하기 어렵다는 한계가 있다. 예를 들어, "like"라는 단어는 문맥에 따라 '~과 같은'이나 '좋아하다'의 전혀 다른 의미로 사용될 수 있지만, word2vec은 이러한 다의적인 의미를 정확히 구분해 내지 못합니다. 따라서, Word2vec은 단어의 다양한 의미와 뉘앙스의 차이를 구별하지 않고 동일한 벡터로 표현한다는 문제점이 있습니다.


희소(sparsity) 문제


확률을 할당하고자 하는 시퀀스(sequence)에 들어갈 단어가 corpus(말뭉치) 안에 등장하지 않을 때, Word2vec은 확률을 0으로 계산해 버리는 문제를 희소(sparsity) 문제라고 합니다. 예를 들어 기존 방식으로는 사전 입력된 어휘사전에 ‘run(달리다)’이라는 단어가 있어도 ‘running(달리는 중)’이라는 단어가 없다면 ‘He is running(그는 달리는 중이다)’이라는 문장을 표현하지 못합니다.


데이터 부족 및 의존성 문제


기존의 방식은 학습에 많은 양의 텍스트 데이터가 필요하다. 특히, 전문 분야에 국한된 단어나 특수한 문맥에 대해서는 적절한 단어 표현을 제공하기 어려울 수 있습니다. 또한 Word2vec은 대량의 텍스트 데이터와 통계적인 모델 학습이 필요하기 때문에 데이터의 품질과 양, 그리고 모델 학습에 필요한 계산 자원에 의존하게 됩니다.


비언어적 특성을 반영할 수 없는 근본적인 문제점


Word2vec은 주로 단어의 분포 패턴이 비슷한 확률을 띌 것이라는 가정(assumption)하에 단어 간 유사성을 계산합니다. 이는 유사한 문맥에서 함께 자주 등장하는 단어들이 비슷한 벡터로 표현되는 경향이 있음을 의미합니다. 그러나 언어의 문맥을 파악할 때 많은 경우 단어의 의미적 유사성을 정확하게 포착하기 위해서는 문맥 이외에도 상황적 특수성이나 제스쳐나 말의 높낮이 같은 비언어적 특성을 반영할 필요가 있습니다. 이는 인공지능 언어모델전체의 문제점이라고도 말할 수도 있습니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari