--- title: NLP_paper - Distributed representations of words and phrases and their compositionality tags: self-learning, NLP --- {%hackmd BkVfcTxlQ %} # **_NLP_paper - Distributed representations of words and phrases and their compositionality_** ## NLP_paper - 單詞和短語的分佈式表示及其組成 > [name=BessyHuang] [time=Sat, Apr 4, 2020] # **課程大綱** [TOC] :::warning **_Reference:_** * [詞向量的兩個經典論文的解讀](https://zhuanlan.zhihu.com/p/73949100) * [詞向量(Word Vector)](https://tsupei.github.io/cs/nlp/2020/02/11/WordVector.html) * [NLP 自然語言處理 – Word Embedding/Vector 詞嵌入/詞向量](https://allenlu2007.wordpress.com/2018/05/07/nlp-%E8%87%AA%E7%84%B6%E8%AA%9E%E8%A8%80%E8%99%95%E7%90%86-word-embedding-vector-%E8%A9%9E%E5%B5%8C%E5%85%A5-%E8%A9%9E%E5%90%91%E9%87%8F/) * [深度學習和自然語言處理:詮釋詞向量的魅力](https://kknews.cc/zh-tw/education/l8keqx9.html) * 翻譯 * [Distributed Representations of Words and Phrases and their Compositionality](https://blog.csdn.net/u010555997/article/details/76598666) * [《Distributed Representations of Words and Phrases and their Compositionality》](https://www.jianshu.com/p/ac1b42374ede) * [FB_paper intro](https://m.facebook.com/story.php?story_fbid=119005619699585&id=101557031444444) ::: --- ## **摘要** * 本文提出幾種提高向量品質和訓練速度的`優化方法`。 * 為了提高速度 1. Negative Sample(負採樣) 2. Hierarchical Softmax * Word representations 的固有限制 * 不關心詞序,且無法表示 idiomatic phrases(習慣用語) * 如:無法簡單地將 "Canada/加拿大" 和 "Air/空中" 的含義,組合起來得到 "Canada Air/加拿大航空公司" 的含義 > ==故提出一種在文本中查找短語的簡單方法,並表明學習數百萬個 phrases 的 good vector representations 是可能的。== > --- ## **前言** * 計算詞向量的始祖 * Paper:`Efficient Estimation of Word Representations in Vector Space` * Word2Vec 模型 * 2013年,由 Tomas Mikolov 等人提出。(Google) * Word2vec 的兩種訓練模式 ![](https://i.imgur.com/ZBKPgEW.png) * Skip-gram (Continuous Skip-gram Model) * 給定輸入字詞後,來預測上下文 * 相當於給你一個詞,讓你猜前面和後面可能出現什麼詞。![](https://i.imgur.com/DLqjuUA.png) * CBOW (Continuous Bag-of-Words Model) * 給定上下文,來預測輸出的字詞 * 相當於一句話中扣掉一個詞,讓你猜這個詞是什麼。![](https://i.imgur.com/WHmDJU6.png) * 透過學習大量文本資料,將字詞用`數學向量`來代表其語意。並將字詞嵌入到一個空間後,讓`語意相似的單字`可以有`較近的距離`。 > 相似的字會具有相似的向量,故向量空間中類似的概念會聚集。 > > 具有詞間推理(Analogical Inference)的關係。 > 如:France - Paris + Japan = Tokyo > * 作者提出:高品質的詞向量成為未來NLP應用的基礎【這一點成真了,這也是為何我們要經常回顧這篇論文】 --- ## **Skip-gram 模型** 從一個字詞, 到產生這個字詞的詞向量(Word Vector), 再到預測其他可能會在那個字詞附近出現的詞彙的機率。 :::success * 輸入(字詞):wine * "wine" 這個字的「附近」?在訓練模型時定義一個範圍 "window size" * 如:"wine" 的前後 5 個字都算是它的附近 * 如何從文本中產生訓練樣本? * 統計輸入字詞前後 2 個 window size 的字詞。 ![](https://i.imgur.com/8mJGezg.png) * 預測輸入(字詞)附近之輸出(字詞)的出現機率 * 如:比起 (wine, NLP),可能會有較多 (wine, grape) 或 (wine, Bordeaux) 這樣的詞組。 * 機率高:"grape", "Bordeaux" * 機率低:"NLP", "AI" ::: * 將字詞用向量來表示 * 因為我們沒辦法直接把文字輸入機器讓他做辨識,必須要將他轉成向量的方式,機器才有辦法做數學的運算。 * 詞向量(word vector) * 將詞彙轉換成能夠被機器理解的向量,且這個向量能有效反應出詞義。 * 近義詞之間有著相近的詞向量。如:紅茶、奶茶、綠茶都是飲料類,具備類似的詞向量。 * 常見方式:建立一個詞彙表後,然後用 one-hot 編碼。 > 假設從訓練文檔中抽取出 5 個不重複的單詞,組成詞彙表,那每一個詞彙就會是一個用 0 和 1 兩個數字表示的 5 維的向量。 > ![](https://i.imgur.com/DuU5XVo.png) > Ex: "Queen" 在詞彙表中出現的位置是在第 2 個位置,用 one-hot 向量編碼表示,是一個第二個維度為 1,其他維度為 0 的一個 1 x 5 的向量。 > ### 特性/現象 * 具備類比(analogy)性質 * 若兩個單詞的前後文相近,兩單詞的詞向量就會相近。(出現很多詞都一樣,相同詞的出現頻率類似) * 推斷:因為兩個單詞的鄰居詞分佈類似 => 兩個詞義相近 * 鄰居詞的分佈,間接反映了單詞粗略的語義 * 詞向量濃縮了鄰居詞的分佈(降維表示) ![](https://i.imgur.com/DgltAX7.png) ![](https://i.imgur.com/7P6XOSt.png) --- ## **解決什麼問題?提高訓練模型的效率** ### Hierarchical softmax * Use a binary Huffman tree * 目的:賦予高頻詞彙更短的編碼,這樣一來,訓練過程就變快了。 ![](https://i.imgur.com/1fAdn8w.png) ### Negative Sampling (負採樣) * 透過 negative sampling 隨機取樣的方式,希望把他們的權重降低一點,希望可以降低錯誤信號的影響。 * 好處 * 降低運算的負擔:讓每個訓練模型可以只更新一小部分的權重,而非整個神經網路的權重都被更新。 * 提高詞向量的訓練品質、訓練速度 > Ex: 若輸入字詞是 brown,window size 設為 2 時,(brown, dog) 會被視為 negative sample,那 model 學到的就會是「brown 這個字的周遭不該出現 dog」這樣的信號。 > 輸入字詞為 brown 時,會產生的樣本為 (brown, the), (brown, quick), (brown, fox), (brown, jumps)。換句話說,(brown, dog) 會被當作是 negative sample。 > ![](https://i.imgur.com/7sESzmg.png) ### Subsampling of Frequent Words * 對高頻單詞進行抽樣(subsampling),來減少`the ...`的訓練樣本數目 * 減少高頻單詞出現的頻率,可以讓整個模型學得更好、更均衡。 * 把太高頻的`停用字(stopwords)`丟掉,透過這樣的步驟可以提升速度,並且增加罕見字(rare word)的準確率。 --- ## **本篇價值** * distributed vector representations可以捕獲大量精確的句法和語義關係。 * 為接下來許多以詞向量為基礎的模型定下根基,以往使用神經網路(Neural Network)訓練詞向量耗時長,這篇論文提出了一些方法進行改善,不僅提升效能也大幅降低訓練成本。