斯坦福NLP課程 | 第20講 - NLP與深度學習的未來
- 作者:韓信子@ShowMeAI,路遙@ShowMeAI,奇異果@ShowMeAI
- 教程地址:http://www.showmeai.tech/tutorials/36
- 本文地址:http://www.showmeai.tech/article-detail/258
- 宣告:版權所有,轉載請聯絡平臺與作者並註明出處
- 收藏ShowMeAI檢視更多精彩內容
ShowMeAI為斯坦福CS224n《自然語言處理與深度學習(Natural Language Processing with Deep Learning)》課程的全部課件,做了中文翻譯和註釋,並製作成了GIF動圖!影片和課件等資料的獲取方式見文末。
1.NLP和深度學習的未來
- 5年前的深度學習和NLP
- No Seq2Seq
- No Attention
- No large-scale QA / reading comprehension datasets
- No TensorFlow or Pytorch
- 利用無標籤資料
- Back-translation 和無監督機器翻譯
- 提高預訓練和 GPT-2
- 接下來呢?
- NLP 技術的風險和社會影響
- 未來的研究方向
1.1 為什麼深度學習最近如此成功?
- 擴充套件能力 (模型和資料大小) 是深度學習近些年來成功的原因
- 過去受到計算資源和資料資源的規模限制
1.2 三個使用大量資料獲得成功的範例
- 影象識別:被 Google, Facebook 等廣泛使用
- ImageNet:14 million examples
- 機器翻譯:谷歌翻譯等
- WMT:Millions of sentence pairs
- 打遊戲:Atari Games, AlphaGo, and more
- 10s of millions of frames for Atari AI
- 10s of millions of self-play games for AlphaZero
1.3 NLP 資料集
- 即使是英語,大部分任務也只有 $100k$ 或更少的有標籤樣本
- 其他語言的可用資料就更少了
- 有成千上萬的語言,其中有成百上千的語言的母語使用者是大於一百萬的
- 只有 $10\%$ 的人將英語作為他們的第一語言
- 越來越多的解決方案是使用 無標籤 資料
2.使用未標記資料進行翻譯
2.1 機器翻譯資料
- 獲得翻譯需要人類的專業知識
- 限制資料的大小和領域
- 語言文字更容易獲得
2.2 預訓練
- ① 分別將兩個預訓練好的語言模型作為 Encoder 和 Decoder
- ② 然後使用雙語資料共同訓練
- English -> German Results:2+ BLEU point improvement
- 英語到德語的翻譯結果,BLEU 有 $2$ 個點的提升
2.3 自訓練
- 預訓練的問題:預訓練中兩個語言之間沒有互動
- 自訓練:標記未標記的資料以獲得有噪聲的訓練樣本
- 自訓練技術沒有被廣泛使用,因為其訓練的來源是其之前的產出
2.4 Back-Translation
- 有兩種方向相反的機器翻譯模型 en→fr 和 fr→en
- 不再迴圈
- 模型再也看不到
壞
翻譯,只有壞輸入
補充講解 - 模型訓練時會加入一些標記資料,確保 en→fr 模型的輸出,即 fr→en 模型的輸入,從而保證模型的正常 - 如何協調對標記資料與未標記資料的訓練呢? - 先在標記資料上訓練兩個模型 - 然後在未標記資料上標記一些資料 - 再在未標記資料上進行反向翻譯的訓練 - 重複如上的過程
- 4.5M English-German sentence pairs and 226M monolingual sentences
2.5 如果沒有雙語資料呢?
補充講解 - 當我們只有未標記的句子時,我們使用一種比完全的翻譯更簡單的任務 - 不是做句子翻譯 - 而是做單詞翻譯 - 我們想要找到某種語言的翻譯但不使用任何標記資料
2.6 無監督單詞翻譯
- 跨語言文字嵌入 cross-lingual word embeddings
- 兩種語言共享嵌入空間
- 保持詞嵌入的正常的好屬性
- 但也要接近他們的翻譯
- 想從單語語料庫中學習
補充講解 - 如上圖所示,在共享的嵌入空間中,每個英文單詞都有其對應的德語單詞,並且距離很近 - 我們在使用時,只需選取英文單詞在嵌入空間中距離最近的德語單詞,就可以獲得對應的翻譯
- 詞嵌入有很多結構
- 假設:不同語言之間的結構應該相似
補充講解 - 即使是執行兩次 word2vec 會獲得不同的詞嵌入,嵌入空間的結構有很多規律性 - 如上圖所示,是英語與義大利語的詞嵌入,向量空間看上去彼此十分不同,但是結構是十分相似的 - 可以理解為,在英語詞嵌入空間中的 cat 與 feline 的距離與義大利語詞典如空間中的 gatto 和 felino 之間的距離是相似的 - 我們在跨語言的詞嵌入中想要學習不同種語言的詞嵌入之間的對齊方式
- 首先在單語語料庫上執行 word2vec 以得到單詞嵌入 $X$ 和 $Y$
- 學習一個 (正交) 矩陣 $W$ 使得 $WX \sim Y$
- 使用對抗訓練來學習 $W$
- 鑑別器:預測一個嵌入是來自於 $Y$ 的還是來自於 $X$ 並使用 $W$ 轉換後的嵌入
- 訓練 $W$ 使得鑑別器難以區分這兩者
- 其他可以被用來進一步提升效果的方法參見 Word Translation without Parallel Data
- 正交性來約束詞嵌入的原因是為了防止過擬合
- 我們假設我們的嵌入空間是類似的,只是需要對英語的詞向量和義大利語的詞向量進行旋轉
- 模型:不考慮不同輸入和輸出語言,使用相同的(共享的) encoder-decoder (沒有使用注意力)
- 使用 cross-lingual 的詞嵌入來初始化,即其中的英語和法語單詞應該看起來完全相同
補充講解
- 可以餵給 encoder 一個英文句子,也可以喂一個法語句子,從而獲得 cross-lingual embeddings ,即英文句子和法語句子中各個單詞的詞嵌入,這意味著 encoder 可以處理任何輸入
- 對於 decoder,我們需要喂一個特殊的標記
2.7 無監督神經機器翻譯
- Training objective 1:降噪自編碼器
- Training objective 2:back translation (只有無標籤的資料)
- 首先翻譯 fr→en
- 然後使用一個監督樣本來訓練 en→fr
補充講解
- 注意,這裡的 fr→en 輸出的句子,是 en→fr 輸入的句子,這個句子是有些混亂的,不完美的,例如這裡的 I am student
,丟失了 a
- 我們需要訓練模型,即使是有這樣糟糕的輸入,也能夠還原出原始的法語句子
2.8 為什麼無監督會有效
- 跨語言嵌入和共享編碼器為模型提供了一個起點
- 使用 cross-lingual 的詞嵌入來初始化,即其中的英語和法語單詞應該看起來完全相同
補充解釋 - 共享編碼器 - 例如我們以一個法語句子作為模型的輸入 - 由於嵌入看起來非常相似,並且我們使用的是相同的 encoder - 因此 encoder 得到的法語句子的 representation 應該和英語句子的 representation 非常相似 - 所以希望能夠獲得和原始的英語句子相同的輸出
- 訓練目標鼓勵語言無關(language-agnostic)的表示
- 獲得與語言型別無關的 encoder vector
2.9 無監督機器翻譯
補充講解 - 水平線是無監督模型,其餘的都是有監督的 - 在一定的監督資料規模下,無監督模型能夠取得和監督模型類似的效果 - 當然,隨著資料規模的增大,監督模型的效果會提升,超過無監督模型
2.10 屬性遷移
- 還可以使用無監督的機器翻譯模型完成屬性轉移
2.11 一些缺點
- 英語,法語和德語是相當類似的語言
- 在非常不同的語言上 (例如英語和土耳其語)
- 完全的無監督的詞翻譯並不十分有效。需要種子字典可能的翻譯
- 簡單的技巧:使用相同的字串從詞彙
- UNMT 幾乎不工作
2.12 跨語言BERT
- 常規的 BERT ,有一系列的英語句子,並且會 mask 一部分單詞
- 谷歌實際上已經完成的是訓練好的多語言的 BERT
- 基本上是連線一大堆不同語言的語料庫,然後訓練一個模型
- masked LM training objective
- 由Facebook 提出的
- 聯合了 masked LM training objective 和翻譯
- 給定一個英語句子和法語句子,並分別 mask 一部分單詞,並期望模型填補
3.大模型和GPT-2
3.1 訓練大模型
3.2 機器學習大趨勢
補充說明 - peta:用於計量單位,表示10的15次方,表示千萬億次 - FLOPS = FLoating-point Operations Per Second,每秒浮點運算次數
3.3 計算機視覺中的大模型
- 使用無監督技術的大規模計算機視覺模型
3.4 訓練大模型
- 更好的硬體
- 資料和模型的並行化
3.5 GPT-2
- 只是一個非常大的 Transformer LM
- 40 GB的訓練文字
- 投入相當多的努力去確保資料質量
- 使用 reddit 中獲得高投票的網頁 link
3.6 那麼,GPT-2能做什麼呢?
mg20-37.png 那麼,GPT-2能做什麼呢?
- 顯然,語言模型建模(效果非常好)
- 在其沒有訓練過的資料上,都可以得到最先進的困惑度(perplexity)
- Zero-Shot Learning:no supervised training data! 在沒有接受過訓練的情況下嘗試完成任務
- Ask LM to generate from a prompt
3.7 GPT-2 結果
- GPT2在閱讀理解、翻譯、摘要生成、問答裡的表現
3.8 GPT-2如何進行翻譯?
- 它有一個很大的語料庫,裡面幾乎全是英語
補充說明 - 由於資料集中存在一些翻譯的例子 - 法語習語及其翻譯 - 法語引用及其翻譯
3.9 GPT-2 問答
- Simple baseline:1% accuracy
- GPT-2:~4% accuracy
- Cherry-picked most confident results 精選出最自信的結果
3.10 當模型變得更大時會發生什麼?
- 對於一些任務,效能似乎隨著 log (模型大小) 的增加而增加
- 但如下圖所示趨勢並不明朗
3.11 GPT-2相關事件
- 關於GPT2是否應該開源的一些爭端
- 對於GPT2是否應該開源的一些說法
- NLP專家應該做這些決定嗎?
- 電腦保安專家?
- 技術和社會專家?
- 道德專家?
- 需要更多的跨學科科學
- 許多NLP具有較大社會影響的例子,尤其是對於偏見/公平
3.12 影響程度大的決策
- 越來越感興趣用 NLP 幫助高影響力的決策
- 司法判決
- 招聘
- 等級測試
- 一方面,可以快速評估機器學習系統某些偏見
- 然而,機器學習反映了訓練資料
- 甚至放大偏見…這可能導致更偏向資料的建立
- AI模型
偏見
- 在男女平等和法律領域
3.13 聊天機器人
4.BERT解決了什麼?接下來做什麼?
4.1 GLUE基線結果
- 逐年提升的GLUE結果
4.2 再也不用在神經網路模型設計技巧上反覆琢磨?
- 往年會有很多不同的神經網路結構構建思路
- 在
attention is all you need
之下,這些結構不再熱門
- 花費六個月來研究 體系結構的設計,得到了1個點 F1 的提升
- 只是讓 BERT 擴大3倍,得到了 5個點 F1 的提升
- SQuAD 的 TOP20 參賽者都是用了 BERT
4.3 更難的自然語言理解
- 閱讀理解
- 在長文件或多個文件
- 需要多跳推理
- 在對話中定位問答
- 許多現有閱讀理解資料集的關鍵問題:人們寫問題時看著上下文
- 不現實的
- 鼓勵簡單的問題
4.4 QuAC:基於上下文的問答
- 學生問問題,老師回答的對話
- 教師看到維基百科文章主題,學生不喜歡
- 仍然和人類水平有很大差距
4.5 HotPotQA
- 設計要求多跳推理
- 問題在多個文件
4.6 多工學習
- NLP的另一個前沿是讓一個模型執行許多工。GLUE 和 DecaNLP是最近的例子
- 在BERT的基礎上,多工學習產生了改進
4.7 低資源支撐的場景
- 不需要很多計算能力的模型(不能使用BERT)
- 為移動裝置尤其重要
- 低資源語言
- 低資料環境(few shot learning 小樣本學習)
- ML 中的元學習越來越受歡迎
4.8 模型理解/可解釋性
- 我們能得到模型預測的解釋嗎?
- 我們能理解模型,例如BERT知道什麼和他們為什麼工作這麼好?
- NLP中快速增長的地區
- 對於某些應用程式非常重要(如醫療保健)
4.9 Diagnostic/Probing Classifiers
- 看看模型知道什麼語言的資訊
- 診斷分類器需要表示一個模型(例如BERT)作為輸入,並做一些任務
- 只有診斷分類器被訓練
- 診斷分類器通常非常簡單(例如,單個softmax)
- 否則他們不通過模型表示來自省會學會完成任務
- 一些診斷任務
- Results / 結果
- BERT 的低層表示在基礎(低層次)任務中表現更好
4.10 NLP行業應用與發展
- NLP是快速增長的行業。尤其是兩大領域:
- 對話
- 聊天機器人
- 客戶服務
- 健康
- 理解健康記錄
- 理解生物醫學文獻
4.11 結論
- 在過去的5年裡,由於深度學習,進步很快
- 隨著有能力訓練更大的模型和更好地使用無監督資料,在去年有了更大的進展
- 是在NLP領域的激動人心的時刻
- NLP是正逐漸對社會產生巨大影響力,使偏差和安全等問題越來越重要
5.影片教程
可以點選 B站 檢視影片的【雙語字幕】版本
[video(video-1ccwQkLb-1652089877902)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=376755412&page=20)(image-https://img-blog.csdnimg.cn/img_convert/76bd2533befe6fa114457e8be923d3b4.png)(title-【雙語字幕+資料下載】斯坦福CS224n | 深度學習與自然語言處理(2019·全20講))]
6.參考資料
- 本講帶學的線上閱翻頁本
- 《斯坦福CS224n深度學習與自然語言處理》課程學習指南
- 《斯坦福CS224n深度學習與自然語言處理》課程大作業解析
- 【雙語字幕影片】斯坦福CS224n | 深度學習與自然語言處理(2019·全20講)
- Stanford官網 | CS224n: Natural Language Processing with Deep Learning
ShowMeAI系列教程推薦
- 大廠技術實現 | 推薦與廣告計算解決方案
- 大廠技術實現 | 計算機視覺解決方案
- 大廠技術實現 | 自然語言處理行業解決方案
- 圖解Python程式設計:從入門到精通系列教程
- 圖解資料分析:從入門到精通系列教程
- 圖解AI數學基礎:從入門到精通系列教程
- 圖解大資料技術:從入門到精通系列教程
- 圖解機器學習演算法:從入門到精通系列教程
- 機器學習實戰:手把手教你玩轉機器學習系列
- 深度學習教程 | 吳恩達專項課程 · 全套筆記解讀
- 自然語言處理教程 | 斯坦福CS224n課程 · 課程帶學與全套筆記解讀
NLP系列教程文章
- NLP教程(1)- 詞向量、SVD分解與Word2vec
- NLP教程(2)- GloVe及詞向量的訓練與評估
- NLP教程(3)- 神經網路與反向傳播
- NLP教程(4)- 句法分析與依存解析
- NLP教程(5)- 語言模型、RNN、GRU與LSTM
- NLP教程(6)- 神經機器翻譯、seq2seq與注意力機制
- NLP教程(7)- 問答系統
- NLP教程(8)- NLP中的卷積神經網路
- NLP教程(9)- 句法分析與樹形遞迴神經網路
斯坦福 CS224n 課程帶學詳解
- 斯坦福NLP課程 | 第1講 - NLP介紹與詞向量初步
- 斯坦福NLP課程 | 第2講 - 詞向量進階
- 斯坦福NLP課程 | 第3講 - 神經網路知識回顧
- 斯坦福NLP課程 | 第4講 - 神經網路反向傳播與計算圖
- 斯坦福NLP課程 | 第5講 - 句法分析與依存解析
- 斯坦福NLP課程 | 第6講 - 迴圈神經網路與語言模型
- 斯坦福NLP課程 | 第7講 - 梯度消失問題與RNN變種
- 斯坦福NLP課程 | 第8講 - 機器翻譯、seq2seq與注意力機制
- 斯坦福NLP課程 | 第9講 - cs224n課程大專案實用技巧與經驗
- 斯坦福NLP課程 | 第10講 - NLP中的問答系統
- 斯坦福NLP課程 | 第11講 - NLP中的卷積神經網路
- 斯坦福NLP課程 | 第12講 - 子詞模型
- 斯坦福NLP課程 | 第13講 - 基於上下文的表徵與NLP預訓練模型
- 斯坦福NLP課程 | 第14講 - Transformers自注意力與生成模型
- 斯坦福NLP課程 | 第15講 - NLP文字生成任務
- 斯坦福NLP課程 | 第16講 - 指代消解問題與神經網路方法
- 斯坦福NLP課程 | 第17講 - 多工學習(以問答系統為例)
- 斯坦福NLP課程 | 第18講 - 句法分析與樹形遞迴神經網路
- 斯坦福NLP課程 | 第19講 - AI安全偏見與公平
- 斯坦福NLP課程 | 第20講 - NLP與深度學習的未來
- 人工智慧 | ShowMeAI資訊日報 #2022.06.29
- 人工智慧 | ShowMeAI資訊日報 #2022.06.28
- 人工智慧 | ShowMeAI資訊日報 #2022.06.27
- 人工智慧 | ShowMeAI資訊日報 #2022.06.26
- 人工智慧 | ShowMeAI資訊日報 #2022.06.25
- 人工智慧 | ShowMeAI資訊日報 #2022.06.24
- 人工智慧 | ShowMeAI資訊日報 #2022.06.23
- 人工智慧 | ShowMeAI資訊日報 #2022.06.22
- 人工智慧 | ShowMeAI資訊日報 #2022.06.21
- 人工智慧 | ShowMeAI資訊日報 #2022.06.20
- 人工智慧 | ShowMeAI資訊日報 #2022.06.19
- 人工智慧 | ShowMeAI資訊日報 #2022.06.18
- 人工智慧 | ShowMeAI資訊日報 #2022.06.17
- 人工智慧 | ShowMeAI資訊日報 #2022.06.16
- 人工智慧 | ShowMeAI資訊日報 #2022.06.15
- 人工智慧 | ShowMeAI資訊日報 #2022.06.14
- 人工智慧 | ShowMeAI資訊日報 #2022.06.13
- 人工智慧 | ShowMeAI資訊日報 #2022.06.12
- 深度學習與CV教程(14) | 影象分割 (FCN,SegNet,U-Net,PSPNet,DeepLab,RefineNet)
- 人工智慧 | ShowMeAI資訊日報 #2022.06.11