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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings

發(fā)布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

AI有道

不可錯過的AI技術(shù)公眾號

關(guān)注

1

Word Representation

上節(jié)課我們介紹過表征單詞的方式是首先建立一個較大的詞匯表(例如10000),然后使用one-hot的方式對每個單詞進行編碼。例如單詞Man,Woman,King,Queen,Apple,Orange分別出現(xiàn)在詞匯表的第5391,9853,4914,7157,456,6257的位置,則它們分別用O5391,O9853,O4914,O7157,O456,O6257表示。

這中one-hot表征單詞的方法最大的缺點就是每個單詞都是獨立的、正交的,無法知道不同單詞之間的相似程度。例如Apple和Orange都是水果,詞性相近,但是單從one-hot編碼上來看,內(nèi)積為零,無法知道二者的相似性。在NLP中,我們更希望能掌握不同單詞之間的相似程度。

因此,我們可以使用特征表征(Featurized representation)的方法對每個單詞進行編碼。也就是使用一個特征向量表征單詞,特征向量的每個元素都是對該單詞某一特征的量化描述,量化范圍可以是[-1,1]之間。特征表征的例子如下圖所示:

特征向量的長度依情況而定,特征元素越多則對單詞表征得越全面。這里的特征向量長度設(shè)定為300。使用特征表征之后,詞匯表中的每個單詞都可以使用對應(yīng)的300 x 1的向量來表示,該向量的每個元素表示該單詞對應(yīng)的某個特征值。每個單詞用e+詞匯表索引的方式標(biāo)記,例如e5391, e9853, e4914, e7157, e456, e6257。

這種特征表征的優(yōu)點是根據(jù)特征向量能清晰知道不同單詞之間的相似程度,例如Apple和Orange之間的相似度較高,很可能屬于同一類別。這種單詞“類別”化的方式,大大提高了有限詞匯量的泛化能力。這種特征化單詞的操作被稱為Word Embeddings,即單詞嵌入。

值得一提的是,這里特征向量的每個特征元素含義是具體的,對應(yīng)到實際特征,例如性別、年齡等。而在實際應(yīng)用中,特征向量很多特征元素并不一定對應(yīng)到有物理意義的特征,是比較抽象的。但是,這并不影響對每個單詞的有效表征,同樣能比較不同單詞之間的相似性。

每個單詞都由高維特征向量表征,為了可視化不同單詞之間的相似性,可以使用降維操作,例如t-SNE算法,將300D降到2D平面上。如下圖所示:

從上圖可以看出相似的單詞分布距離較近,從而也證明了Word Embeddings能有效表征單詞的關(guān)鍵特征。

2

Using Word Embedding

之前我們介紹過Named entity識別的例子,每個單詞采用的是one-hot編碼。如下圖所示,因為“orange farmer”是份職業(yè),很明顯“Sally Johnson”是一個人名。

如果采用featurized representation對每個單詞進行編碼,再構(gòu)建該RNN模型。對于一個新的句子:

Robert Lin is an apple farmer

由于這兩個句子中,“apple”與“orange”特征向量很接近,很容易能判斷出“Robert Lin”也是一個人名。這就是featurized representation的優(yōu)點之一。

可以看出,featurized representation的優(yōu)點是可以減少訓(xùn)練樣本的數(shù)目,前提是對海量單詞建立特征向量表述(word embedding)。這樣,即使訓(xùn)練樣本不夠多,測試時遇到陌生單詞,例如“durian cultivator”,根據(jù)之前海量詞匯特征向量就判斷出“durian”也是一種水果,與“apple”類似,而“cultivator”與“farmer”也很相似。從而得到與“durian cultivator”對應(yīng)的應(yīng)該也是一個人名。這種做法將單詞用不同的特征來表示,即使是訓(xùn)練樣本中沒有的單詞,也可以根據(jù)word embedding的結(jié)果得到與其詞性相近的單詞,從而得到與該單詞相近的結(jié)果,有效減少了訓(xùn)練樣本的數(shù)量。

featurized representation的特性使得很多NLP任務(wù)能方便地進行遷移學(xué)習(xí)。方法是:

  • 從海量詞匯庫中學(xué)習(xí)word embeddings,即所有單詞的特征向量。或者從網(wǎng)上下載預(yù)訓(xùn)練好的word embeddings。

  • 使用較少的訓(xùn)練樣本,將word embeddings遷移到新的任務(wù)中。

  • (可選):繼續(xù)使用新數(shù)據(jù)微調(diào)word embeddings。

建議僅當(dāng)訓(xùn)練樣本足夠大的時候,再進行上述第三步。

有趣的是,word embeddings與吳恩達《卷積神經(jīng)網(wǎng)絡(luò)》精煉筆記(4)– 人臉識別與神經(jīng)風(fēng)格遷移中介紹的人臉特征編碼有很多相似性。人臉圖片經(jīng)過Siamese網(wǎng)絡(luò),得到其特征向量f(x),這點跟word embedding是類似的。二者不同的是Siamese網(wǎng)絡(luò)輸入的人臉圖片可以是數(shù)據(jù)庫之外的;而word embedding一般都是已建立的詞匯庫中的單詞,非詞匯庫單詞統(tǒng)一用< UNK >表示。

3

Properties of Word Embeddings

Word embeddings可以幫助我們找到不同單詞之間的相似類別關(guān)系。如下圖所示:

上例中,特征維度是4維的,分別是[Gender, Royal, Age, Food]。常識地,“Man”與“Woman”的關(guān)系類比于“King”與“Queen”的關(guān)系。而利用Word embeddings可以找到這樣的對應(yīng)類比關(guān)系。

我們將“Man”的embedding vector與“Woman”的embedding vector相減:

類似地,我們將“King”的embedding vector與“Queen”的embedding vector相減:

相減結(jié)果表明,“Man”與“Woman”的主要區(qū)別是性別,“King”與“Queen”也是一樣。

一般地,A類比于B相當(dāng)于C類比于“?”,這類問題可以使用embedding vector進行運算。

還可以計算Euclidian distance來比較相似性,即||u?v||^2。距離越大,相似性越小。

4

Embedding Matrix

假設(shè)某個詞匯庫包含了10000個單詞,每個單詞包含的特征維度為300,那么表征所有單詞的embedding matrix維度為300 x 10000,用E來表示。某單詞w的one-hot向量表示為Ow,維度為10000 x 1,則該單詞的embedding vector表達式為:

因此,只要知道了embedding matrix E,就能計算出所有單詞的embedding vector ew。后面我們將重點介紹如何求出E。

值得一提的是,上述這種矩陣乘積運算E?Ow效率并不高,矩陣維度很大,且Ow大部分元素為零。通常做法是直接從E中選取第w列作為ew即可。

5

Learning Word Embeddings

embedding matrix E可以通過構(gòu)建自然語言模型,運用梯度下降算法得到。舉個簡單的例子,輸入樣本是下面這句話:

I want a glass of orange (juice).

通過這句話的前6個單詞,預(yù)測最后的單詞“juice”。E未知待求,每個單詞可用embedding vector ew表示。構(gòu)建的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如下圖所示:

這種算法的效果還不錯,能夠保證具有相似屬性單詞的embedding vector相近。

為了讓神經(jīng)網(wǎng)絡(luò)輸入層數(shù)目固定,可以選擇只取預(yù)測單詞的前4個單詞作為輸入,例如該句中只選擇“a glass of orange”四個單詞作為輸入。當(dāng)然,這里的4是超參數(shù),可調(diào)。

一般地,我們把輸入叫做context,輸出叫做target。對應(yīng)到上面這句話里:

  • context: a glass of orange

  • target: juice

關(guān)于context的選擇有多種方法:

  • target前n個單詞或后n個單詞,n可調(diào)

  • target前1個單詞

  • target附近某1個單詞(Skip-Gram)

事實證明,不同的context選擇方法都能計算出較準(zhǔn)確的embedding matrix E。

6

Word2Vec

上一小節(jié)我們介紹了context和target的選擇方法,比較流行的是采用Skip-Gram模型。以下面這句話為例:

I want a glass of orange juice to go along with my cereal.

Skip-Gram模型的做法是:首先隨機選擇一個單詞作為context,例如“orange”;然后使用一個寬度為5或10(自定義)的滑動窗,在context附近選擇一個單詞作為target,可以是“juice”、“glass”、“my”等等。最終得到了多個context—target對作為監(jiān)督式學(xué)習(xí)樣本。

訓(xùn)練的過程是構(gòu)建自然語言模型,經(jīng)過softmax單元的輸出為:

相應(yīng)的loss function為:

然后,運用梯度下降算法,迭代優(yōu)化,最終得到embedding matrix?E。

然而,這種算法計算量大,影響運算速度。主要因為softmax輸出單元為10000個,y^計算公式中包含了大量的求和運算。解決的辦法之一是使用hierarchical softmax classifier,即樹形分類器。其結(jié)構(gòu)如下圖所示:

這種樹形分類器是一種二分類。與之前的softmax分類器不同,它在每個數(shù)節(jié)點上對目標(biāo)單詞進行區(qū)間判斷,最終定位到目標(biāo)單詞。這好比是猜數(shù)字游戲,數(shù)字范圍0~100。我們可以先猜50,如果分類器給出目標(biāo)數(shù)字比50大,則繼續(xù)猜75,以此類推,每次從數(shù)據(jù)區(qū)間中部開始。這種樹形分類器最多需要log?N步就能找到目標(biāo)單詞,N為單詞總數(shù)。

實際應(yīng)用中,對樹形分類器做了一些改進。改進后的樹形分類器是非對稱的,通常選擇把比較常用的單詞放在樹的頂層,而把不常用的單詞放在樹的底層。這樣更能提高搜索速度。

最后提一點,關(guān)于context的采樣,需要注意的是如果使用均勻采樣,那么一些常用的介詞、冠詞,例如the, of, a, and, to等出現(xiàn)的概率更大一些。但是,這些單詞的embedding vectors通常不是我們最關(guān)心的,我們更關(guān)心例如orange, apple, juice等這些名詞等。所以,實際應(yīng)用中,一般不選擇隨機均勻采樣的方式來選擇context,而是使用其它算法來處理這類問題。

Skip-Gram模型是Word2Vec的一種,Word2Vec的另外一種模型是CBOW(Continuous Bag of Words)。關(guān)于CBOW此處不再贅述。

7

Negative Sampling

Negative sampling是另外一種有效的求解embedding matrix E的方法。它的做法是判斷選取的context word和target word是否構(gòu)成一組正確的context-target對,一般包含一個正樣本和k個負樣本。例如,“orange”為context word,“juice”為target word,很明顯“orange juice”是一組context-target對,為正樣本,相應(yīng)的target label為1。若“orange”為context word不變,target word隨機選擇“king”、“book”、“the”或者“of”等。這些都不是正確的context-target對,為負樣本,相應(yīng)的target label為0。一般地,固定某個context word對應(yīng)的負樣本個數(shù)k一般遵循:

  • 若訓(xùn)練樣本較小,k一般選擇5~20;

  • 若訓(xùn)練樣本較大,k一般選擇2~5即可。

Negative sampling的數(shù)學(xué)模型為:

其中,σ表示sigmoid激活函數(shù)。

很明顯,negative sampling某個固定的正樣本對應(yīng)k個負樣本,即模型總共包含了k+1個binary classification。對比之前介紹的10000個輸出單元的softmax分類,negative sampling轉(zhuǎn)化為k+1個二分類問題,計算量要小很多,大大提高了模型運算速度。

最后提一點,關(guān)于如何選擇負樣本對應(yīng)的target單詞,可以使用隨機選擇的方法。但有資料提出一個更實用、效果更好的方法,就是根據(jù)該詞出現(xiàn)的頻率進行選擇,相應(yīng)的概率公式為:

其中,f(wi)表示單詞wi在單詞表中出現(xiàn)的概率。

8

GloVe Word Vectors

GloVe算法引入了一個新的參數(shù):

Xij: 表示i出現(xiàn)在j之前的次數(shù),即i和j同時出現(xiàn)的次數(shù)。

其中,i表示context,j表示target。一般地,如果不限定context一定在target的前面,則有對稱關(guān)系Xij=Xji;如果有限定先后,則Xij≠Xji。接下來的討論中,我們默認存在對稱關(guān)系Xij=Xji。

GloVe模型的loss function為

從上式可以看出,若兩個詞的embedding vector越相近,同時出現(xiàn)的次數(shù)越多,則對應(yīng)的loss越小。

為了防止出現(xiàn)“l(fā)og 0”,即兩個單詞不會同時出現(xiàn),無相關(guān)性的情況,對loss function引入一個權(quán)重因子f(Xij):

當(dāng)Xij=0時,權(quán)重因子f(Xij)=0。這種做法直接忽略了無任何相關(guān)性的context和target,只考慮Xij>0的情況。

出現(xiàn)頻率較大的單詞相應(yīng)的權(quán)重因子f(Xij)較大,出現(xiàn)頻率較小的單詞相應(yīng)的權(quán)重因子f(Xij)較小一些。具體的權(quán)重因子f(Xij)選取方法可查閱相關(guān)論文資料。

一般地,引入偏移量,則loss function表達式為:

值得注意的是,參數(shù)θi和ej是對稱的。使用優(yōu)化算法得到所有參數(shù)之后,最終的ew可表示為:

最后提一點的是,無論使用Skip-Gram模型還是GloVe模型等等,計算得到的embedding matrix?E的每一個特征值不一定對應(yīng)有實際物理意義的特征值,如gender,age等。

9

Sentiment Classification

情感分類一般是根據(jù)一句話來判斷其喜愛程度,例如1~5星分布。如下圖所示:

情感分類問題的一個主要挑戰(zhàn)是缺少足夠多的訓(xùn)練樣本。而Word embedding恰恰可以幫助解決訓(xùn)練樣本不足的問題。

首先介紹使用word embedding解決情感分類問題的一個簡單模型算法。

如上圖所示,這句話的4個單詞分別用embedding vector表示。e8928, e2468, e4694, e3180計算均值,這樣得到的平均向量的維度仍是300。最后經(jīng)過softmax輸出1~5星。這種模型結(jié)構(gòu)簡單,計算量不大,不論句子長度多長,都使用平均的方式得到300D的embedding vector。該模型實際表現(xiàn)較好。

但是,這種簡單模型的缺點是使用平均方法,沒有考慮句子中單詞出現(xiàn)的次序,忽略其位置信息。而有時候,不同單詞出現(xiàn)的次序直接決定了句意,即情感分類的結(jié)果。例如下面這句話:

Completely lacking in good taste, good service, and good ambience.

雖然這句話中包含了3個“good”,但是其前面出現(xiàn)了“l(fā)acking”,很明顯這句話句意是negative的。如果使用上面介紹的平均算法,則很可能會錯誤識別為positive的,因為忽略了單詞出現(xiàn)的次序。

為了解決這一問題,情感分類的另一種模型是RNN。

該RNN模型是典型的many-to-one模型,考慮單詞出現(xiàn)的次序,能夠有效識別句子表達的真實情感。

值得一提的是使用word embedding,能夠有效提高模型的泛化能力,即使訓(xùn)練樣本不多,也能保證模型有不錯的性能。

10

Debiasing Word Embeddings

Word embeddings中存在一些性別、宗教、種族等偏見或者歧視。例如下面這兩句話:

Man: Woman as King: Queen

Man: Computer programmer as Woman: Homemaker

Father: Doctor as Mother: Nurse

很明顯,第二句話和第三句話存在性別偏見,因為Woman和Mother也可以是Computer programmer和Doctor。

以性別偏見為例,我們來探討下如何消除word embeddings中偏見。

首先,確定偏見bias的方向。方法是對所有性別對立的單詞求差值,再平均。上圖展示了bias direction和non-bias direction。

然后,單詞中立化(Neutralize)。將需要消除性別偏見的單詞投影到non-bias direction上去,消除bias維度,例如babysitter,doctor等。

最后,均衡對(Equalize pairs)。讓性別對立單詞與上面的中立詞距離相等,具有同樣的相似度。例如讓grandmother和grandfather與babysitter的距離同一化。

值得注意的是,掌握哪些單詞需要中立化非常重要。一般來說,大部分英文單詞,例如職業(yè)、身份等都需要中立化,消除embedding vector中性別這一維度的影響。

薦號

「cdeveloper」

簡介:這個號名叫 C 開發(fā)者,主要致力于 C/C++,Linux 方向的技術(shù)分享。但是這個號并不僅僅分享技術(shù),每周都會分享一些小工具,號主的日常實踐總結(jié)出來的認知經(jīng)驗等,另外這個號的排版「特別美觀」,曾被知名互聯(lián)網(wǎng)大佬「stormzhang」推薦過,強烈推薦關(guān)注!

往期回顧

吳恩達《序列模型》精煉筆記(1)-- 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)

重磅 |“吳恩達deeplearningai”官方微信公眾號已經(jīng)上線!

重磅 | 吳恩達新書《Machine Learning Yearning》最新版分享

假期福利?| 臺大林軒田《機器學(xué)習(xí)基石》資源匯總

干貨 | 機器學(xué)習(xí)基石精選文章鏈接

機器學(xué)習(xí)中的維度災(zāi)難

長按二維碼掃描關(guān)注

AI有道

ID:redstonewill

紅色石頭

個人微信 : WillowRedstone

新浪微博:@RedstoneWill

喜歡就點個贊吧

總結(jié)

以上是生活随笔為你收集整理的吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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