Transformer|深度學習(李宏毅)(八)

2021-03-02 酷酷的群
一、RNN與CNN處理Seq2seq問題的局限性

RNN的局限性

處理Seq2seq問題時一般會首先想到RNN,但是RNN的問題在於無論使用單向還是雙向RNN都無法並行運算,輸出一個值必須等待其依賴的其他部分計算完成。

CNN的局限性

為了解決並行計算的問題,可以嘗試使用CNN來處理。如下圖,使用CNN時其同一個卷積層的卷積核的運算是可以並行執行的,但是淺層的卷積核只能獲取部分數據作為輸入,只有深層的卷積層的卷積核才有可能會覆蓋到比較廣的範圍的數據,因此CNN的局限性在於無法使用一層來輸出考慮了所有數據的輸出值。

二、Self-attention

Transformer是一種使用了Self-attention的Seq2seq模型。Self-attention是一種可以取代RNN的網絡結構,比起RNN其可以實現並行運算。

Self-attention的結構

①如下圖,首先要將輸入序列的向量經過一個Embedding層(即乘以權重)獲得,然後分別乘以三個權重來獲得:

分別代表query、key和value,在後面會用到:

②接下來需要拿每個query對每個key做attention,這裡使用的是Scaled Dot-Product Attention,其公式為:

也就是計算query與key的點積,另外點積需要除以,是的維度,主要是為了起到縮放的作用,避免梯度爆炸哦。至於更詳細的為什麼Dot-Product Attention需要被Scaled,可以參考該文章:為什麼 dot-product attention 需要被 scaled?

該過程如下圖所示,下圖展示了與key做Attention的過程,獲得了:

③然後將得到的結果通過函數獲得:

④然後將與對應的相乘在加起來就獲得了第一個輸出值。需要注意這裡的是考慮了所有的輸入所產生的,其具備與RNN類似的效果。該過程如下圖所示:

同理等也通過同樣的過程計算出來:

Self-attention如何並行運算

①將橫向排列到一起組成矩陣,然後分別用乘以來獲得矩陣,該過程如下圖所示:

該步驟的形式化過程如下:

由此也就完成了以下過程:

②接下來需要對和做attention,在每一個對每一個進行點積運算時可以將縱向疊加成一個矩陣即,該過程如下圖所示(下圖中省略了):

同樣地每一個也可以橫向排列到一起來與做點擊運算,得到矩陣,該過程如下圖所示:

該步驟的形式化過程如下:

③將矩陣的每一列通過函數獲得,該過程如下圖所示:

④然後將橫向排列到一起再與矩陣相乘來獲得最終的輸出矩陣,該過程如下圖所示:

該步驟的形式化過程如下:

並行運算的整個過程如下圖所示:

具體的細節可以用下圖來表示:

總而言之是一些矩陣運算,可以使用GPU來進行加速。

Multi-head Self-attention

還可以繼續乘以各自的權重獲得,比如,該過程如下圖所示(以2個head為例):

然後分別將對應的與對應的做attention,然後經過與上一部分介紹的相同的步驟來獲得,最後將所有的縱向拼接到一起再與權重相乘來獲得最終的輸出。該過程如下所示:

Self-attention如何考慮位置信息

顯然上述Self-attention的輸出是不考慮的順序的,可以通過將與一個向量加起來的方式來將序列的順序考慮進來,要注意這裡的是預先設定好的,並不會在參數更新過程中被學習。該過程如下所示:

這裡的的來源可以理解為:先將與一個代表向量在序列中位置的獨熱編碼縱向拼接起來然後乘以權重獲得,其中可以分為兩部分,其中不是學習得來的,是預先設定的。該過程的形式化描述如下:

以下是該過程的直觀的描述:

如何獲得設定的有特定的方法,這裡只展示一下將可視化的結果:

三、Transformer

Self-attention在Seq2seq問題中的應用

Self-attention層可以直接替換RNN層來處理Seq2seq問題,比如可以將RNN的AutoEncoder中的Encoder和Decoder全部替換成Self-attention層,使用下圖中的網絡結構同樣可以做一些RNN能做的工作。比如翻譯等:

Transformer

下圖以機器翻譯為例展示了Transformer的結構:

可以看到Transformer共有Encoder和Decoder兩部分組成。

在Encoder部分:
①Input Embedding:指的是詞嵌入層,獲得詞的編碼向量;
②Positional Encoding:指的是上文提到的,用來確定輸入向量的位置;
③Multi-Head Attention:這一層指的是如下結構:

④Add&Norm:該部分處理順序如下:

這部分會把輸入加到Multi-Head Attention層的輸出上(一個殘差連接 residual connection)然後對相加的結果做Layer normalization,Layer normalization與Batch normalization有所不同,Batch normalization是在一個Batch的每一個維度上做標準化使其,而Layer normalization是對每一筆數據做標準化:

⑤Feed Forward:前饋神經網絡;
⑥總共有N個這樣的結構(Nx)。

在Decoder部分:
①Input:以Decoder的前一個時間步(time step)的輸出作為Decoder的輸入;
②Masked Multi-Head Attention:masking 的作用就是防止在訓練的時候使用未來的輸出的單詞,確保對位置i的預測僅依賴於已知的位置i之前的輸出,而不會依賴於位置i之後的輸出。比如訓練時, 第一個單詞是不能參考第二個單詞的生成結果的。Masking就會把這個信息變成0, 用來保證預測位置 i 的信息只能基於比 i 小的輸出;
③Multi-Head Attention:encoder-decoder attention layer ,這一層會attend到之前Encoder部分的輸出;

四、Attention可視化

Self-attention的過程中序列中的任意兩個詞都會做attention,這裡可以將對應的權重做可視化:

在下面這張圖中有個有趣的現象,可以看到經過訓練後,句子「The animal didn't cross the street because it was too tired.」中「it」到「animal」的權重很大,而句子「The animal didn't cross the street because it was too wide.」中「it」到「street」的權重很大。

下圖展示了Multi-Head Attention的不同head的可視化結果,上面的部分可以看出這個head主要關注比較長序列(global)的信息,而下面的head比較關注距自己相近的序列(local)的信息,說明使用多個head時不同的head通過學習會關注不同的信息。

五、Transformer應用

多文檔摘要

使用Transformer可以做多文檔摘要,如下圖所示,通過訓練一個Summarizer來輸入一個文檔的集合然後輸出這些文檔的摘要:

Transformer很好地解決了輸入序列長度較大的情況,而向RNN中輸入長序列結果通常不會好:

Universal Transformer

將Transfromer在深度上隨時間循環使用,即重複使用相同的網絡結構:

Self-Attention GAN

簡單了解一下:

參考資料

ref:[深度學習中的「注意力機制」](https://rdc.hundsun.com/portal/article/922.html)

ref:[神經機器翻譯 之 谷歌 transformer 模型](https://www.jianshu.com/p/ef41302edeef)

相關焦點

  • [學習資源分享]-3Blue1Brown數學課程、李宏毅《深度學習人類語言處理》等
    1、3Blue1Brown數學課程之前小編就整理過3Blue1Brown推出的《線性代數的本質》課程的學習筆記,除此之外,還有《微積分的本質》、《深度學習》等系列的課程。3Blue1Brown推出的數學課程用八個字形容,就是深入淺出、直觀明了。對於學習數學有困難的朋友,看一下他們的課程,一定會受益匪淺。
  • 深度學習導論 - 讀李宏毅《1天搞懂深度學習》
    【雷課導讀】本文是2016 臺灣資料科學年會前導課程「一天搞懂深度學習」的全部講義PPT(共268頁),由臺灣大學電機工程學助理教授李宏毅主講。
  • 【總250期】李宏毅深度學習筆記01期 --- introduction of deep learning
    一、李宏毅簡介以及一些深度學習的學習建議    李宏毅 (Hung-yi Lee), 臺灣大學博士,2012年9月至2013年8月,任中國科學院信息技術創新研究中心博士後。另一方面,他的視頻是以一種啟發式的教學模式來引導學生,即先讓學生可以大體了解整個深度學習的生態系統後,在進行具體知識的講解,而且ppt的製作絕對也是業界良心,最後,most important!他的視頻是中文的,這對於很多人來說是個好消息,總之,一句話,想入門深度學習,就去聽李宏毅的視頻吧!!!
  • 資源|李宏毅中文《機器學習/深度學習》2019上線(附ppt及視頻分享)
    吳恩達、李飛飛等大牛的機器學習、深度學習公開課都乾貨滿滿,惠及很多學者。但是很遺憾的是他們的課程都是英文的,對於中文較差些的學生很不友好,而另外一位臺灣大學(NTU)的博士李宏毅則也是幽默風趣,在課程中加入二次元的元素,最重要的是中文授課,可以說非常適合我們入門或者重溫機器學習/深度學習的知識,我們也將這門課程推薦給大家~一、作者介紹:李宏毅(Hung-yi Lee)目前任臺灣大學電機工程學系和電機資訊學院的助理教授
  • 李宏毅-《深度學習人類語言處理2020》中文視頻課程及ppt分享
    由國立臺灣大學李宏毅老師主講的純中文版,2020年深度學習與人類語言處理課程開課了,該課程主要講解深度學習技術在人類語言處理,比如語音識別、自然語言處理相關的知識。
  • 臺大李宏毅教授最新課程,深度強化學習有國語版啦!
    大數據文摘出品入坑深度學習的同學肯定都聽過臺灣大學的李宏毅教授,或者是他那本非常受歡迎的課程——《1天搞懂深度學習》。這門課程的講義PPT總共有286頁,深入淺出的介紹了深度學習的概念、框架及展望。課程內容通俗易懂,適合深度學習初學者及相關從業人員,在大數據文摘後臺回復「深度學習」可下載課程講義。
  • 李宏毅老師深度學習與人類語言處理課程視頻及課件(附下載)
    李宏毅老師2020新課 深度學習與人類語言處理課程 昨天(7月10日)終於完結了,這門課程裡語音和文本的內容各佔一半,主要關注近3
  • 中文教學| 臺灣大學李宏毅2020年機器學習/深度學習課程
    李宏毅老師的2020年機器學習教程授課完畢,可以在其個人主頁上查找對應的資料學習。視頻、作業、講義應有盡有,一應俱全。
  • 資源 | 臺大李宏毅教授最新課程,深度強化學習有國語版啦!
    大數據文摘出品入坑深度學習的同學肯定都聽過臺灣大學的李宏毅教授
  • 李宏毅《深度學習人類語言處理》國語(2020)
    近日,李宏毅 (Hung-yi Lee)老師在國立臺灣大學(NTU)開了一門叫深度學習人類語言處理的課,b站(https://www.bilibili.com
  • 臺大李宏毅最新深度學習課程:機器學習及其深層與結構化(347PPT)
    【新智元導讀】 臺大李宏毅老師的深度學習課程以其深入淺出和全面性而受到大家的歡迎。是不可多得的、較為全面的系統的深度學習中文教材。目前,他們在網上貼出了2017年的最新課程《機器學習及其深層與結構化》,包括 TensorFlow 介紹、深度學習模型的基礎架構、用於反向傳播的計算圖、深度學習語言模型、深度學習晶片等等。我們第一時間帶來課程設置和相關資源。
  • 課程簡記:深度學習與人類語言處理 ——李宏毅,2020 (P2&3)
    2020新課深度學習與人類語言處理課程主頁:http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html視頻連結地址:https://www.bilibili.com/video/BV1RE411g7rQ課程視頻及課件請關注AINLP公眾號,回復'DLHLP'獲取P2 是課程安排,無需闡述Speech
  • 李宏毅機器學習完整筆記正式發布
    《LeeML-Notes》李宏毅機器學習筆記3.《LeeML-Notes》學習筆記框架4.筆記內容細節展示a. 對梯度下降概念的解析b. 為什麼需要做特徵縮放c. 隱形馬爾科夫鏈的應用5.代碼呈現a. 回歸分析b.
  • 李宏毅強化學習完整筆記!開源項目《LeeDeepRL-Notes》發布
    「近端策略優化算法」課程中的 PPT,展示了重要性採樣的問題李宏毅老師的《深度強化學習》是強化學習領域經典的中文教程之一。李老師幽默風趣的上課風格讓晦澀的強化學習理論變得輕鬆易懂,他會通過很多有趣的例子來講解強化學習理論。
  • 春節充電系列:李宏毅2017機器學習課程學習筆記19之遷移學習(Transfer Learning)
    春節充電系列:李宏毅2017機器學習課程學習筆記01之簡介春節充電系列:李宏毅2017機器學習課程學習筆記02之Regression春節充電系列:李宏毅2017機器學習課程學習筆記03之梯度下降春節充電系列:李宏毅2017機器學習課程學習筆記04分類(Classification)春節充電系列:李宏毅2017機器學習課程學習筆記05
  • 最受歡迎中文機器學習課程,臺大李宏毅老師公開課2019版上線!
    臺大教授李宏毅的機器學習課程經常被認為是中文開放課程中的首選。李教授的授課風格風趣幽默,通俗易懂,其課程內容中不僅有機器學習、深度學習的基礎知識,也會介紹 ML 領域裡的各種最新技術。近日,2019 版的課程資料與視頻終於上線了!
  • 課程筆記:深度學習與人類語言處理 ——李宏毅,2020 (P4)
    2020新課深度學習與人類語言處理課程主頁:http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html視頻連結地址:https://www.bilibili.com/video/BV1RE411g7rQ課程視頻及課件請關注AINLP公眾號,回復'DLHLP'獲取Speech Recognition
  • 李宏毅《機器學習》2019 新教程上線
    list=PLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4李宏毅(Hung-yi Lee)目前任臺灣大學電機工程學系和電機資訊學院的助理教授,他曾於 2012 年獲得臺灣大學博士學位,並於 2013 年赴麻省理工學院(MIT)計算機科學和人工智慧實驗室(CSAIL)做訪問學者。他的研究方向主要是機器學習(深度學習)和語音識別。
  • 【transformer】 你應該知道的 transformer
    transformer為什麼需要用transformerencoderdecoderoutput layersummarytransformer的缺點transformer的應用refTransformer什麼是transformer首先我們先說結論:Attention Is
  • 李宏毅:1 天搞懂深度學習(附思維導圖)
    》,300 多頁的 ppt,臺灣李宏毅教授寫的,非常棒。不誇張地說,是我看過最系統,也最通俗易懂的,關於深度學習的文章。」① 通過SlideShare 的連結(需科學上網):https://www.slideshare.net/tw_dsconf/ss-62245351?