[Natural Language Processing] One-Hot Encoding부터 Word2Vec까지
컴퓨터가 사람의 언어를 이해하기 위해 이때까지 많은 노력들이 있었습니다. 본 글에서는 지금까지 자연어 처리(NLP)가 어떻게 발전해 왔는지를 설명하며, 각 방식은 이전의 어떤 한계점들을 해결하기 위해 만들어진 것인지를 중점적으로 알아보는 시간을 가져보겠습니다.
자연어 처리란?
자연어 처리, 즉 NLP(Natural Language Processing)는 컴퓨터가 사람의 언어를 이해하고 다룰 수 있게 하는 학문입니다. 그렇다면, 컴퓨터는 어떻게 지금처럼 우리의 말을 이해할 수 있게 되었을까요? 지금부터는 자연어 처리가 어떻게 발전해 왔는지를 설명드리겠습니다.
우선, 크게 보았을 때는 One-Hot Encoding → Distributional Hypothesis(분산 가설) → Word2Vec 방식으로 발전하였습니다.
One-Hot Encoding
One-Hot Encoding 방식의 정의는 다음과 같습니다.
범주형 데이터를 머신러닝 모델이 인식하고 처리할 수 있도록 숫자로 변환하는 기법
해당 방식은, 이전의 Integer Encoding(정수 인코딩) 방식의 문제를 해결하기 위해 나온 방법입니다. 정수 인코딩 방식은 고유한 단어를 고유한 정수로 매핑하여 표현하는 방식입니다. 예를 들어서, Apple: 1, Banana: 2와 같이 정수를 1씩 더해가면서 각 단어를 구분 시키는 방식을 의미합니다. 하지만 정수 인코딩 방식은 한계점이 있었습니다.
정수 인코딩의 한계점
1. 컴퓨터가 각 단어를 고유한 정수로 구분해서 아는 것이지, 완벽한 의미를 아는 것이 아님.
(Apple이 먹는 것인지, 과일인지 등의 고차원적인 특성을 알지 못함.)
2. 숫자가 가지는 순서와 거리의 특성으로 인한 모순이 발생함.
여기서 2번 한계점이 중요합니다. 숫자는 순서가 있기 때문에 1 → 2, 2 → 3과 같이 대소관계를 비교할 수 있습니다. 하지만 자연어에서는 Banana > Apple 라고 하는 것이 의미적으로 모순이 생길 수 있습니다. 또한 숫자는 과 같이 거리를 측정할 수 있지만, 정수 인코딩 방식에서는 해당 방식 또한, 의미적 모순이 생길 수 있습니다.
그렇기 때문에 학자들은 순서형(Ordinal)에서 범주형(Categorical)으로 인코딩 방식을 바꿔야 한다고 말했습니다. 그렇기에 One-Hot Encoding 방식은 각 단어를 명확하게 분류하여 각각 독립된 축으로 표현하기 위해 만들어진 방식입니다.
One-Hot Encoding은 단어 N개를 구분하기 위해 하나의 단어를 표현할 때 N 길이의 리스트를 만들고, 해당 단어라는 것을 나타내기 위해 특정 인덱스 하나에만 1을 저장합니다. 예를 들면, Apple, Banana, King, Queen이라는 단어들을 나타내기 위해서
하지만, 그럼에도 불구하고 One-Hot Encoding은 자연어 처리로 활용하기에는 아쉬운 점과 한계점이 존재했습니다.
One-Hot Encoding 방식의 한계점
1. 희소성 (Sparsity)
첫번째는 희소성입니다. One-Hot Encoding에서 단어를 표현한 벡터를 보시면, 해당 단어를 결정적으로 구별하는 값은 한개 밖에 되지 않는다는 것을 아실 수 있습니다. 이는 만약 구별해야 할 데이터가 1,000개라면 999개의 데이터가 무의미하게 0으로 가득 채워지게 되는 것입니다. 이렇게 데이터에서 대부분의 값들이 무의미한 상황을 희소하다라고 표현합니다.
2. 직교성 (Ortogonality)
두번째는 직교성의 문제입니다. 이는 각 단어 간의 의미가 단절되었다는 것입니다. Apple과 Banana는 Apple과 King보다는 상대적으로 의미가 비슷하다는 것을 여러분들은 아실겁니다. 하지만 One-Hot Encoding 방식으로 각 단어를 표현하게 된다면, 컴퓨터는 각 단어 간의 관계를 모두 "남남"으로 인식합니다.
주로 단어 간의 관계를 나타낼 때는 코사인 유사도를 사용하지만, 벡터 크기가 큰 영향을 미치지 않는 상황에서는 내적을 통해서도 알 수 있으니 One-Hot Encoding 방식에서 Apple, Banana, King 단어들끼리의 의미를 계산해 보겠습니다.
Apple과 King을 내적하면 Banana와 내적했을 때와 똑같이 0인 것을 알 수 있습니다. 비로서 저희는 One-Hot Encoding 방식에서는 컴퓨터가 모든 단어 관계를 똑같이 "남남"으로 이해한다는 것을 알 수 있습니다.
Distributional Hypothesis
Distributional Hypothesis 즉, 분산 가설 방식은 처음에 "단어 간의 관계를 좀 나타내고 싶다." 라는 말로 인해 만들어지게 된 자연어 처리 방식입니다.
1957년 J. R Frith라는 언어학자가
단어의 의미는 그 단어 주변에 나타나는 단어에 의해 정의된다.
라는 가설을 내세웠습니다. 이는 Count-Based라고 하며, 특정 단어가 포함된 문장에서 사용되는 단어들을 Count 한다면, 그 특정 단어가 어떤 맥락에서 사용되는지를 알 수 있지 않을까? 해서 나온 말입니다.
예를 들어서, Apple is very delicious랑 Banana is very delicious라는 문장이 있을 때, Apple이랑 Banana 둘다, is, very, delicious라는 단어를 포함하고 있기 때문에, 서로 의미적으로 비슷할 것이라고 추측하는 방식입니다.
이때 특정 단어가 어떤 단어와 함께 사용되었는지를 Count 하기 위해, Co-occurrence Matrix 즉, 동시 출현 행렬이라는 것을 만듭니다.
Co-occurrence Matrix (동시 출현 행렬)
동시 출현 행렬은 크기입니다. 이때 는 의 약자이며, 속 고유한 단어의 개수를 의미합니다. 또한, 는 단어 주변에 단어 가 등장한 횟수를 의미합니다.
이때, 주변이라는 말이 정말 중요합니다. 동시 출현 행렬을 만들 때는 특정 단어를 기준으로, 해당 단어가 포함된 문장 속 자신을 제외한 단어들을 Count 합니다. 하지만 이때 Window(단어 기준 주변 몇개까지 셀 것인지) 값을 설정하지 않고, 문장 속 모든 단어를 세어버린다면 잘못된 의미를 가지는 행렬이 될 수 있기 때문입니다.
예를 들어보겠습니다. "최가온 선수가 동계 올림픽에서 금메달을 목에 걸었는데, ~(중간에 엄청 많은 단어들)~~ 권민재 선수는 출전도 하지 못했다." 라는 문장이 있습니다. 이때, '권민재' 라는 단어를 기반으로 문장 속 단어들을 Count하게 된다면 Window를 설정하지 않았을 때, 수상하지 못한 '금메달'이라는 단어까지 Count해버리게 됩니다.
이렇게 될 경우, 의미·맥락적으로 포함되면 안 될 단어까지 동시 출현 행렬에 잘못 Count가 되기 때문에 Window 값이 존재하는 것입니다. (Window 값을 N개 설정한다면, 특정 단어를 기반으로 왼쪽 N개, 오른쪽 N개 Count해서 2N 개만큼 Count 됩니다.)
그러면 지금부터는 "Apple is very delicious.", "Banana is very delicious", "King is very stately person."이라는 문장들에 대해서 동시 출현 행렬을 만들어 보겠습니다. (편의를 위해서 Window 값은 설정하지 않았습니다.)
보시면, Apple의 벡터(행)과 Banana의 벡터(행)이 같은 것을 아실 수 있습니다. Apple과 Banana의 내적 값이 Apple과 King의 내적 값보다 크기 때문에, 드디어 단어들의 의미적 관계(누구랑 더 비슷하다. 등)를 알 수 있게 되었습니다.
하지만 이럼에도 불구하고, 한계점은 존재했습니다.
Distributional Hypothesis의 한계점
1. 희소성 (Sparsity)
각 열은 그저 단어를 의미하며, 각 원소는 얼마나 단어 에 대해서 단어 가 Count 되었냐를 의미하기 때문에, Count가 되지 않는 단어가 더 많다면 희소하게 됩니다.
2. 빈도 왜곡 (Frequency Bias)
위에서 동시 출현 행렬을 보시면, 모든 문장에 'is', 'very' 와 같은 단어가 포함되어 있습니다. 이렇게 거의 모든 문장에서 나오는 'a', 'the' 와 같은 단어들로 인해 동시 출현 행렬이 오염되어 의미적 유사성을 나타내는 행렬이 아니라, 그저 단순히 많이 등장한 값들에 영향을 받은 행렬이 될 수 있습니다.
3. 의미 압축 부재 (Lack of Compression)
사실 이게 제일 중요한 내용입니다. 동시 출현 행렬의 각 열은 그저 단어를 의미합니다. 그 말은 즉, 의미 구조를 요약하거나 압축하지 않았다는 것을 의미합니다.
Apple과 Banana는 과일이라는 고차원적인 특성이 있습니다. 하지만 현재 동시 출현 행렬에서는 과일이라는 의미를 압축한 열로 분류하는 것이 아니라, 그저 단어가 Count 되었는가?를 구분짓는 열로만 이루어져 있습니다. 동시 출현 행렬에서의 열은 단순히 단어 그 자체입니다. Apple과 Banana가 비슷한 이유는 그저 단순히 겹치는 단어가 많아서입니다. 고차원적인 특성을 압축한 열이 존재하기 때문에 과 같은 단어 유추를 하지 못합니다. (King이 왕족, 남자라는 고차원적인 특성을 가지고 있기 때문에, 그 중 남자를 빼고, 여자를 더해서 여왕이 된다는 겁니다.)
4. 전역 통계 의존성 (Global Count Dependence)
마지막으로 전역 통계 의존성에 한계가 있습니다. 이건 단순하게 에 문장들이 더 추가가 된다면, Count를 다시 하여 동시 출현 행렬을 모두 수정해야 하기 때문에 있는 한계점입니다.
Word2Vec
작성 중입니다.