對於自然語言處理任務,我們不能直接使用純文字字串作為輸出,而是需要將文字字元轉化為連續值的向量。
詞嵌入的主要思想是將文字轉換為較低維度空間的向量表示。對於這種轉化後的向量有兩個重要的要求:
總的來說,詞嵌入就是一種**從文字語料庫構建低維向量表示的方法,可以保留單詞的上下文相似性。
現在我們知道它是什麼,接下來討論詞嵌入如何工作。如果您曾遇到降維,那麼您通常會使用無監督學習演算法來實現降維。這是最著名的演算法之一用於生成單詞嵌入的方法:word2vec。
實際上,有兩種實現word2vec的方式,即cbow(連續詞袋)和skip-gram。
輸入的單詞使用one-hot編碼。這將進入具有線性單元的隱藏層,然後進入softmax層進行**。這裡的想法是訓練隱藏層權重矩陣,以找到我們單詞的有效表示形式。該權重矩陣通常稱為嵌入矩陣,可以作為查詢表進行查詢。
嵌入矩陣的大小為單詞數乘以隱藏層中神經元的數量(嵌入大小)。嵌入的大小(即隱藏層神經元的個數,因此表示單詞之間相似度的特徵的數量)往往比詞彙表中唯一單詞的總數小得多。因此,如果您有10,000個單詞和300個隱藏層神經元,則矩陣的大小將為10,000×300(因為輸入編碼為獨熱編碼向量)。一旦計算出字向量,就可以對結果矩陣的相應行進行快速o(1)查詢。最終每個單詞都會產生乙個與之關聯的乙個向量。
詞嵌入的乙個有趣特徵是,由於它們是單詞之間上下文相似性的數字表示,因此可以進行算術操作。經典示例是從「男人」中減去「國王」的「概念」,並新增「女人」的概念。答案將取決於您的訓練方式,但您可能會看到其中一項最佳成績是「女王」一詞。這篇帖子解釋了原因。
另乙個值得了解的單詞嵌入演算法是glove,它通過累加共現次數來工作略有不同(請參閱glove與word2vec有何不同?)
那麼和深度學習有什麼關係呢?
請記住,word2vec只是兩層淺層神經網路,因此它本身並不是深度學習的示例。但是,諸如word2vec和glove之類的技術可以將原始文字轉換成深層網路可以理解的數字形式,例如,使用帶有詞嵌入的遞迴神經網路。
5 2 5學習詞嵌入
課前提問 問題1 什麼是詞嵌入?問題2 如何嵌入?課後回答 1 什麼是學習詞嵌入?答案 學習詞嵌入是功能,即向系統輸入依次幾個單詞,系統自動 出下乙個單詞是什麼,eg a glass of orange 系統會自動 出juice這個單詞,我們把系統的這種功能叫做 學習詞嵌入 2 如何嵌入?答案 首先...
理解詞嵌入WordEmbedding
詞嵌入,英文為 word embedding,這是語言表示的一種方式。它可以讓演算法理解一些類似的詞。我們可以用one hot向量來表示詞,如下圖所示。這種表示方式,我們需要首先獲取乙個字典,比如字典中有100000個詞。對每乙個詞,都得到乙個向量,其中該詞對應位置上置一,其他位置置零。比如man這...
詞嵌入之FastText
什麼是fasttext fasttext是facebook於2016年開源的乙個詞向量計算和文字分類工具,它提出了子詞嵌入的方法,試圖在詞嵌入向量中引入構詞資訊。一般情況下,使用fasttext進行文字分類的同時也會產生詞的embedding,即embedding是fasttext分類的產物。fas...