Data/논문 읽기

[논문 같이 읽기] Efficient Estimation of Word Representations in Vector Space

neulvo 2022. 9. 29. 18:37

논문 링크 :

 

Efficient Estimation of Word Representations in Vector Space

We propose two novel model architectures for computing continuous vector representations of words from very large data sets. The quality of these representations is measured in a word similarity task, and the results are compared to the previously best per

arxiv.org

참고 자료 링크 : 

 

02) 워드투벡터(Word2Vec)

앞서 원-핫 벡터는 단어 벡터 간 유의미한 유사도를 계산할 수 없다는 단점이 있음을 언급한 적이 있습니다. 그래서 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 ...

wikidocs.net

단어들의 벡터 연속적인 표현을 계산하기 위한 두 가지 새로운 모델 아키텍쳐를 제안.

- 정확도 향상, 계산 코스트 감축

- 구문론적 의미론적 단어 유사도 측정의 SOTA

 

현존 NLP 시스템 - 단어간 유사성에 대한 단초의 부재

(*n-gram은 n개의 연속적인 단어 나열을 의미)

 

관련 도메인 내 데이터의 양이 제한적이고 품질이 높은 데이터에 의해 성능이 자주 좌우됨

(*Corpora는 Corpus의 복수로 말뭉치를 의미)

 

skip

50 - 100 단어 벡터 차원에서 수억 단어 이상으로 학습된 아키텍쳐가 없었음

 

단어가 다중 유사도를 가질 수 있음

단어 표현의 유사성이 단순한 구문 규칙성 이상임을 발견하였음. (의미론적 규칙성 발견 암시)

King - Man + Woman = Queen

 

단어 간 선형 규칙성을 보존하는 새로운 모델 아키텍쳐를 개발하여 이러한 벡터 연산의 정확도를 최대화하려고 함

그러한 규칙성이 높은 정확도로 학습될 수 있음을 보여줄 것임

학습 시간과 정확도가 단어 벡터 차원과 훈련 데이터의 양에 어떻게 의존적인지 논의할 것임

 

skip

 

NN에서 학습된 단어들의 분산 표현에 집중할 것임

학습 복잡도 = Epoch * Trainig set words number * Q

SGD, backpropagation 사용

 

Feedforward NNLM에 대한 설명

input, projection, hidden, output layers로 구성

은닉층은 어휘 (목록)의 모든 단어에 대한 확률 분포를 계산하는 데 사용되며 결과적으로 V 차원의 출력층이 생성

계층적 소프트맥스를 사용하며 그것은 log2의 복잡도를 가짐

대부분의 복잡성은 N * D * H 에 의해 발생됨

(*아래는 계층적 소프트맥스 자료 링크)

 

계층적 소프트맥스(Hierarchical Softmax, HS) in word2vec

계층적 소프트맥스(Hierarchical Softmax, HS)란? 기존 softmax의 계산량을 현격히 줄인, softmax에 근사시키는 방법론이다. Word2Vec에서 skip-gram방법으로 모델을 훈련시킬 때 네거티브 샘플링(negative sampli..

uponthesky.tistory.com

 

 

RNNLM이 feedforward NNLM의 한계를 극복하기 위해 제안됨

- NNLM은 context length를 특정해야 함

- RNN은 얕은 NN보다 복잡한 패턴을 더 효율적으로 나타냄

RNN 모델은 projection layer가 없고, input, hidden, output layer로 구성됨

Recurrent Matrix를 사용

- time-delayed(시간 지연) 연결을 사용해 히든 레이어를 그 자신과 연결시킴

- 단기 기억을 형성 : 과거의 정보가 현재 input과 이전 time step의 은닉층의 상태를 기반으로 업데이트되는 은닉층에 의해 표현될 수 있음

대부분의 복잡성은 H*H에서 발생

 

DistBelief 라는 대규모 분산 프레임워크 위에 여러 모델을 구현

이를 통해 동일한 모델의 여러 복제본들을 병렬로 실행시켰으며

각 복제본은 모든 매개 변수를 지닌 중앙 집중 서버를 통해 gradient 업데이트를 동기화함

병렬 훈련을 위해 Adagrad를 미니-배치 비동기 경사하강법과 함께 사용

 

계산 복잡도를 최소화하는 단어 분산 표현 학습을 위한 두 개의 모델 아키텍쳐를 제안

NN만큼 데이터를 잘 표현하지는 못하더라도

더 많은 데이터로 효율적으로 학습될 수 있는 단순한 모델을 탐구하기로 함

NN 모델이 2 단계로 성공적으로 학습될 수 있다는 이전 작업을 따르기로 함

- 연속적인 단어 벡터들을 단순한 모델로 학습

- (만들어진) 단어들의 분산 표현으로 N-gram NNLM을 학습

 

CBOW, feedforward NNLM과 유사하지만

비선형적인 은닉층이 제거되었으며 모든 단어들에 대해 투영층이 공유되는 모델

모든 단어들이 동일한 위치에 투영됨

지난 단어들의 순서는 투영층에 영향을 미치지 않음

Best performance는 4개의 미래와 4개의 과거를 사용하여 만든 

현재 (가운데) 단어를 올바르게 분류하는 것이 학습 기준인 로그 선형 분류기를 통해 나왔음

일반적인 단어-가방 모델과 다르게 Context의 연속 분산 표현을 사용

 

Skip-gram, CBOW와 비슷하지만, 동일한 문장의 다른 단어를 기반으로 단어 분류 성능을 최대화하고자 함

현재 단어의 이전과 이후의 특정 범위 안에서 단어를 예측

범위를 늘리면 단어 벡터의 품질이 향상되지만 계산 복잡성도 증가

먼 단어들에 대해 학습 예제에서 덜 샘플링하여 작은 가중치를 줌

CBOW와 Skip-gram의 모형

CBOW는 context를 기반으로 현재 단어를 예측하고

Skip-gram은 현재 단어를 기반으로 주변 단어들을 예측한다

 

vector X  = vector(biggest)  - vector(big) + vector(small) 계산

벡터 공간에서 X와 가장 근접한 단어를 코사인 거리를 측정해 찾음

단어 벡터가 잘 훈련된다면 이러한 방식으로 정확한 답을 찾을 수 있을 것

많은 양의 데이터에 대해 고차원 단어 벡터들을 학습시킬 때,

결과 벡터가 단어들 사이의 매우 미묘한 의미 관계에 대해 사용될 수 있음을 발견함

그런 의미 관계를 담은 단어 벡터들은 많은 현존 NLP 어플리케이션을 향상시키는 데 사용될 수 있을 것

 

skip

 

test set을 만든 방법과 평가 방법에 대한 소개

 

훈련 및 평가 방법에 대한 디테일

시간 제한적인 최적화 문제가 있었기 때문에 제한된 어휘 (목록)을 사용

학습 단어와 벡터 차원을 늘릴수록 성능 향상 & 모델 별 성능 비교

 

어느 포인트 이후로는 차원을 더하거나 훈련 데이터를 더하는 것이 향상(의 정도)이 감소하는 것을 발견하여

벡터 차원과 훈련 데이터 양을 동시에 증가시켰음

방정식 4를 보면, 훈련 데이터의 양을 두 배 늘리는 것은 벡터 사이즈를 두 배 늘리는 것만큼이나 같은 정도의 계산 복잡도를 증가시킴

 

훈련 디테일과 모델 간의 비교

 

단어 수와 벡터 차원을 감안하면 좋은 성능을 보임

epoch과 벡터 차원, 훈련 단어수에 따른 정확도와 훈련 시간 비교

 

skip

 

성능과 훈련 시간에 이점을 보임

SKip-gram과 RNNLMs을 합친 성능이 우수하게 나옴(이건 이어지는 글의 내용)

 

제공된 50M 단어들로 640 차원 모델을 학습시킴

입력에 unknow 단어를 사용해 테스트 셋의 각 문장 점수를 계산하고 문장 내 모든 주변 단어들을 예측함

최종 문장 점수는 개별 예측들의 총합, 이를 이용해 가장 가능성이 높은 문장을 선택

 

정확도(성능)를 높이는 방법

- 큰 데이터 셋과 큰 데이터 차원

- 관계를 담은 예제를 하나 이상 제공

 

단순한 모델 아키텍쳐로 높은 수준의 단어 벡터를 학습시킬 수 있음을 발견하였음

계산 복잡도가 훨씬 낮기 때문에

훨씬 더 큰 데이터 셋으로 매우 정확한 고차원 단어 벡터를 계산하는 게 가능해짐

 

팔로우-업

728x90