吳恩達《深度學習》第五門課(2)天然語言處理與詞嵌入

2.1詞彙表徵

(1)使用one-hot方法表示詞彙有兩個主要的缺點,以10000個詞爲例,每一個單詞須要用10000維來表示,並且只有一個數是零,其餘維度都是1,形成表示很是冗餘,存儲量大;第二每一個單詞表示的向量相乘都爲零(正交),致使沒可以表示是詞彙之間的聯繫,好比oriange和apple,queen和king應該是聯繫比價緊密的,可是用上面的詞典表示沒法體現出這一點。算法

(2)使用新的特徵表示法,以下圖所示,特徵好比有性別、高貴、年齡、顏色、尺寸、食物等等做爲特徵,那麼一個詞彙符合一個特徵將會取較大的值,徹底沒什麼關係取接近於0,加入設置了300個特徵,那麼每一個單詞就能夠用300維的向量表示(解決了表示太冗餘),並且類似的詞(好比apple和oriange)在不一樣特徵可能都很是相似的值(即類似性高),從而使得詞彙之間有了聯繫。網絡

(3)在上面提到那些特徵,在實際中是經過網絡來學習獲得的,具體表示什麼特徵是沒人知道的。app

2.2使用詞嵌入

(1)如何用詞嵌入作遷移學習的步驟:函數

1.先從大量的文本機中學習詞嵌入(詞嵌入其實就是用一些特徵來表示一個詞彙,而不是經過one-hot表示),固然也能夠直接使用別人訓練好的詞嵌入。學習

2.而後根據你新任務的數據量來決定是否還要調整這些詞嵌入,若是數據量不多的話,直接使用以前的詞嵌入。數據多的話能夠進行微調。大數據

(3)詞嵌入和以前講過的人臉編碼很是的相似,有一點區別就是:詞嵌入,是有固定的詞彙表的,而在人臉編碼中可能會有一個徹底沒有見過的人臉,而後須要對他進行編碼。ui

2.3詞嵌入的特性

(1)提出問題:man若是對應woman,那麼King應該對應什麼?方法是man的向量減去woman向量的值應該(約等於)等於King向量減去某個詞彙的向量,式子以下所示:編碼

移項以後即找到等式兩邊的類似度:3d

(2)使用餘弦類似度(其實就是夾角的餘弦值),值接近1是代表越類似:blog

2.4嵌入矩陣

(1)若是詞彙量是10000,每一個詞彙由300個特徵表示,那麼嵌入矩陣就是一個300*10000的矩陣,嵌入矩陣與某個詞彙的one-hot表示的向量相乘會會的該詞彙的嵌入表示(即300維來表示),以下圖所示:

(2)上面的相乘因爲one-hot只有特定的值是1,因此其實相乘的本質是取出該詞彙在嵌入矩陣的位置的那一列,因此實際中不會進行這麼複雜的矩陣乘法運算,而是用一些方法直接取出那一列便可,如Keras中有一個嵌入層,咱們用這個嵌入層能夠有效的從嵌入矩陣中提出出你須要的列,而不是對矩陣進行很慢很複雜的乘法運算。

2.5學習詞嵌入

(1)案例是:預測「I want a glass of oriange___」劃線處的單詞是什麼?能夠用one-hot的I而後輸入到一個嵌入層,嵌入層會作的操做將嵌入矩陣與one-hot向量相乘獲得該詞彙的嵌入向量,而後再輸入到後面的網絡進行輸出,因此經過訓練這整個網絡,也就能夠學習了嵌入矩陣。

(2)後面有全鏈接層,因此輸入的維度須要固定,這時有一個上下文的概念(context),好比用目標預測位置的前4個單詞(這時嵌入層輸出總共4*300=1200個輸入輸入到下一層網絡中),或者目標位置先後各4個詞彙,實踐證實,在以訓練嵌入矩陣時,只使用目標位置的前一個詞彙做爲上下文也是效果很是不錯的。

2.6Word2Vec

(1)使用Skip-Gram模型,其作法首先是上下文c進行採樣,而後目標詞就會在上下文c的正負10個詞距內進行採樣。換言之,在句子「I want a glass of orange juice to go alone with my cereal」,這時選擇上下文c假設是orange,而後再距離orange10之內的詞出現某個詞的機率,好比選中glass,這時glass就是至關於(輸出的標籤)y,而orange是x

(2)Skip-Gram能夠理解爲取一個詞,而後在這個詞周圍出現什麼詞的機率比較大,用這樣來構造一個監督學習,其目的就是爲了學習嵌入矩陣。

(3)網絡示意圖和代價函數以下所示(其中y,y帽都是用one-hot表示的,y是上下文orange在必定詞距範圍內隨機取到的一個詞):

(4)採用上述的算法有一個問題就是計算量很是大,由於根據損失函數來看,其求和操做很慢由於詞彙量很是大可能達到百萬。解決的辦法有分級(hierarchical)的softmax分類器和負採樣(Negative Sampling)。

(5)分級的思路是(以10000個詞彙爲例),第一個分類器先告訴你目標詞在前5000仍是後5000,而後第二個分類器告訴你是前2500仍是後2500,這樣計算複雜度是詞彙輸取對數,而不是線性的。另外所造成的樹通常常見的詞在比較淺的地方,少見的詞在更深的地方,以下圖所示。

2.7負採樣

(1)負採樣能夠將上面的sotfmax變成一個二分類問題,這樣能夠大大減少計算量。

(2)負採樣的作法是在選定上下文詞,而後在上下文詞限定的範圍內(如10個詞內)選取一個目標詞,而後網絡的輸出爲1,再在字典隨機選取K個詞當成負樣本(即便選的詞在上下文的限定範圍內的詞也不要緊),而後網絡的輸出爲0。以下圖所示:

(3)一個樣本對對應了一個二分類器(即輸出只有一個神經元(實質上是隻看softmax10000維中對應target詞彙的那個維度),計算很是之簡單),與以前的sotfmax(輸出有10000個神經元)對好比下:

(4)如何選取樣本按照如下的方式,其中f(wi)是觀測到的在語料庫中的某個英語詞的詞頻率。

2.8GloVe詞向量

(1)Xij表示單詞i在單詞j上下文中出現的次數,因此這裏的i和j就和target和context的功能同樣,因此能夠認爲Xij等於Xji。

(2)目標函數是最小化下面的式子(約定Xij爲0時,f(Xij)也爲0,約定0log0=0,f(Xij)是一個權重):

2.9情感分類

(1)案例1:輸入x是一段文字,而輸出y是你要預測的相應情感,好比說是對一個餐館的評價的星級,分數爲1-5。

(2)直接下載使用別人用很是大數據集訓練好的嵌入矩陣便可。

(3)方法一使用如下的網絡,每一個單詞one-hot以後通過嵌入矩陣,造成詞嵌入,而後將全部單詞的特徵進行平均,再將平均值送入到softmax中獲得最終的評分。

 

(4)上一方法存在的問題是,沒有考慮到單詞的位置關係,全部在句子「Completely lacking in good taste, good service, and good ambiance.」中因爲good很是多,因此最終預測獲得一個較高的分數,但實際這句話是差評。因此第二種方法是使用循環神經網絡RNN,這將是一個多對一問題,這樣能夠很好的獲得一個情感分析的系統。

2.10詞嵌入除偏

(1)當一個系統Father對應Doctor,Mother對應Nurse時這就是一個偏見的系統。

(2)以消除性別誤差爲例,敘述消除誤差的主要步驟。首先第一步是將因此帶寫別的組(如he,she)作ehe-eshe,egirl-eboy而後將這些結果求和取平均,獲得以下的軸:

(2)第二步是中和步驟,意思就是將應該無偏的詞移動到軸上,以下圖所示:

(3)第三步是均衡步,即移動一對詞將其關於軸對稱(如上圖中grandmother與grandfather並無關於軸對稱,因此grandmother與中和步驟以後的babysister距離更近一點),以下圖所示

(5)有一點是,對於性別而言,有明確性別一一的詞特別少,用一個二分類器來判斷一個詞是不是有明確的性別的,而後將全部其餘詞對這些有明確性別的詞作上面的步驟便可解決偏見問題。關於其餘偏見一樣如此。

相關文章
相關標籤/搜索