日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

机器学习算法(十三):word2vec

發(fā)布時(shí)間:2024/1/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习算法(十三):word2vec 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

1 單詞表達(dá)?

1.1?Word embedding

1.2 獨(dú)熱(One hot representation)

1.2.1 獨(dú)熱編碼介紹

1.2.2?優(yōu)缺點(diǎn)分析

1.3?Dristributed representation

1.4?共現(xiàn)矩陣 (Cocurrence matrix)

3?word2vec

3.1 word2vec介紹

3.2?CBOW模型

3.2.1?Simple CBOW Model

?3.2.2?CBOW Multi-Word Context Model

?3.2.3?訓(xùn)練連續(xù)詞袋模型

3.3?Skip-gram 模型

3.3.1?Skip-gram 模型介紹

3.3.2?訓(xùn)練跳字模型

3.4?使用gensim進(jìn)行訓(xùn)練

3.5?tricks1:hierarchical softmax (CBOW)

3.5.1?Huffman Tree(哈夫曼樹)

3.5.2 預(yù)備知識

3.5.3?word2vec的hierarchical softmax結(jié)構(gòu)

3.5.4 目標(biāo)函數(shù)

3.5.5?參數(shù)更新

3.5.5?偽代碼

3.6 tricks1:hierarchical softmax (Skip-gram)

3.6.1?Skip-gram模型網(wǎng)絡(luò)結(jié)構(gòu)

3.6.2?Skip-gram的目標(biāo)函數(shù)

3.6.3?參數(shù)更新

3.6.4 偽代碼

3.7 tricks2:negative sampling?(CBOW)

3.8 tricks2:negative sampling?(Skip-gram)

3.9 關(guān)于Word2Vec若干問題的思考

3.10 python實(shí)現(xiàn)(gensim)


1 單詞表達(dá)?

1.1?Word embedding

? ? ? ? Embedding是數(shù)學(xué)領(lǐng)域的有名詞,是指某個(gè)對象 X 被嵌入到另外一個(gè)對象 Y 中,映射 f : X → Y ,例如有理數(shù)嵌入實(shí)數(shù)。

? ? ? ? Word embedding 是NLP中一組語言模型(language modeling)和特征學(xué)習(xí)技術(shù)(feature learning techniques)的總稱,這些技術(shù)會把詞匯表中的單詞或者短語(words or phrases)映射成由實(shí)數(shù)構(gòu)成的向量上。?

? ? ? ? Word embedding就是要從數(shù)據(jù)中自動學(xué)習(xí)?輸入空間到Distributed representation空間的映射f?。

? ? ? ? 最簡單的一種Word Embedding方法,就是基于詞袋(BOW)One-Hot表示,還有另外一個(gè)方法:共現(xiàn)矩陣 (Cocurrence matrix)。

1.2 獨(dú)熱(One hot representation)

1.2.1 獨(dú)熱編碼介紹

? ? ? ? 獨(dú)熱編碼即 One-Hot 編碼,又稱一位有效編碼,其方法是使用N位狀態(tài)寄存器來對N個(gè)狀態(tài)進(jìn)行編碼,每個(gè)狀態(tài)都有它獨(dú)立的寄存器位,并且在任意時(shí)候,其中只有一位有效。舉個(gè)例子,假設(shè)我們有四個(gè)樣本(行),每個(gè)樣本有三個(gè)特征(列),如圖:

? ? ? ? 我們的feature_1有兩種可能的取值,比如是男/女,這里男用1表示,女用2表示。feature_2 和feature_3各有4種取值(狀態(tài))。one-hot編碼就是保證每個(gè)樣本中的單個(gè)特征只有1位處于狀態(tài)1,其他的都是0。上述狀態(tài)用one-hot編碼如下圖所示:

考慮一下三個(gè)特征:

  • ["male", "female"]
  • ["from Europe", "from US", "from Asia"]
  • ["uses Firefox", "uses Chrome", "uses Safari", "uses Internet Explorer"]

將它換成獨(dú)熱編碼后,應(yīng)該是:

  • feature1=[01,10]
  • feature2=[001,010,100]
  • feature3=[0001,0010,0100,1000]

1.2.2?優(yōu)缺點(diǎn)分析

  • 優(yōu)點(diǎn):一是解決了分類器不好處理離散數(shù)據(jù)的問題,二是在一定程度上也起到了擴(kuò)充特征的作用。
  • 缺點(diǎn):在文本特征表示上有些缺點(diǎn)就非常突出了。首先,它是一個(gè)詞袋模型,不考慮詞與詞之間的順序(文本中詞的順序信息也是很重要的);其次,它假設(shè)詞與詞相互獨(dú)立(在大多數(shù)情況下,詞與詞是相互影響的);最后,它得到的特征是離散稀疏的。

? ? ? ? 為什么得到的特征是離散稀疏的?

? ? ? ?上面舉例比較簡單,但現(xiàn)實(shí)情況可能不太一樣。比如如果將世界所有城市名稱作為語料庫的話,那這個(gè)向量會過于稀疏,并且會造成維度災(zāi)難。

  • 杭州 [0,0,0,0,0,0,0,1,0,……,0,0,0,0,0,0,0]
  • 上海 [0,0,0,0,1,0,0,0,0,……,0,0,0,0,0,0,0]
  • 寧波 [0,0,0,1,0,0,0,0,0,……,0,0,0,0,0,0,0]
  • 北京 [0,0,0,0,0,0,0,0,0,……,1,0,0,0,0,0,0]

? ? ? ? 在語料庫中,杭州、上海、寧波、北京各對應(yīng)一個(gè)向量,向量中只有一個(gè)值為1,其余都為0。

? ? ? ? 能不能把詞向量的維度變小呢?

? ? ? ? Dristributed representation(詞向量)可以解決One hot representation的問題。

1.3?Dristributed representation(詞向量)

? ? ? ? 然而每個(gè)單詞彼此無關(guān)這個(gè)特點(diǎn)明顯不符合我們的現(xiàn)實(shí)情況。我們知道大量的單詞都是有關(guān)。

  • 語義:girl和woman雖然用在不同年齡上,但指的都是女性。
  • 復(fù)數(shù):word和words僅僅是復(fù)數(shù)和單數(shù)的差別。
  • 時(shí)態(tài):buy和bought表達(dá)的都是“買”,但發(fā)生的時(shí)間不同。

? ? ? ? 所以用one hot representation的編碼方式,上面的特性都沒有被考慮到。

? ? ? ? 我們更希望用諸如“語義”,“復(fù)數(shù)”,“時(shí)態(tài)”等維度去描述一個(gè)單詞。每一個(gè)維度不再是0或1,而是連續(xù)的實(shí)數(shù),表示不同的程度。

? ? ? ? Dristributed representation可以解決One hot representation的問題,它的思路是通過訓(xùn)練,將每個(gè)詞都映射到一個(gè)較短的詞向量上來。所有的這些詞向量就構(gòu)成了向量空間,進(jìn)而可以用普通的統(tǒng)計(jì)學(xué)的方法來研究詞與詞之間的關(guān)系。這個(gè)較短的詞向量維度是多大呢?這個(gè)一般需要我們在訓(xùn)練時(shí)自己來指定。

? ? ? ? 比如下圖我們將詞匯表里的詞用"Royalty","Masculinity", "Femininity"和"Age"4個(gè)維度來表示,King這個(gè)詞對應(yīng)的詞向量可能是(0.99,0.99,0.05,0.7)。當(dāng)然在實(shí)際情況中,我們并不能對詞向量的每個(gè)維度做一個(gè)很好的解釋。

? ? ? ? 我們將king這個(gè)詞從一個(gè)可能非常稀疏的向量所在的空間,映射到現(xiàn)在這個(gè)四維向量所在的空間,必須滿足以下性質(zhì):

(1)這個(gè)映射是單射(單射:任給x1和x2屬于X,若x1≠x2,則f(x1)≠f(x2),稱f為單射);
(2)映射之后的向量不會丟失之前的那種向量所含的信息。

? ? ? ? 這個(gè)過程稱為word embedding(詞嵌入),即將高維詞向量嵌入到一個(gè)低維空間。如圖

? ? ? ? 經(jīng)過我們一系列的降維神操作,有了用Dristributed representation表示的較短的詞向量,我們就可以較容易的分析詞之間的關(guān)系了,比如我們將詞的維度降維到2維,有一個(gè)有趣的研究表明,用下圖的詞向量表示我們的詞時(shí),我們可以發(fā)現(xiàn):

? ? ? ? 出現(xiàn)這種現(xiàn)象的原因是,我們得到最后的詞向量的訓(xùn)練過程中引入了詞的上下文。

? ? ? ? You shall know a word by the company it keeps.

? ? ? ? 舉個(gè)例子:

? ? ? ? 你想到得到"learning"的詞向量,但訓(xùn)練過程中,你同時(shí)考慮了它左右的上下文,那么就可以使"learning"帶有語義信息了。通過這種操作,我們可以得到近義詞,甚至cat和它的復(fù)數(shù)cats的向量極其相近。

1.4?共現(xiàn)矩陣 (Cocurrence matrix)

? ? ? ? ?一個(gè)非常重要的思想是,我們認(rèn)為某個(gè)詞的意思跟它臨近的單詞是緊密相關(guān)的。這時(shí)我們可以設(shè)定一個(gè)窗口(大小一般是5~10),如下窗口大小是2,那么在這個(gè)窗口內(nèi),與rests 共同出現(xiàn)的單詞就有l(wèi)ife、he、in、peace。然后我們就利用這種共現(xiàn)關(guān)系來生成詞向量。

? ? ? ??

? ? ? ? 例如,現(xiàn)在我們的語料庫包括下面三份文檔資料:

? ? ? ? I like deep learning.?

? ? ? ? I like NLP.?

? ? ? ? I enjoy flying.

? ? ? ? ?作為示例,我們設(shè)定的窗口大小為1,也就是只看某個(gè)單詞周圍緊鄰著的那個(gè)單詞。此時(shí),將得到一個(gè)對稱矩陣——共現(xiàn)矩陣。因?yàn)樵谖覀兊恼Z料庫中,I 和 like做為鄰居同時(shí)出現(xiàn)在窗口中的次數(shù)是2,所以下表中I 和like相交的位置其值就是2。這樣我們也實(shí)現(xiàn)了將word變成向量的設(shè)想,在共現(xiàn)矩陣每一行(或每一列)都是對應(yīng)單詞的一個(gè)向量表示。

? ? ? ? 雖然Cocurrence matrix一定程度上解決了單詞間相對位置也應(yīng)予以重視這個(gè)問題。但是它仍然面對維度災(zāi)難。也即是說一個(gè)word的向量表示長度太長了。這時(shí),很自然地會想到SVD或者PCA等一些常用的降維方法。當(dāng)然,這也會帶來其他的一些問題,例如,我們的詞匯表中有新詞加入,那么就很難為他分配一個(gè)新的向量。

3?word2vec

3.1 word2vec介紹

? ? ? ? word2vec模型其實(shí)就是簡單化的神經(jīng)網(wǎng)絡(luò)。word2vec是用一個(gè)一層的神經(jīng)網(wǎng)絡(luò)(即CBOW)把one-hot形式的稀疏詞向量映射稱為一個(gè)n維(n一般為幾百)的稠密向量的過程。為了加快模型訓(xùn)練速度,其中的tricks包括Hierarchical softmaxnegative samplingHuffman Tree等。

? ? ? ? 在NLP中,最細(xì)粒度的對象是詞語。如果我們要進(jìn)行詞性標(biāo)注,用一般的思路,我們可以有一系列的樣本數(shù)據(jù)(x,y)。其中x表示詞語,y表示詞性。而我們要做的,就是找到一個(gè)x -> y的映射關(guān)系,傳統(tǒng)的方法包括BayesSVM等算法。但是我們的數(shù)學(xué)模型,一般都是數(shù)值型的輸入。但是NLP中的詞語,是人類的抽象總結(jié),是符號形式的(比如中文、英文、拉丁文等等),所以需要把他們轉(zhuǎn)換成數(shù)值形式,或者說——嵌入到一個(gè)數(shù)學(xué)空間里,這種嵌入方式,就叫詞嵌入(word embedding),而 Word2vec,就是詞嵌入( word embedding) 的一種。

? ? ? ? 輸入是One-Hot VectorHidden Layer沒有激活函數(shù),也就是線性的單元。Output Layer維度跟Input Layer的維度一樣,用的是Softmax回歸。當(dāng)這個(gè)模型訓(xùn)練好以后,我們并不會用這個(gè)訓(xùn)練好的模型處理新的任務(wù),我們真正需要的是這個(gè)模型通過訓(xùn)練數(shù)據(jù)所學(xué)得的參數(shù),例如隱層的權(quán)重矩陣。

? ? ? ? 這個(gè)模型是如何定義數(shù)據(jù)的輸入和輸出呢?一般分為CBOW(Continuous Bag-of-Words)Skip-Gram兩種模型。

  • CBOW模型訓(xùn)練輸入是某一個(gè)特征詞的上下文相關(guān)的詞對應(yīng)的詞向量,而輸出就是這特定的一個(gè)詞的詞向量?!?/li>
  • Skip-Gram模型CBOW的思路是反著來的,即輸入是特定的一個(gè)詞的詞向量,而輸出是特定詞對應(yīng)的上下文詞向量。

? ? ? ? CBOW小型數(shù)據(jù)庫比較合適,而Skip-Gram大型語料中表現(xiàn)更好。

? ? ? ? Word2Vec模型實(shí)際上分為了兩個(gè)部分,第一部分為建立模型,第二部分是通過模型獲取嵌入詞向量。Word2Vec的整個(gè)建模過程實(shí)際上與自編碼器(auto-encoder)的思想很相似,即先基于訓(xùn)練數(shù)據(jù)構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò),當(dāng)這個(gè)模型訓(xùn)練好以后,我們并不會用這個(gè)訓(xùn)練好的模型處理新的任務(wù),我們真正需要的是這個(gè)模型通過訓(xùn)練數(shù)據(jù)所學(xué)得的參數(shù),例如隱層的權(quán)重矩陣——后面我們將會看到這些權(quán)重在Word2Vec中實(shí)際上就是我們試圖去學(xué)習(xí)的“word vectors”?;谟?xùn)練數(shù)據(jù)建模的過程,我們給它一個(gè)名字叫“Fake Task”,意味著建模并不是我們最終的目的。

上面提到的這種方法實(shí)際上會在無監(jiān)督特征學(xué)習(xí)(unsupervised feature learning)中見到,最常見的就是自編碼器(auto-encoder):通過在隱層將輸入進(jìn)行編碼壓縮,繼而在輸出層將數(shù)據(jù)解碼恢復(fù)初始狀態(tài),訓(xùn)練完成后,我們會將輸出層“砍掉”,僅保留隱層。

3.2?CBOW模型

? ? ? ? 連續(xù)詞袋模型與跳字模型類似。與跳字模型最大的不同在于,連續(xù)詞袋模型假設(shè)基于某中心詞在文本序列前后的背景詞來生成該中心詞。在同樣的文本序列“the”“man”“l(fā)oves”“his”“son”里,以“l(fā)oves”作為中心詞,且背景窗口大小為2時(shí),連續(xù)詞袋模型關(guān)心的是,給定背景詞“the”“man”“his”“son”生成中心詞“l(fā)oves”的條件概率,也就是

3.2.1?Simple CBOW Model

? ? ? ? 先從Simple CBOW model(僅輸入一個(gè)詞,輸出一個(gè)詞)框架說起。

如上圖所示:

  • input layer輸入的X是單詞的one-hot representation(考慮一個(gè)詞表V,里面的每一個(gè)詞??都有一個(gè)編號i∈{1,...,|V|},那么詞??的one-hot表示就是一個(gè)維度為|V|的向量,其中第i個(gè)元素值非零,其余元素全為0,例如:);
  • 輸入層到隱藏層之間有一個(gè)權(quán)重矩陣W,隱藏層得到的值是由輸入X乘上權(quán)重矩陣得到的(細(xì)心的人會發(fā)現(xiàn),0-1向量乘上一個(gè)矩陣,就相當(dāng)于選擇了權(quán)重矩陣的某一行,如圖:輸入的向量X是[0,0,1,0,0,0],W的轉(zhuǎn)置乘上X就相當(dāng)于從矩陣中選擇第3行[2,1,3]作為隱藏層的值);
  • 隱藏層到輸出層也有一個(gè)權(quán)重矩陣W',因此,輸出層向量y的每一個(gè)值,其實(shí)就是隱藏層的向量點(diǎn)乘權(quán)重向量W'的每一列,比如輸出層的第一個(gè)數(shù)7,就是向量[2,1,3]和列向量[1,2,1]點(diǎn)乘之后的結(jié)果;
  • 最終的輸出需要經(jīng)過softmax函數(shù),將輸出向量中的每一個(gè)元素歸一化到0-1之間的概率,概率最大的,就是預(yù)測的詞。

?3.2.2?CBOW Multi-Word Context Model

? ? ? ? ?把單個(gè)輸入換成多個(gè)輸入(劃紅線部分)。

  • 輸入層(Input Layer):上下文單詞的onehot,假設(shè)單詞向量空間dim為V,上下文單詞個(gè)數(shù)為C。
  • 所有onehot分別乘以共享的輸入權(quán)重矩陣W,(V,N)矩陣,N為自己設(shè)定的數(shù),初始化權(quán)重矩陣W。
  • 隱藏層(Hidden Layer):所得的向量 (因?yàn)槭莖nehot所以為向量)?相加求平均作為隱層向量, size為1N.
  • 乘以輸出權(quán)重矩陣W' (NV)
  • 輸出層(Output Layer):得到向量 (1V) 激活函數(shù)處理得到V-dim概率分布(因?yàn)槭莖nehot,其中的每一維代表著一個(gè)單詞)
  • 概率最大的index所指示的單詞為預(yù)測出的中間詞(target word)與true label的onehot做比較,誤差越小越好(根據(jù)誤差更新權(quán)重矩陣)
  • ? ? ? ? ? 因?yàn)檫B續(xù)詞袋模型的背景詞有多個(gè),我們將這些背景詞向量取平均,然后使用和跳字模型一樣的方法來計(jì)算條件概率。設(shè)和分別表示詞典中索引為 i 的詞作為背景詞中心詞的向量(注意符號的含義與跳字模型中的相反)。設(shè)中心詞在詞典中索引為 c,背景詞,在詞典中索引為,那么給定背景詞生成中心詞的條件概率

    ? ? ? ? ? ? ? ? ? ??

    ? ? ? ? 為了讓符號更加簡單,我們記,且,那么上式可以簡寫成:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    ? ? ? ? 給定一個(gè)長度為 T 的文本序列,設(shè)時(shí)間步 t 的詞為,背景窗口大小為m。連續(xù)詞袋模型的似然函數(shù)是由背景詞生成任一中心詞的概率:

    ? ? ? ? ? ? ? ?

    ? ? ? ? 此處使用點(diǎn)積來表示相似性,兩個(gè)向量的相似性越大,他們的點(diǎn)積就越大。

    ?3.2.3?訓(xùn)練連續(xù)詞袋模型

    ? ? ? ? 訓(xùn)練連續(xù)詞袋模型同訓(xùn)練跳字模型基本一致。連續(xù)詞袋模型的最大似然估計(jì):

    ? ? ? ???

    ? ? ? ? 等價(jià)于最小化損失函數(shù)

    ? ? ? ? ? ? ?

    ? ? ? ? ? =? ?

    ? ? ? ? ?注意到:

    ? ? ? ? ? ? ? ? ? 因?yàn)?#xff1a;

    ? ? ? ? ? ? ? ? ? ?所以:

    ? ? ? ? 通過微分,我們可以計(jì)算出上式中條件概率的對數(shù)有關(guān)任一背景詞向量的梯度:

    ? ? ? ??

    ? ? ? ? 有關(guān)其他詞向量的梯度同理可得。同跳字模型不一樣的一點(diǎn)在于,我們一般使用連續(xù)詞袋模型的背景詞向量作為詞的表征向量。

    3.3?Skip-gram 模型

    3.3.1?Skip-gram 模型介紹

    ? ? ? ? 從直觀上理解,Skip-Gram是通過給定輸入,即input word來預(yù)測上下文。

    ? ? ??

    • 輸入層(Input Layer):輸入層的輸入是數(shù)據(jù)的數(shù)字表示,那么該如何用數(shù)字表示文本數(shù)據(jù)呢?其實(shí),它的輸入使用的是one-hot編碼。假設(shè)有n個(gè)詞,則每一個(gè)詞可以用一個(gè)n維的向量來表示,這個(gè)n維向量只有一個(gè)位置是1,其余位置都是0。
    • 隱藏層(Hidden Layer):隱藏層的神經(jīng)單元數(shù)量,代表著每一個(gè)詞用向量表示的維度大小。假設(shè)我們的hidden_size取300,也就是我們的隱藏層有300個(gè)神經(jīng)元,那么對于每一個(gè)詞,我們的向量表示就是一個(gè)1*N的向量。有多少個(gè)詞,就有多少個(gè)這樣的向量。所以對于輸入層隱藏層之間的權(quán)值矩陣W,它的形狀應(yīng)該是[vocab_size, hidden_size]的矩陣。
    • 輸出層(Output Layer):從上面的圖上可以看出來,輸出層是一個(gè)[vocab_size]大小的向量,每一個(gè)值代表著輸出一個(gè)詞的概率。為什么要這樣輸出?因?yàn)槲覀兿胍?#xff0c;對于一個(gè)輸入詞,它接下來的詞最有可能的若干個(gè)詞是哪些,換句話說,我們需要知道它接下來的詞的概率分布。Output Layer維度跟Input Layer的維度一樣,用的是Softmax回歸。

    ? ? ? ? 跳字模型假設(shè)基于某個(gè)詞來生成它在文本序列周圍的詞。舉個(gè)例子,假設(shè)文本序列是“the”“man”“l(fā)oves”“his”“son”。以“l(fā)oves”作為中心詞,設(shè)背景窗口大小為2。如圖10.1所示,跳字模型所關(guān)心的是,給定中心詞“l(fā)oves”,生成與它距離不超過2個(gè)詞的背景詞“the”“man”“his”“son”的條件概率,即?

    ? ? ? ? ??

    ? ? ? ? 假設(shè)給定中心詞的情況下,背景詞的生成是相互獨(dú)立的,那么上式可以改寫成

    ? ? ? ? 在word2vec的兩個(gè)模型中,有一個(gè)叫做skip_window,即C的參數(shù),它代表著我們從當(dāng)前輸入數(shù)據(jù)的數(shù)字表示,即input word的一側(cè)(左邊或右邊)選取詞的數(shù)量。如果我們選定句子“The quick brown fox jumps over lazy dog”,設(shè)定窗口大小為2(window_size=2),也就是說我們僅選輸入詞前后各兩個(gè)詞和輸入詞進(jìn)行組合。下圖中,藍(lán)色代表input word,方框內(nèi)代表位于窗口內(nèi)的單詞。

    ? ? ? ??

    ? ? ? ?在跳字模型中,每個(gè)詞被表示成兩個(gè) d 維向量,用來計(jì)算條件概率。假設(shè)這個(gè)詞在詞典中索引為 i,當(dāng)它為中心詞時(shí)向量表示為 ,而為背景詞時(shí)向量表示為。設(shè)中心詞在詞典中索引為 c,背景詞在詞典中索引為 o,給定中心詞生成背景詞的條件概率可以通過對向量內(nèi)積做softmax運(yùn)算而得到:

    ? ? ? ? ? ? ? ? ? ??

    ? ? ? ? 其中詞典索引集。假設(shè)給定一個(gè)長度為 T 的文本序列,設(shè)時(shí)間步 t的詞為。假設(shè)給定中心詞的情況下背景詞的生成相互獨(dú)立,當(dāng)背景窗口大小為 m 時(shí),跳字模型的似然函數(shù)即給定任一中心詞生成所有背景詞的概率:

    ? ? ? ? ? ? ? ? ? ? ??

    ? ? ? ? ?這里小于1或大于T的時(shí)間步可以被忽略。

    同款疑問:word2vec的skip-gram輸出層時(shí)是怎么回事? - 知乎

    ? ? ? ? 假設(shè)Vocabulary大小為C,embedding以后的向量大小為v。

    ? ? ? ? 則Word2Vec中的權(quán)重個(gè)數(shù)為2C*v個(gè),其中輸入層到隱層的W1為[C, v]的一個(gè)矩陣,隱層到輸出層W2 同樣也是[C, v]的矩陣。W1代表center word的向量,W2代表context words的向量。

    ? ? ? ? 隱層出來的center word的向量去乘W2,此時(shí)實(shí)際是在計(jì)算centor word和context words中每個(gè)詞向量的similarity(logits),計(jì)算出的logits用softmax歸一化以后,再用label優(yōu)化就好了,label部分只有對應(yīng)的那個(gè)詞的位置是1,其余都是0。

    3.3.2?訓(xùn)練跳字模型

    ? ? ? ? ?假設(shè)現(xiàn)在有一個(gè)文本序列:I, want, to, learn, NLP

    ? ? ? ? ?首先遍歷這句話,選取中心詞,假設(shè)現(xiàn)在遍歷到了“to”這個(gè)單詞,然后這里有一個(gè)超參數(shù)叫做window size。假設(shè)window_size=2,則這個(gè)window中包括中心詞前后各兩個(gè)單詞。根據(jù)skip-gram,給定中心詞“to”,生成窗口內(nèi)單詞的概率(注意這里暫時(shí)不考慮停用詞):

    ? ? ? ????

    ? ? ? ?假設(shè)在給定中心詞的條件下每個(gè)單詞出現(xiàn)的概率是獨(dú)立的,這里很類似樸素貝葉斯的條件獨(dú)立性假設(shè),可以大大的簡化運(yùn)算。

    ? ? ? ? ?

    ? ? ? ? 上面模型介紹中也提到,輸出層通過一個(gè)softmax將結(jié)果轉(zhuǎn)換成了概率分布,因此計(jì)算的概率公式如下:

    ? ? ? ? ???

    ? ? ? ? ? ?其中分別代表上下文詞和中心詞,代表上下文詞詞向量和中心向量,是全體詞庫。這個(gè)概率就是給定中心詞的條件下,某個(gè)詞是上下文詞的概率。根據(jù)上面的簡化:

    ? ? ? ? ? ?每個(gè)詞的條件概率相互獨(dú)立,所以可以寫成連乘的形式:

    ? ? ? ?

    ? ? ? ?其中,t表示中心詞的位置,m是窗口大小這樣就得到了每個(gè)中心詞的計(jì)算上下文詞的概率,在這個(gè)式子中變量是上下文向量和中心詞向量,于 是只要改變參數(shù)使概率最大化就可以了。在這里使用極大似然估計(jì),首先對上式進(jìn)行化簡,對上式取負(fù)對數(shù):?

    ? ? ? ? ? ?

    ? ? ? ? 跳字模型的參數(shù)是每個(gè)詞所對應(yīng)的中心詞向量和背景詞向量。訓(xùn)練中我們通過最大化似然函數(shù)來學(xué)習(xí)模型參數(shù),即最大似然估計(jì)。這等價(jià)于最小化以下?lián)p失函數(shù)

    ? ? ? ? ? ? ??

    ? ? ? ? 如果使用隨機(jī)梯度下降,那么在每一次迭代里我們隨機(jī)采樣一個(gè)較短的子序列來計(jì)算有關(guān)該子序列的損失,然后計(jì)算梯度來更新模型參數(shù)。梯度計(jì)算的關(guān)鍵是條件概率的對數(shù)有關(guān)中心詞向量和背景詞向量的梯度。根據(jù)定義,首先看到

    ? ? ? ? ? ? ? ?

    ? ? ? ? 通過微分,我們可以得到上式中的梯度

    ? ? ? ? ? ? ? ?

    ? ? ? ? 它的計(jì)算需要詞典中所有詞以為中心詞的條件概率。有關(guān)其他詞向量的梯度同理可得。

    ? ? ? ? 訓(xùn)練結(jié)束后,對于詞典中的任一索引為 i 的詞,我們均得到該詞作為中心詞和背景詞的兩組詞向量和。在自然語言處理應(yīng)用中,一般使用跳字模型的中心詞向量作為詞的表征向量。

    ? ? ? ?訓(xùn)練完畢后,輸入層的每個(gè)單詞與矩陣W相乘得到的向量的就是我們想要的詞向量(word embedding),這個(gè)矩陣(所有單詞的word embedding)也叫做 look up table,其實(shí)這個(gè)look up table就是矩陣W自身,也就是說,任何一個(gè)單詞的onehot乘以這個(gè)矩陣都將得到自己的詞向量。有了look up table就可以免去訓(xùn)練過程直接查表得到單詞的詞向量了。

    注意:

    • skip-gram并沒有考慮語序問題。
    • 建模是fake task,真正目的是獲得權(quán)重矩陣,權(quán)重矩陣的每行分別是每個(gè)單詞的詞向量。
    • 在隱層只是用了矩陣乘法將高維onehot向量映射為一個(gè)低維稠密向量,這個(gè)向量就是中心詞向量,并沒有使用激活函數(shù)。
    • 在輸出層是將隱層輸出的中心詞向量和上下文詞向量相乘后輸入softmax分類器,最終輸出的是概率分布。
    • 在訓(xùn)練時(shí)每個(gè)詞都會交替變成中心詞向量和上下文詞向量

    3.4?使用gensim進(jìn)行訓(xùn)練

    用gensim學(xué)習(xí)word2vec

    示例:

    >>> from gensim.test.utils import common_texts, get_tmpfile >>> from gensim.models import Word2Vec >>> path = get_tmpfile("word2vec.model") >>> model = Word2Vec(common_texts, sg=1, size=100, window=5, min_count=1, workers=4) >>> model.save("word2vec.model") >>> print(model.wv.similarity('沙瑞金'.decode('utf-8'), '高育良'.decode('utf-8'))) >>> print(model.wv["沙瑞金"]

    ? ? ? ? 其中,sg=1是skip-gram算法,對低頻詞敏感;默認(rèn)sg=0為CBOW算法。

    ? ? ? ? 其余參數(shù)說明參見models.word2vec – Word2vec embeddings — gensim。

    ? ? "model = Word2Vec(sentences=None,size=100,alpha=0.025,window=5, min_count=5, max_vocab_size=None, sample=0.001,seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5, cbow_mean=1, hashfxn=<built-in function hash>,iter=5,null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000)\n",
    ? ? "# 參數(shù)解釋:\n",
    ? ? "# 1. sentences??第一個(gè)參數(shù)是預(yù)處理后的訓(xùn)練語料庫。是可迭代列表,但是對于較大的語料庫,可以考慮直接從磁盤/網(wǎng)絡(luò)傳輸句子的迭代。對于大語料集,建議使用BrownCorpus,Text8Corpus或lineSentence構(gòu)建。\n",
    ? ? "# 2. sg=1是skip-gram算法,對低頻詞敏感;默認(rèn)sg=0為CBOW算法。\n",
    ? ? "# 3. size(int) 是輸出詞向量的維數(shù),默認(rèn)值是100。這個(gè)維度的取值與我們的語料的大小相關(guān),比如小于100M的文本語料,則使用默認(rèn)值一般就可以了。如果是超大的語料,建議增大維度。值太小會導(dǎo)致詞映射因?yàn)闆_突而影響結(jié)果,值太大則會耗內(nèi)存并使算法計(jì)算變慢,一般值取為100到200之間,不過見的比較多的也有300維的。\n",
    ? ? "# 4. alpha: 是初始的學(xué)習(xí)速率,在訓(xùn)練過程中會線性地遞減到min_alpha。\n",
    ? ? "# 5. window(int)即詞向量上下文最大距離,是一個(gè)句子中當(dāng)前單詞和預(yù)測單詞之間的最大距離,skip-gram和cbow算法是基于滑動窗口來做預(yù)測,window越大,則和某一詞較遠(yuǎn)的詞也會產(chǎn)生上下文關(guān)系。默認(rèn)值為5。windows越大所需要枚舉的預(yù)測此越多,計(jì)算的時(shí)間越長。對于一般的語料這個(gè)值推薦在[5,10]之間。\n",
    ? ? "# 6. min_count 忽略所有頻率低于此值的單詞。默認(rèn)值為5。\n",
    ? ? "# 7. max_vocab_size: 設(shè)置詞向量構(gòu)建期間的RAM限制,設(shè)置成None則沒有限制。\n",
    ? ? "# 8. seed: 用于隨機(jī)數(shù)發(fā)生器。與初始化詞向量有關(guān)。\n",
    ? ? "# 9. workers表示訓(xùn)練詞向量時(shí)使用的線程數(shù),默認(rèn)是當(dāng)前運(yùn)行機(jī)器的處理器核數(shù)。workers控制訓(xùn)練的并行,此參數(shù)只有在安裝了Cpython后才有效,否則只能使用單核。\n",
    ? ? "# 10. min_alpha: 由于算法支持在迭代的過程中逐漸減小步長,min_alpha給出了最小的迭代步長值。隨機(jī)梯度下降中每輪的迭代步長可以由iter,alpha,?min_alpha一起得出。對于大語料,需要對alpha,?min_alpha,iter一起調(diào)參,來選擇合適的三個(gè)值。\n",
    ? ? "# 11. hs: 即我們的word2vec兩個(gè)解法的選擇了,如果是0, 則是Negative Sampling,是1的話并且負(fù)采樣個(gè)數(shù)negative大于0, 則是Hierarchical Softmax。默認(rèn)是0即Negative Sampling。\n",
    ? ? "# 12. negative:如果大于零,則會采用negative sampling,用于設(shè)置多少個(gè)noise words(一般是5-20)。\n",
    ? ? "# 13.?cbow_mean: 僅用于CBOW在做投影的時(shí)候,為0,則采用上下文的詞向量之和,為1則為上下文的詞向量的平均值。默認(rèn)值也是1,不推薦修改默認(rèn)值。\n",
    ? ? "# 14.?hashfxn: hash函數(shù)來初始化權(quán)重,默認(rèn)使用python的hash函數(shù)。\n",
    ? ? "# 15.?iter: 隨機(jī)梯度下降法中迭代的最大次數(shù),默認(rèn)是5。對于大語料,可以增大這個(gè)值。\n",
    ? ? "# 16. trim_rule: 用于設(shè)置詞匯表的整理規(guī)則,指定那些單詞要留下,哪些要被刪除??梢栽O(shè)置為None(min_count會被使用)。\n",
    ? ? "# 17. sorted_vocab: 如果為1(默認(rèn)),則在分配word index 的時(shí)候會先對單詞基于頻率降序排序。\n",
    ? ? "# 18. batch_words:每一批的傳遞給線程的單詞的數(shù)量,默認(rèn)為10000。\n",
    ? ? "# 19. negative和sample可根據(jù)訓(xùn)練結(jié)果進(jìn)行微調(diào),sample表示更高頻率的詞被隨機(jī)下采樣到所設(shè)置的閾值,默認(rèn)值為1e-3。"

    Word2Vec中的數(shù)學(xué):???????有道云筆記

    3.5?tricks1:hierarchical softmax (CBOW)

    69-負(fù)采樣和Hierarchical Softmax-詞嵌入模型-自然語言處理-深度學(xué)習(xí)-pytorch_嗶哩嗶哩_bilibili

    具體內(nèi)容見 Word2Vec中的數(shù)學(xué):???????有道云筆記4.1 節(jié)

    ? ? ?基于hierarchical Softmax 的?word2vec 與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)詞向量語言模型相比有兩個(gè)改進(jìn):

    • 首先,對于從輸入層到隱藏層的映射,沒有采取神經(jīng)網(wǎng)絡(luò)的線性變換加激活函數(shù)的方法,而是采用簡單的對所有輸入詞向量求和并取平均的方法。比如輸入的是三個(gè)4維詞向量:(1,2,3,4),(9,6,11,8),(5,10,7,12),那么我們word2vec映射后的詞向量就是(5,6,7,8)。這里是從多個(gè)詞向量變成了一個(gè)詞向量。
    • 第二個(gè)改進(jìn)就是從隱藏層到輸出的softmax層這里的計(jì)算量個(gè)改進(jìn)。為了避免要計(jì)算所有詞的softmax概率,基于hierarchical Softmax 的采用了霍夫曼樹來代替從隱藏層到輸出softmax層的映射。

    ? ? ? ? word2vec在最后預(yù)測輸出向量時(shí)候,大小是1*V的向量,本質(zhì)上是個(gè)多分類的問題。通過hierarchical softmax的技巧,把V分類的問題變成了log(V)次二分類。

    3.5.1?Huffman Tree(哈夫曼樹)

    ? ? ? ? 哈夫曼樹是一種帶權(quán)路徑長度最短的二叉樹,也稱為最優(yōu)二叉樹

    哈夫曼樹的構(gòu)造:

    ?例子:有A B C D 四個(gè)詞,數(shù)字表示詞頻,構(gòu)造過程如下:

    ?哈夫曼樹編碼:

    左子樹為0,右子樹為1:

    ? ? ? ? ?那么D編碼為0,B編碼為10,C編碼為110,A編碼為111。

    3.5.2 預(yù)備知識

    3.5.3?word2vec的hierarchical softmax結(jié)構(gòu)

    ?

    • 輸入層:是指??中所包含的??個(gè)詞的詞向量?
    • 投影層:指的是直接對??個(gè)詞向量進(jìn)行累加,累加之后得到下式:
    • 輸出層:是一個(gè)Huffman樹,其中葉子節(jié)點(diǎn)共N個(gè),對應(yīng)于N個(gè)單詞,非葉子節(jié)點(diǎn)N-1個(gè)(對應(yīng)上圖中標(biāo)成黃色的結(jié)點(diǎn))。Word2Vec基于層次Softmax的方式主要的精華部分都集中在了哈夫曼樹這部分

    ? ? ? ? ?

    ? ? ? ? 和傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)輸出不同的是,word2vec的hierarchical softmax結(jié)構(gòu)是把輸出層改成了一顆哈夫曼樹,其中圖中

    • 白色的葉子節(jié)點(diǎn)表示詞匯表中所有的|V|個(gè)詞,
    • 黑色節(jié)點(diǎn)表示非葉子節(jié)點(diǎn),

    ? ? ? ? 每一個(gè)葉子節(jié)點(diǎn)也就是每一個(gè)單詞,都對應(yīng)唯一的一條從root節(jié)點(diǎn)出發(fā)的路徑。我們的目的是使的w=wO這條路徑的概率最大,即: P(w=wO|wI)最大,假設(shè)最后輸出的條件概率是W2最大,那么我只需要去更新從根結(jié)點(diǎn)到w2這一個(gè)葉子結(jié)點(diǎn)的路徑上面節(jié)點(diǎn)的向量即可,而不需要更新所有的詞的出現(xiàn)概率,這樣大大的縮小了模型訓(xùn)練更新的時(shí)間。

    ? ? ? ? 我們應(yīng)該如何得到某個(gè)葉子結(jié)點(diǎn)的概率呢?

    ? ? ? ? ?假設(shè)我們要計(jì)算W2葉子節(jié)點(diǎn)的概率,我們需要從根節(jié)點(diǎn)到葉子結(jié)點(diǎn)計(jì)算概率的乘積。我們知道,本模型替代的只是原始模型的softmax層,因此,某個(gè)非葉子節(jié)點(diǎn)的值即隱藏層到輸出層的結(jié)果仍然是uj,我們對這個(gè)結(jié)果進(jìn)行sigmoid之后,得到節(jié)點(diǎn)往左子樹走的概率p1-p則為往右子樹走的概率。??

    3.5.4 目標(biāo)函數(shù)

    3.5.5?參數(shù)更新

    3.5.5?偽代碼

    ? ? ? ? CBOW模型中采用隨機(jī)梯度上升更新各參數(shù)的偽代碼:

    Hierarchical Softmax(層次Softmax):Hierarchical Softmax(層次Softmax) - 知乎

    3.6 tricks1:hierarchical softmax (Skip-gram)

    3.6.1?Skip-gram模型網(wǎng)絡(luò)結(jié)構(gòu)

    ? ? ? ? 下圖給出了Skip-gram模型的網(wǎng)絡(luò)結(jié)構(gòu),同CBOW模型的網(wǎng)絡(luò)結(jié)構(gòu)一樣,它也包括三層:輸入層、投影層和輸出層。下面以樣本??為例,對這三層做簡要說明。

    • 輸入層:只含當(dāng)前樣本的中心詞??的詞向量??。
    • 投影層:這是個(gè)恒等投影,把??投影到??。因此,這個(gè)投影層其實(shí)是多余的,這里之所以保留投影層主要是方便和CBOW模型的網(wǎng)絡(luò)結(jié)構(gòu)做對比。
    • 輸出層:和CBOW模型一樣,輸出層也是一顆Huffman樹。

    3.6.2?Skip-gram的目標(biāo)函數(shù)

    ?至此,已經(jīng)推導(dǎo)出了Skip-gram模型的目標(biāo)函數(shù)(公式11),接下來同樣利用隨機(jī)梯度上升法對其進(jìn)行優(yōu)化。而梯度類算法的關(guān)鍵是給出相應(yīng)的梯度計(jì)算公式,進(jìn)行反向傳播。

    3.6.3?參數(shù)更新

    3.6.4 偽代碼

    ?

    ? ? ? ? ?e:可以看作梯度的累加。

    3.7 tricks2:negative sampling?(CBOW)

    69-負(fù)采樣和Hierarchical Softmax-詞嵌入模型-自然語言處理-深度學(xué)習(xí)-pytorch_嗶哩嗶哩_bilibili

    negative sampling解決了之前說的兩個(gè)問題:

    • 僅對K個(gè)參數(shù)進(jìn)行采樣
    • 放棄softmax函數(shù),采用sigmoid函數(shù),這樣就不存在先求一遍窗口中所有單詞的‘“得分”的情況了。

    ? ? ? ? 本質(zhì)上是對訓(xùn)練集進(jìn)行了采樣,從而減小了訓(xùn)練集的大小。

    ? ? ? ? 本節(jié)將介紹基于Negative Sampling的CBOW和Skip-gram模型。Negative Sampling(簡稱為NEG)是Tomas Mikolov等人在論文《Distributed Representations of Words and Phrases and their Compositionality》中提出的,它是NCE(Noise Contrastive Estimation)的一個(gè)簡化版,目的是用來提高訓(xùn)練速度并改善所得詞向量的質(zhì)量。與Hierarchical Softmax相比,NEG不再使用復(fù)雜的Huffman樹,而是利用相對簡單的隨機(jī)負(fù)采樣,能大幅度提高性能,因而可作為Hierarchical Softmax的一種替代。

    ? ? ? ? NCE 的細(xì)節(jié)有點(diǎn)復(fù)雜,其本質(zhì)是利用已知的概率密度函數(shù)來估計(jì)未知的概率密度函數(shù)。簡單來說,假設(shè)未知的概率密度函數(shù)為X,已知的概率密度為Y,如果得到了X和Y的關(guān)系,那么X也就可以求出來了。具體可以參考論文《 Noise-contrastive estimation of unnormalized statistical models, with applications to natural image statistics》。

    ?

    3.8 tricks2:negative sampling?(Skip-gram)

    ?

    ?

    3.9 關(guān)于Word2Vec若干問題的思考

    ???????【Embedding】Word2Vec:詞嵌入的一枚銀彈 - 云+社區(qū) - 騰訊云

    (1)Word2Vec兩個(gè)算法模型的原理是什么,網(wǎng)絡(luò)結(jié)構(gòu)怎么畫?

    (2)網(wǎng)絡(luò)輸入輸出是什么?隱藏層的激活函數(shù)是什么?輸出層的激活函數(shù)是什么?

    (3)目標(biāo)函數(shù)/損失函數(shù)是什么?

    (4)Word2Vec如何獲取詞向量?

    (5)推導(dǎo)一下Word2Vec參數(shù)如何更新?

    (6)Word2Vec的兩個(gè)模型哪個(gè)效果好哪個(gè)速度快?為什么?

    ? ? ? ? ?效果:CBOW 像是小學(xué)時(shí)做的填空題:I come ___ China,而 Skip-Gram 像是給你一個(gè) from 讓你預(yù)測上下文,理論上來說應(yīng)該是 CBOW 的效果更好,但實(shí)際情況卻恰恰相反。我覺得可能是因?yàn)?CBOW 是取上下文的輸入向量的質(zhì)心從而導(dǎo)致一部分有效信息損失,而 Skip-Gram 雖然看起來荒唐,但每個(gè)單詞都會得到單獨(dú)的訓(xùn)練不會損失有效信息,其實(shí) Skip-Gram 比 CBOW 的效果好,主要是針對低頻詞而言,舉個(gè)例子,讓你補(bǔ)全 It is a ___ day,是不是突然有很多可能的答案,你大概率會填寫一個(gè)高頻詞匯,如:nice、sun 等,而不會想到要填寫 gorgeous,而給你 gorgeous 單詞,其特征很明顯會想到這可以用來形容 day、moon、girl 等等。其次 gorgeous 本身用量就沒有 nice 那么多,如果再和其他上下文放在一起取質(zhì)心,其很容易被忽略,從而沒法充分訓(xùn)練。
    ? ? ? ? ? 速度:我覺得 Skip-Gram 的速度慢可能是因?yàn)槠漕A(yù)測值比較多,需要分別計(jì)算多個(gè) Softmax,時(shí)間復(fù)雜度為 O(kn),而 CBOW 雖然也有多個(gè)輸入,但我們求其質(zhì)心簡化了操作,時(shí)間復(fù)雜度為 O(n)。

    ? ? ? ? 需要說明的是,當(dāng)語料較少時(shí)使用CBOW方法比較好,當(dāng)語料較多時(shí)采用skip-gram表示比較好。

    (7)Word2Vec加速訓(xùn)練的方法有哪些?

    ? ? ? ? 當(dāng)語料比較大時(shí),詞典規(guī)模會比較大,求softmax速度會變得很慢,嚴(yán)重影響了訓(xùn)練速度。此時(shí)有兩種方法進(jìn)行改進(jìn):(1)分層softmax; (2)負(fù)采樣。分層softmax的原理很簡單,就是構(gòu)建Huffman樹(使得計(jì)算概率的次數(shù)最小),正例詞都在葉子結(jié)點(diǎn),其他詞為中間節(jié)點(diǎn),分層進(jìn)行softmax。負(fù)采樣的思想也很簡單,就是不計(jì)算所有詞的概率算softmax,而是采樣一些負(fù)樣本,算對數(shù)sigmoid函數(shù),近似softmax。具體原理就是最大化正例概率,最小化負(fù)例出現(xiàn)的概率。

    (8)介紹下Negative Sampling,對詞頻低的和詞頻高的單詞有什么影響?為什么?

    ? ? ? ? 通過負(fù)采樣避免更新全部參數(shù),對詞頻高的友好;

    (9)Word2Vec和隱狄利克雷模型(LDA)有什么區(qū)別與聯(lián)系?

    ? ? ? ? 談到Word2Vec與LDA的區(qū)別和聯(lián)系,首先,LDA是利用文檔中單詞的共現(xiàn)關(guān)系來對單詞按主題聚類,也可以理解為對“文檔-單詞”矩陣進(jìn)行分解,得到“文檔-主題”和“主題-單詞”兩個(gè)概率分布。而Word2Vec其實(shí)是對“上下文-單詞”矩陣進(jìn)行學(xué)習(xí),其中上下文由周圍的幾個(gè)單詞組成,由此得到的詞向量表示更多地融入上下文共現(xiàn)的特征。也就是說,如果兩個(gè)單詞所對應(yīng)的Word2Vec向量相似度較高,那么它們很可能經(jīng)常在同樣的上下文中出現(xiàn)。需要說明的是,上述分析的是?

    ? ? ? ? LDA與Word2Vec的不同,不應(yīng)該作為主題模型和詞嵌入兩類方法的主要差異。主題模型通過一定的結(jié)構(gòu)調(diào)整可以基于“上下文-單詞”矩陣進(jìn)行主題推理。同樣地,詞嵌入方法也可以根據(jù)“文檔-單詞”矩陣學(xué)習(xí)出詞的隱含向量表示。主題模型和詞嵌入兩類方法最大的不同其實(shí)在于模型本身,主題模型是一種基于概率圖模型的生成式模型,其似然函數(shù)可以寫成若干條件概率連乘的形式,其中包括需要推測的隱含變量(即主題);而詞嵌入模型一般表達(dá)為神經(jīng)網(wǎng)絡(luò)的形式,似然函數(shù)定義在網(wǎng)絡(luò)的輸出之上,需要通過學(xué)習(xí)網(wǎng)絡(luò)的權(quán)重以得到單詞的稠密向量表示。

    (10)介紹下Hierarchical Softmax的計(jì)算過程,怎么把 Huffman 放到網(wǎng)絡(luò)中的?參數(shù)是如何更新的?對詞頻低的和詞頻高的單詞有什么影響?為什么?

    ? ? ? ? Hierarchical Softmax利用了Huffman樹依據(jù)詞頻建樹,詞頻大的節(jié)點(diǎn)離根節(jié)點(diǎn)較近,詞頻低的節(jié)點(diǎn)離根節(jié)點(diǎn)較遠(yuǎn),距離遠(yuǎn)參數(shù)數(shù)量就多,在訓(xùn)練的過程中,低頻詞的路徑上的參數(shù)能夠得到更多的訓(xùn)練,所以效果會更好。所以 Hierarchical Softmax 對詞頻低的單詞效果會更好。

    (11)Word2Vec有哪些參數(shù),有沒有什么調(diào)參的建議?

    • Skip-Gram 的速度比CBOW慢一點(diǎn),小數(shù)據(jù)集中對低頻次的效果更好;
    • Sub-Sampling Frequent Words可以同時(shí)提高算法的速度和精度,Sample 建議取值為??;
    • Hierarchical Softmax對低詞頻的更友好;
    • Negative Sampling對高詞頻更友好;
    • 向量維度一般越高越好,但也不絕對;
    • Window Size,Skip-Gram一般10左右,CBOW一般為5左右。

    (12)Word2Vec有哪些局限性?

    Word2Vec作為一個(gè)簡單易用的算法,其也包含了很多局限性:

    • Word2Vec只考慮到上下文信息,而忽略的全局信息;
    • Word2Vec只考慮了上下文的共現(xiàn)性,而忽略的了彼此之間的順序性;

    ?(13)Hierarchical Softmax 方法中哈夫曼樹是如何初始化生成的?也就是哈夫曼樹是如何構(gòu)建的呢?

    答:Hierarchical Softmax 依據(jù)詞頻構(gòu)建 Huffman 樹,詞頻大的節(jié)點(diǎn)離根節(jié)點(diǎn)較近,詞頻低的節(jié)點(diǎn)離根節(jié)點(diǎn)較遠(yuǎn),距離遠(yuǎn)參數(shù)數(shù)量就多。

    (14)Negative Sampling 是一種什么采樣方式?是均勻采樣還是其它采樣方法?

    答:詞典?D?中的詞在語料?C?中出現(xiàn)的次數(shù)有高有低,對于那些高頻詞,被選為負(fù)樣本的概率就應(yīng)該比較大,反之,對于那些低頻詞,其被選中的概率就應(yīng)該比較小。這就是我們對采樣過程的一個(gè)大致要求,本質(zhì)上就是一個(gè)帶權(quán)采樣問題。

    (15)詳細(xì)介紹一下 Word2Vec 中負(fù)采樣方法?

    答:先將概率以累積概率分布的形式分布到一條線段上,以?a=0.2,b=0.3,c=0.5?為例,?a所處線段為[0,0.2]?,b所處線段為?[0.2,0.5]?,?c?所處線段為?[0.5,1]?,然后定義一個(gè)大小為M?的數(shù)組,并把數(shù)組等距離劃分為?m個(gè)單元,然后與上面的線段做一次映射,這樣我們便知道了數(shù)組內(nèi)的每個(gè)單元所對應(yīng)的字符了,這種情況下算法的時(shí)間復(fù)雜度為O(1)?,空間復(fù)雜度為O(M)?,?m越小精度越大。

    (16)gensim中word2vec 結(jié)果解釋

    syn0數(shù)組實(shí)際上保存了原始的單詞向量。從用于訓(xùn)練單詞向量的神經(jīng)網(wǎng)絡(luò)的角度來看,這些向量是一個(gè)“投影層”,可以將單詞的一次性編碼轉(zhuǎn)換為正確維度的密集嵌入向量。

    在gensim4.0.0之后,想要獲得與model.syn0一樣的輸出需要使用:

    model.wv.vectors

    syn0 :就是詞向量的大矩陣,第i行表示vocab中下標(biāo)為i的詞
    syn1:用hs算法時(shí)用到的輔助矩陣,即文章中的Wx
    syn1neg:negative sampling算法時(shí)用到的輔助矩陣,組成的矩陣。
    Next_random:作者自己生成的隨機(jī)數(shù),線程里面初始化就是:

    ?(17)word2vec增量訓(xùn)練

    【技術(shù)分享】修改word2vec源碼實(shí)現(xiàn)詞向量增量更新 - 云+社區(qū) - 騰訊云

    基于Gensim實(shí)現(xiàn)word2vec詞向量增量訓(xùn)練_Steven灬的博客-CSDN博客

    (18)word2vec沒有對詞向量進(jìn)行正則化?

    word2vec沒有對詞向量進(jìn)行正則化? - 知乎:

    word2vec在嘗試用哈夫曼和EM的思路為自然語言提供了新的正則方案。

    word2vec的前身是同樣基于CBOW和Skip-gram的概率多層神經(jīng)網(wǎng)絡(luò),其本質(zhì)類似于一個(gè)Encoder-Decoder模型,前端將文字映射到一定維度模擬適用于自然語言的降維到詞向量的過程,達(dá)到去噪的效果,而Decoder則起到還原詞向量到文字的作用。而既然是神經(jīng)網(wǎng)絡(luò),當(dāng)然可以采用傳統(tǒng)正則,不管是regularize還是dropout。

    而這個(gè)方案在自然語言并不是個(gè)很優(yōu)的解,因?yàn)椴还苁荂BOW還是Skip-gram都要求用滑窗對文本遍歷,也就意味著樣本遠(yuǎn)遠(yuǎn)多于正常的模型,這時(shí)候regularize或是dropout顯得過慢。word2vec選擇將輸出換為哈夫曼樹,這樣在訓(xùn)練過程中,每當(dāng)前端神經(jīng)網(wǎng)絡(luò)產(chǎn)生出Encoder過后的詞向量的預(yù)測,哈夫曼樹會對其產(chǎn)生一個(gè)最小熵的編碼,也就類似于求當(dāng)前詞向量方式的Expectation,而后下次再做Encoder時(shí),就會用這個(gè)局部最優(yōu)的Expectation去生成預(yù)測,也就是M的過程。而哈弗曼樹編碼最小對應(yīng)著一個(gè)足夠短的詞向量,這樣才能盡可能少的作樹的分叉。因此在word2vec通過E過程和M過程的相互影響,用哈弗曼樹對詞向量進(jìn)行一定程度的正則。而這種正則是自適應(yīng)的,比傳統(tǒng)人為設(shè)置超參數(shù)的正則要更快更好。

    word2vec中目標(biāo)函數(shù)為什么不用加正則化項(xiàng)?_技術(shù)交流_??途W(wǎng):

    加正則的本質(zhì)是減少數(shù)據(jù)中的誤差對模型的影響。word2vec中輸入數(shù)據(jù)是one hot encoding沒有誤差所以不用加。

    靈魂拷問之word2vec - 知乎

    (19)cbow 與 skip-gram的比較?

    • CBOW是利用上下文預(yù)測中心詞,Skip-gram是利用中心詞預(yù)測上下文
    • Skip-gram效果比CBOW好。?
    • Skip-gram訓(xùn)練時(shí)間長,但是對低頻詞(生僻詞)效果好;CBOW訓(xùn)練時(shí)間短,對低頻詞效果比較差。
  • 為什么?

  • ? ? ? ? cbow和skip-gram都是在word2vec中用于將文本進(jìn)行向量表示的實(shí)現(xiàn)方法,具體的算法實(shí)現(xiàn)細(xì)節(jié)可以去看word2vec的原理介紹文章。我們這里大體講下兩者的區(qū)別,尤其注意在使用當(dāng)中的不同特點(diǎn)。

    ? ? ? ?在cbow方法中,是用周圍詞預(yù)測中心詞,從而利用中心詞的預(yù)測結(jié)果情況,使用GradientDesent方法,不斷的去調(diào)整周圍詞的向量。當(dāng)訓(xùn)練完成之后,每個(gè)詞都會作為中心詞,把周圍詞的詞向量進(jìn)行了調(diào)整,這樣也就獲得了整個(gè)文本里面所有詞的詞向量。

    ? ? ? ? 要注意的是, cbow的對周圍詞的調(diào)整是統(tǒng)一的:求出的gradient的值會同樣的作用到每個(gè)周圍詞的詞向量當(dāng)中去。

    ? ? ? ? 可以看到,cbow預(yù)測行為的次數(shù)跟整個(gè)文本的詞數(shù)幾乎是相等的(每次預(yù)測行為才會進(jìn)行一次backpropgation, 而往往這也是最耗時(shí)的部分),復(fù)雜度大概是O(V);

    ? ? ? ? 而skip-gram是用中心詞來預(yù)測周圍的詞。在skip-gram中,會利用周圍的詞的預(yù)測結(jié)果情況,使用GradientDecent來不斷的調(diào)整中心詞的詞向量,最終所有的文本遍歷完畢之后,也就得到了文本所有詞的詞向量。

    ? ? ? ? 可以看出,skip-gram進(jìn)行預(yù)測的次數(shù)是要多于cbow的:因?yàn)?strong>每個(gè)詞在作為中心詞時(shí),都要使用周圍詞進(jìn)行預(yù)測一次???????。這樣相當(dāng)于比cbow的方法多進(jìn)行了K次(假設(shè)K為窗口大小),因此時(shí)間的復(fù)雜度為O(KV),訓(xùn)練時(shí)間要比cbow要長。

    ? ? ? ? 但是在skip-gram當(dāng)中,每個(gè)詞都要受到周圍的詞的影響,每個(gè)詞在作為中心詞的時(shí)候,都要進(jìn)行K次的預(yù)測、調(diào)整。因此, 當(dāng)數(shù)據(jù)量較少,或者詞為生僻詞出現(xiàn)次數(shù)較少時(shí), 這種多次的調(diào)整會使得詞向量相對的更加準(zhǔn)確。因?yàn)楸M管cbow從另外一個(gè)角度來說,某個(gè)詞也是會受到多次周圍詞的影響(多次將其包含在內(nèi)的窗口移動),進(jìn)行詞向量的跳幀,但是他的調(diào)整是跟周圍的詞一起調(diào)整的,grad的值會平均分到該詞上, 相當(dāng)于該生僻詞沒有收到專門的訓(xùn)練,它只是沾了周圍詞的光而已。?

    ? ?? ? 因此,從更通俗的角度來說:

    ? ? ? ?在skip-gram里面,每個(gè)詞在作為中心詞的時(shí)候,實(shí)際上是 1個(gè)學(xué)生 VS K個(gè)老師,K個(gè)老師(周圍詞)都會對學(xué)生(中心詞)進(jìn)行“專業(yè)”的訓(xùn)練,這樣學(xué)生(中心詞)的“能力”(向量結(jié)果)相對就會扎實(shí)(準(zhǔn)確)一些,但是這樣肯定會使用更長的時(shí)間;

    ? ? ? ? cbow是 1個(gè)老師 VS K個(gè)學(xué)生,K個(gè)學(xué)生(周圍詞)都會從老師(中心詞)那里學(xué)習(xí)知識,但是老師(中心詞)是一視同仁的,教給大家的一樣的知識。至于你學(xué)到了多少,還要看下一輪(假如還在窗口內(nèi)),或者以后的某一輪,你還有機(jī)會加入老師的課堂當(dāng)中(再次出現(xiàn)作為周圍詞),跟著大家一起學(xué)習(xí),然后進(jìn)步一點(diǎn)。因此相對skip-gram,你的業(yè)務(wù)能力肯定沒有人家強(qiáng),但是對于整個(gè)訓(xùn)練營(訓(xùn)練過程)來說,這樣肯定效率高,速度更快。

    3.10 python實(shí)現(xiàn)(gensim)

    #!/usr/bin/env python # -*- coding: UTF-8 -*-# @Time : 2021/10/25 17:02 # @Author : song.xiangyuimport gensim import jieba from gensim.models import Word2Vec from gensim.models.word2vec import LineSentencedef word_seg(source_file, target_file):with open(source_file) as f:with open(target_file, "w") as f1:line_num = 1line = f.readline()while line:print("---- processing ", line_num, "article----------------")a = jieba.cut(line)line_seg = " ".join(a)f1.writelines(line_seg)line_num = line_num+1line = f.readline()def w2v(target_file):with open(target_file) as f:sentences = LineSentence(f)model = Word2Vec(LineSentence(f), sg=1, vector_size=123, window=10, min_count=0, workers=15, sample=1e-3, hs=1, negative=0)# model = gensim.models.Word2Vec() # 建立一個(gè)空的模型對象# model.build_vocab(sentences) # 遍歷一次語料庫建立詞典# model.train(sentences) # 第二次遍歷語料庫建立神經(jīng)網(wǎng)絡(luò)模型# 輸出內(nèi)容print(model.wv["女兒"])print(model.wv.similarity('女兒', '錢鐘書'))print(model.wv.index_to_key)print(1)if __name__ =="__main__":source_file = "/home/pythonCode/practice_new/embedding_practice/we.txt"target_file = "/home/pythonCode/practice_new/embedding_practice/target.txt"# word_seg(source_file, target_file)w2v(target_file)

    詳見word2vec 中的數(shù)學(xué)原理詳解:word2vec 中的數(shù)學(xué)原理詳解 - peghoty - 博客園

    文章正在審核中... - 簡書

    ?Word2Vec中的數(shù)學(xué):有道云筆記

    深入淺出Word2Vec原理解析:深入淺出Word2Vec原理解析 - 知乎

    10.1. 詞嵌入(word2vec) — 《動手學(xué)深度學(xué)習(xí)》 文檔

    word2vec(cbow+skip-gram+hierarchical softmax+Negative sampling)模型深度解析 - 知乎

    深度學(xué)習(xí)推薦系統(tǒng)中各類流行的 Embedding 方法(上) - AIQ

    總結(jié)

    以上是生活随笔為你收集整理的机器学习算法(十三):word2vec的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    国产亚洲精品久久久久5区 成人h电影在线观看 | 国产精品正在播放 | 成人国产精品免费观看 | 久久久综合色 | 99成人免费视频 | 国产美女主播精品一区二区三区 | 日韩欧美高清 | 精品久久久久一区二区国产 | 中文字幕欧美三区 | 91高清免费观看 | 色婷婷狠狠五月综合天色拍 | 欧美午夜寂寞影院 | 亚洲视频 中文字幕 | 99午夜 | 99精品欧美一区二区蜜桃免费 | 九九欧美| 亚洲国产精品电影 | 成人免费在线观看电影 | 亚洲国产免费网站 | japanesexxxhd奶水 91在线精品一区二区 | 国产成人精品一区二区 | 成人午夜影院在线观看 | 91精品91| 中文字幕永久免费 | 欧美一级电影片 | 在线观看日本韩国电影 | 永久免费毛片 | 91成人小视频 | 久久久电影网站 | 免费电影一区二区三区 | 国产麻豆剧果冻传媒视频播放量 | 亚洲国产日韩av | 午夜精品久久久久久中宇69 | 久草精品在线播放 | av7777777 | 91网址在线看 | 在线观看亚洲精品视频 | 亚洲黑丝少妇 | 久久99国产精品免费 | 成人国产精品久久久久久亚洲 | 国产成人一区二区三区电影 | 亚洲国内精品在线 | 久久一区二区三区国产精品 | 观看免费av | 人人添人人澡人人澡人人人爽 | 白丝av免费观看 | 日韩精品一区二区三区免费观看视频 | 久久这里| 少妇bbw撒尿 | 久久久91精品国产一区二区三区 | 色网av | 在线成人免费av | 日韩在线电影观看 | 国产99久久久欧美黑人 | 国产在线播放不卡 | 婷婷黄色片 | 免费在线播放av电影 | 亚洲亚洲精品在线观看 | 成年人网站免费观看 | 黄色小说视频在线 | 国产在线精品播放 | 国产精品中文久久久久久久 | 国产精品 日韩 | 狠狠干网站 | 97国产精品久久 | 亚在线播放中文视频 | 免费av网站在线 | av大片免费在线观看 | 在线观看视频黄 | 免费观看一级一片 | 亚洲国产精品视频 | 免费在线激情电影 | 国产高清免费在线观看 | 久久久观看 | 日韩a在线看 | 欧美激情操 | 一区二区三区国产欧美 | 三上悠亚一区二区在线观看 | 亚洲精品视频在线免费播放 | 国产黄色片久久久 | 国产一区二区不卡视频 | 日韩高清激情 | a天堂中文在线 | 天天操综合网站 | 中文在线免费看视频 | 超碰999| 婷婷色综合网 | 日日操网站 | 久久久久成人精品亚洲国产 | 中文字幕在线免费观看视频 | 欧美国产在线看 | 日韩免费av片 | 久久久精品网站 | 一区二区精品视频 | 999久久国精品免费观看网站 | 久久永久免费视频 | 99久久99久久精品国产片 | 亚洲国产精品成人女人久久 | 九九综合九九 | 在线精品在线 | 91在线看片 | av免费网站观看 | 91精品一区二区三区蜜桃 | 91成版人在线观看入口 | 91.麻豆视频 | 在线免费观看黄色 | 91网站在线视频 | 久久国产精品99久久久久久老狼 | 久久国产精品色av免费看 | 超碰在线免费福利 | 在线观看免费色 | 夜夜躁日日躁狠狠久久88av | 中文字幕一二三区 | 亚洲最新av在线网址 | 久久免费视频网 | 一级大片在线观看 | 亚洲美女精品 | 日韩午夜一级片 | 一个色综合网站 | 久久精品免视看 | 精品亚洲一区二区 | 久久久国产一区二区三区 | 国产精品theporn | 久香蕉 | 九色精品免费永久在线 | 国产无套精品久久久久久 | 国产一区在线精品 | 日日操操操 | 欧美一级视频免费看 | 国产精品久久久久久久久久直播 | 欧美日韩一区二区视频在线观看 | 在线性视频日韩欧美 | 国产精品一区二区 91 | 久久精品99久久 | 98涩涩国产露脸精品国产网 | 国产婷婷久久 | 亚洲国产经典视频 | 在线观看中文字幕一区二区 | 成人a大片 | 国产精品久久久久永久免费观看 | 中文av在线播放 | 国产日韩欧美在线影视 | 亚洲成人网av | 五月婷婷六月丁香 | 成人综合免费 | 男女啪啪网站 | 久久综合狠狠综合久久激情 | 亚洲精品视频二区 | 亚洲精品女 | 亚洲天天在线日亚洲洲精 | 免费观看视频的网站 | 欧美高清成人 | 亚洲国产精品va在线看黑人动漫 | 久久综合五月婷婷 | 婷婷狠狠操 | 国产一级高清视频 | 久久视频国产 | 国产精品激情在线观看 | 激情婷婷av | 日韩精品资源 | 欧美成人精品欧美一级乱黄 | 亚洲视频99 | 91中文字幕永久在线 | 国产手机在线播放 | va视频在线 | 91高清免费看| 一级成人免费视频 | 99久视频| 91色一区二区三区 | 三级a视频| 国产青草视频在线观看 | 国产午夜三级一区二区三桃花影视 | 成人国产精品免费 | 国产精品欧美日韩在线观看 | 在线观看一 | 久久影院精品 | 国产亚洲永久域名 | 色综合久久五月天 | 亚州国产视频 | 亚洲视频在线看 | 亚洲精品99久久久久中文字幕 | 特级毛片网站 | 国产精品久久久久久久久久三级 | 日韩国产精品毛片 | 国产精品久久久久久久久搜平片 | 亚洲国产日韩欧美在线 | 免费在线成人av | 黄色免费观看视频 | 五月天综合网站 | 天天操 夜夜操 | 中文字幕成人 | 在线视频 成人 | 69国产盗摄一区二区三区五区 | 伊人中文字幕在线 | 狠狠色婷婷丁香六月 | 三三级黄色片之日韩 | 夜又临在线观看 | 国产精品免费不 | 久久久91精品国产一区二区三区 | 亚洲精品午夜久久久久久久 | 免费网站看v片在线a | 国产成人精品在线播放 | 九九热精品视频在线观看 | 欧美一二三四在线 | 国内视频在线 | 精品一二三区视频 | av天天澡天天爽天天av | 久久婷婷亚洲 | 国内精品视频在线播放 | 日韩av电影一区 | 久久99欧美| 丝袜美腿av| 国产中文字幕大全 | 国产精品不卡av | 色七七亚洲影院 | 亚洲一区免费在线 | 国产精品成人免费精品自在线观看 | 久久草av| 在线观看精品一区 | 黄a在线看 | 欧美另类亚洲 | 综合亚洲视频 | 久久久久国产精品免费 | 在线观看av不卡 | 久草在线视频首页 | 亚洲精品一区二区久 | 98精品国产自产在线观看 | 欧美日韩高清一区二区 国产亚洲免费看 | 日本中文字幕一二区观 | 国产日产亚洲精华av | 国产伦理剧 | 精品高清视频 | 亚洲男模gay裸体gay | 成片视频免费观看 | 国产精品免费看久久久8精臀av | 婷婷日日 | 天天干天天干 | 国产电影黄色av | 久久精品79国产精品 | 成人av在线播放网站 | 国产亚洲久一区二区 | 日韩亚洲在线观看 | 特黄特黄的视频 | 在线观看日本韩国电影 | 中文字幕在线观看网站 | 国产精品国产自产拍高清av | 九九九热精品免费视频观看 | 丁香婷婷综合激情 | 天干啦夜天干天干在线线 | 天天操天天弄 | 日韩超碰在线 | 久久人人爽爽人人爽人人片av | 日韩在线字幕 | 国产精品福利在线 | 日韩精品免费在线观看 | www.xxx.性狂虐| 九九爱免费视频在线观看 | 啪啪小视频网站 | 天天操天天玩 | 伊人影院在线观看 | 欧美激情综合五月色丁香 | 精品无人国产偷自产在线 | 久久免费电影 | 国产精品理论视频 | 蜜桃视频日本 | 99热这里只有精品国产首页 | 97天天干| 国产小视频在线观看 | 激情综合色综合久久综合 | 国产99久久精品 | 日韩在线观看网站 | 久久99久久99免费视频 | 国产精品成人aaaaa网站 | 国产欧美在线一区 | 亚洲精品在线视频播放 | 欧洲不卡av | 亚洲黄色av网址 | 亚洲免费在线看 | 久久综合中文色婷婷 | 99国产免费网址 | 中文字幕在线看视频 | 亚洲精品午夜aaa久久久 | av短片在线观看 | 亚洲一级免费电影 | 五月天视频网 | 在线你懂的视频 | 久久久久久高潮国产精品视 | 精品福利片 | av福利免费| 美女黄网站视频免费 | 涩涩成人在线 | 亚洲第一区在线观看 | 欧美色综合天天久久综合精品 | 免费三级av | 国产精品久久久久久一区二区 | 干干夜夜 | 色偷偷88888欧美精品久久久 | 奇米网在线观看 | 国产精品亚洲综合久久 | 亚洲精品国产综合99久久夜夜嗨 | 超碰在线人人爱 | 在线观看av大片 | 美女福利视频 | 一区二区三区精品久久久 | 亚洲成aⅴ人在线观看 | 亚洲精品在线观 | 亚av在线 | 欧美成人在线免费观看 | 国产xvideos免费视频播放 | 三级动图 | 欧美成人一区二区 | 在线播放亚洲激情 | 亚洲精品久久视频 | 69视频永久免费观看 | 91天堂影院| 国产精品视频在线观看 | 欧美小视频在线观看 | 天天激情 | 超碰成人网 | 黄色美女免费网站 | 欧美一级特黄aaaaaa大片在线观看 | 手机色站 | 日本精品久久 | 久久久久久高潮国产精品视 | 国产无遮挡又黄又爽在线观看 | 91大神在线观看视频 | 一本到视频在线观看 | 国产精品av在线免费观看 | 97精品超碰一区二区三区 | 国产一级免费视频 | 欧美日韩三级在线观看 | 欧美大片mv免费 | 久久国产精品电影 | 成人久久国产 | 欧美精品免费一区二区 | 中文字幕av影院 | 五月天激情婷婷 | 天天色天天射天天操 | 亚洲人av免费网站 | 久久久久久97三级 | 中文字幕欧美日韩va免费视频 | 欧美日韩国产色综合一二三四 | 国产精品11 | 99这里只有精品99 | 中文字幕在线一二 | 99操视频 | 日韩城人在线 | 午夜精品久久久久久久99婷婷 | 久久高清免费视频 | 免费精品 | 免费在线观看中文字幕 | 黄色aa久久| 天天干天天做天天操 | 91丨九色丨国产丨porny精品 | 日韩a级黄色片 | 黄色毛片大全 | 中文字幕国内精品 | 日韩av电影国产 | 午夜精品久久久久久久久久 | 青草视频在线 | 最新一区二区三区 | 亚洲精品在线视频播放 | 成人黄色大片 | 免费视频97 | 免费福利在线 | 视频 天天草| 免费色婷婷 | 欧美性做爰猛烈叫床潮 | 四虎在线免费 | 亚洲精品国产精品久久99热 | 国产精品视频最多的网站 | 国产 日韩 欧美 在线 | 国产伦精品一区二区三区四区视频 | 国产精品99久久久精品 | 极品美女被弄高潮视频网站 | www视频在线观看 | 日日日日干 | 久草干 | 成人黄色电影在线 | 91一区啪爱嗯打偷拍欧美 | 日韩欧美高清在线 | 国产人免费人成免费视频 | 天天撸夜夜操 | 国产视频999 | 免费观看91视频 | 日韩免费小视频 | 国产精品一区二区在线免费观看 | 天天干天天弄 | 欧美日韩一二三四区 | 天天躁日日躁狠狠躁 | 99久久婷婷国产精品综合 | 中文字幕美女免费在线 | 97手机电影网 | 久久久国产精品成人免费 | 黄网站大全 | 午夜视频亚洲 | 在线日韩亚洲 | 日韩精品在线视频 | 97人人看| 国产专区视频在线观看 | 日本久久视频 | 午夜精品一区二区三区四区 | av黄色在线| 国产精品专区一 | 五月综合久久 | 日日爽天天操 | 国产精品久久久久av福利动漫 | 日本中文字幕电影在线免费观看 | 中文字幕精品一区二区精品 | 中文字幕影片免费在线观看 | 999精品在线 | 不卡av电影在线观看 | 亚洲午夜精 | 日韩av免费在线看 | 成人午夜久久 | 久久久久久久久久久免费 | 一级一片免费视频 | 国产精品久久久久久久久久久久午夜 | av福利在线播放 | 美女网站视频免费都是黄 | 亚洲劲爆av| 欧美久久影院 | 亚洲黑丝少妇 | 中文字幕在线资源 | 在线国产一区 | 亚洲极色 | 91在线网址 | 日韩精品免费专区 | 99热播精品 | 免费网站黄 | 日本久久成人中文字幕电影 | 成人羞羞视频在线观看免费 | 天天干天天碰 | 国产黄色片免费看 | 91自拍91| 国产在线超碰 | 黄av在线| 欧美日韩久久一区 | 在线观看网站av | 日韩精品一区二区久久 | 97国产一区二区 | 天天操夜夜看 | 亚洲国产成人精品在线 | 久草干 | 亚洲一区二区视频在线播放 | 青青河边草免费观看完整版高清 | 九九视频在线观看视频6 | 精品国产视频在线 | 亚洲精品乱码久久久久久9色 | a视频在线观看 | 日韩毛片在线一区二区毛片 | 久久精品一区二区三区国产主播 | 日韩免费一二三区 | 中文字幕 国产精品 | 99亚洲国产| 国产1区2区| 日韩精品一区二区不卡 | 99精品欧美一区二区 | 国产看片免费 | 日韩大陆欧美高清视频区 | 午夜精品久久久久久久99水蜜桃 | 亚洲国产精彩中文乱码av | 日本精品视频网站 | 久久av中文字幕片 | 中文字幕网址 | 亚洲午夜久久久久久久久久久 | 91爱爱视频 | 国产精品成人自拍 | 久久永久免费 | 国产精品久久久久久久久久尿 | 国产精品a成v人在线播放 | 国产小视频福利在线 | 国产精品a成v人在线播放 | 国产精品久久久毛片 | 欧美国产三区 | 国产小视频在线观看 | 亚洲无毛专区 | 亚洲黄色在线观看 | 免费视频一级片 | 成人免费在线播放 | 欧美日韩精品国产 | 久久久在线 | 国产日韩欧美在线一区 | 精品国产免费久久 | av三级在线免费观看 | 97干com | 国产91av视频在线观看 | 婷婷综合五月天 | 97精品免费视频 | 午夜av电影| 亚洲精品国产欧美在线观看 | 97久久精品午夜一区二区 | av一区二区在线观看中文字幕 | 久久线视频 | 欧美日韩一区二区三区在线免费观看 | 日韩一区二区三免费高清在线观看 | 久久综合干 | 天天操夜夜逼 | 久久精品中文字幕少妇 | 波多野结衣视频一区 | 亚洲jizzjizz日本少妇 | 在线播放国产精品 | 日韩高清在线看 | 久青草国产在线 | 97视频网站 | 天天操天天射天天插 | 国产成人精品免高潮在线观看 | 日韩电影在线观看一区二区 | 亚洲精品成人av在线 | 亚洲一级片在线观看 | 日韩午夜一级片 | 久久精品站 | 久久狠狠婷婷 | 色婷婷午夜 | 日韩欧美不卡 | 欧美视频网址 | 456免费视频| 久久99精品国产99久久 | 天天干,天天操,天天射 | 中文字幕日韩一区二区三区不卡 | 午夜精品久久久久久 | 日韩理论电影在线观看 | 成人av网站在线 | 国产精品入口66mio女同 | 成人xxxx | 婷婷爱五月天 | 免费亚洲婷婷 | 五月天.com | 一区二区三区在线电影 | 国产成人一二片 | 人人澡人人模 | 亚洲乱码中文字幕综合 | 午夜手机电影 | 81精品国产乱码久久久久久 | 成人午夜电影久久影院 | 久草在线网址 | 欧美精品乱码久久久久久按摩 | 91亚洲精品在线 | www.人人草 | 久久中文精品视频 | 麻豆久久一区二区 | 一区二区三区韩国免费中文网站 | 亚洲午夜久久久综合37日本 | 日韩中文字幕视频在线观看 | 久久九九精品久久 | 国产精品一区二区av麻豆 | 欧美aaa级片| 超碰公开在线观看 | 亚洲资源 | www.黄色网.com | 国产精品久久久久久久久久久久久 | www久 | 欧美色伊人 | 欧美精品久久久久久久亚洲调教 | 久草在线最新免费 | 精品产品国产在线不卡 | 国产一区二区在线播放视频 | 亚洲日日射 | 国产一级二级在线 | 国内久久久 | 不卡的av电影 | 亚洲夜夜网 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 五月天亚洲激情 | 婷婷丁香国产 | 麻豆网站免费观看 | 婷婷在线资源 | 99热在线免费观看 | 日本黄区免费视频观看 | 91天天操| 欧美日韩三级 | 韩国av不卡| 国产成人av在线 | 国产在线观看免费观看 | 黄污视频网站大全 | 在线看欧美 | 免费在线成人av | 国产色一区 | 免费网站观看www在线观看 | 美女久久视频 | 久久99精品久久久久蜜臀 | 国产一区二区精品91 | 丁香六月伊人 | 日韩电影在线观看一区二区 | 国产成人一区二区三区电影 | 在线免费黄色片 | 日韩精品免费 | 在线天堂8√ | 美女视频黄免费的 | 狠狠色噜噜狠狠狠狠2021天天 | 九九热在线播放 | 国产精品久久久久久久久久 | 婷婷五天天在线视频 | 蜜桃视频日本 | 一区二区三区四区免费视频 | 成人av片免费观看app下载 | 久草在线综合网 | 欧美日韩国内在线 | av丝袜在线 | 国产亚洲成人精品 | 亚洲在线高清 | 伊人狠狠色 | 日韩三区在线观看 | 亚洲国产成人在线 | 日本公乱妇视频 | 国产在线不卡精品 | 天天干天天怕 | 国产精品乱码久久 | 国产精品永久免费视频 | 少妇性xxx | 伊人精品影院 | 深夜免费福利在线 | 亚洲第一av在线 | 8x成人在线 | www.狠狠| 国产免费久久av | 五月婷婷色 | 成人av资源 | 黄色综合 | 国产精品久久久久久久午夜 | 国产亚洲免费观看 | 99精品国产福利在线观看免费 | 日韩激情小视频 | 国产精品久久久久av福利动漫 | 天天操天天操天天 | 国产成人精品午夜在线播放 | 亚洲专区欧美专区 | 亚洲一区欧美激情 | 国产成人av在线影院 | 日韩a级免费视频 | 久草视频手机在线 | 中文字幕在线播放日韩 | 在线国产一区 | 在线观看中文字幕dvd播放 | 亚洲欧美国内爽妇网 | 精品一区中文字幕 | 婷婷久久国产 | 黄免费在线观看 | 日本中文在线播放 | 天天曰 | 亚洲资源在线 | 久久久男人的天堂 | 日本中文字幕网址 | 91在线视频免费91 | 国产又粗又长又硬免费视频 | 国产在线理论片 | 国产一级a毛片视频爆浆 | 亚洲一区二区天堂 | 久久超 | 毛片a级片 | 欧美91片 | 日韩免费在线一区 | 国产最新在线视频 | 欧美整片sss | 黄色片视频免费 | 人人精品 | 91亚洲狠狠婷婷综合久久久 | 日韩三级视频 | 91精品欧美一区二区三区 | 欧美日韩国产一区二区三区 | 国产精品一区二区三区久久久 | 中文字幕一区二区三 | 97久久久免费福利网址 | 日韩丝袜在线观看 | 国产精品普通话 | 亚洲午夜av | 色噜噜日韩精品欧美一区二区 | 久久精品一二三 | 中文在线免费观看 | 2023av在线 | 波多野结衣视频一区二区三区 | 日日干美女| a级黄色片视频 | 国产91影视 | 91黄色小网站 | 精品二区久久 | 欧美性免费 | 国产 色 | 亚洲 综合 激情 | 午夜少妇一区二区三区 | 国产精品自在欧美一区 | 天堂av免费在线 | 99在线热播精品免费 | 久久精品直播 | 国产最新在线 | 欧美日韩免费一区二区 | 91精品国产麻豆国产自产影视 | 色婷婷视频在线观看 | 五月天激情综合 | 国产精品高 | 精品国产精品一区二区夜夜嗨 | 人人狠狠 | 碰超在线观看 | 免费在线观看不卡av | 91看片在线 | 五月婷视频 | 播五月综合 | av成人资源 | 日韩精品免费一区 | 九草视频在线观看 | 992tv在线 | 国产又黄又猛又粗 | 麻豆传媒视频在线免费观看 | se视频网址 | 97**国产露脸精品国产 | 国产黑丝一区二区 | 九色免费视频 | 亚州免费视频 | 在线观看91av| 中文字幕日韩精品有码视频 | 国产精品99久久久久久宅男 | 日韩精品专区 | 夜夜骑日日操 | 波多野结衣最新 | 色久av | 日韩精品视频在线观看网址 | 成年人黄色在线观看 | 久久久久免费观看 | 亚洲天堂免费视频 | 亚洲少妇自拍 | 国产尤物在线观看 | 91丨九色丨国产女 | 97在线观看免费视频 | 欧美视频日韩视频 | 在线精品视频免费播放 | 奇米影视999 | 99久久精品国产观看 | 精品亚洲成a人在线观看 | 狠狠干狠狠色 | 九九在线国产视频 | 新av在线| 国产黄色在线网站 | 97综合视频| 久久情网 | 日本午夜在线亚洲.国产 | 国产乱对白刺激视频在线观看女王 | 日韩专区 在线 | 国产日韩欧美在线 | 深夜免费福利 | 天堂网一区二区 | 国产成人精品一区二三区 | 精品99久久 | 国产亚洲婷婷免费 | 中文不卡视频 | 久久久久99999 | 99成人精品 | av线上看| 久久超级碰视频 | 久草亚洲视频 | 五月天欧美精品 | 日日摸日日添夜夜爽97 | 一本到视频在线观看 | 在线免费黄色毛片 | 国产成人61精品免费看片 | 91尤物在线播放 | 91一区二区三区久久久久国产乱 | 中文字幕av在线播放 | 女人18精品一区二区三区 | 国产午夜精品一区二区三区在线观看 | 国内小视频在线观看 | 国产高清在线免费观看 | 欧美乱码精品一区 | 婷婷色中文网 | 综合激情| 国产最新在线观看 | 日韩av男人的天堂 | 91香蕉视频黄| 亚洲视频在线观看 | 国产二区视频在线 | 国产在线黄色 | 在线av资源 | 一本色道久久精品 | 亚洲综合在 | 麻豆视频免费观看 | 久草视频在线资源站 | 99热只有精品在线观看 | 久久综合国产伦精品免费 | 国产剧情一区在线 | 丁香六月激情婷婷 | 天天天色综合 | 97视频在线观看网址 | 国产999视频在线观看 | 欧美日韩亚洲第一页 | 亚洲精品国产拍在线 | 国产免费嫩草影院 | 亚洲综合激情小说 | 久久视频一区二区 | 国产精品自产拍在线观看桃花 | 久久三级视频 | 欧美精品亚洲精品日韩精品 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 午夜狠狠干 | 亚洲国产中文字幕在线观看 | 天堂av色婷婷一区二区三区 | 亚洲黄色av网址 | 久久综合狠狠综合久久狠狠色综合 | 成人av免费网站 | 午夜黄色影院 | 国产婷婷一区二区 | 狠狠色狠狠色合久久伊人 | 国产精品久久久久毛片大屁完整版 | 欧美中文字幕久久 | 亚洲永久av | 日本资源中文字幕在线 | 久久国产精品免费 | 2018好看的中文在线观看 | 国产尤物在线视频 | av一区二区三区在线播放 | 福利一区二区三区四区 | 久久九九久久九九 | 国产视频手机在线 | 亚洲在线成人精品 | 爱爱av网站 | 久久成人高清视频 | 免费a v视频 | 欧洲av不卡 | 麻豆免费在线视频 | 国产在线观看午夜 | 伊人一级 | 九九天堂| 在线观看成人小视频 | 麻花传媒mv免费观看 | ww视频在线观看 | 亚洲激情国产精品 | 91av原创| 一本到视频在线观看 | 在线视频a| 日韩在线视频精品 | 51精品国自产在线 | 欧美午夜一区二区福利视频 | 深爱五月网 | 久久久久国| 日韩字幕| 亚洲视频中文 | 一级黄色片在线免费观看 | 免费观看的av | 色资源二区在线视频 | 精品久久一 | 久久婷婷久久 | 欧美日韩一区二区三区在线观看视频 | 成人综合婷婷国产精品久久免费 | 中文字幕91视频 | 久久久麻豆视频 | 四虎影视国产精品免费久久 | 8x成人免费视频 | 在线日韩视频 | 亚洲视屏| 欧美成人高清 | 欧美日韩国产一区二区三区 | 在线黄色免费 | www黄色软件 | 玖玖视频网 | 中文字幕av一区二区三区四区 | 亚洲国产日韩av | 国产黄色观看 | 欧美午夜久久 | 日韩资源在线观看 | 中文字幕欧美激情 | 亚洲在线视频观看 | 日本女人在线观看 | 日韩最新av在线 | 色视频 在线 | 最新av电影网站 | 天天爽天天做 | 国产精品毛片一区二区在线 | 精品国产一区二区三区久久 | 亚洲免费a | 91视频免费视频 | 六月激情网 | 国产精品国产三级国产 | 91麻豆精品国产91久久久使用方法 | 久久r精品 | 少妇18xxxx性xxxx片 | 婷婷丁香自拍 | 免费在线观看一级片 | 麻豆精品传媒视频 | 精品国产乱码久久久久久浪潮 | 久久久精品免费观看 | 五月综合在线观看 | 一级特黄aaa大片在线观看 | 9i看片成人免费看片 | 麻豆av电影 | 国产精品久久久久影院 | 久青草视频 | 69夜色精品国产69乱 | 五月亚洲| 国产美女精品人人做人人爽 | 日本黄色片一区二区 | 有码一区二区三区 | 亚洲精品久久久久中文字幕二区 | 六月色 | 男女全黄一级一级高潮免费看 | 波多野结衣在线中文字幕 | 亚洲精品中文在线资源 | 亚洲 中文字幕av | 久久国产精品影视 | 97视频免费在线看 | 欧美精品日韩 | 色操插| 美女国产精品 | 精品a视频 | 免费h在线观看 | 女人18毛片90分钟 | 午夜久久福利视频 | 在线一二区 | 色婷婷精品 | 国产精华国产精品 | 日本激情视频中文字幕 | 天天艹 | 日韩videos| 在线观看岛国片 | 91精品视频一区二区三区 | 亚洲 欧美 精品 | 日韩在线不卡视频 | 亚洲成人软件 | 精品久久久久亚洲 | 久久99亚洲热视 | 中文字幕在线观看网 | 色婷婷亚洲精品 | 日韩欧美综合精品 | 97国产精品免费 | 久久国产精品视频观看 | 中文字幕黄色网址 | 欧美俄罗斯性视频 | 精品久久久久久综合日本 | 99精品视频在线播放观看 | 日韩精品首页 | 国产最新视频在线观看 | 五月开心六月伊人色婷婷 | 国产精品s色 | 天堂av在线免费观看 | 在线之家官网 | 国产一区二区精品久久91 | 免费午夜在线视频 | 成人免费网站在线观看 | 成人啊 v | 日韩无在线 | 久久精品网| 日韩理论在线视频 | 婷婷色狠狠 | 久久婷婷开心 | 欧美老人xxxx18 | av黄色av | 福利网在线 | 国产裸体视频bbbbb | 国产a级片免费观看 | 欧美日韩中文国产一区发布 | 91中文字幕 | 成人免费 在线播放 | 精品国产一区二区三区久久久蜜月 | 午夜国产在线 | 一区二区成人国产精品 | 日本免费久久高清视频 | 精品国偷自产在线 | 亚洲 成人 一区 | 久久人人爽人人爽 | 亚洲精品视频在线观看视频 | 91麻豆福利 | 国产免费av一区二区三区 | 久久免费精品 | 摸bbb搡bbb搡bbbb| 亚洲人成网站精品片在线观看 | 中文字幕在线免费观看视频 | 中文在线www | 欧美视频在线观看免费网址 | 黄色一级大片在线免费看国产一 | 91在线视频导航 | 中文字幕在线观看一区二区 | 成年人在线视频观看 | 五月婷婷丁香在线观看 | 欧美男男激情videos | 久久国产精品成人免费浪潮 | 成人免费观看电影 | 麻花豆传媒一二三产区 | 亚洲区二区 | 夜夜嗨av色一区二区不卡 | 久久国产日韩 | 日韩午夜精品福利 | 欧美亚洲三级 | 欧美射射射 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 毛片区 | 操久在线 | 久久成人麻豆午夜电影 | 欧美资源在线观看 | 国产精品视频永久免费播放 | 久草网站 | 中文一区二区三区在线观看 | aaa免费毛片| 久久视了 | 国产精品福利在线观看 | 亚洲高清视频一区二区三区 | 日本久久久久久久久久久 | 毛片的网址 | 国产亚洲情侣一区二区无 | 操久| 色偷偷888欧美精品久久久 | 中日韩欧美精彩视频 |