【吳恩達Deeplearning.ai筆記】吳恩達deeplearning.ai序列模型課程完整版筆記

2021-02-25 機器學習算法與自然語言處理

項目地址:https://github.com/mbadry1/DeepLearning.ai-Summary

本文經機器之心(almosthuman2014)授權、思源、路雪

本課程將講授如何構建自然語言、音頻和其他序列數據的模型。在深度學習的幫助下,序列算法比兩年前效果更好,用於大量有趣的應用,如語音識別、音樂合成、聊天機器人、機器翻譯、自然語言理解等。學完本課,你將:

了解如何構建和訓練循環神經網絡(RNN)及其常用變體,如 GRU 和 LSTM。

使用序列模型處理自然語言問題,如文本合成。

將序列模型應用到音頻應用中,如語音識別和音樂合成。

這是 Deep Learning Specialization 課程的第五課,也是最後一課。

適用人群:

該課程介紹循環神經網絡(RNN)、自然語言處理和詞嵌入還有序列模型和注意力機制等,以下將簡要介紹 Mahmoud Badry 所完成的序列模型筆記。

序列模型(如 RNN 和 LSTM)極大地改變了序列學習,序列模型可通過注意力機制獲得增強。序列模型在語音識別、音樂生成、情感分類、DNA 序列分析、機器翻譯、視頻活動識別、命名實體識別等方面得到應用。

循環神經網絡出現於 20 世紀 80 年代,最近由於網絡設計的推進和圖形處理單元上計算能力的提升,循環神經網絡變得越來越流行。這種網絡尤其是對序列數據非常有用,因為每個神經元或者單元能用它的內部存儲來保存之前輸入的相關信息。在語言的案例中,「I had washed my house」這句話的意思與「I had my house washed」大不相同。這就能讓網絡獲取對該表達更深的理解。

RNN 有很多應用,在自然語言處理(NLP)領域表現良好。下圖是一個用於解決命名實體識別任務的 RNN 網絡。

用於解決命名實體識別任務的 RNN 網絡。

簡化版 RNN 表示法。

沿時間的反向傳播(BPTT)

RNN 架構中的反向傳播,w_a、b_a、w_y、b_y 被序列中的所有元素共享。

這裡使用交叉熵損失函數:

其中第一個公式是序列中一個元素的損失函數,整個序列的損失是每個元素的損失之和。

在上圖中沿時間反向傳播中,激活值 a 從一個序列元素向另一個元素傳播。

RNN 的類型

RNN 的不同類型。

「梯度消失」指的是隨著網絡深度增加,參數的梯度範數指數式減小的現象。梯度很小,意味著參數的變化很緩慢,從而使得學習過程停滯。循環神經網絡在語言建模等序列問題上有非常強大的力量,但同時它也存在很嚴重的梯度消失問題。因此像 LSTM 和 GRU 等基於門控的 RNN 有非常大的潛力,它們使用門控機制保留或遺忘前面時間步的信息,並形成記憶以提供給當前的計算過程。

GRU 旨在解決標準 RNN 中出現的梯度消失問題。GRU 背後的原理與 LSTM 非常相似,即用門控機制控制輸入、記憶等信息而在當前時間步做出預測,表達式如下:

GRU 有兩個有兩個門,即一個重置門(reset gate)和一個更新門(update gate)。從直觀上來說,重置門決定了如何將新的輸入信息與前面的記憶相結合,更新門定義了前面記憶保存到當前時間步的量。如果我們將重置門設置為 1,更新門設置為 0,那麼我們將再次獲得標準 RNN 模型。使用門控機制學習長期依賴關係的基本思想和 LSTM 一致,但還是有一些關鍵區別:

GRU 有兩個門(重置門與更新門),而 LSTM 有三個門(輸入門、遺忘門和輸出門)。

GRU 並不會控制並保留內部記憶(c_t),且沒有 LSTM 中的輸出門。

LSTM 中的輸入與遺忘門對應於 GRU 的更新門,重置門直接作用於前面的隱藏狀態。

在計算輸出時並不應用二階非線性。

為了解決標準 RNN 的梯度消失問題,GRU 使用了更新門(update gate)與重置門(reset gate)。基本上,這兩個門控向量決定了哪些信息最終能作為門控循環單元的輸出。這兩個門控機制的特殊之處在於,它們能夠保存長期序列中的信息,且不會隨時間而清除或因為與預測不相關而移除。

帶有門控循環單元的循環神經網絡

以下展示了單個門控循環單元的具體結構。

門控循環單元

使用傳統的通過時間的反向傳播(BPTT)或實時循環學習(RTTL/Real Time Recurrent Learning),在時間中反向流動的誤差信號往往會爆炸(explode)或消失(vanish)。但 LSTM 可以通過遺忘和保留記憶的機制減少這些問題。

LSTM 單元一般會輸出兩種狀態到下一個單元,即單元狀態和隱藏狀態。記憶塊負責記憶各個隱藏狀態或前面時間步的事件,這種記憶方式一般是通過三種門控機制實現,即輸入門、遺忘門和輸出門。

以下是 LSTM 單元的詳細結構,其中 Z 為輸入部分,Z_i、Z_o 和 Z_f 分別為控制三個門的值,即它們會通過激活函數 f 對輸入信息進行篩選。一般激活函數可以選擇為 Sigmoid 函數,因為它的輸出值為 0 到 1,即表示這三個門被打開的程度。

圖片來源於李弘毅機器學習講義。

若我們輸入 Z,那麼該輸入向量通過激活函數得到的 g(Z) 和輸入門 f(Z_i ) 的乘積 g(Z) f(Z_i ) 就表示輸入數據經篩選後所保留的信息。Z_f 控制的遺忘門將控制以前記憶的信息到底需要保留多少,保留的記憶可以用方程 c*f(z_f)表示。以前保留的信息加上當前輸入有意義的信息將會保留至下一個 LSTM 單元,即我們可以用 c' = g(Z)f(Z_i) + cf(z_f) 表示更新的記憶,更新的記憶 c' 也表示前面與當前所保留的全部有用信息。我們再取這一更新記憶的激活值 h(c') 作為可能的輸出,一般可以選擇 tanh 激活函數。最後剩下的就是由 Z_o 所控制的輸出門,它決定當前記憶所激活的輸出到底哪些是有用的。因此最終 LSTM 的輸出就可以表示為 a = h(c')f(Z_o)。

雙向 RNN 和深度 RNN 是構建強大序列模型的有效方法。下圖是一個命名實體識別任務的 RNN 模型:

BRNN 架構

BRNN 的缺點是在處理之前需要整個序列。

深度 RNN 可幫助構建強大的序列模型。

3 層深度 RNN 圖示。

在現代深度學習框架中,你只需實現前向傳播,框架會執行反向傳播,因此大部分機器學習工程師不需要擔心反向傳播。但是,如果你是微積分專家,想了解 RNN 中反向傳播的細節,可參考該 notebook:https://www.coursera.org/learn/nlp-sequence-models/notebook/X20PE/building-a-recurrent-neural-network-step-by-step。

詞表徵在自然語言處理中是必不可少的部分,從早期的 One-Hot 編碼到現在流行的詞嵌入,研究者一直在尋找高效的詞表徵方法。Mahmoud Badry 在筆記中詳細記錄了詞嵌入方法,包括用於命名實體識別、人臉識別和翻譯系統的詞嵌入等,下圖展示了用於人臉識別的詞嵌入結構:

在這種詞嵌入方法中,我們可以將不同的人臉編碼壓縮為一個向量,進而根據該向量比較是不是同一張臉。

詞嵌入有非常多的優秀屬性,例如給定一張詞嵌入表。該筆記用案例來解釋詞嵌入的語義相近關係,如下圖所示,男性變化到女性與國王變化到女王的反向在嵌入空間內是相同的,這意味著詞嵌入捕捉到了詞與詞之間的語義相關性。

一般來說,Word2Vec 方法由兩部分組成。首先是將高維 one-hot 形式表示的單詞映射成低維向量。例如將 10,000 列的矩陣轉換為 300 列的矩陣,這一過程被稱為詞嵌入。第二個目標是在保留單詞上下文的同時,從一定程度上保留其意義。Word2Vec 實現這兩個目標的方法有 skip-gram 和 CBOW 等,skip-gram 會輸入一個詞,然後嘗試估計其它詞出現在該詞附近的概率。還有一種與此相反的被稱為連續詞袋模型(Continuous Bag Of Words,CBOW),它將一些上下文詞語作為輸入,並通過評估概率找出最適合(概率最大)該上下文的詞。

對於連續詞袋模型而言,Mikolov 等人運用目標詞前面和後面的 n 個詞來同時預測這個詞。他們稱這個模型為連續的詞袋(CBOW),因為它用連續空間來表示詞,而且這些詞的先後順序並不重要。CBOW 可以看作一個具有先知的語言模型,而 skip-gram 模型則完全改變將語言模型的目標:它不像 CBOW 一樣從周圍的詞預測中間的詞;恰恰相反,它用中心語去預測周圍的詞。

Mahmoud Badry 還展示了另一種學習詞嵌入的方法 GloVe,該方法雖然不像語言模型那樣使用廣泛,但它精簡的結構非常容易理解:

序列模型與注意力機制

最後一部分作者著重介紹了注意力機制,包括編碼器解碼器架構的缺陷和引入注意力機制的解決方案。下圖展示了使用語境向量 C 或注意力權重編碼信息的過程。

其實當我們翻譯一個句子時,會尤其關注於正在翻譯的單詞。神經網絡可以通過注意力來實現同樣的行為,即關注所收到信息子集的一部分。

我們通常是使用基於上下文的注意力生成注意力分布。參與的 RNN 會生成一個描述它想關注內容的查詢。每一個條目和這個查詢做點乘來產生一個分數,這個分數描述這個條目與查詢匹配程度。這些分數被輸入一個 softmax 來生成注意力分布。

推薦閱讀:

【深度學習實戰】pytorch中如何處理RNN輸入變長序列padding

【基礎數學知識】帶你理解泰勒展開式本質?

【基礎算法】最易懂的 Alpha-Beta 剪枝算法詳解

          歡迎關注公眾號學習交流~         

相關焦點

  • 吳恩達deeplearning.ai五項課程完整筆記了解一下?
    自吳恩達發布 deeplearning.ai 課程以來,很多學習者陸續完成了所有專項課程並精心製作了課程筆記,在此過程中機器之心也一直在為讀者推薦優質的筆記。上個月,deep learning.ai 第五課發布,該系列課程最終結課。
  • 吳恩達重磅回歸,成立創業公司Deeplearning.ai
    這一消息的發布震驚業內,當時各方人士也紛紛猜測吳恩達何去何從,甚至臆測吳恩達離開百度的原因。經過近三個月的沉寂,吳恩達終於透露出了最終去處:創業!更多有關 Deeplearning.ai 的信息將會在 8 月份公布。昨天,前百度首席科學家吳恩達突然宣布了他的下一步計劃:Deeplearning.ai。
  • 吳恩達和網易合作免費開放deeplearning.ai課程!
    深入淺出的授課內容、循序漸進的課程設置、精彩紛呈的大咖對話,這門備受全球AI愛好者關注的課程,將為國內的學習者和從業人員帶來前所未有的人工智慧學習體驗。值得一提的是,8月上旬當吳恩達宣布啟動deeplearning.ai項目時,迎來了全球科技媒體的矚目。
  • 吳恩達Deeplearning.ai課程學習全體驗:深度學習必備課程
    吳恩達最近推出的 deeplearning.ai 課程就是這樣的存在。 該課程一在 coursera 上發布,我立即註冊並花了四個晚上觀看其中的講座、參加考試、完成編程作業並通過了課程。 深度學習從業者和機器學習工程師通常會把大量時間花費在 Keras 與 TensorFlow 這樣的抽象工作中。
  • 吳恩達 AI 完整課程資源超級大匯總!
    毫無疑問,吳恩達的 AI 課程在國內外都是入門的首選課程,而且有非常完整的學習路線,無數新手都從這門課中收穫滿滿。然而,吳恩達從最早的 CS229,到後來的 deeplearning.ai 深度學習專項課程,還有其它 AI 資源,大神發布的 AI 知名課程和資料非常多。對大部分學習者來說,肯定搜集得不完全而且非常耗時間。這確實是意見麻煩事!沒關係!
  • 離開百度後的第五個月,吳恩達親授Deep Learning課程在國內上線
    即日起,Deep Learning微專業課程在網易雲課堂正式上線,國內用戶可以通過網易雲課堂免費學習由吳恩達親授的完整課程內容。吳恩達是Google Brain項目的發起人,同時也是Coursera的聯合創始人和聯合主席,此前,他還曾任百度副總裁和首席科學家。今年6月,已從百度離職的吳恩達在Twitter上宣布了他的新項目deeplearning.ai。
  • 吳恩達Deeplearning.ai課程學習全體驗:深度學習必備課程(已獲證書)
    在全職工作與家庭瑣事之間,很多人都希望利用自己的剩餘時間學習認知科學和人工智慧的知識,如果突然出現了一套優秀的課程,那麼一切就會變得簡單起來。吳恩達最近推出的 deeplearning.ai 課程就是這樣的存在。該課程一在 coursera 上發布,我立即註冊並花了四個晚上觀看其中的講座、參加考試、完成編程作業並通過了課程。
  • 機器之心專訪吳恩達,深度學習課程項目Deeplearning.ai正式發布
    作者 | Tony Peng、李澤南編者按:6 月 23 日,吳恩達通過 Twitter 宣布自己離職百度之後的新一步動向——Deeplearning.ai,並宣稱將在 8 月份公布有關 Deeplearning.ai 的更多細節。今日,機器之心獲得消息,Deeplearning.ai 項目正式發布。
  • github標星8331+:吳恩達深度學習課程資源(完整筆記、中英文字幕視頻、python作業,提供百度雲鏡像!)
    課程說明課程地址:https://www.deeplearning.ai國內由網易雲課堂進行了翻譯,並免費提供給廣大愛好者:https://mooc.study.163.com/university/deeplearning_ai#/c這門課程由吳恩達老師主講,可以說是深度學習入門的最熱門課程
  • 「吳恩達deeplearningai」微信公眾號上線,將發布《機器學習訓練...
    去年 6 月,吳恩達宣布 deeplearning.ai 創業項目,8 月,該項目揭曉:一套由 5 門課組成的深度學習系列課程 —— Deep Learning Specialization,旨在推廣普及深度學習知識。
  • 資源連結|深度學習教程資源整理(伯克利、斯坦福、MIT、阿里、吳恩達)
    吳恩達deeplearning.ai五項課程完整筆記了解一下?項目地址:https://github.com/mbadry1/DeepLearning.ai-Summary自吳恩達發布 deeplearning.ai 課程以來,很多學習者陸續完成了所有專項課程並精心製作了課程筆記,在此過程中機器之心也一直在為讀者推薦優質的筆記。
  • 重磅 | 吳恩達Coursera新課已經上線,開啟全民 AI 時代!
    說起吳恩達「Andrew Ng」,相信大家都非常熟悉了。作為人工智慧的大 IP,吳恩達一直致力於人工智慧的推廣和普及,爭取讓每個人都能感受人工智慧的魅力。自去年8月開始,吳恩達在 Coursera 上開設了由 5 門課組成的深度學習專項課程,掀起了一股人工智慧深度學習熱潮。這裡附上deeplearning.ai的官網:還沒結束!大牛是停不下腳步的。
  • 吳恩達deeplearning.ai新課上線:TensorFlow移動和web端機器學習
    大家都很熟悉吳恩達了。他開設的 Coursera 機器學習課程可以說是很多初學者的「白月光」。近日,他創始的 deeplearning.ai 在 Coursera 上另外開設了一門課程,主要介紹使用 Tensorflow.js、TensorFlow Lite、TensorFlow Hub 等工具進行數據分析的方法。該專項課程已於今日開放註冊。吳恩達對課程進行了轉推。
  • 入門 | 吳恩達Deeplearning.ai 全部課程學習心得分享
    ,並為我們提供了課程解讀。缺少正交化控制的案例是過早停止了算法的最優化過程,因為這樣會同時影響模型的偏差和方差。第 13 課:單數值評估度量的重要性吳恩達強調了選擇單數值評估度量(single number evaluation metric)的重要性,它可以允許我們評估算法。如果目標改變,我們應該在模型開發過程中僅更改評估度量。
  • 吳恩達更新了!深度學習系列課程第5課放出,全劇終
    至此,吳恩達的深度學習系列課程完整發布,各位同學可以放心開始上課了。Coursera課程連結:https://www.coursera.org/learn/nlp-sequence-models圖:deeplearning.ai
  • 吳恩達新書《Machine Learning Yearning》附完整中文版 PDF 下載!
    吳恩達在 AI 普及之路上從未停下腳步,歷時半年的大作《Machine Learning Yearning》中文版《機器學習訓練秘籍
  • 吳恩達《Machine Learning》精煉筆記 1:監督學習與非監督學習
    然而,吳恩達從最早的 CS229,到後來的 deeplearning.ai 深度學習專項課程,還有其它 AI 資源,大神發布的 AI 知名課程和資料非常多。說到吳恩達優秀的 AI 課程,首當其衝的就是幾年前在 Coursera 上發布的《Machine Learning》課程!
  • 下載量過百萬的吳恩達機器學習和深度學習筆記更新了!(附PDF下載)
    (作者:黃海廣)0.導語我和同學將吳恩達老師機器學習和深度學習課程筆記做成了列印版,放在github上,下載後可以列印。筆記基於課程視頻和字幕製作。感謝吳恩達老師為廣大愛好者提供如此實用的教程!2018-4-28 公布了深度學習筆記的word和markdown文件!目前僅在github渠道,累計下載超過了100萬次!
  • 吳恩達全新課程上線!給商務人士和高管的AI指引課
    Coursera上,該課程的相關資料還很不完善,文摘菌帶大家看一看這門課程目前有限的曝光。課程的製作方仍然是deeplearning.ai,依舊是吳恩達親自授課,仍然是通過英文授課,中文版是否會同步上線還不得而知。
  • 把吳恩達深度學習系列課程畫出來是這個樣子
    他的下一步,將通過deeplearning.ai這個網址,繼續提供一系列深度學習的Coursera課程。大家可能還不知道吧,吳恩達是在線教育平臺Coursera的聯合創始人,吳恩達在2008年發起了Stanford Engineering Everywhere(SEE)項目,這個項目把斯坦福的許多課程放到網上,供免費學習。