Contents
행렬 분해는 단어-문서 행렬이나 TF-IDF 행렬 등의 행렬 구조에 차원 축소 방법을 적용해 차원의 수를 줄여 계산 효율성을 키우고, 행간에 숨어 있는 잠재 의미를 파악하는 것이 목표다. 언어 모델이 가질 수 있는 행렬은 단어-문서 행렬, TF-IDF 행렬, 단어-문맥 행렬, 점별 상호 정보량(PMI) 등이 존재하는데, 이번 글에서는 PMI 행렬의 특수한 버전인 PPMI 행렬에 대해서 다루어볼 것이다.
PMI는 두 확률변수 사이의 상관성을 계량화한 지표이며, 두 단어의 등장이 독립을 가정했을 때 대비 얼마나 자주 같이 등장하는지를 수치화한 것이고, 수식은 다음과 같다.
이와 같은 문제로 인해 자연어처리에서는 PMI 대신 PPMI(Positive Pointwise Mutual information)을 사용한다. PPMI는 0보다 작은 값은 전부 0으로 치환해 무시하는 방법이며, 수식은 다음과 같다.
그 외 Shifted PMI(SPMI)도 있는데, 이는
LSA는 truncatedSVD로 차원을 축소해 분석을 수행할 수 있다. truncatedSVD는 특이값 가운데 가장 큰 d개의 특이값을 가지고 원래 행렬을 근사하는 방식이다. SVD에 대한 내용은 여기를 참고하면 보다 자세히 설명하고 있다.
SPMI, Word2Vec
Levy and Goldbert는 네거티브 샘플링 기법으로 학습된 SGNS(Skip-gram with Negative Sampling) 모델의 학습은 SPMI 행렬을

여기서
GloVe
GloVe는 여기에 보다 상세기 작성해두었으니 참고하길 바란다. 간략히 설명하자면, 임베딩된 두 단어 벡터의 내적이 말뭉치 전체에서의 동시 출현 빈도의 로그 값이 되도록 목적 함수(Object Function)을 정의했다. 임베딩된 단어 벡터 간 유사도 측정을 수월하게 하면서도 말뭉치 전체의 통계 정보를 잘 반영하자는 목표를 지향한다.
Swivel
Swivel (Submatrix-Wise Vector Embedding Learner)은 구글에서 2016년 발표한 행렬 분해 기반 임베딩 기법이다.
하지만
본 논문에서는 학습하기에 앞서 다음과 같은 두 가지 가정을 가지고 학습을 수행한다.
1.
2.
첫 번째의 경우 직관적으로 이해할 수 있다. 두 번째의 경우에는 두 단어의 빈도 수가 적은 것이 우리의 데이터 확보가 적기 때문에 빈도 수가 적게 나타난 것 일수도 있기에 일부 관계가 있다고 판단해 학습을 할 때 약간 크게 되도록 학습을 수행한다.
LSA와 GloVe, Swivel의 코드는 여기를 참고하면 된다.
'Books > 한국어 임베딩' 카테고리의 다른 글
[Books] Weighted Embedding (0) | 2022.03.25 |
---|---|
[Books] 확률 기반 언어모델 (NPLM, Word2Vec, FastText) (0) | 2022.03.24 |
[Books] 한국어 전처리 (0) | 2022.03.07 |
[Books] 임베딩(embedding)의 종류 (5) | 2022.03.05 |
[Books] 한국어 임베딩 시작하기 (0) | 2022.03.05 |