Word2vec淺顯的理解

2021-10-04 02:19:33 字數 1588 閱讀 2981

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

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

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

word2vec,是一群用來產生詞向量的相關模型。說白了就是個簡單化的神經網路模型,然後在nlp中最常見的就是兩種,也是google在2023年提出的兩種重要模型cbow模型與skip-gram模型。cbow模型的訓練輸入是某乙個特徵詞的上下文相關的詞對應的詞向量,而輸出就是這特定的乙個詞的詞向量。skip-gram模型和cbow的思路是反著來的,即輸入是特定的乙個詞的詞向量,而輸出是特定詞對應的上下文詞向量。(這樣就解決了語義上的問題了,每個單詞都包含周圍的詞語的語言)如果這個聽不明白可以結合下圖來了解一下,然後再結合乙個例子來說明一下,cbow:我喜歡

小貓咪,其中小是目標詞,假設那麼小的詞向量應該就和周圍的詞語有關係,用語文的說法來一下就是,小是貓咪的形容詞,和喜歡關係倒是不是很大... (這可能我說的有點不是很形象,大概意思就是每乙個詞都和周圍的詞有一些關係,例如語法主謂賓等結構啊,一些詞語搭配啥的),但是這個地方大家又會問了:這個道理我懂,但是我怎麼實現啊,或者怎麼和周圍的詞聯絡啊,一開始大家都是預設的,目標詞不是根據周圍詞的初始值來設定的嗎...

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

那麼下面就具體說說cbow模型與skip-gram模型~

cbow模型:

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

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

skip-gram模型:正在學習ing

通俗理解word2vec

參考 假設詞表中共有4萬個詞彙,現在知道第t個詞前面的n 1個詞,預估第t個詞 首先將n 1 依據詞表進行onehot編碼得到n 1個 1 4萬 的稀疏向量 只有乙個位置為1,其餘為0 然後為每乙個詞 隨機初始化乙個 1 k 維的詞向量c,這n 1個詞向量經過拼接 求和等操作得到乙個1 k維的向量,...

與word2vec 原來word2vec那麼簡單

說到word2vec,它可謂非結構化資料裡面的佼佼者,尤其是在推薦和nlp當中,足以體現它的優勢所在,並且多年一直備受工業界喜愛.那麼word2vec到底是怎麼個原理的,發現身邊總是有很多人問,確不能準確的說出為什麼是兩個矩陣,到底是怎麼自動反向傳播的,以及對於softmax之後那麼大的維度資料,是...

word2vec的細節理解

n gram實際上是做了乙個n 1階的馬爾科夫假設。用的方法應該是貝葉斯的概率理論 word2vec是使用神經網路訓練的一套概率語言模型。收入的引數是詞向量。這裡的詞向量應該是屬於那種 onehot編碼 的詞向量吧?對於語料庫c裡的任意乙個詞w,將context w 取為前面n 1個詞 類似於n g...