【Github 6481 顆星】牛津大學 & DeepMind 2017 深度 NLP 課程

ADVERTISEMENT

新智元報道

來源:Github、Oxford University

譯者:張易、李靜怡、劉小芹

  新智元日前宣布,獲6家頂級機構總額達數千萬元的PreA輪融資,藍馳創投領投,紅杉資本中國基金、高瓴智成、藍湖資本 、藍象資本跟投。本輪融資將用於新智元團隊規模擴充並增加新產品服務線,目標打造 To B 的人工智能全產業鏈服務平台。

  新智元啟動新一輪大招聘:COO、執行總編、主編、高級編譯、主筆、運營總監、客戶經理、谘詢總監、行政助理等 9 大崗位全面開放。

  簡曆投遞:jobs@aiera.com.cn HR 微信:13552313024

  新智元為COO和執行總編提供最高超百萬的年薪激勵;為骨干員工提供最完整的培訓體系、高於業界平均水平的工資和獎金。加盟新智元,與人工智能業界領袖攜手改變世界。

  【新智元導讀】牛津大學和 DeepMind 聯合推出了《NLP深度學習課程》,專攻基於深度學習的自然語言處理,涉及遞歸神經網絡、B-P、LSTM、注意力網絡、記憶網絡、神經圖靈機等技術要點。新智元整理了這門課程及其亮點。無論你是否專攻自然語言處理,對深度學習感興趣的人都能從中受益。

  在2017年1月開始的這個學期,牛津大學聯合 DeepMind 自然語言研究團隊,推出了“NLP深度學習”這門課程(Deep Learning for Natural Language Processing)。課程共 8 周。內容涵蓋語言理解、語音識別、語音合成、機器翻譯、圖像理解、語義結構等。

  課程組織者、牛津大學計算機系副教授、DeepMind 研究員 Phil Blunsom 表示,這門課程呈現的是深度學習技術在 NLP 領域的應用情況,雖然在深度學習之外還有許多和語言學、計算語言學相關的內容以及許多有趣的範例,但這門課專注於深度學習自然語言處理

  Phil Blunsom 說:“人工智能是今天最有趣的研究領域之一,而語言則是智能最引人關注的表現形式。”

  不消說,這門課從還沒有開課起便吸引了大量的關注,不僅僅是由於“牛津”以及“DeepMind”的名號和質量保證,也是因為這門課將講義、習題等很多內容都放在了 Github 上,不斷更新,供大家討論。

  因此,今天新智元特意為大家介紹這門課程及其亮點內容。無論你是否專攻自然語言處理,對深度學習感興趣的人都能從中受益。

  根據牛津課程官網介紹,“深度NLP”是一門關於自然語言處理的高級課程。自動處理自然語言輸入和產生語言輸出是人工智能的關鍵組成部分。人類溝通中固有的模糊和噪聲使傳統的符號化 AI 技術無法有效地表征和分析語言數據。最近基於神經網絡的統計技術已經在自然語言處理中取得了許多了不起的成就,在該領域吸引了大量商業和學術興趣。

  此外,這還是一門應用課程,重點是使用遞歸神經網絡分析和生成語音和文本的最新進展。這門課會介紹相關機器學習模型的數學定義,並引出相關的優化算法。課程涵蓋了NLP 中神經網絡的一系列應用,包括分析文本的潛在維度,將語音轉成文本,在語言之間進行翻譯以及問答系統。這些題目將被納入三個更高級別的主題,依次是理解神經網絡在序列語言建模中的應用,理解它們作為條件語言模型在轉換任務中的應用,以及把神經網絡技術和高級應用中的其他機製相結合的方法,層層遞進。對於這些模型在CPU和GPU硬件上如何實現的討論也會貫穿整個課程。

  通過這一課程的學習,學生將會:

理解一系列神經網絡模型的定義

能夠推導和實施這些模型的優化算法

理解注意力機製和序列嵌入模型的神經實現,以及如何組合這些模塊化組件來構建最先進的NLP系統。

對語言數據的可擴展神經網絡模型的實現中固有的硬件問題有所認識

能夠執行和評價一般的神經網絡

  牛津深度 NLP 知識點提綱

  本課程將會涵蓋下列主題:

介紹/結論:為什麼選擇使用神經網絡技術處理自然語言;本課程和NLP、計算語言學以及機器學習的關係;

簡單的遞歸神經網絡:模型定義;優化算法中的反向傳播(B-P);小規模語言建模和文本嵌入

高級遞歸神經網絡:LSTM和門循環單元(Gated Recurrent Units);大規模語言建模,開放詞彙語言建模和詞法學

批梯度下降(minibatching)和GPU實施問題;

語音識別:語音建模和端到端語音模型中的神經網絡

Sequence to Sequence模型:從嵌入中生成;注意力機製;機器翻譯;圖像標題生成;

問答系統:問答任務及範例;用於問答系統的神經注意力機製和記憶網絡;

ADVERTISEMENT

高級記憶:神經圖靈機,Stack以及其他架構;

語言模型:利用遞歸網絡進行句法和語義分析

  涉及技術

  遞歸神經網絡,B-P,LSTM,注意力網絡,記憶網絡,神經圖靈機,機器翻譯,問答系統,語音識別,句法和語義分析,神經網絡的GPU優化

  三大練習:實踐深度學習的好機會

  牛津深度 NLP 課程當中,最值得一看的就是課程附帶的練習題(practice)。Hacker News 有評論稱,隻要你沉下心來,認真把這些題目做完,你定能受益匪淺。

  練習1:word2vec

  word2vec 這個練習當會提供你 IPython notebook(有地方需要你自己填寫),還有一個在線的 Python 計算環境,你可以在這里混合文本、代碼並進行腳本交互。

  練習的內容是使用 TED 演講和英文維基百科數據訓練 word2vec 模型,這會涉及 word2vec 部署中的 Python 包 gensim。訓練完模型以後,對模型學到的嵌入(embedding)進行分析和可視化。

  下面簡單介紹一下整個練習的過程。

  前期準備:完成設置與安裝(詳見 Github),然後對數據進行預處理。在這個練習當中,下載和預處理數據集的代碼都是提前寫好了的。不過,在以後的練習中,遇到原始數據,還是需要你自己寫代碼。完成這項工作一般是用 nltk 庫,但這個練習是用的 Python re 模型使用常規表達。最後是做一個列表,將最常見的詞語以及它們的使用頻率列出來。

  接下來就是訓練 word2vec 模型了。首先閱讀 word2vec 的 gensim 文檔,了解如何使用 Word2Vec 類。使用 CBOW(默認值)了解 $mathbbR^$ 中的嵌入。其他選項應為默認值,但是 min_count = 10,這樣便於忽略不常出現的單詞。整個訓練過程應該不會超過半分鍾。

  最後,將訓練好的模型與使用 WikiText-2 數據訓練的向量做比較。課程提供了 WikiText-2 數據集的下載/預處理代碼(類似於上面的代碼)。該代碼使用數據的隨機子采樣,因此大小與 TED Talk 數據相當。

  使用這個新的數據集,重複上面的分析。

  練習2:文本分類

  TED代表“技術、娛樂和設計”。TED Talk 語料庫中的每個談話都帶有開放的標簽,包括“技術”、“娛樂”和“設計”。雖然有些演講涉及的內容不止一個標簽,但由大約一半的演講都沒有被標記!

  這個練習的目的就是構建一個文本分類模型,預測一個 TED 演講是有關技術、娛樂或設計中的哪一個,或者哪個都不是。

  這就是所謂的“多標簽分類”(MLC)的實例,其中每個實例可以有許多不同的標簽。 不過,這門課將其轉換為一個多類分類的實例,其中每個文檔從一個有限的離散的可能標簽集合中,接收單個的標簽。

  還是設置和安裝,這個練習推薦的深度學習框架是 PyTorch 和 TensorFlow。其次是 CNTK、Torch 和 Caffe。

  接下來就是多類型分類了。在數據處理環節,你需要保留 TED Talk 數據集前 1585 個文檔用於訓練,接下來 250 個用於驗證,最後 250 個用於測試。每個文檔將被表示為一對(文本,標簽)。

  使用訓練數據,確定你想要用什麼詞彙描述模型。對文本進行標記(tokenise)和小寫(lowercase)是不錯的做法。

  測試時,你會遇到訓練集中沒有的單詞(這些單詞也不會有嵌入)。要處理這一點,將這些詞映射到一個特殊的 token。最好還確保你的訓練數據集也含有 token。

  接下來一些具體的內容,比如標簽、模型以及嵌入函數,這里就暫不介紹了。下面講一些比較有趣的問題。

  要完成這個練習,你需要在你最喜歡的框架中構建一個單層的前饋神經網絡。這個網絡應將標簽視為 8 個獨立類。

比較從隨機嵌入開始的模型的學習曲線,從 GloVe 嵌入開始或固定為 GloVe 值。批量培訓更穩定(例如 50),這種模式在培訓和測試上效果最好?哪種型號在保持精度方面效果最好?

如果你嚐試替代非線性(邏輯 sigmoid 或ReLU 而不是 tanh)會發生什麼?

如果添加 dropout 到網絡里會發生什麼?

如果改變隱藏層的大小會發生什麼?

如果要添加第二個隱藏層,代碼如何改變?

ADVERTISEMENT

訓練算法如何影響模型的質量?

將標簽的嵌入項投影到 2 個維度上並可視化(投影矩陣 V 的每一行對應於標簽嵌入)會看到什麼有趣的結果?

  練習3:用 RNN 實現文本分類

  在這個實踐,你可以選擇探索 RNN 的兩個應用之一:文本分類或語言建模(歡迎兩個都嚐試)。 我們將使用我們在實踐2中創建的 training/dev/test 進行分解。

  文本分類(任務1)

  上周的實踐中,我們介紹了文本分類是一個可以通過深度學習解決的問題。我們使用的文檔表示函數非常簡單:是文檔中詞嵌入的平均值。本周,你將使用 RNN 來計算文檔表示

  下圖左邊表示上周實際使用的文檔表示函數。這個任務的目標是令你的代碼使用右邊的架構。

  

  需要注意的是,在實踐3中,x 被定義為 RNN 隱藏狀態(h_t)的平均值。

  問題:

  1、基於 RNN 的表示相比上周使用的詞袋(bag of words)表示的好處和缺點是什麼? 數據的可用性如何影響結果?

  2、一種可能的架構變體是僅使用RNN的最終隱藏狀態作為文檔表示(即,x),而不是隨時間變化的隱藏狀態的平均值。它怎麼工作?這種表示的潛在好處和缺點是什麼?

  3、嚐試不同的 RNN 架構,例如簡單的 Elman RNN 或 GRU 或 LSTM。哪些最適合?

  4、如果使用雙向 LSTM(即圖中的虛線箭頭)會得到什麼結果?

  用 RNN 做語言建模(任務2)

  如上周講座所述,RNN 語言模型使用鏈規則將序列的概率分解成詞的概率的乘積,條件是先前生成的詞:

  為了避免浮點下溢的問題,我們通常在日誌空間中對其進行建模。

  給定一個語言模型的訓練序列訓練圖如下:

  

  你的任務是用 TED 數據的訓練集訓練 RNN 語言模型,然後使用驗證集確定何時停止優化模型參數。

  語言模型可以通過計算模型在測試語料庫上 (per-word) 的困惑度(perplexity )來定量評估:

  為了定性評估模型,通過從p(w_t | w_ {

  問題:

  1、如果改變語料庫的預處理(例如,把更多的單詞變成 UNK,或把所有字母變小寫),困惑度仍然可以比較嗎?

  2、為了使訓練易於處理,你可以將句子作為 i.i.d.,或者可以使用截平的 BPTT。i.i.d. 的假設有效嗎?它們的好處和缺點分別是什麼?你認為在測試集上的困惑度會是怎樣?

  3、不將文檔建模為詞序列,而是將文檔建模為字符序列。每個詞的困惑度在這兩個模型之間是否可比?在字符級別建模文本有什麼好處?有什麼缺點?

  4、嚐試使用 RNN 的不同定義的變體模型(如LSTM,GRU,簡單 Elman RNN),困惑度如何?

  5、在文本分類中,建議使用雙向 RNN。使用雙向RNN進行語言建模任務可行嗎?為什麼?

  課程安排

ADVERTISEMENT

  Week 1

  1. 課程介紹

  1a,Phil Blunsom(課程組織者、牛津大學計算機系副教授、DeepMind研究員)

  課程概要,特別介紹了使用深度學習技術進行語言處理的有趣之處

  1b,Wang Ling (DeepMind研究員)

  本節課介紹了機器學習的基本概念。

  2. 詞法語義學

  Ed Grefenstette( DeepMind研究員)

  詞語是語言的核心單位。表征和學習詞的意義是NLP的一個基本任務。本課討論了詞嵌入的概念,並將其作為一個實用和可擴展的解決方案。

  Week 2

  No lectures

  Week 3

  3,RNN和語言建模 Phil Blunsom

  語言建模是在許多NLP應用的重要任務。本講介紹了語言建模,包括傳統的基於n-gram的方法和更現代的神經方法。特別介紹了流行的遞歸神經網絡(RNN)語言模型和其基本的訓練及評估算法。

  4,RNN和語言建模 Phil Blunsom

  本講繼續上一節的內容,討論了實施RNN語言模型中的一些問題。 描述了消失(vanishing)和爆炸梯度(exploding gradient)問題,並討論了諸如LSTM這樣的架構解決方案。

  Week 4

  5. 文本分類 Karl Moritz Hermann (DeepMind研究員)

  本講討論文本分類,從諸如樸素貝葉斯這樣的基本分類器開始,講到RNN和卷積網絡。

  6. RNNs and GPUs Jeremy Appleyard (英偉達研究員)

  本講介紹了執行深度學習算法中CPU的替代方案——圖形處理單元(GPU) ,討論了GPU的優缺點以及內存帶寬和計算是如何影響RNN的。

  Week 5

  7&8. Sequence Transduction Chris Dyer (CMU副教授、DeepMind研究員)

  7. 序列轉換 Chris Dyer (CMU副教授、DeepMind研究員)

  本講中,我們擴展了語言建模的概念。通過在表征輸入上調節RNN語言模型,我們可以生成上下文相關語言。這個非常通用的想法可以應用於序列轉換任務,例如翻譯和總結,或將圖像轉換為描述其內容的說明性文字。

  8. 序列轉換 Chris Dyer (CMU副教授、DeepMind研究員)

  本講介紹了深度神經網絡中最重要和最有影響力的機製之一:注意力機製。 注意力使得遞歸網絡增加了對輸入的特定部分進行調節的能力,這是在諸如機器翻譯和圖像說明任務中實現高性能的關鍵。

  Week 6

  9. Speech Andrew Senior (DeepMind研究員)

  自動語音識別(ASR)是將語言的原始音頻信號轉換成文本的任務。 本講涵蓋了ASR模型的曆史,從高斯混合,到經過注意力強化的RNN,到基本的語音學,以及經常使用的各種輸入和輸出的表示。

  10. Speech Andrew Senior (DeepMind研究員)

  本講介紹將書面語言轉換為口語的算法(文本到語音)。TTS是與ASR相反的過程,但是在應用的模型中存在一些重要區別。我們回顧了傳統的TTS模型,然後引出更多的近期使用的神經方法,如DeepMind的WaveNet模型。

  Week 7

  11. 問答系統Karl Moritz Hermann

  12. 記憶 Ed Grefenstette

  Week 8

  13. 語言結構 Chris Dyer

  14. 結論 Phil Blunsom

  學術背景要求

  最後說明一下參與的學術背景。當然,這些也不是絕對的。因為,你在什麼情況下,都能一邊實踐一邊學習。

  數學線性代數

  微積分

  概率

  機器學習機器學習模型評測(訓練/驗證/測試分裂,交叉驗證等)

  過度擬合、泛化、正則化

  優化(目標函數隨機梯度下降)

  線性回歸及分類、神經網絡(常規非線性、反向傳播等)

  編程掌握或有能力迅速掌握神經網絡學習框架相關知識(如Torch、TensorFlow、Theano、DyNet)

  還等什麼,訪問 Github:https://github.com/oxford-cs-deepnlp-2017/lectures

ADVERTISEMENT