通俗易懂word2vec详解词嵌入-深度学习
https://blog.csdn.net/just_so_so_fnc/article/details/103304995
skip-gram 原理沒看完
https://blog.csdn.net/Jemila/article/details/72831640
skip-gram源碼解析
https://blog.csdn.net/itplus/article/details/37969519
基礎(chǔ)
https://blog.csdn.net/weixin_41843918/article/details/90312339
skip-gram 重點(diǎn)
https://blog.csdn.net/qq_24003917/article/details/80389976
skip-gram
https://zhuanlan.zhihu.com/p/35500923
https://blog.csdn.net/u011748542/article/details/85880852
gensim.models.word2vec 參數(shù)說(shuō)明
前言
自從Mikolov在他2013年的論文“Efficient Estimation of Word Representation in Vector Space”提出詞向量的概念后,NLP領(lǐng)域仿佛一下子進(jìn)入了embedding的世界,Sentence2Vec、Doc2Vec、Everything2Vec。詞向量基于語(yǔ)言模型的假設(shè)——“一個(gè)詞的含義可以由它的上下文推斷得出“,提出了詞的Distributed Representation表示方法。相較于傳統(tǒng)NLP的高維、稀疏的表示法(One-hot Representation),Word2Vec訓(xùn)練出的詞向量是低維、稠密的。Word2Vec利用了詞的上下文信息,語(yǔ)義信息更加豐富,目前常見的應(yīng)用有:
- 使用訓(xùn)練出的詞向量作為輸入特征,提升現(xiàn)有系統(tǒng),如應(yīng)用在情感分析、詞性標(biāo)注、語(yǔ)言翻譯等神經(jīng)網(wǎng)絡(luò)中的輸入層。
- 直接從語(yǔ)言學(xué)的角度對(duì)詞向量進(jìn)行應(yīng)用,如使用向量的距離表示詞語(yǔ)相似度、query相關(guān)性等。
注:前言部分內(nèi)容來(lái)自參考文獻(xiàn)1。
1.什么是word2vec
如果用一句比較簡(jiǎn)單的話來(lái)總結(jié),word2vec是用一個(gè)一層的神經(jīng)網(wǎng)絡(luò)(即CBOW)把one-hot形式的稀疏詞向量映射稱為一個(gè)n維(n一般為幾百)的稠密向量的過(guò)程。為了加快模型訓(xùn)練速度,其中的tricks包括Hierarchical softmax,negative sampling, Huffman Tree等。
在NLP中,最細(xì)粒度的對(duì)象是詞語(yǔ)。如果我們要進(jìn)行詞性標(biāo)注,用一般的思路,我們可以有一系列的樣本數(shù)據(jù)(x,y)。其中x表示詞語(yǔ),y表示詞性。而我們要做的,就是找到一個(gè)x -> y的映射關(guān)系,傳統(tǒng)的方法包括Bayes,SVM等算法。但是我們的數(shù)學(xué)模型,一般都是數(shù)值型的輸入。但是NLP中的詞語(yǔ),是人類的抽象總結(jié),是符號(hào)形式的(比如中文、英文、拉丁文等等),所以需要把他們轉(zhuǎn)換成數(shù)值形式,或者說(shuō)——嵌入到一個(gè)數(shù)學(xué)空間里,這種嵌入方式,就叫詞嵌入(word embedding),而 Word2vec,就是詞嵌入( word embedding) 的一種。
在 NLP 中,把 x 看做一個(gè)句子里的一個(gè)詞語(yǔ),y 是這個(gè)詞語(yǔ)的上下文詞語(yǔ),那么這里的 f,便是 NLP 中經(jīng)常出現(xiàn)的『語(yǔ)言模型』(language model),這個(gè)模型的目的,就是判斷 (x,y) 這個(gè)樣本,是否符合自然語(yǔ)言的法則,更通俗點(diǎn)說(shuō)就是:詞語(yǔ)x和詞語(yǔ)y放在一起,是不是人話。
Word2vec 正是來(lái)源于這個(gè)思想,但它的最終目的,不是要把 f 訓(xùn)練得多么完美,而是只關(guān)心模型訓(xùn)練完后的副產(chǎn)物——模型參數(shù)(這里特指神經(jīng)網(wǎng)絡(luò)的權(quán)重),并將這些參數(shù),作為輸入 x 的某種向量化的表示,這個(gè)向量便叫做——詞向量。
(上面部分內(nèi)容來(lái)自參考文獻(xiàn)2)
2.CBOW與Skip-Gram
word2vec里面有兩個(gè)重要的模型-CBOW模型(Continuous Bag-of-Words Model)與Skip-gram模型。在Tomas Mikolov的paper中給出了示意圖。
由名字與圖都很容易看出來(lái),CBOW就是根據(jù)某個(gè)詞前面的C個(gè)詞或者前后C個(gè)連續(xù)的詞,來(lái)計(jì)算某個(gè)詞出現(xiàn)的概率。Skip-Gram Model相反,是根據(jù)某個(gè)詞,然后分別計(jì)算它前后出現(xiàn)某幾個(gè)詞的各個(gè)概率。
上一張圖,可以比較清楚地看清楚CBOW的訓(xùn)練過(guò)程。
(圖片來(lái)自網(wǎng)絡(luò))
把這張圖看懂,基本word2vec就懂了一大半。下面來(lái)詳細(xì)說(shuō)說(shuō)這張圖。
詞向量最簡(jiǎn)單的方式是1-of-N的one-hot方式。onehot對(duì)于同學(xué)們來(lái)說(shuō)都很熟悉了,也就是從很大的詞庫(kù)corpus里選V個(gè)頻率最高的詞(忽略其他的) ,V一般比較大,比如V=10W,固定這些詞的順序,然后每個(gè)詞就可以用一個(gè)V維的稀疏向量表示了,這個(gè)向量只有一個(gè)位置的元素是1,其他位置的元素都是0。One hot方式其實(shí)就是簡(jiǎn)單的直接映射,所以缺點(diǎn)也很明顯,維數(shù)很大,也沒啥計(jì)算上的意義。
在上圖中,
1、Input layer輸出層:是上下文單詞的one hot。假設(shè)單詞向量空間的維度為V,即整個(gè)詞庫(kù)corpus大小為V,上下文單詞窗口的大小為C。
2、假設(shè)最終詞向量的維度大小為N,則圖中的權(quán)值共享矩陣為W。W的大小為 V * N,并且初始化。
3、假設(shè)語(yǔ)料中有一句話"我愛你"。如果我們現(xiàn)在關(guān)注"愛"這個(gè)詞,令C=2,則其上下文為"我",“你”。模型把"我" "你"的onehot形式作為輸入。易知其大小為1V。C個(gè)1V大小的向量分別跟同一個(gè)V * N大小的權(quán)值共享矩陣W相乘,得到的是C個(gè)1N大小的隱層hidden layer。
4.C個(gè)1N大小的hidden layer取平均,得到一個(gè)1N大小的向量,即圖中的Hidden layer。
5.輸出權(quán)重矩陣W’為NV,并進(jìn)行相應(yīng)的初始化工作。
6.將得到的Hidden layer向量 1V與W’相乘,并且用softmax處理,得到1V的向量,此向量的每一維代表corpus中的一個(gè)單詞。概率中最大的index所代表的單詞為預(yù)測(cè)出的中間詞。
7.與groud truth中的one hot比較,求loss function的的極小值。
具體計(jì)算過(guò)程為:
從input -> hidden: WT?xWT?xWT?xWT?xWT?x W^T * xWT?xWT?xWT?xlen(w)=u∈vocab∑?count(u)3/4count(w)3/4?
參考文獻(xiàn):
1.https://zhuanlan.zhihu.com/p/28491088
2.https://zhuanlan.zhihu.com/p/26306795
3.http://alwa.info/2016/04/24/Autoencoder-%E8%AF%A6%E8%A7%A3/
4.https://qrfaction.github.io/2018/03/20/%E6%95%B0%E6%8D%AE%E7%AB%9E%E8%B5%9Btrick%E6%80%BB%E7%BB%93/ 數(shù)據(jù)競(jìng)賽trick總結(jié)
</div><div><div></div></div><link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet"><div class="more-toolbox"><div class="left-toolbox"><ul class="toolbox-list"><li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true"><use xlink:href="#csdnc-thumbsup"></use></svg><span class="name">點(diǎn)贊</span><span class="count">18</span></a></li><li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true"><use xlink:href="#icon-csdnc-Collection-G"></use></svg><span class="name">收藏</span></a></li><li class="tool-item tool-active is-share"><a href="javascript:;" data-report-click="{"mod":"1582594662_002"}"><svg class="icon" aria-hidden="true"><use xlink:href="#icon-csdnc-fenxiang"></use></svg>分享</a></li><!--打賞開始--><!--打賞結(jié)束--><li class="tool-item tool-more"><a><svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg></a><ul class="more-box"><li class="item"><a class="article-report">文章舉報(bào)</a></li></ul></li></ul></div></div><div class="person-messagebox"><div class="left-message"><a href="https://blog.csdn.net/bitcarmanlee"><img src="https://profile.csdnimg.cn/C/6/1/3_bitcarmanlee" class="avatar_pic" username="bitcarmanlee"><img src="https://g.csdnimg.cn/static/user-reg-year/1x/4.png" class="user-years"></a></div><div class="middle-message"><div class="title"><span class="tit"><a href="https://blog.csdn.net/bitcarmanlee" data-report-click="{"mod":"popu_379"}" target="_blank">bitcarmanlee</a></span></div><div class="text"><span>發(fā)布了441 篇原創(chuàng)文章</span> · <span>獲贊 1748</span> · <span>訪問(wèn)量 463萬(wàn)+</span></div></div><div class="right-message"><a href="https://bbs.csdn.net/topics/395530810" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-messageboard">他的留言板</a><a class="btn btn-sm bt-button personal-watch" data-report-click="{"mod":"popu_379"}">關(guān)注</a></div></div></div>
</article>
總結(jié)
以上是生活随笔為你收集整理的通俗易懂word2vec详解词嵌入-深度学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python实现glove,gensim
- 下一篇: 错位禁位排列-数学