詞嵌入方法

引言

對於自然語言處理任務,我們不能直接使用純文本字符串作爲輸出,而是需要將文本字符轉化爲連續值的向量。

詞嵌入的主要思想是將文本轉換爲較低維度空間的矢量表示。對於這種轉化後的向量有兩個重要的要求:

  • 較低維度空間:儘量降低編碼詞向量產生的稀疏性。
  • 保證上下文相似性:爲了使語言模型更好的預測文本的含義。

總的來說,詞嵌入就是一種**從文本語料庫構建低維向量表示的方法,可以保留單詞的上下文相似性。

介紹Word2Vec

現在我們知道它是什麼,接下來討論詞嵌入如何工作。如果您曾遇到降維,那麼您通常會使用無監督學習算法來實現降維。這是最著名的算法之一用於生成單詞嵌入的方法:word2vec

實際上,有兩種實現word2vec的方式,即CBOW(連續詞袋)和Skip-gram。

  • CBOW:以上下文單詞作爲輸入,預測目標單詞(中心詞)
  • Skip-gram: 以目標單詞作爲輸入,預測單詞周圍的上下文。

輸入的單詞使用one-hot編碼。這將進入具有線性單元的隱藏層,然後進入softmax層進行預測。這裏的想法是訓練隱藏層權重矩陣,以找到我們單詞的有效表示形式。該權重矩陣通常稱爲嵌入矩陣,可以作爲查詢表進行查詢。

嵌入矩陣的大小爲單詞數乘以隱藏層中神經元的數量(嵌入大小)。嵌入的大小(即隱藏層神經元的個數,因此表示單詞之間相似度的特徵的數量)往往比詞彙表中唯一單詞的總數小得多。因此,如果您有10,000個單詞和300個隱藏層神經元,則矩陣的大小將爲10,000×300(因爲輸入編碼爲獨熱編碼向量)。一旦計算出字向量,就可以對結果矩陣的相應行進行快速O(1)查找。最終每個單詞都會產生一個與之關聯的一個向量。

注意:所使用的嵌入大小設計是一個折衷:更多功能意味着額外的計算複雜性,因此運行時間更長,但是還允許更多的精細表示和可能更好的模型。

詞嵌入的一個有趣特徵是,由於它們是單詞之間上下文相似性的數字表示,因此可以進行算術操作。經典示例是從“男人”中減去“國王”的“概念”,並添加“女人”的概念。答案將取決於您的訓練方式,但您可能會看到其中一項最佳成績是“女王”一詞。這篇帖子解釋了原因。

補充

另一個值得了解的單詞嵌入算法是GloVe,它通過累加共現次數來工作略有不同(請參閱GloVe與word2vec有何不同?

那麼和深度學習有什麼關係呢?

請記住,Word2vec只是兩層淺層神經網絡,因此它本身並不是深度學習的示例。但是,諸如Word2vec和GloVe之類的技術可以將原始文本轉換成深層網絡可以理解的數字形式,例如,使用帶有詞嵌入的遞歸神經網絡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章