back to index
【機器學習 2022】惡搞自督導式學習模型 BERT 的三個故事

link |
那很高興呢,今天可以跟大家分享這三個故事
link |
你可以把各種語言的資料都餵給BERT
link |
以下我們就來看看這種多語言的BERT
link |
多語言的BERT可以做到什麼樣的事情呢?
link |
我們知道在Self-Supervised Learning裡面
link |
然後把pre-trained好的模型
link |
那你當然需要提供一些中文QA的訓練資料
link |
但是有了這種Multilingual的BERT
link |
如果今天你要叫機器解的是中文的QA問題
link |
用的是一個叫做DRCD的Dataset
link |
我們用的是大家都耳熟能詳的SCRUM
link |
只有拿中文的資料進行FindQ測試在中文上
link |
那大家可以把F1 Score就當作是正確率
link |
當然比沒有Pre-Train只有78%的F1 Score
link |
是用了104種語言Pre-Train的MultilingualBERT
link |
MultilingualBERT在104種語言上做過填空題
link |
給他英文的QA Data進行FindQ
link |
他也得到78.8%的F1 Score
link |
都觀察到MultilingualBERT
link |
而今天這種MultilingualBERT
link |
根本就是一個Common Sense
link |
就是要測驗你的MultilingualBERT
link |
可以去Finding微調你的MultilingualBERT
link |
MultilingualBERT有跨語言的能力
link |
就是MultilingualBERT
link |
給他一樣的Representation
link |
所以對MultilingualBERT來說
link |
為什麼MultilingualBERT
link |
來驗證MultilingualBERT
link |
那怎麼找這個代表的Embedding呢
link |
它是一個Contextualized Representation Model
link |
它的Representation都是不一樣的
link |
當作代表那個詞彙的Representation
link |
都有一個Representation
link |
都有一個Representation
link |
它們中間Representation的相似度
link |
它們的Representation就越接近呢
link |
它們的Representation的相似度
link |
再看Month跟其他的中文字的相似度
link |
所以每一個英文的詞彙都會得到一個Rank
link |
叫做Mean Reciprocal Rank NRR
link |
就代表中文跟英文它的Alignment
link |
這個Multilingual Bird學得越好
link |
今天這一個Multilingual Bird
link |
它是Google的Multilingual Bird
link |
這個Google所訓練的這個Bird呢
link |
這個是我們自己訓練的Multilingual Bird
link |
World Representation的模型
link |
有Globe 還有Water Vector
link |
World Embedding的模型
link |
跟MultilingualBERT用的一樣多
link |
也趕不上MultilingualBERT的結果
link |
MultilingualBERT有跨語言的能力
link |
MultilingualBERT有跨語言的能力
link |
想想看假設MultilingualBERT
link |
我們實際上在訓練MultilingualBERT的時候
link |
所以對MultilingualBERT來說
link |
就假設你把英文的embedding平均
link |
得到一個所有英文embedding平均的項量
link |
得到一個所有中文符號的embedding
link |
現在有所有英文的符號的embedding
link |
當然這個對應的關係沒有非常非常的精確
link |
可能就跟中文的魚的embedding很接近
link |
你給multilingual bird一個英文的句子
link |
他會把英文單字填到你mask起來的地方
link |
在multilingual bird裡面
link |
加到multilingual bird的representation上面
link |
我們剛才說你可以算出英文跟中文之間的差異
link |
丟到multilingual bird裡面
link |
讓multilingual bird得到英文句子裡面
link |
每一個token的embedding
link |
把這些embedding通通往某一個方向移動一下
link |
就會從原來像是英文的embedding
link |
變成對multilingual bird來說
link |
叫multilingual bird還原回來
link |
There is no one who can help me
link |
我們輸入一個英文的句子給multilingual bird
link |
multilingual bird得到一堆representation
link |
接下來把這些representation
link |
讓這些representation看起來像是中文
link |
There is no one who can help me
link |
但是你發現multilingual bird
link |
跟真正的翻譯結果之間的blue score
link |
它代表說今天這個multilingual bird
link |
發現說multilingual bird
link |
不只是把不同語言同樣意思的詞彙對應在一起
link |
那發現multilingual bird
link |
我們都會說今天multilingual bird
link |
對multilingual bird來說
link |
因為我們說multilingual bird
link |
英文的embedding跟中文的embedding
link |
multilingual bird的output
link |
所以你的downstream model
link |
它看得懂英文的representation
link |
抽出中文的representation
link |
雖然downstream model
link |
但是它畢竟跟英文的representation
link |
然後這個downstream model
link |
只有supervised model
link |
在人類語言上做pre-trained的BERT
link |
pre-trained在人類語言上的模型
link |
DNA就是由四種去氧核糖核酸所構成的
link |
DNA是由ATCG四種去氧核糖核酸所構成的
link |
那它其實是用ATCG等連串的符號所表示的
link |
這個表格裡面把ATCG四種去氧核糖核酸
link |
假設把A對應到We T對應到You C對應到He G對應到She
link |
這個DNA sequence就變成一串英文
link |
然後呢用這個BERT的模型來做DNA的分類
link |
你需要在BERT的後面多加一個linear的model
link |
那linear的model是需要train from scratch
link |
但是我們的BERT的本體不需要從頭訓練
link |
我們會用一個pre-trained的BERT來做initialization
link |
在DNA在蛋白質的sequence上面做pre-training
link |
我這邊要做的研究跟那些在DNA蛋白質上
link |
做pre-training的研究是完全不一樣的
link |
那這邊這個音樂的任務並沒有真的用到聲音訊號
link |
是假設你沒有用pre-trained在英文上的模型
link |
如果我們用pre-trained在英文上的BERT
link |
紅色框框裡面得到的是有使用BERT的正確率
link |
它明明就是用英文的填空題來做pre-training
link |
在跟人類語言完全無關的任務上也有幫助
link |
這顯示說這些pre-trained的model
link |
你才試了一個pre-trained的model
link |
不是trained在英文上的那個BERT
link |
我們這邊試了四種不同的pre-trained的model
link |
BERT C就是pre-trained在中文上的那個BERT
link |
代表有用pre-trained在人類語言模型上的結果
link |
代表沒有pre-trained的結果
link |
各種不同pre-trained在人類語言上的模型都有幫助
link |
各種不同pre-trained在人類語言上的模型
link |
是讓這個在人類語言上pre-trained
link |
在optimization的時候更容易
link |
還是讓這些模型generalization
link |
我們先來看optimization的能力
link |
要知道說一個optimization做得如何
link |
你的loss function的變化
link |
如果有用pre-trained的模型
link |
是可以比trained from scratch
link |
它有強化optimization的能力
link |
有沒有強化generalization的能力呢
link |
橙色的線是trained from scratch
link |
trained from scratch
link |
今天不管是trained from scratch
link |
在training data上都得到
link |
那今天pre-trained跟trained from scratch
link |
他們在training set上都做的一樣好了
link |
接下來我們在development set上
link |
那development set這邊show的是accuracy啦
link |
那你會發現說pre-training的accuracy
link |
是比trained from scratch的accuracy還要高的
link |
雖然在training的時候可以壓到差不多的loss
link |
pre-training跟trained from scratch的結果
link |
把pre-training跟trained from scratch
link |
你會發現pre-trained的模型
link |
還是幫助了generalization呢
link |
它讓optimization做得更好
link |
也讓generalization做得更好
link |
發現這個BERT有cross-discipline的能力
link |
用在speech的question answering上面
link |
speech question answering這個問題
link |
做了真正的question answering
link |
所謂真正的question answering
link |
Interspeech 2018的文章
link |
可以拿來做speech question answering
link |
的benchmark compass
link |
當時要解speech question answering的問題
link |
都是用一個cascade model
link |
才有辦法訓練這個speech bird
link |
我對於speech question answering的期待是
link |
我們的訓練資料是完全沒有文字的transcription
link |
還有標註答案出現在語音文章裡面的哪一個片段
link |
我們沒有任何文字的transcription
link |
在完全沒有任何語音跟文字成對資料的情況下
link |
我們有了pre-trained語音的模型
link |
有了這些pre-trained的模型
link |
10-to-end的speech question answer
link |
我用這個Hubert來initialize這個模型
link |
因為如果你分析這些語音的pre-trained model
link |
比如說Hubert的representation
link |
而如果你要解speech question answer的model
link |
接下來在discrete的token後面
link |
再疊幾層self-attention的layer
link |
也許Hubert只抽出content的資訊
link |
我們期待透過後面多加幾層neural network
link |
多加幾層self-attention
link |
那在多加幾個self-attention layer以後
link |
可以做語音的speech的question answering呢
link |
想說會不會我們應該也要pre-train
link |
pre-train在文字上的BERT
link |
語音上面pre-train的模型它的輸出嗎
link |
丟給文字上面pre-train的BERT
link |
讓他來做question answering
link |
然後我們fine-tune這個文字的BERT
link |
speech的question answering做起來
link |
來pre-train這個黃色的module
link |
來pre-train這個黃色的module
link |
那你可以得到54%的F1 score
link |
你現在有語音上pre-train的模型
link |
可以真的把speech的question answering
link |
再去做question answering
link |
這個藍色的這個end-to-end的模型
link |
把speech question answer end-to-end訓練出來
link |
最知名的就是GLUE這個data set
link |
那通常會用GLUE的data set
link |
這個pre-trained有沒有學到東西
link |
產生一些token的sequence
link |
在這些假的資料上面做pre-training
link |
如果我們要讓一個pre-trained的模型
link |
那這個ID跟這個人類語言之間的對應關係
link |
他會被轉成一個Token Sequence
link |
然後呢你就把這個Token Sequence輸入到BERT裡面
link |
是Sentimental Classification
link |
你就會去Trend這個Linear的Model
link |
它是用這個Token ID去Trend過
link |
但是你也可以Fine-Tune這個BERT的模型
link |
如果我們比較有Pre-Trend的模型
link |
也就是Trend From Scratch的模型
link |
相較於Trend From Scratch
link |
所以這可以看作是Upper Bound了
link |
當然是拿英文的Pre-Trend的資料
link |
重要的也許是Pre-Trend這個動作
link |
那拿這些沒有規律的資料做Pre-Trend
link |
也就是你產生出來的Sequence裡面
link |
如果你產生出來的Sequence是成對的
link |
所以那個實驗的Setting是非常不一樣的
link |
他說Learning Music Helps You Read
link |
接下來接另外一個詞彙的機率就會非常大
link |
我們有另外一種方法叫做Shuffle
link |
也是差不多的Pretraining的進步量
link |
你先產生一些連續編號的Token Sequence
link |
然後在這個打亂順序的Sequence上面
link |
你的模型訓練在這種打亂的Sequence上面
link |
這種打亂的Sequence對於Pretraining來說
link |
這樣子的Sequence跟人類的語言有什麼關係
link |
這樣子的Sequence對Pretraining
link |
他的縱軸仍然是Pretraining跟沒有Pretraining
link |
這個Pretraining跟沒有Pretraining相減後的差異
link |
所以值越大代表Pretraining越有效
link |
那這邊4 6 8 16 32的數字代表什麼意思呢
link |
我們一樣都是用剛才Shuffle的方法
link |
就代表我們一次只產生4個數字連續的Token
link |
就要重新產生4個數字連續的Token
link |
那在這個Sequence上面去做Pretraining
link |
你每次只產生4個連續的Sequence
link |
但如果你是產生64個連續的Sequence
link |
假設你給你的Pretrain Model
link |
這個產生比較長的連續數字的Sequence
link |
如果今天模型在Pretrain的時候
link |
可以學看一個Sequence裡面比較長的範圍
link |
可以讓他在NLP的當初任務上面做得比較好
link |
也對NLP的Pretraining很重要呢
link |
發現說如果你強迫讓你的Sequence
link |
三個有趣的跟Sales Supervised Learning
link |
然後這個Sales Supervised Learning