<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深入理解word2vec

          共 2472字,需瀏覽 5分鐘

           ·

          2020-10-25 08:19

          ?深度學(xué)習(xí)

          Author:louwill

          From:深度學(xué)習(xí)筆記


          語言模型是自然語言處理的核心概念之一。word2vec是一種基于神經(jīng)網(wǎng)絡(luò)的語言模型,也是一種詞匯表征方法。word2vec包括兩種結(jié)構(gòu):skip-gram(跳字模型)和CBOW(連續(xù)詞袋模型),但本質(zhì)上都是一種詞匯降維的操作。


          word2vec
          ?我們將NLP的語言模型看作是一個(gè)監(jiān)督學(xué)習(xí)問題:即給定上下文詞,輸出中間詞,或者給定中間詞,輸出上下文詞?;谳斎牒洼敵鲋g的映射便是語言模型。這樣的一個(gè)語言模型的目的便是檢查和放在一起是否符合自然語言法則,更通俗一點(diǎn)說就是和擱一起是不是人話。

          所以,基于監(jiān)督學(xué)習(xí)的思想,本文的主角——word2vec便是一種基于神經(jīng)網(wǎng)絡(luò)訓(xùn)練的自然語言模型。word2vec是谷歌于2013年提出的一種NLP分析工具,其特點(diǎn)就是將詞匯進(jìn)行向量化,這樣我們就可以定量的分析和挖掘詞匯之間的聯(lián)系。因而word2vec也是我們上一講講到的詞嵌入表征的一種,只不過這種向量化表征需要經(jīng)過神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到。

          word2vec訓(xùn)練神經(jīng)網(wǎng)絡(luò)得到一個(gè)關(guān)于輸入和輸出之間的語言模型,我們的關(guān)注重點(diǎn)并不是說要把這個(gè)模型訓(xùn)練的有多好,而是要獲取訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)權(quán)重,這個(gè)權(quán)重就是我們要拿來對輸入詞匯的向量化表示。一旦我們拿到了訓(xùn)練語料所有詞匯的詞向量,接下來開展 NLP 研究工作就相對容易一些了。

          word2vec包括兩種模型。一種是給定上下文詞,需要我們來預(yù)測中間目標(biāo)詞,這種模型叫做連續(xù)詞袋模型(Continuous Bag-of-Words Model,以下簡稱CBOW),另一種是給定一個(gè)詞語,我們根據(jù)這個(gè)詞來預(yù)測它的上下文,這種模型叫做skip-gram模型,也有種翻譯稱之為“跳字”模型。

          CBOW模型的應(yīng)用場景是要根據(jù)上下文預(yù)測中間詞,所以我們的輸入便是上下文詞,當(dāng)然原始的單詞是無法作為輸入的,這里的輸入仍然是每個(gè)詞匯的one-hot向量,輸出為給定詞匯表中每個(gè)詞作為目標(biāo)詞的概率。CBOW模型的結(jié)構(gòu)如圖1所示。
          圖1 CBOW模型

          Skip-gram模型的應(yīng)用場景是要根據(jù)中間詞預(yù)測上下文詞,所以我們的輸入是任意單詞,輸出為給定詞匯表中每個(gè)詞作為上下文詞的概率。Skip-gram模型的結(jié)構(gòu)如圖2所示。
          圖2 skip-gram模型

          從CBOW和skip-gram模型的結(jié)構(gòu)圖可以看到,二者除了在輸入輸出上有所不同外,基本上沒有太大區(qū)別。將CBOW的輸入層換成輸出層基本上就變成了 skip-gram 模型,二者可以理解為一種互為翻轉(zhuǎn)的關(guān)系。

          從監(jiān)督學(xué)習(xí)的角度來說,word2vec本質(zhì)上是一個(gè)基于神經(jīng)網(wǎng)絡(luò)的多分類問題,當(dāng)輸出詞語非常多時(shí),我們則需要一些像Hierarchical Softmax(分層Softmax)和Negative Sampling(負(fù)采樣)之類的技巧來加速訓(xùn)練。但從自然語言處理的角度來說,word2vec關(guān)注的并不是神經(jīng)網(wǎng)絡(luò)模型本身,而是訓(xùn)練之后得到的詞匯的向量化表征。這種表征使得最后的詞向量維度要遠(yuǎn)遠(yuǎn)小于詞匯表大小,所以word2vec從本質(zhì)上來講是一種降維操作。我們把數(shù)以萬計(jì)的詞匯從高維空間中降維到低維空間中,對NLP的下游任務(wù)大有裨益。?

          word2vec的訓(xùn)練過程:以CBOW為例
          因?yàn)閟kip-gram和CBOW的相似性,本小節(jié)僅以CBOW模型為例說明word2vec是如何訓(xùn)練得到詞向量的。圖3標(biāo)出了CBOW模型要訓(xùn)練的參數(shù),很明顯我們要訓(xùn)練得到輸入層到隱藏層的權(quán)重以及隱藏層到輸出層的權(quán)重。
          圖3 CBOW的訓(xùn)練權(quán)重

          CBOW模型訓(xùn)練的基本步驟包括:
          1. 將上下文詞進(jìn)行one-hot表征作為模型的輸入,其中詞匯表的維度為,上下文單詞數(shù)量為;
          2. 然后將所有上下文詞匯的one-hot向量分別乘以共享的輸入權(quán)重矩陣;
          3. 將上一步得到的各個(gè)向量相加取平均作為隱藏層向量;
          4. 將隱藏層向量乘以共享的輸出權(quán)重矩陣;
          5. 將計(jì)算得到的向量做softmax激活處理得到維的概率分布,取概率最大的索引作為預(yù)測的目標(biāo)詞。
          下面以具體例子來說明。假設(shè)語料為I learn NLP everyday, 以I learn everyday作為上下文詞,以NLP作為目標(biāo)詞。將上下文詞和目標(biāo)詞都進(jìn)行one-hot表征作為輸入,如圖4所示。
          圖4 CBOW訓(xùn)練過程1:輸入one-hot表征

          然后將one-hot表征分別乘以輸入層權(quán)重矩陣,這個(gè)矩陣也叫嵌入矩陣,可以隨機(jī)初始化生成。如圖5所示。
          圖5 CBOW訓(xùn)練過程2:one-hot輸入乘以嵌入矩陣

          然后將得到的向量結(jié)果相加求平均作為隱藏層向量,如圖6所示。
          圖6 CBOW訓(xùn)練過程3:求平均

          然后將隱藏層向量乘以輸出層權(quán)重矩陣,這個(gè)矩陣也是嵌入矩陣,可以初始化得到。得到輸出向量,如圖7所示。
          圖7 CBOW訓(xùn)練過程4:隱層向量乘以嵌入矩陣

          最后對輸出向量做Softmax激活處理得到實(shí)際輸出,并將其與真實(shí)標(biāo)簽做比較,然后基于損失函數(shù)做梯度優(yōu)化訓(xùn)練。
          圖8 CBOW訓(xùn)練過程5:Softmax激活輸出

          以上便是完整的CBOW模型計(jì)算過程,也是word2vec將詞匯訓(xùn)練為詞向量的基本方法之一。無論是Skip-gram模型還是CBOW模型,word2vec一般而言都能提供較高質(zhì)量的詞向量表達(dá),圖9是以50000個(gè)單詞訓(xùn)練得到的128維的skip-gram詞向量壓縮到2維空間中的可視化展示。
          圖9 word2vec的可視化效果

          可以看到,意思相近的詞基本上被聚到了一起,也證明了word2vec是一種可靠的詞向量表征方式。

          往期精彩:

          ? CNN圖像分類:從LeNet5到EfficientNet

          【原創(chuàng)首發(fā)】機(jī)器學(xué)習(xí)公式推導(dǎo)與代碼實(shí)現(xiàn)30講.pdf

          【原創(chuàng)首發(fā)】深度學(xué)習(xí)語義分割理論與實(shí)戰(zhàn)指南.pdf


          喜歡您就點(diǎn)個(gè)在看!

          瀏覽 66
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  嫩操视频在线观看 | 99国产免费视频 | 天天日天天干天天舔天天射 | 国语对白真实视频播放 | 台湾无码免费电影 |