2.2 使用词嵌入-深度学习第五课《序列模型》-Stanford吴恩达教授
使用詞嵌入 (Using Word Embeddings)
上一個視頻中,你已經了解不同單詞的特征化表示了。這節你會看到我們如何把這種表示方法應用到NLP應用中。
我們從一個例子開始,我們繼續用命名實體識別的例子,如果你要找出人名,假如有一個句子:“Sally Johnson is an orange farmer.”(Sally Johnson是一個種橙子的農民),你會發現Sally Johnson就是一個人名,所以這里的輸出為1。之所以能確定Sally Johnson是一個人名而不是一個公司名,是因為你知道種橙子的農民一定是一個人,前面我們已經討論過用one-hot來表示這些單詞, x<1>x^{<1>}x<1> , x<2>x^{<2>}x<2> 等等。
但是如果你用特征化表示方法,嵌入的向量,也就是我們在上個視頻中討論的。那么用詞嵌入作為輸入訓練好的模型,如果你看到一個新的輸入:“Robert Lin is an apple farmer.”(Robert Lin是一個種蘋果的農民),因為知道orange和apple很相近,那么你的算法很容易就知道Robert Lin也是一個人,也是一個人的名字。一個有意思的情況是,要是測試集里這句話不是“Robert Lin is an apple farmer.”,而是不太常見的詞怎么辦?要是你看到:“Robert Lin is a durian cultivator.”(Robert Lin是一個榴蓮培育家)怎么辦?榴蓮(durian)是一種比較稀罕的水果,這種水果在新加坡和其他一些國家流行。如果對于一個命名實體識別任務,你只有一個很小的標記的訓練集,你的訓練集里甚至可能沒有durian(榴蓮)或者cultivator(培育家)這兩個詞。但是如果你有一個已經學好的詞嵌入,它會告訴你durian(榴蓮)是水果,就像orange(橙子)一樣,并且cultivator(培育家),做培育工作的人其實跟farmer(農民)差不多,那么你就有可能從你的訓練集里的“an orange farmer”(種橙子的農民)歸納出“a durian cultivator”(榴蓮培育家)也是一個人。
詞嵌入能夠達到這種效果,其中一個原因就是學習詞嵌入的算法會考察非常大的文本集,也許是從網上找到的,這樣你可以考察很大的數據集可以是1億個單詞,甚至達到100億也都是合理的,大量的無標簽的文本的訓練集。通過考察大量的無標簽文本,很多都是可以免費下載的,你可以發現orange(橙子)和durian(榴蓮)相近,farmer(農民)和cultivator(培育家)相近。因此學習這種嵌入表達,把它們都聚集在一塊,通過讀取大量的互聯網文本發現了orange(橙子)和durian(榴蓮)都是水果。接下來你可以把這個詞嵌入應用到你的命名實體識別任務當中,盡管你只有一個很小的訓練集,也許訓練集里有100,000個單詞,甚至更小,這就使得你可以使用遷移學習,把你從互聯網上免費獲得的大量的無標簽文本中學習到的知識,能夠分辨orange(橙子)、apple(蘋果)和durian(榴蓮)都是水果的知識,然后把這些知識遷移到一個任務中,比如你只有少量標記的訓練數據集的命名實體識別任務中。當然了,這里為了簡化我只畫了單向的RNN,事實上如果你想用在命名實體識別任務上,你應該用一個雙向的RNN,而不是這樣一個簡單的。
總結一下,這是如何用詞嵌入做遷移學習的步驟。
第一步,先從大量的文本集中學習詞嵌入。一個非常大的文本集,或者可以下載網上預訓練好的詞嵌入模型,網上你可以找到不少,詞嵌入模型并且都有許可。
第二步,你可以用這些詞嵌入模型把它遷移到你的新的只有少量標注訓練集的任務中,比如說用這個300維的詞嵌入來表示你的單詞。這樣做的一個好處就是你可以用更低維度的特征向量代替原來的10000維的one-hot向量,現在你可以用一個300維更加緊湊的向量。盡管one-hot向量很快計算,而學到的用于詞嵌入的300維的向量會更加緊湊。
第三步,當你在你新的任務上訓練模型時,在你的命名實體識別任務上,只有少量的標記數據集上,你可以自己選擇要不要繼續微調,用新的數據調整詞嵌入。實際中,只有這個第二步中有很大的數據集你才會這樣做,如果你標記的數據集不是很大,通常我不會在微調詞嵌入上費力氣。
當你的任務的訓練集相對較小時,詞嵌入的作用最明顯,所以它廣泛用于NLP領域。我只提到一些,不要太擔心這些術語(下問列舉的一些NLP任務),它已經用在命名實體識別,用在文本摘要,用在文本解析、指代消解,這些都是非常標準的NLP任務。
詞嵌入在語言模型、機器翻譯領域用的少一些,尤其是你做語言模型或者機器翻譯任務時,這些任務你有大量的數據。在其他的遷移學習情形中也一樣,如果你從某一任務A遷移到某個任務B,只有A中有大量數據,而B中數據少時,遷移的過程才有用。所以對于很多NLP任務這些都是對的,而對于一些語言模型和機器翻譯則不然。
最后,詞嵌入和人臉編碼之間有奇妙的關系,你已經在前面的課程學到了關于人臉編碼的知識了,如果你上了卷積神經網絡的課程的話。你應該還記得對于人臉識別,我們訓練了一個Siamese網絡結構,這個網絡會學習不同人臉的一個128維表示,然后通過比較編碼結果來判斷兩個圖片是否是同一個人臉,這個詞嵌入的意思和這個差不多。在人臉識別領域大家喜歡用編碼這個詞來指代這些向量 f(x(i)),f(x(j))f(x^{(i)}),f(x^{(j)})f(x(i)),f(x(j)) ,(上圖編號1所示),人臉識別領域和這里的詞嵌入有一個不同就是,在人臉識別中我們訓練一個網絡,任給一個人臉照片,甚至是沒有見過的照片,神經網絡都會計算出相應的一個編碼結果。上完后面幾節課,你會更明白,我們學習詞嵌入則是有一個固定的詞匯表,比如10000個單詞,我們學習向量 e1e_1e1? 到 e10000e_{10000}e10000? ,學習一個固定的編碼,每一個詞匯表的單詞的固定嵌入,這就是人臉識別與我們接下來幾節視頻要討論的算法之間的一個不同之處。這里的術語編碼(encoding)和嵌入(embedding)可以互換,所以剛才講的差別不是因為術語不一樣,這個差別就是,人臉識別中的算法未來可能涉及到海量的人臉照片,而自然語言處理有一個固定的詞匯表,而像一些沒有出現過的單詞我們就記為未知單詞。
這節視頻里,你看到如何用詞嵌入來實現這種類型的遷移學習,并且通過替換原來的one-hot表示,而是用之前的嵌入的向量,你的算法會泛化的更好,你也可以從較少的標記數據中進行學習。接下來我會給你展示一些詞嵌入的特性,這之后再討論學習這些詞嵌入的算法。下個視頻我們會看到詞嵌入在做類比推理中發揮的作用。
課程板書
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的2.2 使用词嵌入-深度学习第五课《序列模型》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.1 词汇表征-深度学习第五课《序列模
- 下一篇: 2.3 词嵌入的特性-深度学习第五课《序