Books/한국어 임베딩

[Books] Weighted Embedding

언킴 2022. 3. 25. 00:17
반응형

가중 임베딩(Weighted Embedding)은 단어 임베딩을 문장 수준 임베딩으로 확장하는 방법이다. 제안한 논문에서는 문서 내 단어의 등장은 저자가 생각한 주제에 의존한다고 가정한 후 분석을 수행한다. 즉, 주제에 따라 단어의 사용 양상이 달라진다는 것이다. 이를 위해 주제 벡터(Discourse vector) cs라는 개념을 도입했다. 본 논문에서는 cs가 주어졌을 때 어떤 단어 w가 등장할 확률을 다음과 같이 정의했다. 

P(w|cs)=αP(w)+(1α)exp(c~svw)Z

where c~s=βc0+(1β)cs,cocs 

이때 c0Rd는 common discourse vector를 의미하며, 가장 많은 빈도를 가진 주제 벡터다. αβ는 scalar hyperparameters 이며, Zc~s=wVexp(c~s,vw) 은 우변 두번째 항이 확률 값으로 되도록 해주는normalizing constant이다. 

 

한국어를 예로 들자면 '은, 는, 이, 가'와 같은 조사의 경우 우변의 첫 번째 항인 αP(w)가 높은 쪽으로 나가아겠지만 두 번째 항의 경우에는 주제 벡터 c~s와의 내적은 그다지 좋은 값을 가지지 않을 것이다. 다른 예로는 주제가 '학교'인 경우 '학생', '학식' 등의 단어는 우변의 첫 번째 항의 경우 상대적으로 낮은 P(x)를 가지지만, 두 번째 항의 경우 주제와 밀접한 관련이 있기에 높은 값을 지닐 것이다. 우변의 값들을 weighted sum 하여 결과를 산출한다. c~s,vwc~svwc~sTvw는 모두 내적을 의미하기에 혼용해도 상관없다.

 

그렇다면 문장 임베딩은 어떻게 할까? 문장은 단어들로 이루어진 시퀀스라고 볼 수 있다. 그렇기에 문장에 속한 모든 단어들이 등장할 확률의 누적 곱으로 표현할 수 있다. 그러나 문장의 길이가 길어질수록 확률값은 작아지기에 0에 가깝게 간다. 이러한 문제를 해결하기 위해 누적곱에 log를 적용하여 계산하며, 수식은 다음과 같다. 

p[s|cs]=wsp(w|cs)=ws[αp(w)+(1+a)exp(vw,c~s)Z]

fw(c~s)=log[αp(w)+(1α)exp(vw,c~s)Z]

우리는 확률 값을 최대화하는 지점을 찾을 때 목적 함수는 MLE를 사용하는 것을 알고 있다. 위 수식을 미분함으로써 변곡점을 찾아 확률이 최대가 되는 지점을 찾을 수 있을 것이다. 

fw(c~s)=1αP(w)+(1α)exp(vw,c~s)/Z1αZexp(vw,c~s)vw 

수식으로는 복잡해 보이지만 매우 간단한 미분 방식이다. αp(w)+(1α)exp(vw,c~s)Zt로 치환하면 log(t)를 미분하는 것에 불과하다. log(t)의 미분은 1t이고, t에 대해서 속미분을 진행하면 위와 같은 수식으로 쉽게 도출된다. 이때 주의할 점은 c~s를 제외한 나머지 변수들은 전부 상수로 취급한다. 우리는 이때 테일러 전개를 사용할 수 있다. 테일러 전개에 대한 자세한 내용은 여기를 참고하면 된다. 

fw(c~s)fw(0)+fw(0)Tc~s=constant+(1α)/(αZ)p(w)+(1α)/(αZ)vw,c~s

테일러 급수는 n번째 항 까지만 써서 원래 함수를 근사하는 방식이며, c~s에 대한 MLE의 수식은 아래와 같다. 

argmaxwsfw(c~s)wsap(w)+avw, wherea=1ααZ

자주 사용되는 단어(w)의 경우 ap(w)+a이기에 가중치가 적게 부여되는 방식으로 학습된다. 이는 정보성이 높은 단어의 경우 가중치를 높게 주는 TF-IDF의 아이디어와 비슷하다. 

 

가중 임베딩을 구현한 코드는 여기를 참고하면 된다.