CBOW最強理解

2021-08-21 18:22:14 字數 3027 閱讀 2079

翻譯自:

向量空間模型在資訊檢索中是眾所周知的,其中每個文件被表示為向量。向量分量表示文件中每個單詞的權重或重要性。使用余弦相似性度量計算兩個文件之間的相似性。

儘管對單詞使用向量表示的想法也已經存在了一段時間,但是對於嵌入單詞的技術,將單詞對映到向量的技術,最近一直在飆公升。其中乙個驅動因素是tomášmikolov的word2vec演算法,該演算法使用大量文本來建立高維(50到300維)的單詞表示,捕獲單詞之間的關係,無需外部注釋。這種表述似乎捕獲了許多語言規律。例如,它產生乙個近似於vec('rome')表示的向量,作為向量運算vec('paris') - vec('france')+ vec('italy')的結果。

word2vec使用單個隱藏層,完全連線的神經網路如下所示。隱藏層中的神經元都是線性神經元。輸入層設定為具有與用於訓練的詞彙中的單詞一樣多的神經元。隱藏圖層大小設定為生成的單詞向量的維度。輸出圖層的大小與輸入圖層相同。因此,假設用於學習單詞向量的詞彙表由v個單詞組成並且n為單詞向量的維度,則對隱藏層連線的輸入可以由大小為vxn的矩陣wi表示,其中每行表示詞彙單詞。以相同的方式,可以通過矩陣wo來描述從隱藏層到輸出層的連線大小為nxv。在這種情況下,wo矩陣的每列  表示來自給定詞彙表的單詞。使用「 1-out of -v 」表示對網路的輸入進行編碼,這意味著只有一條輸入線被設定為1,其餘輸入線被設定為零。

為了更好地處理word2vec的工作原理,請考慮具有以下句子的訓練語料庫:

「狗看到了乙隻貓」,「狗追著貓」,「貓爬上了一棵樹」

語料庫詞彙有八個單詞。按字母順序排序後,每個單詞都可以通過其索引引用。對於這個例子,我們的神經網路將有八個輸入神經元和八個輸出神經元。讓我們假設我們決定在隱藏層中使用三個神經元。這意味著wi和wo將分別是8×3和3×8矩陣。在訓練開始之前,這些矩陣被初始化為小的隨機值,如通常在神經網路訓練中那樣。僅為了說明,讓我們假設wi和wo初始化為以下值:

假設我們希望網路學習單詞「cat」和「climb」之間的關係。也就是說,當「貓」輸入到網路時,網路應該顯示「攀爬」的高概率。在單詞嵌入術語中,單詞「cat」被稱為上下文單詞,單詞「climbed」被稱為目標單詞。在這種情況下,輸入向量x將是[0 1 0 0 0 0 0 0] t。請注意,只有向量的第二個分量是1.這是因為輸入的單詞是「cat」,它在語料庫單詞的排序列表中保持第二個位置。鑑於目標字是「爬公升」,目標向量看起來像[0 0 0 1 0 0 0 0] t。

利用表示「cat」的輸入向量,可以將隱藏層神經元的輸出計算為

h t = x t wi = [-0.490796 -0.229903 0.065460]

我們不應該感到驚訝的是隱藏神經元輸出的向量h模仿了wi矩陣的第二行的權重,因為v表示為1-out-of-v。因此隱藏層連線的輸入功能基本上是將輸入字向量複製到隱藏層。對隱藏到輸出層執行類似的操作,輸出層神經元的啟用向量可以寫成

h t wo = [0.100934 -0.309331 -0.122361 -0.151399 0.143463 -0.051262 -0.079686 0.112928]

由於目標是為輸出層中的單詞生成概率,  對於k 

= 1,v的

pr(單詞k |單詞上下文),為了反映它們與輸入處的上下文單詞的下乙個單詞關係,我們需要神經元輸出的總和。輸出圖層新增到乙個。word2vec通過使用softmax函式將輸出層神經元的啟用值轉換為概率來實現此目的。因此,第k個神經元的輸出通過以下表示式計算,其中activation(n)表示第n個輸出層神經元的啟用值: 

因此,語料庫中八個單詞的概率是:

0.143073 0.094925 0.1144410.1111660.149289 0.122874 0.119431 0.144800

粗體的概率是針對所選擇的目標詞「攀爬」。給定目標向量[0 0 0 1 0 0 0 0] t,通過從目標向量中減去概率向量,可以容易地計算輸出層的誤差向量。一旦知道了錯誤,就可以使用反向傳播來更新矩陣wo和wi中

的權重。因此,訓練可以通過從語料庫呈現不同的上下文目標詞對來進行。從本質上講,這就是word2vec如何學習單詞之間的關係,並在此過程中開發語料庫中單詞的向量表示。

連續詞彙(cbow)學習

以上描述和架構旨在用於學習單詞對之間的關​​系。在連續的單詞模型中,上下文由給定目標單詞的多個單詞表示。例如,我們可以使用「cat」和「tree」作為「攀爬」的上下文單詞作為目標單詞。這需要修改神經網路架構。如下所示,修改包括將隱藏層連線的輸入複製c次,上下文單詞的數量,以及在隱藏層神經元中新增除c操作。[警報讀者指出,下圖可能會讓一些讀者認為cbow學習使用了幾個輸入矩陣。不是這樣。它是相同的矩陣wi,它接收代表不同上下文詞的多個輸入向量]

利用上述配置來指定c上下文本,使用1-out-of-v表示編碼的每個字意味著隱藏層輸出是與輸入處的上下文本相對應的字向量的平均值。輸出層保持不變,並且以上面討論的方式完成訓練。

skip-gram模型

skip-gram模型反轉了目標和上下文單詞的使用。在這種情況下,目標字在輸入處被饋送,隱藏層保持相同,並且神經網路的輸出層被多次複製以適應所選數量的上下文本。以「cat」和「tree」為例,作為上下文單詞,「爬」作為目標詞,skim-gram模型中的輸入向量為[0 0 0 1 0 0 0 0] t,而兩個輸出層將具有[0 1 0 0 0 0 0 0] t和[0 0 0 0 0 0 0 1] t分別作為目標向量。代替產生乙個概率向量,將為當前示例產生兩個這樣的向量。以上面討論的方式產生每個輸出層的誤差向量。然而,將來自所有輸出層的誤差向量相加以通過反向傳播來調整權重。這確保了每個輸出層的權重矩陣wo在整個訓練中保持相同。

CBOW與Skip Gram模型基礎

用distributed representation我們可以較容易的分析詞之間的關係了,比如將我們的詞降到二維,我們會發現 其資料的輸入輸出分為cbow和skip gram 這樣我們這個cbow的例子裡,輸入八個詞向量,輸出的是所有詞的softmax概率 訓練的目標的期望訓練樣本特定次對應的sof...

cbow 與 skip gram的比較

cbow和skip gram都是在word2vec中用於將文字進行向量表示的實現方法,具體的演算法實現細節可以去看word2vec的原理介紹文章。我們這裡大體講下兩者的區別,尤其注意在使用當中的不同特點。在cbow方法中,是用周圍詞 中心詞,從而利用中心詞的 結果情況,使用gradientdesen...

最強大腦與最強團隊

江蘇衛視 最強大腦 進入第三季,節目精彩紛呈。台上選手表現出來的非凡技藝,平凡如我只能瞠目結舌,外加頂禮膜拜。所謂的 最強大腦 肯定有天賦因素,有幾人能依靠刻苦練習戰勝 菲神 呢。生而不平等,是客觀存在的事實,雖然現在還不能準確量化這種差距,但是也不能否認這種差距的存在。在各種炫酷的能力中,有一種看...