딥러닝/NLP

한국어 임베딩 - 단어 수준 임베딩 (NPLM)

eunsour 2022. 10. 3.
반응형

 이 장에서는 다양한 단어 수준 임베딩 모델을 설명한다. NPLM, Word2Vec, FastText 등은 예측(prediction) 기반 모델, LSA, GloVe, Swivel 등은 행렬 분해(matrix factorization) 기반의 기법들이다. 가중 임베딩(Weighted Embedding)은 단어 임베딩을 문장 수준으로 확장하는 방법이다. 

 

1. NPLM

 Neural Probabilistic Language Model(NPLM)은 단어들의 연쇄가 주어졌을 때 다음 단어가 무엇인지 맞추는 과정에서 분산표상된 단어 벡터들을 만드는 방법론이다. 자연어 처리 분야에서 임베딩 개념을 널리 퍼뜨리는 데 일조한 선구자적 모델로서 임베딩 역사에서 차지하는 역할이 작지 않다.

 

1.1 NPLM 개요

 NPLM은 딥러닝의 대부 요슈아 벤지오 연구 팀이 제안한 기법(Bengio et al., 2003)이다. NPLM은 통계 기반의 전통적인 언어 모델의 한계를 극복하는 과정에서 탄생했다. 벤지오는 기존 언어 모델의 단점을 다음과 같이 정리했다.

  • 학습 데이터에 존재하지 않는 n-gram이 포함된 문장이 나타날 확률 값을 0으로 부여한다. 물론 백오프스무딩으로 이런 문제를 보완할 수 있지만 완전한 것은 아니다. 
  • 문장의 장기 의존성(long-term dependency)을 포착해내기 어렵다. 다시 말해 n-gram 모델의 n을 5 이상으로 길게 설정할 수 없다. n이 커질수록 그 등장 확률이 0인 단어 시퀀스가 기하급수적으로 늘어난다. 
  • 단어/문장 간 유사도를 계산할 수 없다.

 NPLM은 이러한 기존 언어 모델의 한계를 일부 극복한 언어 모델이라는 점에서 의의가 있다. 그뿐만 아니라 NPLM 자체가 단어 임베딩 역할을 수행할 수 있다. NPLM 아키텍처의 개괄적인 모습은 다음과 같다. 

 

 

1.2 NPLM 입출력

 NPLM은 단어 시퀀스가 주어졌을 때 다음 단어가 무엇인지 맞추는 과정에서 학습된다. 예컨데 [발, 없는, 말] 이 세 개 단어가 주어졌다고 가정했을 때, 그다음에 올 단어가 말뭉치에서는 [천리]와 [간다]가 자주 등장했다고 가정한다.

 

 NPLM은 다음 수식을 최대화하려고 한다. 

 

NPLM의 출력

 

 NPLM은 위 식의 조건부 확률을 최대화하는 방향으로 학습을 하게 된다. 즉 조건부 확률 P(천리 | 발, 없는, 말이), P(간다 | 없는, 말이, 천리)를 각각 높인다는 의미와 같다. 이처럼 NPLM은 직전까지 등장한 n−1개 단어들로 n번째 단어를 맞추는 N-gram 모델이 그 본질이다.

 

 수식에서 𝑤𝑡는 문장의 𝑡번째 단어를 가리키며, 𝑦𝑤𝑡는 𝑤𝑡라는 단어에 해당하는 점수 벡터이다. 그 크기는 말뭉치 전체의 단어 수(𝑉)에 해당하는 차원을 가졌다. 만약 𝑉가 3이라면 𝑦𝑤𝑡는 [1.2,3.4,2.1] 이런 식의 벡터가 된다.

 

 NPLM 구조 말단의 출력은 𝑉차원의 스코어 벡터 𝑦𝑤𝑡에 소프트맥스 함수를 적용한 𝑉차원의 확률 벡터이다. 이는 곧 수식에 정의된 조건부 확률과 같다. NPLM은 확률 값이 가장 높은 요소의 인덱스에 해당하는 단어가 실제 정답 단어와 일치하도록 학습을 진행하게 된다.

 

 요컨대 정답 인덱스에 해당하는 스코어(분자)를 높이고, 나머지 인덱스에 해당하는 스코어(분모)는 낮춰야 위 식에 정의된 조건부 확률을 높일 수 있다.

 

 이번엔 입력을 살펴본다. 문장 내 𝑡번째 단어(𝑤𝑡)에 대응하는 단어 벡터 𝑥𝑡를 만드는 과정이다. 아래 수식과 같다.

 

NPLM의 입력(1)

 

 우선 𝑚 x 𝑉 크기를 갖는 커다란 매트릭스를 우선 만든다. 𝑚은 𝑥𝑡의 차원수로, 𝐶의 모든 요소 값은 초기에 랜덤 설정한다. 𝑤𝑡는 𝑡번째 단어에 대한 One-hot-Vector이다. 𝑡번째 요소만 1이고 나머지는 0인 벡터이다. 𝐶와 𝑤𝑡의 내적은 𝐶라는 행렬에서 𝑡번째 열만 참조(lookup)하는 것과 본질적으로 같다.

 

행렬 C 참조하기

 

1.3 NPLM 구조

 NPLM 아키텍처의 개괄적인 모습은 다음과 같다. 

 

NPLM(Bengio et al., 2003)

 

 입력에서 [없는, 말이, 천리] 이렇게 세 개 단어가 주어졌을 때 [간다]라는 단어를 예측해야 하는 상황이라고 가정하자. 우선 세 개 각각의 단어의 인덱스 값을 확인한다. 위의 수식처럼 세 개 단어에 해당하는 열 벡터를 𝐶에서 참조한 뒤, 이 세 개 벡터를 묶어주면(concatenate) NPLM의 입력 벡터 𝑥가 된다.

 

 위 NPLM의 아키텍처 그림에서 하단에서 상단으로 봤을 때 파란색 선으로 그어진 레이어가 각각 입력층(input layer), 은닉층(hidden layer), 출력층(output layer)이다. 스코어 벡터 𝑦𝑤𝑡를 계산하는 방식은 우선 𝑥𝑡와 H를 내적한 뒤 bias term ‘d’를 더해 은닉층을 만든다. 여기에 U를 내적한 뒤 bias term b를 더해주면 𝑉차원의 스코어벡터 𝑦𝑤𝑡가 나오게 된다.

 

NPLM 스코어 벡터 y 계산

 

 마지막으로 𝑦𝑤𝑡에 소프트맥스 함수를 적용한 뒤 이를 정답 언어인 **[간다]**의 인덱스와 비교해 역전파(backpropagation)하는 방식으로 학습이 이루어지게 된다. NPLM 학습이 종료되면 우리는 행렬 𝐶를 각 단어에 해당하는 m차원 임베딩으로 사용한다.

 

 다음 수식은 NPLM의 학습 파라미터 차원 수를 정리한 것이다. 이후에 설명하는 단어 임베딩 기법들과 비교하면 학습해야 하는 파라미터 종류가 많고 그 크기 또한 큰 편이다. 이후 제안된 단어 임베딩 기법은 추정 대상 파라미터를 줄이고 그 품질은 높이는 쪽으로 발전해왔다.

NPLM의 학습 파라미터

 

1.4 NPLM과 의미 정보 

 NPLM은 단어의 의미를 어떻게 임베딩에 녹여낼 수 있는 걸까. Bengio et al. (2003)이 예로 든 그림을 먼저 본다. 

 

벤지오 연구 팀이 예로 든 유사 문장(Bengio et al., 2003)

 

 우선 n-gram의 n을 4로 두고 생각해본다. 그렇다면 NPLM은 직전 3개 단어를 가지고 그다음 단어 하나를 맞추는 과정에서 학습된다. 네 번째 단어가 [walking]인 문장은 다음 그림과 같다. NPLM은 다음 그림의 입력을 받으면 [walking]이 출력되도록 학습한다. 

 

 따라서 [The, A, cat, dog, is, was] 등은 [walkig]이라는 단어와 모종의 관계가 형성된다. 바꿔 말하면 [The, A, cat, dog, is, was] 등에 해당하는 C 행렬의 행 벡터들은 [walking]을 맞추는 과정에서 발생한 학습 손실(train loss)을 최소화하는 그래디언트(gradient)를 받아 동일하게 업데이트된다. 결과적으로는 [The, A, cat, dog, is, was] 벡터가 벡터 공간에서 같은 방향으로 조금 움직인다는 이야기다. 

 

타깃 단어 walking을 공유하는 3-gram(Bengio et al., 2003)

 

 문장에서 네 번째 단어가 [running]인 3-gram을 뽑아보면 다음 그림과 같다. NPLM은 다음 그림의 입력을 받으면 [running]이 출력되도록 학습한다. 따라서 [The, A, cat, dog, is, was] 또한 [running]이라는 단어와 관계를 지니게 된다. 결과적으로는 [The, A, cat, dog, is, was] 벡터가 벡터 공간에서 같은 방향으로 업데이트된다. 

 

타깃 단어 running을 공유하는 3-gram(Bengio et al., 2003)

 

 NPLM은 그 자체로 언어 모델 역할을 수행할 수 있다. 예컨대 학습 데이터에 없는 [The mouse is running in a room]이라는 문장의 등장 확률을 예측해야 한다고 가정해볼 때, 기존의 통계 기반 n-gram 모델은 학습 데이터에 한 번도 등장하지 않은 패턴에 대해서는 그 등장 확률을 0으로 부여하는 문제점을 가지고 있다. 하지만 NPLM은 [The mouse is running in a room]이라는 문장이 말뭉치에 없어도 문맥이 비슷한 다른 문장을 참고해 확률을 부여한다. 

 

 

Reference

 
한국어 임베딩
저자 : 이기창
감수 : NAVER Chatbot Model
출판 : 에이콘출판사
발매 : 2019.09.26

 

 

Neural Probabilistic Language Model · ratsgo's blog

이번 포스팅에선 단어의 분산표상(distributed representation) 방식 가운데 하나인 Neural Probabilistic Language Model(NPLM)에 대해 살펴보도록 하겠습니다. NPLM은 Bengio(2003)에서 제안된 모델인데요, 단어를 벡터

ratsgo.github.io

 

반응형

댓글