【機器學習2021】Transformer (上)
Summary
TLDRThis video script delves into the intricacies of Transformer models, particularly their application in various natural language processing and speech-related tasks. It covers the architecture of the Transformer encoder, explaining the role of self-attention, residual connections, and normalization layers. The versatility of sequence-to-sequence models is highlighted, showcasing their use in tasks like machine translation, speech recognition, grammar parsing, and multi-label classification. The script also touches on the potential of Transformer models in tackling unconventional problems and explores alternative design choices for optimizing their performance.
Takeaways
- 😃 The Transformer model is a powerful Sequence-to-Sequence (Seq2Seq) model used for various tasks like machine translation, speech recognition, and natural language processing (NLP).
- 🤖 The Transformer consists of an Encoder and a Decoder, where the Encoder processes the input sequence and the Decoder generates the output sequence.
- 🧠 The Encoder in the Transformer uses self-attention mechanisms to capture dependencies between words in the input sequence.
- 🔄 The Encoder has a residual connection that adds the input to the output of each block, followed by layer normalization.
- 💡 The original Transformer architecture is not necessarily the optimal design, and researchers continue to explore modifications like changing the order of operations or using different normalization techniques.
- 🌐 Seq2Seq models can be applied to various NLP tasks like question answering, sentiment analysis, and grammar parsing by representing the input and output as sequences.
- 🚀 End-to-end speech translation, where the model translates speech directly into text without intermediate transcription, is possible with Seq2Seq models.
- 🎤 Seq2Seq models can be used for tasks like text-to-speech synthesis, where the input is text, and the output is an audio waveform.
- 🔢 Multi-label classification problems, where an instance can belong to multiple classes, can be addressed using Seq2Seq models by allowing the model to output a variable-length sequence of class labels.
- 🌉 Object detection, a computer vision task, can also be tackled using Seq2Seq models by representing the output as a sequence of bounding boxes and class labels.
Q & A
What is a Transformer?
-A Transformer is a powerful sequence-to-sequence model widely used in natural language processing (NLP) and speech processing tasks. It uses self-attention mechanisms to capture long-range dependencies in input sequences.
What are some applications of sequence-to-sequence models discussed in the script?
-The script discusses several applications, including speech recognition, machine translation, chatbots, question answering, grammar parsing, multi-label classification, and object detection.
How does a Transformer Encoder work?
-The Transformer Encoder consists of multiple blocks, each containing a self-attention layer, a feed-forward network, and residual connections with layer normalization. The blocks process the input sequence and output a new sequence representation.
What is the purpose of residual connections in the Transformer architecture?
-Residual connections are used to add the input of a block to its output, allowing the model to learn residual mappings and potentially improve gradient flow during training.
Why is layer normalization used in the Transformer instead of batch normalization?
-Layer normalization is used instead of batch normalization because it operates on individual samples rather than mini-batches, which is more suitable for sequential data like text or speech.
What is the role of positional encoding in the Transformer?
-Positional encoding is used to inject information about the position of each token in the input sequence, as self-attention alone cannot capture the order of the sequence.
Can the Transformer architecture be improved or modified?
-Yes, the script mentions research papers that explore alternative designs for the Transformer, such as rearranging the layer normalization position or introducing a new normalization technique called Power Normalization.
What is the purpose of multi-head attention in the Transformer?
-Multi-head attention allows the model to attend to different representations of the input sequence in parallel, capturing different types of relationships and dependencies.
Can sequence-to-sequence models be applied to tasks beyond translation?
-Yes, the script mentions that sequence-to-sequence models can be applied to various NLP tasks, such as question answering, grammar parsing, multi-label classification, and even object detection in computer vision.
Why are sequence-to-sequence models useful for languages without written forms?
-Sequence-to-sequence models can be used for speech-to-text translation, allowing languages without written forms to be translated directly into written languages that can be read and understood.
Outlines
🤖 Introduction to Transformer and Seq2Seq Models
This paragraph introduces the topic of Transformer and its relation to BERT. It explains the concept of Sequence-to-Sequence (Seq2Seq) models, which can be used for various tasks such as speech recognition, machine translation, and speech translation. The paragraph provides examples of how Seq2Seq models can be applied to tasks like translating Taiwanese to Chinese and Taiwanese speech synthesis.
🗣️ Applications of Seq2Seq Models in Language Processing
This paragraph discusses the potential applications of Seq2Seq models in language processing tasks, such as training a chatbot, question answering, translation, summarization, and sentiment analysis. It explains how various NLP tasks can be framed as question-answering problems and solved using Seq2Seq models. The paragraph also mentions the limitations of using a single Seq2Seq model for all tasks and the need for task-specific models.
🌐 Versatility of Seq2Seq Models across NLP Tasks
This paragraph further explores the versatility of Seq2Seq models in solving various NLP tasks, including grammar parsing, multi-label classification, and object detection. It explains how even tasks that may not seem like Seq2Seq problems can be formulated as such and solved using these models. The paragraph also mentions the potential of using Seq2Seq models for end-to-end language tasks without intermediate steps.
🧩 Seq2Seq Models for Grammar Parsing and Classification
This paragraph delves into the application of Seq2Seq models for grammar parsing and multi-label classification tasks. It explains how a tree structure can be represented as a sequence and fed into a Seq2Seq model for grammar parsing. The paragraph also discusses how multi-label classification problems, where an instance can belong to multiple classes, can be solved using Seq2Seq models by allowing the model to output variable-length sequences.
🔍 Overview of Transformer Architecture
This paragraph provides an overview of the Transformer architecture, which is the focus of the lecture. It explains that the Transformer consists of an Encoder and a Decoder, and the Encoder's primary function is to take a sequence of vectors as input and output another sequence of vectors. The paragraph introduces the concept of self-attention and its role in the Encoder architecture.
🧱 Detailed Structure of Transformer Encoder
This paragraph goes into the detailed structure of the Transformer Encoder. It explains the various components and operations within each block of the Encoder, including multi-head self-attention, residual connections, layer normalization, and feed-forward networks. The paragraph also discusses the reasoning behind certain design choices and potential alternatives proposed in research papers.
🔄 Alternatives and Improvements to Transformer Architecture
This paragraph discusses potential alternatives and improvements to the original Transformer architecture. It mentions research papers that explore the positioning of layer normalization within the blocks and the use of different normalization techniques, such as Power Normalization, which may outperform layer normalization in certain scenarios. The paragraph encourages exploring and considering alternative architectures for optimal performance.
Mindmap
Keywords
💡Transformer
💡Sequence-to-sequence model (Seq2Seq)
💡Speech recognition
💡Machine translation
Highlights
Transformer is a sequence-to-sequence (seq2seq) model, which takes in a sequence as input and outputs another sequence, but the output length is determined by the machine itself.
Transformer can be applied to various tasks like speech recognition, machine translation, chatbots, question answering, grammar parsing, multi-label classification, and object detection, by treating the task as a seq2seq problem.
The concept of using seq2seq models for tasks like grammar parsing, which traditionally do not seem like seq2seq problems, was introduced in a 2014 paper titled "Grammar as a Foreign Language".
Transformer has an encoder and a decoder architecture, with the encoder processing the input sequence and the decoder determining the output sequence.
In the Transformer encoder, each block consists of a multi-head self-attention layer, followed by a residual connection and layer normalization, then a feed-forward network with residual connection and layer normalization.
The self-attention layer in the Transformer encoder considers the entire input sequence and outputs a vector for each position, allowing the model to capture long-range dependencies.
The residual connection in the Transformer encoder adds the input vector to the output vector, while layer normalization normalizes the vector across its dimensions.
The original Transformer architecture design may not be optimal, as suggested by research papers exploring alternative designs, such as changing the order of layer normalization and residual connections.
A paper titled "On Layer Normalization in the Transformer Architecture" proposes moving the layer normalization before the residual connection, improving performance.
Another paper, "Power Norm: Rethinking Batch Normalization In Transformers", suggests using power normalization instead of layer normalization, potentially improving performance.
The Transformer encoder processes the input sequence using positional encoding, as self-attention alone cannot capture the order of the sequence.
The Transformer decoder architecture, which determines the output sequence, is not covered in detail in this transcript.
Transformer models can be trained on large datasets, such as TV shows and movies for chatbots, or paired data like audio and transcripts for speech recognition and translation tasks.
The transcript provides an example of training a Transformer model on 1,500 hours of Taiwanese drama data to perform Taiwanese speech recognition and translation to Chinese text.
The transcript discusses the potential of using Transformer models for end-to-end speech translation, particularly for languages without written forms, by training on paired audio and text data from another language.
Transcripts
好 那接下來
我們要講這個作業五
大家會用上的Transformer
那我們在之前已經提了Transformer
提了不下N次
那如果你們還不知道
Transformer是什麼的話
Transformer其實就是變形金剛知道嗎
變形金剛的英文就是Transformer
那Transformer也跟我們之後會
提到的BERT有非常強烈的關係
所以這邊有一個BERT探出頭來
代表說Transformer跟BERT
是很有關係的
那Transformer是什麼呢
Transformer就是一個
Sequence-to-sequence的model
那Sequence-to-sequence的model
他的縮寫
我們會寫做Seq2seq
那Sequence-to-sequence的model
又是什麼呢
我們之前在講input a sequence的
case的時候
我們說input是一個sequence
那output有幾種可能
一種是input跟output的長度一樣
這個是在作業二的時候做的
有一個case是output指
output一個東西
這個是在作業四的時候做的
那接來作業五的case是
我們不知道應該要output多長
由機器自己決定output的長度
那有什麼樣的例子
有什麼樣的應用
是我們需要用到這種
Sequence-to-sequence的model
也就是input是一個sequence
output是一個sequence
但是我們不知道output應該有的長度
應該要由機器來自己決定
output的長度
有什麼樣的應用呢
舉例來說
一個很好的應用就是 語音辨識
在做語音辨識的時候
輸入是聲音訊號
我們在這一門課裡面
已經看過好多次
輸入的聲音訊號其實就是
一串的vector
輸出是什麼
輸出是語音辨識的結果
也就是輸入的這段聲音訊號
所對應的文字
我們這邊用圈圈來代表文字
每一個圈圈就代表
比如說中文裡面的一個方塊子
今天輸入跟輸出的長度
當然是有一些關係
但是卻沒有絕對的關係
我們說輸入的聲音訊號
他的長度是大T
我們並沒有辦法知道說
根據大T輸出的這個長度N
一定是多少
怎麼辦呢 由機器自己決定
由機器自己去聽這段聲音訊號的內容
自己決定他應該要輸出幾個文字
他輸出的語音辨識結果
輸出的句子裡面應該包含幾個字
由機器自己來決定
這個是語音辨識
還有很多其他的例子
比如說作業五我們會做機器翻譯
讓機器讀一個語言的句子
輸出另外一個語言的句子
那在做機器翻譯的時候
輸入的文字的長度是N
輸出的句子的長度是N'
那N跟N'之間的關係
也要由機器自己來決定
我們說輸入機器學習這個句子
輸出是machine learning
輸入是有四個字
輸出有兩個英文的詞彙
但是並不是所有中文跟英文的關係
都是輸出就是輸入的二分之一
到底輸入一段句子
輸出英文的句子要多長
由機器自己決定
甚至你可以做更複雜的問題
比如說做語音翻譯
什麼叫做語音翻譯
語音翻譯就是
你對機器說一句話
比如說machine learning
他輸出的不是英文
他直接把他聽到的英文的
聲音訊號翻譯成中文
你對他說machine learning
他輸出的是機器學習
你可能會問說
為什麼我們要做
Speech Translation這樣的任務
為什麼我們不說
我們直接做一個語音辨識
再做一個機器翻譯
把語音辨識系統跟機器翻譯系統
接起來 就直接是語音翻譯
那是因為其實世界上有很多語言
他根本連文字都沒有
世界上有超過七千種語言
那其實在這七千種語言
有超過半數其實是沒有文字的
對這些沒有文字的語言而言
你要做語音辨識
可能根本就沒有辦法
因為他沒有文字
所以你根本就沒有辦法做語音辨識
但我們有沒有可能對這些語言
做語音翻譯
直接把它翻譯成
我們有辦法閱讀的文字
一個很好的例子也許就是
台語的語音辨識
但我不會說台語沒有文字
很多人覺得台語是有文字的
但台語的文字並沒有那麼普及
現在聽說小學都有教台語的文字了
但台語的文字
並不是一般人能夠看得懂的
所以如果你做語音辨識
你給機器一段台語
然後它可能輸出是母湯
你根本就不知道
這段話在說什麼對不對
所以我們期待說機器也許可以做翻譯
做語音的翻譯
對它講一句台語
它直接輸出的是同樣意思的
中文的句子
那這樣一般人就可以看懂
那有沒有可能做到這件事呢
有沒有可能訓練一個類神經網路
這個類神經網路聽某一種語言
的聲音訊號
輸出是另外一種語言的文字呢
其實是有可能的
那對於台語這個例子而言
我們知道說
今天你要訓練一個neural network
你就需要有input跟output的配合
你需要有台語的聲音訊號
跟中文文字的對應關係
那這樣的資料好不好蒐集呢
這樣的資料
並不是沒有可能蒐集的
比如說YouTube上面
有很多的鄉土劇
你知道鄉土劇就是
台語語音 中文字幕
所以你只要它的台語語音載下來
中文字幕載下來
你就有台語聲音訊號
跟中文之間的對應關係
你就可以硬train一個模型
你就可以train我們剛才講的
我們等一下要講的Transformer
然後叫機器直接做台語的語音辨識
輸入台語 輸出中文
那你可能會覺得這個想法很狂
而且好像 聽起來有很多很多的問題
那我們實驗室就載了
一千五百個小時的鄉土劇的資料
然後 就真的拿來訓練一個
語音辨識系統
你可能會覺得說
這聽起來有很多的問題
舉例來說 鄉土劇有很多雜訊
有很多的音樂
不要管它這樣子
然後 鄉土劇的字幕
不一定跟聲音有對起來
就不要管它這樣子
然後呢你可能會想說
台語不是還有一些
比如說台羅拼音
台語也是有類似音標這種東西
也許我們可以先辨識成音標
當作一個中介
然後在從音標轉成中文
也沒有這樣做 直接訓練一個模型
輸入是聲音訊號
輸出直接就是中文的文字
這種沒有想太多 直接資料倒進去
就訓練一個模型的行為
就叫作硬train一發知道嗎
那你可能會想說
這樣子硬train一發到底能不能夠
做一個台語語音辨識系統呢
其實 還真的是有可能的
以下是一些真正的結果
機器在聽的一千五百個小時的
鄉土劇以後
你可以對它輸入一句台語
然後他就輸出一句中文的文字
以下是真正的例子
機器聽到的聲音是這樣子的
可以做一下台語的聽力測驗
看看你辨識出來的跟機器是不是一樣的
機器聽到這樣的句子
你的身體撐不住(台語)
那機器輸出是什麼呢
它的輸出是 你的身體撐不住
這個聲音訊號是你的身體撐不住(台語)
但機器並不是輸出無勘
而是它就輸出撐不住
或者是機器聽到的
是這樣的聲音訊號
沒事你為什麼要請假(台語)
沒事你為什麼要請假
機器聽到沒事(台語)
它並不是輸出 沒代沒誌
它是輸出 沒事
這樣聽到四個音節沒代沒誌(台語)
但它知道說台語的沒代沒誌(台語)
翻成中文 也許應該輸出 沒事
所以機器的輸出是
沒事你為什麼要請假
但機器其實也是蠻容易犯錯的
底下特別找機個犯錯的例子
給你聽一下
你聽聽這一段聲音訊號
不會膩嗎(台語)
他說不會膩嗎(台語)
我自己聽到的時候我覺得
我跟機器的答案是一樣的
就是說要生了嗎
但其實這句話
正確的答案就是
不會膩嗎(台語)
不會膩嗎
當然機器在倒裝
你知道有時候你從台語
轉成中文句子需要倒裝
在倒裝的部分感覺就沒有太學起來
舉例來說它聽到這樣的句子
我有跟廠長拜託(台語)
他說我有跟廠長拜託(台語)
那機器的輸出是
我有幫廠長拜託
但是你知道說這句話
其實是倒裝
我有跟廠長拜託(台語)
是我拜託廠長
但機器對於它來說
如果台語跟中文的關係需要倒裝的話
看起來學習起來還是有一點困難
這個例子想要告訴你說
直接台語聲音訊號轉繁體中文
不是沒有可能
是有可能可以做得到的
那其實台灣有很多人都在做
台語的語音辨識
如果你想要知道更多有關
台語語音辨識的事情的話
可以看一下下面這個網站
那台語語音辨識反過來
就是台語的語音合成對不對
我們如果是一個模型
輸入台語聲音 輸出中文的文字
那就是語音辨識
反過來 輸入文字 輸出聲音訊號
就是語音合成
這邊就是demo一下台語的語音合成
這個資料用的是
台灣 媠聲(台語)的資料
來找GOOGLE台灣媠聲(台語)
就可以找到這個資料集
裡面就是台語的聲音訊號
聽起來像是這個樣子
比如說你跟它說
歡迎來到台灣台大語音處理實驗室
不過這邊是需要跟大家說明一下
現在還沒有真的做End to End的模型
這邊模型還是分成兩階
他會先把中文的文字
轉成台語的台羅拼音
就像是台語的KK音標
在把台語的KK音標轉成聲音訊號
不過從台語的KK音標
轉成聲音訊號這一段
就是一個像是Transformer的network
其實是一個叫做echotron的model
它本質上就是一個Seq2Seq model
大概長的是這個樣子
所以你輸入文字
歡迎來到台大語音處理實驗室
機器的輸出是這個樣子的
歡迎來到台大(台語)
語音處理實驗室(台語)
或是你對他說這一句中文
然後他輸出的台語是這個樣子
最近肺炎真嚴重(台語)
要記得戴口罩 勤洗手(台語)
有病就要看醫生(台語)
所以你真的是可以
合出台語的聲音訊號的
就用我們在這一門課裡面學到的
Transformer或者是Seq2Seq的model
剛才講的是跟語音比較有關的
那在文字上
也會很廣泛的使用了Seq2Seq model
舉例來說你可以用Seq2Seq model
來訓練一個聊天機器人
聊天機器人就是你對它說一句話
它要給你一個回應
輸入輸出都是文字
文字就是一個vector Sequence
所以你完全可以用Seq2Seq 的model
來做一個聊天機器人
那怎麼訓練一個聊天機器人呢
你就要收集大量人的對話
像這種對話你可以收集
電視劇 電影的台詞 等等
你可以收集到
一堆人跟人之間的對話
假設在對話裡面有出現
某一個人說Hi
和另外一個人說
Hello How are you today
那你就可以教機器說
看到輸入是Hi
那你的輸出就要跟
Hello how are you today
越接近越好
那就可以訓練一個Seq2Seq model
那跟它說一句話
它就會給你一個回應
那事實上Seq2Seq model
在NLP的領域
在natural language processing的領域
的使用
是比你想像的更為廣泛
其實很多natural language processing的任務
都可以想成是question answering
QA的任務
怎麼說呢
所謂的Question Answering
就是給機器讀一段文字
然後你問機器一個問題
希望他可以給你一個正確的答案
很多你覺得跟question answering
沒什麼關係的任務
都可能可以想像成是QA
怎麼說呢 舉例來說
假設你今天想做的是翻譯
那機器讀的文章就是一個英文句子
問題是什麼 問題就是
這個句子的德文翻譯是什麼
然後輸出的答案就是德文
或者是你想要叫機器自動作摘要
摘要就是給機器讀一篇長的文章
叫他把長的文章的重點節錄出來
那你就是給機器一段文字
問題是這段文字的摘要是什麼
然後期待他可以輸出一個摘要
或者是你想要叫機器做
Sentiment analysis
什麼是Sentiment analysis呢
就是機器要自動判斷一個句子
是正面的還是負面的
像這樣子的應用在
假設你有做了一個產品
然後上線以後
你想要知道網友的評價
但是你又不可能一直
找人家ptt上面
把每一篇文章都讀過
所以怎麼辦
你就做一個Sentiment analysis model
看到有一篇文章裡面
有提到你的產品
然後就把這篇文章丟到
你的model裡面
去判斷這篇文章
是正面還是負面
怎麼把sentiment analysis這個問題
看成是QA的問題呢
你就給機器
你要判斷正面還負面的文章
你問題就是這個句子
是正面還是負面的
然後希望機器可以告訴你答案
所以各式各樣的NLP的問題
往往都可以看作是QA的問題
而QA的問題
就可以用Seq2Seq model來解
QA的問題怎麼用
Seq2Seq model來解呢
就是有一個Seq2Seq model輸入
就是有問題跟文章把它接在一起
輸出就是問題的答案
就結束了
你的問題加文章合起來
是一段很長的文字
答案是一段文字