Word2vec淺顯的理解

本文主要讓你理解Word2vec大概是個什麼事情~沒有具體原理等~

先來說一下Word2vec的產生,其實也和one-hot編碼有關係,大家相信100維的向量最多可以表示多少個詞?

one-hot說,我能表示100個~但是你如果表示所有的單詞需要多少維啊...one-hot就數不過來了,太多了(10的五次方級的維度),然後人們就想用一直分佈式的方法來表示,如果100維的向量每個維度都可以取任意0/1,那麼可以表示多少個啊?2的100次方個單詞,那麼...假設可以取任意數字或者...浮點數那...滋滋滋...任意維度都可以表示無窮個數字...這貌似是個解決one-hot編碼空間爆炸的好方法~然後one-hot也沒有能表示的相似度啊,也爲了解決這個問題,人們提出了Word2vec方法,不過空間爆炸剛剛解釋了用分佈式向量就可以解決,那麼語義問題哪?那就聽我慢慢道來吧~

Word2vec,是一羣用來產生詞向量的相關模型。說白了就是個簡單化的神經網絡模型,然後在nlp中最常見的就是兩種,也是google在2013年提出的兩種重要模型CBOW模型與Skip-Gram模型。CBOW模型的訓練輸入是某一個特徵詞的上下文相關的詞對應的詞向量,而輸出就是這特定的一個詞的詞向量。Skip-Gram模型和CBOW的思路是反着來的,即輸入是特定的一個詞的詞向量,而輸出是特定詞對應的上下文詞向量。(這樣就解決了語義上的問題了,每個單詞都包含周圍的詞語的語言)如果這個聽不明白可以結合下圖來了解一下,然後再結合一個例子來說明一下,CBOW:我喜歡貓咪,其中小是目標詞,假設那麼小的詞向量應該就和周圍的詞語有關係,用語文的說法來一下就是,貓咪的形容詞,和喜歡關係倒是不是很大... (這可能我說的有點不是很形象,大概意思就是每一個詞都和周圍的詞有一些關係,例如語法主謂賓等結構啊,一些詞語搭配啥的),但是這個地方大家又會問了:這個道理我懂,但是我怎麼實現啊,或者怎麼和周圍的詞聯繫啊,一開始大家都是默認的,目標詞不是根據周圍的初始值來設定的嗎...

這個也是困擾我的一個...道理可能大家都懂,但是怎麼實現哪?這個道理好抽象啊~其實這個就是是剛剛說的Word2vec說白了就是個簡單化的神經網絡模型,這個如果大家不理解...可以看看我寫的另一片文章https://blog.csdn.net/RHJlife/article/details/104747153,說了好久的關於如何輸入一直圖片輸出說她是一個貓,具體是如何做到的吶?和剛剛的問題一樣的。如果實在不能理解就這麼理解:神經網絡就是個黑色的盒子,它能完成你想做的事情,你想利用上下文推測單詞,或者利用單詞推測上下文,你只需要知道神經網絡就是個神奇的盒子,他可以根據你提供的大量數據去學習內在聯繫,然後變成一個你完成任務的小黑盒子(黑盒代表我們並不清楚他裏面具體代表啥)。

那麼下面就具體說說CBOW模型與Skip-Gram模型~

CBOW模型:

 

輸入層輸入的是上下文單詞的one-hot,隱藏層不需要激活函數(線性的)。輸出層維度跟輸入層的維度一樣,用的是Softmax迴歸。當這個模型訓練好以後,我們並不會用這個訓練好的模型處理新的任務,我們真正需要的是這個模型通過訓練數據所學得的參數,即隱層的權重矩陣。爲什麼哪?因爲任何一個單詞的one-hot乘以這個矩陣都將得到自己的詞向量這樣就可以免去訓練調用模型去得到詞向量。

其實本塊內容主要是神經網絡的,這一塊相關資料非常多,就不具體介紹了~

Skip-Gram模型:正在學習ing

放個目前感覺比較不錯的學習鏈接供大家參考:https://blog.csdn.net/qq_24003917/article/details/80389976

 

 

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