日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识

發(fā)布時(shí)間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 詞向量基礎(chǔ)
    • One-hot represention
    • Distributed Representation
  • word2vec 基礎(chǔ)知識(shí)
    • CBOW 和 Skip-gram
    • 霍夫曼樹(shù)

系列文章:

  • 【word2vec】篇一:理解詞向量、CBOW與Skip-Gram等知識(shí)
  • 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型
  • 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型
  • 由于計(jì)算機(jī)不能直接對(duì)各種字符進(jìn)行運(yùn)算,為此需要將詞的表示進(jìn)行一些轉(zhuǎn)換。因此,在自然語(yǔ)言處理中,通常需要對(duì)輸入的語(yǔ)料進(jìn)行一些預(yù)處理:

    其中,如何對(duì)詞匯進(jìn)行表示是很關(guān)鍵的問(wèn)題,糟糕的表示方法容易導(dǎo)致所謂的 “Garbage in, garbage out”。

    詞向量基礎(chǔ)

    對(duì)詞匯的表示,常見(jiàn)的有One-hot represention 和 Distributed Representation 兩種形式。

    One-hot represention

    One-hot represention 將詞匯用二進(jìn)制向量表示,這個(gè)向量表示的詞匯,僅僅在詞匯表中的索引位置處為1,其他地方都為0。例子如下圖所示:

    這樣的方式表示詞匯雖然簡(jiǎn)單,但是也有如下缺點(diǎn):

    • 單詞的上下文丟失了。
    • 沒(méi)有考慮頻率信息。
    • 詞匯量大的情況下,向量維度高且稀疏,占用內(nèi)存。

    Distributed Representation

    Distributed Representation 也可以理解為Word Embedding,具體形式為:

    注意到,使用Word Embedding得到的向量維度遠(yuǎn)小于詞匯表的個(gè)數(shù)。如果將上面的向量在空間中表示,可以得到:

    上圖告訴我們,通過(guò)詞向量之間的距離可以度量他們之間的關(guān)系,意思相近的詞在空間中的距離比較近。出現(xiàn)這種現(xiàn)象的原因是,我們最后得到的詞向量在訓(xùn)練過(guò)程中學(xué)習(xí)到了詞的上下文。

    那么,Distributed Representation 要如何得到?

  • 之前介紹的神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型可以得到。

  • 接下來(lái)要介紹的 word2vec 就是另一種更受歡迎的方法。

  • word2vec 基礎(chǔ)知識(shí)

    word2vec 是 Google 于 2013 年推出的一個(gè)用于獲取 word vector 的工具包,它簡(jiǎn)單、高效,因此引起了很多人的關(guān)注。在正式講解 word2vec 前,還需要對(duì)一些基本概念有所了解。

    CBOW 和 Skip-gram

    CBOW 的思想是輸入是某一個(gè)詞wtw_twt?的上下文相關(guān)的詞對(duì)應(yīng)的詞向量,而輸出就是wtw_twt?的詞向量。如下圖所示:

    可以看到,模型對(duì)輸入的上下文詞匯進(jìn)行了求和運(yùn)算,使用求和后的向量表示上下文的信息,然后學(xué)習(xí)wtw_twt?的向量表示。

    Skip-Gram 的思想是和 CBOW 的思路是反著來(lái)的,即輸入是特定的一個(gè)詞wtw_twt?的詞向量,而輸出是特定詞對(duì)應(yīng)的上下文詞向量。

    word2vec 根據(jù)輸入輸出形式的不同,可以分為CBOW (Continuous Bag-of-Words) 與Skip-Gram兩種模型。

    霍夫曼樹(shù)

    一般情況下,詞匯表中詞匯的數(shù)量是非常多的,如果用傳統(tǒng)的DNN+Softmax的方式來(lái)訓(xùn)練詞向量,計(jì)算量太大了。于是,word2vec 使用的數(shù)據(jù)結(jié)構(gòu)是用霍夫曼樹(shù)來(lái)代替隱藏層和輸出層的神經(jīng)元。霍夫曼樹(shù)的葉子節(jié)點(diǎn)起到輸出層神經(jīng)元的作用,葉子節(jié)點(diǎn)的個(gè)數(shù)即為詞匯表的小大, 而內(nèi)部節(jié)點(diǎn)則起到隱藏層神經(jīng)元的作用。具體的內(nèi)容,我們?cè)谥髸?huì)講解。這里首先需要了解下霍夫曼樹(shù)。

    從實(shí)際的例子出發(fā),看看如何構(gòu)造霍夫曼樹(shù):

    假設(shè)有(a,b,c,d,e,f)共6個(gè)詞匯,詞匯的權(quán)值用詞頻表示:wa=16,wb=4,wc=8,wd=6,we=20,wf=3w_a=16,w_b=4,w_c=8,w_d=6,w_e=20,w_f=3wa?=16,wb?=4,wc?=8,wd?=6,we?=20,wf?=3,我們假設(shè)這6個(gè)詞匯是6棵只要根節(jié)點(diǎn)的森林集合。于是構(gòu)造步驟如下:

    首先是權(quán)值最小的b和f合并,得到的新樹(shù),根節(jié)點(diǎn)權(quán)重是7。將b于f這兩個(gè)樹(shù)從列表中刪除,并且添加剛剛得到的合并的樹(shù)。此時(shí)森林里共有5棵樹(shù),根節(jié)點(diǎn)權(quán)重分別是16,8,6,20,7。此時(shí)根節(jié)點(diǎn)權(quán)重最小的6,7對(duì)應(yīng)的樹(shù)合并,得到新子樹(shù),依次類(lèi)推,最終得到下面的霍夫曼樹(shù):

    如何編碼呢?

    一般對(duì)于一個(gè)霍夫曼樹(shù)的節(jié)點(diǎn)(根節(jié)點(diǎn)除外),可以約定左子樹(shù)編碼為0,右子樹(shù)編碼為1.如上圖,則可以得到c的編碼是00。

    注意,在word2vec中,約定編碼方式和上面的例子相反,即約定左子樹(shù)編碼為1,右子樹(shù)編碼為0,同時(shí)約定左子樹(shù)的權(quán)重不小于右子樹(shù)的權(quán)重。

    那么霍夫曼樹(shù)有什么好處呢?

    一般得到霍夫曼樹(shù)后我們會(huì)對(duì)葉子節(jié)點(diǎn)進(jìn)行霍夫曼編碼,由于權(quán)重高的葉子節(jié)點(diǎn)越靠近根節(jié)點(diǎn),而權(quán)重低的葉子節(jié)點(diǎn)會(huì)遠(yuǎn)離根節(jié)點(diǎn)。這樣我們的高權(quán)重節(jié)點(diǎn)編碼值較短,而低權(quán)重值編碼值較長(zhǎng)。這保證的樹(shù)的帶權(quán)路徑最短,即我們希望越常用的詞擁有更短的編碼。

    有了上面的基礎(chǔ)知識(shí),就可以對(duì)word2vec進(jìn)行講解了。相比于用傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)的方法來(lái)訓(xùn)練詞向量,于word2vec提出了有兩種改進(jìn)方法:一種是基于 Hierarchical Softmax 算法的,另一種是基于 Negative Sampling 算法的。

    參考文章:

    word2vec模型

    word2vec 中的數(shù)學(xué)原理詳解

    總結(jié)

    以上是生活随笔為你收集整理的【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。