Tensorflow 2 NLP(자연어처리)/단어 임베딩 9

[3-9] 단어 임베딩 평가 방법

단어 임베딩의 품질은 어떠한 기준으로 평가가 이루어 질까? ​ 크게 세 개로 나뉜다. 1. 단어 유사도 평가 (word similarity test) 2. 단어 유추 평가 (word analogy test) 3. 단어 임베딩 시각화 ​ ​ 1. 단어 유사도 평가는 일련의 단어 쌍을 미리 구성한 후에 사람이 평가한 점수와 단어 벡터 간 코사인 유사도 사이의 상관관계를 계산해 단어 임베딩의 품질을 평가한다. ​ 이때는 예측 기반 임베딩 기법(Word2Vec, FastText)이 행렬 분해 방법(GloVe,Swivel)들보다 의미적 관계가 잘 녹아있다는 결과가 나온다. (평가 데이터 셋 크가가 충분치 않기는 하지만 다음과 같은 경향을 띤다) ​ ​ 2. 단어 유추 평가는 단어 벡터간 계산을 통해 예를들어 '갑..

[3-8] Swivel이란?

단어 수준 임베딩 마지막 기법인 Swivel이다. ​ Swivel(Submatrix-Wise Vector Embedding Learner)은 구글 연구팀(Shazzer et al., 2016)이 발표한 행렬 분해 기반의 단어 임베딩 기법이다. ​ 해당 논문은 다음과 같다. ​ Swivel은 PMI 행렬을 분해한다는 점에서 단순히 중심단어-문맥단어 행렬을 분해하는 Glove와 차이점을 보인다. 또한 Swivel은 더 나아가 PMI의 단점을 극복할 수있게 설계하였다. ​ 그렇다면 PMI의 단점은 무엇일까? 학습과정에서 i,j 두 단어가 한번도 동시에 등장하지 않는 경우 로그 안의 값이 0이 되어 발산한다는 점이다. ​ 그래서 Swivel의 비용함수는 두가지로 나누니다. ​ 1. 말뭉치에 동시 등장한 케이스가..

[3-7] PMI 행렬 만드는 법

PMI 행렬을 만드는 기법을 하나 소개하겠다. ​ 기존의 단어-단어 행렬 등을 A라 하자 PMI행렬을 만들겠다는 것은 행에 해당하는 단어, 열에 해당하는 단어가 교차하는 부분의 원소자리에 그 두 단어간의 PMI값들로 채워넣고 싶은 것이다. 우리는 행에 해당하는 단어들에 대해 각각 전체 말뭉치에서 그 단어들이 등장할 확률을 미리 계산하여 (벡터)행렬로 나타낼 수 있다.(열에 해당하는 단어도 마찬가지) ​ ​ 단어 두개의 동시등장 '확률' 행렬은 기본 동시등장행렬에 말뭉치 개수(=중복을 허용한 전체 단어 등장수)로 나누어 주기만 하면 된다. PMI행렬은 에 로그를 취한 값으로 나타낼 수 있고, 행에 해당하는 단어들의 등장 확률 행렬과 열에 해당하는 단어들의 등장 확률 행렬을 대각행렬로 변환한다음 여기서 행렬..

[3-6] Glove란?

Glove는 당시 Word2Vec과 잠재의미분석 두 기법의 단점을 극복하고자 나온 단어 임베딩 기법이다. ​ 각각의 단점은 다음과 같다. 1. Word2Vec은 단어 간 유사도측정이 LSA(잠재의미분석)보다 유리하지만 사용자가 지정한 윈도우(타깃 단어 주위로 몇개의 단어까지 주변단어인가) 내의 로컬 문맥(local context)만 학습하기 때문에 말뭉치 전체의 통계 정보는 반영되기 어렵다. (그러나 이 단점은 Levy&Goldberg 2014 에서 Skip-gram 모델이 말뭉치 전체의 글로벌한 통계량인 SPMI 행렬을 분해하는 것과 동치라는 점을 증명하여 사라졌다.) ​ 2. 잠재의미분석은 말뭉치 전체의 통계량을 모두 활용할 수 있지만 단어간 유사도를 측정하기 어렵다. ​ ​ 이 단점을 극복하기 위해..

[3-5] Matrix Factorization이란?

간단히 말해 행렬 분해이다. ​ 하지만 기존의 행렬의 정보를 가지고 2개의 행렬로 분해하는 것이 아니라 충분히 작은 랜덤값을 가진 행렬 두개를 생성하고 그 두 행렬의 곱이 원래의 행렬과 유사해지도록 목적함수를 만든 다음 그 값을 줄여나가는 것이다. ​ 공부에 참고한 자료는 다음과 같다 1. 원래 행렬을 A , 분해 후 행렬을 Q,P 라 하자 그렇다면 다음을 만족도록 우리는 충분히 작은 랜덤값으로 차있는 행렬 Q,P를 업데이트 할 것이다. ​ 2. 업데이트를 위한 목적함수를 구한다. ​ 여기서 rui 는 예측행렬의 원소(원래 행렬 원소) 이고 , qiT,pu는 각각 QT행렬의 행벡터, p행렬의 열벡터이다. ​ 그렇다면 qTx p 는 내적처럼 스칼라값으로 나올 것이고 이 값을 rui와 같았으면 하는 것이 목..

[3-4] 잠재 의미 분석(LSA,Latent Semantic Analysis) 이란?

'단어-문서 행렬', 'TF-IDF 행렬' '단어-문맥 행렬' , 'PMI 행렬' 과 같은 단어와 단어, 문장간의 등장 빈도를 행렬로 나타내어 단어를 벡터로 표현할 수 있었지만, 차원이 너무 커 계산상의 효율성을 키우기 위해 차원은 축소하되 단어가 담고있는 의미를 보존하기 위해(정교하게 뽑아냄으로써 잠재 의미를 드러내기 위해)잠재 의미 분석이라는 방법이 등장했다. ​ 이는 성능이 아주 뛰어나지는 않지만, 뒤에 나오는 GloVe나 Swivel 과 같은 곳에 행렬 분해 기법으로서 사용된다. ​ PMI는 두 확률 변수 사이의 상관성을 계량화한 지표이다. ​ ​ i 가 일어날 확률, j가 일어날 확률과 i,j가 동시에 일어날 확률을 가지고 다음과 같은 식으로 표현하면, PMI는 i,j가 자주 같이 등장할수록 커..

[3-3] FastText란?

FastText (Boganowski eta al., 2017)은 페이스북에서 개발해 공개한 단어 임베딩 기법이다. 기본적으로 Word2Vec과 같지만 FastText의 특징은 각 단어를 문자단위 n-gram으로 표현하여 학습한다는 것이다. 즉, Word2Vec은 단어들만으로 학습했다고 한다면, FastText는 더 나아가 단어 내에 들어있는 단어들까지 학습한다는 것이다. 예를들어 abcd라는 단어가 있다면 이를 n=3으로 표현한다고 하자. 우리는 abcd를 => , 5개의 문자 단위 n-gram 벡터를 합해 표현한다. ​ 그래서 기존 Word2Vec의 확률계산에 까지 벡터로써 업데이트 하는 것이다. ​ 그렇다면 이점이 무엇일까? ​ 바로 미등록 단어(+오타) 에도 강해진다는 것이다. 또한 조사나 어미가..

[3-2] Word2Vec란?

Word2Vec은 2013 구글 연구 팀이 발표했고 가장 널리 쓰이고 있는 단어 임베딩 모델이다. ​ Word2Vec 기법은 두 개의 논문으로 나누어 발표되었다. ​ 논문은 다음과 같다. (Mikolov et al., 2013a) https://arxiv.org/pdf/1301.3781.pdf%C3%AC%E2%80%94%20%C3%AC%E2%80%9E%C5%93 (Mikolov et al., 2013b) https://proceedings.neurips.cc/paper/2013/file/9aa42b31882ec039965f3c4923ce901b-Paper.pdf ​ ​ ​ 여기에서 (Mikolov et al., 2013a)에는 Skip-Gram 과 CBOW라는 모델이 제안된다. ​ Skip-Gram은 타..

[3-1] NPLM이란?

NPLM (Neural Probabilisitic Languague Model)은 기존의 통계 기반 언어 모델의 단점을 어느정도 극복시킨 모델이다. ​ 그렇다면, 기존의 통계기반 언어 모델은 무엇인가? ​ 앞서, 언어 모델이란 단어 시퀀스(순서) 에 확률을 부여하는 모델이다. ​ 흐름을 설명해 보겠다. ​ ​ 1. 만약 '영원히 기억될 최고의' 라는 표현 다음에 '명작이다' 라는 단어가 나타날 확률 을 구해보자 이는 최대우도추정법으로 유도 가능하다. 최대우도추정법에 대한 설명은 내 블로그 NLP 카테고리를 보면 이해가 가능하다. 여기서 우리는 최대우도추정법을 이용해 '영원히' ,'기억될' ,'최고의' 라는 변수만을 이용해 본래 변수인 '명작이다'라는 변수까지 추정해 볼 수 있다는 것이다. ​ 하지만, 문..