자주 나오는 바이그램 활용
함께 자주 등장하는 단어 조합이 있을 때, 예를 들면 '대한' 뒤에는 '민국'이 등장할 때가 많다. 이 둘은 하나의 바이그램(2-그램)을 형성한다. 대한 뒤에 민국을 예측하는 것은 당연한 결과임에 예측으로 얻는 것이 없다. 따라서 이 두 단어를 합쳐서 나타내어 2-그램, 3-그램을 형성해 word2vec에 포함한다. 2-그램, 3-그램들을 공둥 출현 횟수에 기초한 score을 이용해 식별한다.
$ score(w_i,w_j)=\frac{count(w_i,w_j) - \sigma}{count(w_t) \times count(w_j)} $
바이그램 score function
단어 $w_i$와 $w_j$의 바이그램 점수가 특정 threshold($\sigma$)보다 높으면 그 둘의 쌍이 word2vec 어휘에 하나의 용어로 등록된다. 두 단어를 연결 했다는 의미에서 '_'기호를 사용해 연결한다. 대한_민국이 따로 원핫벡터로 사용되는 것이 아니라 하나의 원핫 벡터로 사용된다.
빈도 높은 토큰의 부표집
빈도 높은 단어의 부표집(subsampling) '이', '그', '를' 등 단어들은 문장에서 많이 사용되지만 중요한 의미를 가지고 있지는 않다. 훈련과정에서 단어들을 그 빈도에 반비례해서 표집하면 불용어 같은 빈도 높은 단어들이 단어 벡터들에 미치니는 영향을 줄일 수 있다.
$P(w_i) = 1 - \sqrt{\frac{t}{f(w_i)}}$
부표집 확률 공식
$P(w_i) = \frac{f(w_i) - t}{f(w_i)} - \sqrt{\frac{t}{f(w_i)}}$
실제 구현된 부표집 확률 공식
t는 문턱값 threshold 이다. 보통 연구 문헌에서는 $10^{-5}$, $10^{-6}$을 사용한다. 말뭉치에 쓰인 서로 다른 단어가 100만개이고 부표집 문턱값이 $10^{-6}$일때 말뭉치에 10번 출현한 단어가 토큰화 과정에서 n-그램이 포함될 확률은 68%이다. 즉 32%의 확률로 그 단어는 무시된다는 의미이다.
부정 표집
부정표집(negative sampling)은 신경망의 가중치를 갱신할 때 오래 걸리는 문제를 해결하는 방법이다. 미콜로프는 문맥 구간에 포함되지 않은 단어들까지 포함한 모든 단어의 가중치들을 갱신하는 대신 예측 결과가 부정인 단어들만 가중치 갱신에 사용한다는 착안을 제시했다. 출력벡터에 부정 견본 n개를 뽑고 해당 출력들에 기여한 가중치들을 갱신한다. 이렇게 하면 훈련된 신경망의 정확도가 크게 떨어지지 않으면서 훈련에 필요한 계상량도 줄어든다.
'Natural Language Processing' 카테고리의 다른 글
BERT (Deep Bidirectional Transformers for Language Understanding) (0) | 2021.03.03 |
---|---|
[Word2Vec] 구현 패키지 사용 (4) | 2021.03.02 |
[Word2Vec] 연속 단어 모음 (0) | 2021.03.01 |
[Word2Vec] 스킵그램 접근 방식 (0) | 2021.02.28 |
Word2Vec 활용 (0) | 2021.02.28 |