自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Word2vec算法原理詳解

發(fā)布于 2025-1-9 12:57
瀏覽
0收藏

        今天我們要講解的算法是Word2vec。Word2vec(word to vector)顧名思義,這是一個將單詞轉(zhuǎn)換成向量形式的工具。通過轉(zhuǎn)換,可以把對文本內(nèi)容的處理簡化為向量空間中的向量運算,計算出向量空間上的相似度,來表示文本語義上的相似度。

        Word2vec主要分為CBOW(Continuous Bag of Words)又叫連續(xù)詞袋和Skip-Gram兩種模式,今天我們主要講解的就是CBOW,接下來我們將從頭到尾的詳細講解Word2vec算法流程。

        先來講解一個背景知識:one-hot向量。獨熱向量是指使用N位0或1來對N個狀態(tài)進行編碼,每個狀態(tài)都有它獨立的表示形式,并且其中只有一位為1,其他位都為0。

        比如我們現(xiàn)在要編碼apple\bag\cat\dog\elephant這五個單詞,我們用5位向量來進行編碼,如下所示:

apple [1 0 0 0 0]

bag [0 1 0 0 0]

cat [0 0 1 0 0]

dog [0 0 0 1 0]

elephant [0 0 0 0 1]

如果我們現(xiàn)在想要編碼其他另外的單詞,那就需要更多位參與編碼,但是這五個單詞的編碼前5位仍然能夠是這樣,只不過后面省略號省略的部分都為0罷了。

Word2vec算法原理詳解-AI.x社區(qū)圖片

同時使用獨熱向量形成的特征矩陣會非常的稀疏,占用的空間非常的大。

        而Word2vec就可以解決這個問題,其核心思想是:上下文語境相似的詞,其語義也相似。Word2vec采用的是n元語法模型(n-gram model),即假設一個詞只與周圍n個詞有關,而與文本中的其他詞無關。所以Word2vec就是把這n個詞作為一個目標詞的特征,那么就可以把特征映射到 K 維向量空間,可以為文本數(shù)據(jù)尋求更加深層次的特征表示 。所以 Word2vec的基本思想是 通過訓練將每個詞映射成 K 維實數(shù)向量(K 一般為模型中的超參數(shù)),通過詞之間的距離(比如 cosine 相似度、歐氏距離等)來判斷它們之間的語義相似度。

        接下來看一看CBOW的結(jié)構。分為三層:輸入層,隱藏層和輸出層。

Word2vec算法原理詳解-AI.x社區(qū)圖片

        這里對傳統(tǒng)的神經(jīng)網(wǎng)絡做了以下一些改造:

1. 首先,對于從輸入層到隱藏層的映射,沒有采取神經(jīng)網(wǎng)絡的線性變換加激活函數(shù)的方法,而是采用簡單的對所有輸入詞向量求和并取平均的方法。比如輸入的是三個4維詞向量:(1,2,3,4),(9,6,11,8),(5,10,7,12),那么我們word2vec映射后的詞向量就是(5,6,7,8)。由于這里是從多個詞向量變成了一個詞向量。

2. 第二個改進就是從隱藏層到輸出的softmax層這里的計算量個改進。為了避免要計算所有詞的softmax概率,word2vec采樣了霍夫曼樹來代替從隱藏層到輸出softmax層的映射。

        說到哈夫曼樹,我們都不陌生,它是一種帶權路徑最短的二叉樹,也叫做最優(yōu)二叉樹。如下圖,b是哈夫曼樹,他的帶權路徑只有48

Word2vec算法原理詳解-AI.x社區(qū)圖片

        哈夫曼樹的構造方法如下圖所示:先用權重最小的兩個作為最底層葉子結(jié)點,然后權重次小的,以此類推。保證權重越大的越早被遍歷到,節(jié)省時間和空間。同時遍歷葉子結(jié)點的路徑我們也可以用哈夫曼編碼表示,例如左節(jié)點是0,右節(jié)點是1,那么葉子結(jié)點c的哈夫曼編碼就是110。

Word2vec算法原理詳解-AI.x社區(qū)圖片

        使用霍夫曼樹有什么好處呢?首先,由于是二叉樹,之前計算量為V,現(xiàn)在變成了log2V。第二,由于使用霍夫曼樹是高頻的詞靠近樹根,這樣高頻詞需要更少的時間會被找到,這符合我們的貪心優(yōu)化思想。

        有了哈夫曼樹,就有了哈夫曼編碼,我們這整個算法的核心就是:即對于給定的上下文,使得預測詞的哈夫曼編碼概率最大。如果你現(xiàn)在感到很疑惑,我來舉個例子:

        假設我們現(xiàn)在的語境是這一個簡單的只有四個單詞的document:{I drink coffee everyday}

我們選coffee作為中心詞,我們要根據(jù)單詞"I","drink"和"everyday"來預測一個單詞,并且我們希望這個單詞是coffee。將"I""drink""everyday"的one-hot向量作為輸入層的輸入

Word2vec算法原理詳解-AI.x社區(qū)圖片

    最開始輸入層的權重w參數(shù)是隨機生成的,接下來將這三個向量x初始乘以初始權重:w*x=v

Word2vec算法原理詳解-AI.x社區(qū)圖片

    將向量v求和并平均得到隱藏層的輸出向量c它:

Word2vec算法原理詳解-AI.x社區(qū)圖片

        從輸入層到隱藏層的邏輯過程講解完畢,接下來講解隱藏層到輸出層。

        我們在這一層用語料庫中所有的詞根據(jù)詞頻(就是哈夫曼中的權重)構建了哈夫曼樹,這樣每個詞 w 都可以從樹的根結(jié)點root沿著唯一一條路徑被訪問到,其路徑也就形成了其全局唯一的二進制編碼code,如"010011"。而我們從根結(jié)點開始走左子樹還是右子樹的概率是根據(jù)邏輯回歸二分類算法判斷的,邏輯回歸算法sigmoid,輸入是負無窮到正無窮,輸出是0到1之前的概率,sigmoid g函數(shù)和其導數(shù)如下圖所示:

Word2vec算法原理詳解-AI.x社區(qū)圖片

那么我們的輸出層的哈夫曼樹就可以表示成下圖:

Word2vec算法原理詳解-AI.x社區(qū)圖片

        假設目標詞是足球,那么足球的哈夫曼編碼是1001。這里我們指定負例是1,正例是0,那么我們可以得到上圖的第1次,第2次直到第四次的結(jié)果,那么足球的概率就是前面所有結(jié)點的概率相乘。d是每個結(jié)點的哈夫曼編碼,那么我們目標詞的概率可以寫成如下似然函數(shù)p,取對數(shù),d=1就是負例,d=0就是正例:

Word2vec算法原理詳解-AI.x社區(qū)圖片

上面就是做了簡單的化簡,log連乘變成連加,log里面的指數(shù)放到log前面。接下來就是求這個似然函數(shù)的最大值,求極大值,我們都用梯度上升算法,那么下一步就是分別對變量x和c它求偏導數(shù):

Word2vec算法原理詳解-AI.x社區(qū)圖片

        求導很簡單,上面有詳細的求導過程,由此我們就得到了參數(shù)c它的更新公式,同樣再對x求偏導也可以得到x的更新公式。

        不過我們知道隱藏層的x是上下文詞向量的和,不是上下文單個單詞的詞向量,怎么把這個更新量應用到單個單詞的詞向量上去呢?這里我們采用的是直接將更新量應用到每個詞向量上去:

Word2vec算法原理詳解-AI.x社區(qū)圖片

        還有一種提升訓練速度的方法就是負采樣,我們知道對于訓練語言模型來說,softmax層非常難算,畢竟你要預測的是當前位置是哪個詞,那么這個類別數(shù)就等同于詞典規(guī)模,因此動輒幾萬幾十萬的類別數(shù),算softmax函數(shù)當然很費力啦。
        但是,如果我們的目標不在于訓練一個精準的語言模型,而只是為了訓練得到語言模型的副產(chǎn)物-詞向量,那么其實只需要用這里隱含的一個計算代價更小的“子任務”就好啦。想一想,給你10000張寫有數(shù)字的卡片,讓你找出其中的最大值,是不是特別費力?但是如果把里面的最大值事先抽出來,跟五張隨機抽取的卡片混到一起,讓你選出其中的最大值,是不是就容易多啦?
        負采樣就是這個思想,即不直接讓模型從整個詞表找最可能的詞了,而是直接給定這個詞(即正例)和幾個隨機采樣的噪聲詞(即采樣出來的負例),只要模型能從這里面找出正確的詞就認為完成目標啦。

        那么我們選擇哪些作為噪音呢?

        word2vec常用的負采樣策略有均勻負采樣、按詞頻率采樣等等。比較常用的采樣方法是一元分布模型的3/4次冪。該方法中,一個詞被采樣的概率,取決于這個詞在語料中的詞頻 ,其滿足一元分布模型(Unigram Model).

Word2vec算法原理詳解-AI.x社區(qū)圖片

其中V為整個詞表大小,   f(wi)為詞wi的詞頻。

至于為什么選擇3/4呢?其實是由論文作者的經(jīng)驗所決定的。

假設由三個詞,,”我“,”和平“,”覬覦“ 權重分別為 0.9 ,0.01,0.003;經(jīng)過3/4冪后:

我: 0.9^3/4 = 0.92

和平:0.01^3/4 = 0.03

覬覦:0.003^3/4 = 0.012

對于”覬覦“而言,權重增加了4倍;”和平“增加3倍;”我“只有輕微增加。

可以認為:在保證高頻詞容易被抽到的大方向下,通過權重3/4次冪的方式,適當提升低頻詞、罕見詞被抽到的概率。如果不這么做,低頻詞,罕見詞很難被抽到,以至于不被更新到對應的Embedding。

        所以我們可以得到如下公式g,w表示正確的預測詞,u表示錯誤的負采樣,那么1-預測中心詞u的概率還是預測正確的概率,所以我們的目標還是使得g最大化,那么還是求似然函數(shù),并求導:

Word2vec算法原理詳解-AI.x社區(qū)圖片

那么求導還是一樣的方式,如下所示,對似然函數(shù)求偏導,然后得出更新的步長

Word2vec算法原理詳解-AI.x社區(qū)圖片

Word2vec算法原理詳解-AI.x社區(qū)圖片

本文轉(zhuǎn)載自 ??人工智能訓練營??,作者: 小A學習

收藏
回復
舉報
回復
相關推薦