공부공부공부를 합시다/논문을 읽어 봅시다
[논문읽기] Distributed Representations of Words and Phrases and their Compositiona
뻒음
2022. 4. 22. 13:09
논문 : https://arxiv.org/abs/1310.4546
Skip-gram(타깃 단어를 보고 주변 단어를 맞추기)의 확장
- 벡터의 품질과 훈련 속도를 모두 향상시키는 것이 목적
- 방법 : 자주 사용되는 단어를 subsampling (학습 속도를 떨어뜨리는 sparse dataset의 크기 확장 X)
- 이득 : 단어 뿐만 아니라 단어의 구를 학습할 수 있으면서도 속도는 향상하는 방법
계층적 soft-max
- 효율적인 계산을 하는 접근법
- 단어의 빈도에 따라 단어를 그룹화 함
- 확률분포를 얻기 위해 W nodes가 아닌 log2 (W) nodes만 평가해도 됨
Negative Sampling
- 계층적 soft-max의 대안: Noise Contrastive Estimation (NCE)
- NCE :noise보다 높이 랭킹된 데이터만 모델에서 학습
- 이 논문에서는 단어가 사용된 개수와 가능성 모두 필요한 NCE 대신 Negative Sampling(NEG) 기법(k번 미만 등장한 단어 삭제)을 사용하여 계산을 줄임 : 5~20번이 k의 기준으로 적당했고, large 데이터에 대해서는 2~5도 유효했음
Subsampling of Frequent words
- ‘in’, ‘the’, ‘a’와 같이 대부분의 문서에서 발생하는 단어와의 co-occurences는 skip-gram에서 이득이 없음 (내 생각에는 이 단어들은 그 자체로 분석에 사용하기에는 혜택이 없을 것.. 한국어에서는 조사, 관계사 등이 해당될 것)
- 임계값 10의 5승 이상으로 발생된 단어에 대해서 서브샘플링으로 삭제함 (작은 데이터는 더 작은 값을 써도 될 듯)
Negative Sampling이 k = 5에서도 상당한 정확도 달성, k = 15를 사용하면 훨씬 더 나은 성능 달성
Hierarchical Softmax는 빈번한 단어를 다운샘플링했을 때 가장 성능이 좋았음
⇒ 데이터 다운샘플링이 속도 향상은 물론, 어떤 경우에서는 성능 향상의 결과까지 기대할 수 있었음
NLP를 공부하다 보니 skip-gram 논문까지 읽게 되었는데, 이 분야도 많많치 않게 넓구나 싶네요..
skip-gram은 NLP에서 단어를 임베딩할 때 사용할 수 있는 방법? 규칙 같은 건데
단어가 같이 등장하는 빈도에 따라 그룹화도 하고, 단어가 등장한 빈도가 너무 낮으면 지우고, 너무 많은 문서에서 등장하면 또 지우는 방법인 것 같읍니다.
계속계속 생각하다보면 떠올릴 수 있는 방법 같은데, 이걸 직접 데이터의 크기와 파라미터를 조정하며 실험해보고 최적 파라미터까지 도출한 게 대단한 끈질김인 것 같네요.
이런 선행연구들이 있어서 저희가 편하게 따라갈 수 있는 길이 만들어진 거 아닌가 싶습니다.