吴恩达老师深度学习视频课笔记:自然语言处理与词嵌入
Word representation:詞嵌入(word embedding),是語言表示的一種方式,可以讓算法自動理解一些類似的詞比如男人、女人,國王、王后等。通過詞嵌入的概念,即使你的模型標記的訓練集相對較小,也可以構建NLP(自然語言處理)應用。詞表示(word representation)的一個缺點是它把每個詞孤立起來,如下圖,這樣使得算法對相關詞的泛化能力不強,任何兩個one-hot向量的內積都是0。
如果我們不用one-hot表示而是用特征化表示(featurized representation)來表示每個詞,如下圖,比如可以用gender, royal, age, food, size, cost等有300個不同的特征,這樣對于不同的單詞算法會泛化的更好。這種高維特征的表示能夠比one-hot更好的表示不同的單詞。
我們最終學習的特征或者300維的詞嵌入通常可以把這300維的數據嵌入到一個二維空間里可視化,如下圖。常用的可視化算法是t-SNE算法。詞嵌入算法對于相近的概念學到的特征也比較類似。在對這些概念可視化的時候這些概念就比較相似,最終把它們映射為相似的特征向量。
Using word embeddings:如下圖,命名實體識別例子(named entity recognition example),用詞嵌入作為輸入訓練好的模型,比如要找出人名,假如有個句子,Sally Johnson是一個種橙子的農民,如果有一個新的輸入,Robert Lin是一個種蘋果的農民,因為橙子和蘋果很相近,那么算法很容易知道Robert Lin也是一個人的名字。如果有一個新的輸入Robert Lin是一個榴蓮培育家,假如你標記的很小的訓練集可能沒有榴蓮或培育家兩個詞。但是如果你有一個已經學好的詞嵌入,它會告訴你榴蓮是水果就像橙子一樣,并且培育家跟農民差不多,那么你就有可能從你的訓練集里種橙子的農民歸納出榴蓮培育家也是一個人。詞嵌入能夠達到這種效果其中一個原因就是學習詞嵌入的算法會考察非常大的文本集,可以是一億個單詞甚至達到100億也是合理的。通過讀取大量的互聯網文本,接下來你可以把這個詞嵌入應用到命名實體識別任務中,盡管你只有一個很小的訓練集,可以使用遷移學習把你從互聯網上免費獲得的大量的無標簽文本中學習到的知識能夠分辨橙子、蘋果、榴蓮都是水果的知識,然后把這些知識遷移到一個任務中。
用詞嵌入做遷移學習的步驟:如下圖,第一步,先從大量的文本集中學習詞嵌入或者可以下載網上預訓練好的詞嵌入模型。然后你可以用這些詞嵌入模型把它遷移到你的新的只有少量標注訓練集的任務中,比如說用300維的詞嵌入來表示你的單詞。這樣做的一個好處就是你可以用更低維度的特征向量代替原來的10000維的one-hot向量。最后,當你在你的新的任務上訓練模型時,在你的命名實體識別任務上只有少量的標記數據集上你可以自己選擇用新的數據要不要微調。當你的任務的訓練集相對較小時,詞嵌入的作用最明顯,所以它廣泛用于NLP領域。比如它已經用在命名實體識別、文本摘要、文本解析等。詞嵌入在語言模型、機器翻譯領域用的少一些,這些任務你有大量的數據。
詞嵌入的特性:詞嵌入還有一個特性它能幫助實現類比推理。類比推理可能不是自然語言處理應用中最重要的存在,不過它能幫助人們理解詞嵌入作了什么以及詞嵌入能夠干什么。如下圖,假設用4維的嵌入向量,假如man對于woman,是否可以推論出king對應什么?從eman-ewoman和eking-equeen中根據向量的表示,它們都是gender上的差異,所以得出這種類比推理的結論的方法。eman-ewoman≈eking-e?,可以得出是Queen。
如何將類比推理用算法實現:如下圖,比如詞嵌入向量在一個300維的空間里,于是man代表的就是空間中的一個點,另外一個單詞woman代表空間另一個點,等等。向量man和woman的差非常接近于向量king和queen之間的差值,在gender這一維的差。通過方程找到一個使得相似度最大的單詞,如果結果理想的話,會找到單詞queen。最常用的相似度函數叫做余弦相似度。也可以用平方距離或者歐式距離來表示。詞嵌入的一個顯著成果就是可學習的類比關系的一般性。
嵌入矩陣:當你應用算法來學習詞嵌入時實際上是學習一個嵌入矩陣(embedding matrix)。如下圖,假設我們的字典含有10000個單詞,我們要做的就是學習一個嵌入矩陣E,它將是一個300*10000的矩陣,這個矩陣的各列代表的是字典中10000個不同的單詞所代表的不同向量。E乘以one-hot向量會得到嵌入向量。
學習詞嵌入:建立一個語言模型是學習詞嵌入的好方法,如下圖,如何建立神經網絡來預測序列中的下一個單詞。建立一個one-hot向量表示這個詞,然后生成一個參數矩陣E,然后用E乘以o得到嵌入向量e4343,這一步意味著e4343是由矩陣E乘以one-hot向量得到的。然后對其它的詞也做相同的操作。現在你有許多300維的嵌入向量。我們能做的是把它們全部放進神經網絡中,即輸入一些上下文然后預測出目標詞。如果用一個固定的歷史窗口就意味著你可以處理任意長度的句子。
Word2Vec:它是一個簡單而且計算時更加高效的方式來學習這種類型的詞嵌入。Word2Vec的skip-gram模型即用softmax作為分類,如下圖,它把一個像orange這樣的詞作為輸入并預測這個輸入詞從左數或者從右數的某個詞,預測上下文詞的前面一些或者后面一些是什么詞,實際上使用這個算法會遇到一些問題,首要的問題就是計算速度。這里有一些解決方案,比如使用一個分級的softmax分類器。
負采樣:skip-gram模型可以構造一個監督學習任務,把上下文映射到目標詞上。但它的缺點就在于softmax計算起來很慢。這里介紹一個改善過的學習問題叫做負采樣(negative smapling),它可以做到與skip-gram模型相似的事情,但是有了一個更加有效的學習算法。如下圖,在這個算法中要做的是構造一個新的監督學習問題,問題就是給定一對單詞,比如orange, juice,我們要去預測這是否是一對上下文詞----目標詞。orange和juice是一對正樣本,orange和king是一對負樣本。生成這些數據的方式是選擇一個上下文詞再選一個目標詞,作為正樣本;然后給定幾次用相同的上下文再從字典中選取隨機的詞,作為負樣本(negative example)。接下來構造一個監督學習問題,其中學習算法輸入x,要去預測目標的標簽即預測輸出y,因此問題就是給定一對詞,像orange和juice, 這個算法就是要分辨兩種不同的采樣方式。這就是如何生成訓練集的方法。關于k的選取,小數據集的話,k從5到20比較好,如果數據集很大,k就選的小一點,對于更大的數據集,k就選擇2到5。數據集越小,k就越大。在這個例子中用的是k等于4。
從x映射到y的監督學習模型,如下圖,定義一個logistic回歸模型,給定輸入c,t對的條件下,y=1的概率。如果輸入詞是orange,你要做的就是輸入one-hot向量再傳遞給E,通過兩者相乘,獲得嵌入向量e6257,你就得到了10000個可能的logistic回歸分類問題,其中一個將會是用來判斷目標詞是否是juice的分類器,還有其它的詞。但并不是每次迭代都訓練全部1000個,我們只訓練其中的5個,我們要訓練對應真正目標詞的那一個分類器,再訓練4個隨機選取的負樣本,這就是k=4的情況。所以不使用巨大的10000維度的softmax,因為計算成本很高,而是把它轉變為10000個二分類問題,每個都很容易計算。每次迭代我們要做的只是訓練它們其中的5個,一般而言,就是k+1個,其中k個負樣本和1個正樣本,這也就是為什么這個算法計算成本更低的原因。這個技巧叫做負采樣。
GloVe word vectors:GloVe算法不如Word2Vec或skip-gram模型用的多。如下圖,GloVe表示的是用詞表示的全局向量。GloVe所要做的就是使其關系開始明確化,假定Xij是單詞i在單詞j上下文中出現的次數,這里的i和j就和t和c的功能一樣,可以認為Xij等同于Xtc,你也可以遍歷你的訓練集然后數出單詞i和單詞j在不同的上下文中出現的個數。Xij就是單詞i和單詞j出現位置相近時或是彼此接近的頻率的計數器。
Sentiment classification(情緒分類):情緒分類任務就是看一段文本然后分辨這個人是否喜歡他們在討論的這個東西。情緒分類的一個最大挑戰就是可能標記的訓練集沒有那么多,但是有了詞嵌入,即使只有中等大小的標記的訓練集,你也能構建一個不錯的情緒分類器。如下圖,輸入x是一段文本,而輸出y是你要預測的相應情緒,比如說是一個餐館評價的星級。基于這樣標記的數據集,如果你能訓練一個從x到y的映射,那么你就可以用來搜集大家對你運營的餐館的評價。
Debiasing(去除偏差) word embeddings:詞嵌入中一些有關減少或是消除偏見的辦法,如種族、性取向方面的偏見,如下圖,根據訓練模型所使用的文本,詞嵌入能夠反映出性別、種族、年齡、性取向等其它方面的偏見,這些偏見都和社會經濟狀態相關。詞嵌入能夠輕易學會用來訓練模型的文本中的偏見內容,所以算法獲取到的偏見內容就可以反映出人們寫作中的偏見。以性別為例,首先我們要做的事就是辨別出我們想要減少或想要消除的特定偏見的趨勢(direction),接著是中和步(neutralization step),最后一步是均衡步(equalization step)。
GitHub:?https://github.com/fengbingchun/NN_Test?
總結
以上是生活随笔為你收集整理的吴恩达老师深度学习视频课笔记:自然语言处理与词嵌入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴恩达老师深度学习视频课笔记:循环神经网
- 下一篇: 吴恩达老师深度学习视频课笔记:序列模型和