back to index
【機器學習2021】Transformer (上)

link |
好,那接下來呢,我們要講這個作業五呢,
link |
大家會用上的 Transformer
link |
那我們其實在之前已經提了 Transformer 提了不下 N 次
link |
那如果你還不知道 Transformer 是什麼的話
link |
Transformer 其實就是那個變形金剛,知道嗎?
link |
變形金剛的英文呢,就是 Transformer
link |
那 Transformer 呢,也跟我們之後會提到的 BERT 有非常強烈的關係
link |
所以這邊呢,有一個 BERT 探出頭來
link |
代表說 Transformer 跟 BERT 是很有關係的
link |
那 Transformer 是什麼呢?
link |
Transformer 呢,就是一個 Sequence-to-Sequence 的 Model
link |
那 Sequence-to-Sequence 的 Model 呢,它的縮寫啊,我們會寫作 Seq-to-Seq
link |
那 Sequence-to-Sequence 的 Model 又是什麼呢?
link |
我們之前呢,在講 Input 是一個 Sequence 的 Case 的時候
link |
我們說 Input 是一個 Sequence,那 Output 呢,有幾種可能
link |
一種是 Input 跟 Output 的長度一樣
link |
那有一個 Case 是這個 Output 只 Output 一個東西
link |
我們不知道應該要 Output 多長
link |
由機器自己決定 Output 的長度
link |
好,那有什麼樣的例子,有什麼樣的應用
link |
是我們需要用到這種 Sequence-to-Sequence 的 Model
link |
也就是 Input 是一個 Sequence, Output 是一個 Sequence
link |
但是我們不知道 Output 應該有的長度
link |
應該要由機器來自己決定 Output 長度有什麼樣的應用呢?
link |
舉例來說,一個很好的應用就是語音辨識
link |
輸入的聲音訊號其實就是一串的 Vector
link |
也就是輸入的這段聲音訊號所對應的文字
link |
每一個圈圈就代表比如說中文裡面的一個方塊字
link |
當然是有一些關係,但是卻沒有絕對的關係
link |
那N跟N'之間的關係也要由機器自己來決定
link |
輸出是Machine Learning
link |
比如說Machine Learning
link |
所以它說Machine Learning
link |
為什麼我們要做Speech Translation這樣的任務呢
link |
但我們有沒有可能對這些語言做語音翻譯
link |
直接把它翻譯成我們有辦法閱讀的文字呢
link |
但台語的文字並不是一般人能夠看得懂的
link |
那你根本就不知道這個段話在說什麼對不對
link |
這個類神經網路聽某一種語言的聲音訊號
link |
我們知道說今天你要訓練一個Neural Network
link |
你就需要有Input跟Output的Pair
link |
比如說YouTube上面有很多的鄉土句
link |
你就有台語聲音訊號跟中文直接的對應關係
link |
我們等一下要講的Transformer
link |
那我們實驗室就載了1500個小時的鄉土句的資料
link |
那你可能會覺得說這聽起來有很多的問題
link |
然後這個鄉土句的字幕不一定跟聲音有對起來
link |
到底能不能夠做一個台語語音辨識系統呢
link |
那機器在聽了1500個小時的鄉土句以後
link |
那其實台灣有很多人都在做台語的語音辨識啦
link |
如果你想要知道更多關台語語音辨識的事情的話
link |
那你只要google台灣水蝦就可以找到這個資料集
link |
現在還沒有真的做end-to-end的模型啦
link |
不過從台語的KK音標轉成聲音訊號這一段
link |
就是一個像是transformer的network
link |
其實是一個叫做Tagotron的model
link |
他本質上就是一個sequence-to-sequence的model
link |
transformer或者是sequence-to-sequence的model
link |
也可以很廣泛的使用了sequence-to-sequence的model
link |
舉例來說你可以用sequence-to-sequence的model
link |
文字就是一個factor sequence
link |
所以你完全可以用sequence-to-sequence的model
link |
那另外一個人說hello, how are you today
link |
hello, how are you today
link |
那就可以訓練一個sequence-to-sequence的model
link |
那事實上sequence-to-sequence的model
link |
在natural language processing的領域的使用
link |
那其實很多natural language processing的任務
link |
question answering QA的任務
link |
所謂的question answering就是
link |
而很多你覺得跟question answering
link |
或者是你想要叫機器做sentiment analysis
link |
什麼是sentiment analysis呢
link |
你就做一個sentiment analysis的model
link |
然後就把這篇文章丟到你的model裡面
link |
那怎麼把sentiment analysis這個問題
link |
你就給機器你要判斷正面還是負面的文章
link |
又可以用sequence to sequence的model來解
link |
怎麼用sequence to sequence的model來解呢
link |
就是有一個sequence to sequence的model
link |
那sequence to sequence的model
link |
硬是用sequence to sequence的model解
link |
其實都有機會使用sequence to sequence的model
link |
就什麼問題都用sequence to sequence的model
link |
往往可以得到比單用sequence to sequence的model
link |
我們剛才講的是一個sequence to sequence的model
link |
Pixel 4也是用一個end-to-end的neural network
link |
Pixel 4裡面就是有一個neural network
link |
但它其實用的不是sequence to sequence的model
link |
它用的是一個叫做RNN transducer的model
link |
好 那我剛才講了很多sequence to sequence的model
link |
你不覺得它是一個sequence to sequence的model的問題
link |
但你都可以應用sequence to sequence的model的問題
link |
比如說deep learning is very powerful
link |
告訴我們說deep加learning合起來
link |
然後very加powerful合起來
link |
就是產生這樣子的一個parsing trick
link |
假設你想要deep learning解的話
link |
但輸出看起來不像是一個sequence
link |
可以硬是把它看作是一個sequence
link |
可以對應到一個這樣子的sequence
link |
它就代表了這一個tree的structure
link |
你就可以用sequence to sequence的model
link |
你就train一train一個sequence to sequence的model
link |
你就可以硬是用sequence to sequence的model
link |
Grammar as a Foreign Language
link |
你會發現它放到archive上面的時間
link |
那個時候sequence to sequence model還不流行
link |
那時候sequence to sequence model
link |
Grammar as a Foreign Language
link |
結果它得到state of the art的結果
link |
也其實有遇過這個Oreal Vineyard
link |
然後那個時候sequence to sequence model
link |
我覺得這個模型應該是挺難train的
link |
train這種sequence to sequence model
link |
用sequence to sequence model
link |
居然可以硬做到state of the art
link |
我直接gradient descent就train起來了
link |
只是我要train到state of the art
link |
不過今天sequence to sequence model
link |
可以用sequence to sequence model
link |
舉例來說multi-label classification
link |
什麼是multi-label classification呢
link |
multi-class classification
link |
跟multi-label classification
link |
multi-class classification
link |
跟multi-label classification
link |
multi-class classification
link |
但是multi-label classification
link |
這篇文章屬於class 3、9、10、11等等
link |
這種multi-label classification的問題
link |
multi-class classification的問題來解呢
link |
我把這些文章丟到一個classifier裡面
link |
那本來classifier只會輸出一個答案
link |
看看能不能解multi-label classification的問題
link |
有些文章對應的class的數目是兩個
link |
classifier output的分數最高的前三名
link |
這邊可以用sequence to sequence
link |
我們說sequence to sequence model
link |
輸出的output sequence的長度是多少
link |
那既然你沒有辦法決定class的數目
link |
或者是object detection
link |
這個看起來跟sequence to sequence model
link |
它也可以用sequence to sequence model
link |
object detection就是給機器一張圖片
link |
可以用sequence to sequence映作
link |
就是要告訴你說sequence to sequence model
link |
它是一個很powerful的model
link |
怎麼做sequence to sequence這件事
link |
好那一般的sequence to sequence model
link |
你inbringer sequence
link |
由encoder負責處理這個sequence
link |
encoder跟decoder內部的架構
link |
那sequence to sequence model的起源
link |
就有一篇sequence to sequence model
link |
當時的sequence to sequence model
link |
那今天講到sequence to sequence model的時候
link |
那sequence to sequence model
link |
我們剛講完的self-attention
link |
那其實不只是self-attention
link |
transformer的encoder
link |
用的就是self-attention
link |
transformer的論文裡面的圖呢
link |
會輸出最終的vector sequence
link |
其實並不是neural network的一層
link |
在transformer的encoder裡面
link |
先做一個self-attention
link |
fully connected的free-forward network裡面
link |
丟到fully connected的network裡面
link |
那這一排vector就是block的輸出
link |
那事實上在原來的transformer裡面呢
link |
這是self-attention的layer
link |
在我們剛才講self-attention的時候
link |
也就是說這邊假設這個vector叫做A
link |
叫做residual的connection
link |
那其實這種residual的connection
link |
在deep learning的領域用的是非常的廣泛
link |
為什麼要用residual的connection
link |
叫做residual的connection
link |
它會把input直接跟output加起來
link |
那這邊用的不是batch normalization
link |
這邊用的叫做layer normalization
link |
那layer normalization做的事情
link |
比batch normalization更簡單一點
link |
layer normalization做的事情是這個樣子的
link |
剛才在講batch normalization的時候
link |
但這邊這個layer normalization
link |
那這個layer normalization
link |
計算它的mean跟standard deviation
link |
剛才在講batch normalization的時候
link |
不同feature的同一個dimension
link |
去計算mean跟standard deviation
link |
但layer normalization
link |
去計算mean跟standard deviation
link |
那計算出mean跟standard deviation以後
link |
output這邊的每一個vector
link |
再處理standard deviation以後
link |
就是layer normalization的輸出
link |
那得到layer normalization的輸出以後
link |
才是Fully Connected Network的輸入
link |
而Fully Connected Network這邊
link |
所以我們會把Fully Connected Network的input
link |
這個才是transformer encoder裡面
link |
這個Fully Connected Network做完residual以後
link |
再做一次layer normalization
link |
才是residual network裡面
link |
首先你有self-attention
link |
還有加上positional encoding
link |
如果你只光用self-attention
link |
所以你需要加上positional information
link |
有特別畫出positional information
link |
這一塊這邊寫一個multi-head attention
link |
這個就是self-attention的bug
link |
它是multi-head self-attention
link |
那這邊有一個add and none
link |
就是residual加layer normalization的意思
link |
self-attention有加上residual的connection
link |
接下來還要過layer normalization
link |
這邊這個圖上的add and none
link |
就是residual加layer none的意思
link |
這邊要過Free Forward Network
link |
Fully Connected的Free Forward Network
link |
以後再做一次add and none
link |
再做一次residual加layer none
link |
BERT它其實就是Transformer的encoder
link |
就是為什麼這個Transformer的encoder
link |
這個encoder的Neural架構
link |
On Layer Normalization in the Transformer Architecture
link |
為什麼Layer Normalization是放在那個地方呢
link |
再做Layer Normalization呢
link |
能不能夠把Layer Normalization
link |
再做Layer Normalization再加進去
link |
更換一下順序以後的Transformer
link |
不是別的為什麼不做Batch Normalization
link |
Rethinking Batch Normalization in Transformer
link |
為什麼Batch Normalization
link |
不如Layer Normalization在Transformer裡面
link |
為什麼Batch Normalization
link |
不如Layer Normalization
link |
他提出來一個Power Normalization
link |
就可以比這個Layer Normalization
link |
還要就是performance差不多