back to index
【機器學習 2022】語音與影像上的神奇自督導式學習 (Self-supervised Learning) 模型

link |
怎麼把Self-Supervised Learning的技術用在語音跟影像上
link |
好,那在上課的錄影中啊,我們已經講過
link |
怎麼把Self-Supervised Learning用在文字上
link |
那我們說,在Self-Supervised Learning在文字上的應用上
link |
最知名的模型就是無人不知、無人不曉的BERT
link |
BERT的訓練過程不需要有標注的文字
link |
你只需要收集到一大堆的沒有標注的文字資料
link |
那BERT這個模型啊,具體而言它做的事情是
link |
它會輸出一串representation
link |
那輸入的文字裡面的每一個token都有一個對應的vector
link |
那這些vector可以拿來做什麼用呢?
link |
那如果你忘記的話,你就去複習一下上課的錄影
link |
舉例來說,假設你現在要做的事情是sentiment analysis
link |
sentiment analysis就是給機器一篇文章
link |
機器告訴你說這篇文章是正面的文章還是負面的文章
link |
接下來用這些資料來訓練一個model
link |
那你的sentiment analysis的model就可以很簡單
link |
你的model就是把BERT的輸出的這些向量當作輸入
link |
你有時候只需要拿它來訓練這個downstream的model
link |
那如果這個downstream的model很簡單的話
link |
通常這個downstream的model它就只是一個linear的model
link |
除了直接訓練這個downstream model以外
link |
有時候你也會用這些標注的資料來微調一下BERT
link |
怎麼把cell supervised learning用在文字上
link |
怎麼把這些技術用在語音或用在影像上呢
link |
其實把cell supervised learning用在語音上
link |
一樣是透過大量的沒有標注的聲音訊號所訓練出來的
link |
所以他其實跟文字的BERT做的事情是一樣的
link |
接下來你就可以訓練一個語音辨識的模型
link |
你知道如果今天你要訓練一個好的語音辨識的模型
link |
如果你沒有用Sales Supervisor的技術
link |
你直接想要訓練一個end-to-end的model
link |
等一下我們會看到很多語音版的BERT的例子
link |
所以今天在你沒有大量的標註資料的時候
link |
像BERT這種Sales Supervised Model的好壞
link |
他是Speech Processing Universal Performance Benchmark的縮寫
link |
然後你可以在這邊找到SUPERB的官網
link |
也就是說你有一個Sales Supervised Learning的Model
link |
用大量的沒有標註的聲音訊號訓練出來的
link |
現在一個Sales Supervised Model
link |
我們會讓他來解這個投影片上的14個任務
link |
或者是Keyword Spotting
link |
Keyword Spotting就是你常常聽到的那個喚醒詞
link |
這個就是Keyword Spotting的一個應用
link |
還有Speaker Dialogization
link |
也有一些跟Paralinguistic有關的任務
link |
今天這種Sales Supervised的語音的模型
link |
這個語音的Sales Supervised Learning的模型
link |
分別發表在去年的InterSpeech
link |
要怎麼把這些Sales Supervised Learning的模型
link |
如果你想要知道這些Sales Supervised Learning的模型
link |
專門講這些Sales Supervised Learning的模型
link |
在Superb這個Benchmark上面
link |
這些結果讓我發現語音的Sales Supervised Learning
link |
這些Sales Supervised Model
link |
那這個語音的Sales Supervised Learning
link |
因為你要把這種Sales Supervised Model
link |
可以幫助你把Sales Supervised Learning的模型
link |
在語音處理上Sales Supervised Learning
link |
在語音領域Sales Supervised Learning
link |
把Sales Supervised Learning
link |
還有這個Object Detection
link |
還有Semantic Segmentation
link |
還有Visual Navigation
link |
Visual Navigation就是說
link |
那這個時候Sales Supervised Learning
link |
看看這個Sales Supervised Learning
link |
那Sales Supervised Learning
link |
Sales Supervised Learning
link |
是Supervised Learning
link |
都遜於Supervised Learning
link |
Self-Supervised Learning
link |
這個Supervised Learning
link |
這一條Supervised Learning的線
link |
Self-Supervised Learning
link |
Self-Supervised Learning的
link |
很多Self-Supervised Learning的Model
link |
Supervised Learning的曲線
link |
這些Self-Supervised Learning的方法
link |
Self-Supervised Learning
link |
Self-Supervised Learning
link |
這種Self-Supervised Learning的Model呢
link |
什麼Masking的Strategy
link |
那你的Sales Supervise Model
link |
不要一次只Mask一個Feature
link |
都是說你不要只Mask一個Token
link |
而是相量的Dimension上的Masking
link |
比如說把第七到第九個Dimension
link |
下一個會出現的文字的Token是什麼
link |
Predictive Coding的縮寫
link |
同樣達到Sales Supervised Learning的效果呢
link |
Predictive Approach
link |
Predictive Approach
link |
同時又有Sales Supervised Learning的效果呢
link |
叫做Context Prediction
link |
Context Prediction是什麼意思呢
link |
Context Prediction就是
link |
context prediction的任務
link |
也可以做cell supervised learning
link |
我們叫做acoustic feature
link |
當然acoustic feature
link |
也不是acoustic feature
link |
而是acoustic feature
link |
做clustering以後的cluster ID
link |
或產生acoustic feature
link |
那Huber這邊用的是k-means
link |
它這邊是用一個random projection
link |
這個clustering的algorithm呢
link |
可能對performance沒有特別重要
link |
它也是先把影像做clustering
link |
那個boost trapping的方法
link |
才能夠得到好的performance
link |
如果只有predict這些token
link |
它還要做一個boost trapping的方法
link |
BassRQ沒有做boost trapping
link |
就算不加boost trapping
link |
在做self-supervised learning的時候
link |
就讓機器做self-supervised learning呢
link |
就做self-supervised learning呢
link |
contrastive learning
link |
那contrastive learning的
link |
它是positive的example
link |
你把這對positive的example
link |
self-supervised model裡面
link |
就是一個negative的example pair
link |
我們希望negative的example之間
link |
這個self-supervised model
link |
那個self-supervised model
link |
所以contrastive learning的概念就是
link |
而是找出一些positive的pair
link |
self-supervised learning呢
link |
就有一個contrastive learning
link |
用在self-supervised learning
link |
那些image都先做data augmentation
link |
做完data augmentation以後
link |
因為data augmentation
link |
data augmentation在
link |
做一個random cropping
link |
就是一個random cropping的例子
link |
各式各樣不同的data augmentation
link |
那做完data augmentation以後
link |
它們做data augmentation以後
link |
你的self-supervised model
link |
就是negative的example
link |
想當然爾怎麼做data augmentation
link |
不同的augmentation的組合
link |
就是這個random cropping
link |
看起來是最有效的augmentation
link |
Contrastive Learning
link |
Contrastive Learning的方法
link |
語音上的Contrastive Learning
link |
Contrastive Learning的方法
link |
產生一排representation
link |
什麼是positive example
link |
什麼是negative example呢
link |
這邊這個output的vector啊
link |
通過不同的linear transform以後
link |
讓它通過第一個transform以後
link |
其他的negative example
link |
有latent representation
link |
是用discrete的token來表示的
link |
它就是要吃discrete的token
link |
轉成這個discrete的token
link |
你就把這些discrete的token
link |
變成discrete的token以後
link |
套在discrete的token之後
link |
產生這個discrete的token嗎
link |
這個VQ Wave2Vec加BERT
link |
雖然中間有discrete的token
link |
所以我們不把discrete的token
link |
它接下來做一個contrastive learning
link |
產生其他token的likelihood
link |
這邊的每一個discrete的token
link |
做一個linear transform
link |
Wave2Vec 2.0的paper
link |
所以希望用continuous的東西
link |
通過一個linear transform
link |
predict discrete的token
link |
跟predict continuous的vector
link |
有沒有吃continuous的vector
link |
那你的negative example
link |
在做這種language model的時候
link |
也會有人把language model
link |
用類似contrastive learning來train
link |
那時候覺得language model的輸出
link |
一萬個token的probability distribution
link |
叫做negative sampling
link |
只把部分negative的token的機率壓低
link |
這個encoder output的token的數目
link |
contrastive learning
link |
文字上能不能做contrastive learning呢
link |
看起來contrastive learning
link |
contrastive learning呢
link |
視為是一種contrastive learning的方式
link |
contrastive learning的方式呢
link |
BERT的reconstruction
link |
也可以看作類似contrastive learning
link |
來看BERT的reconstruction
link |
通過一個linear transform
link |
就是BERT輸出一個embedding
link |
跟其他的token的embedding
link |
跟negative pair越遠越好
link |
classification跟contrastive
link |
classification這件事情
link |
是network的最後一層的output
link |
通過一個linear transform
link |
好那contrastive learning呢
link |
想成是在做一種contrastive learning
link |
對於這個less layer的output來說
link |
它就是positive example
link |
就是negative example
link |
那在contrastive learning裡面呢
link |
我們的negative example
link |
窮舉碩的negative example
link |
部分的negative example
link |
如果你要做一個language model
link |
那這個language model呢
link |
RNN based language model
link |
類似contrastive learning的做法
link |
所以其實classification
link |
跟contrastive learning
link |
contrastive learning
link |
self-supervised model
link |
它的output是一個embedding
link |
跟positive example的向量
link |
讓現在這個self-supervised model
link |
在這邊output的這個vector
link |
我們的negative example是有限的
link |
剩餘的token就是negative example
link |
但是negative example的數目
link |
negative example的數目
link |
就是negative example
link |
所有的negative example
link |
把它轉成任何的continuous embedding
link |
讓它output的東西是discrete
link |
所以這些network output的
link |
但這些embedding是discrete的
link |
我們讓這個self-supervised model
link |
它在這邊output的representation
link |
從聲音訊號到representation
link |
contrastive learning
link |
好,那像這種contrastive learning的方法
link |
你需要去選negative example
link |
那選negative example
link |
因為你的negative example
link |
貓的negative example
link |
在抽representation的時候
link |
就可以把這兩個圖片的representation
link |
那所以你要有夠難的negative example
link |
比如說貓的negative example
link |
抽出代表斑紋的representation
link |
但是你又不能抽太難的negative example
link |
contrastive learning的時候
link |
這個negative example
link |
做data augmentation以後
link |
視為是negative example
link |
刻意要選困難的negative example的時候
link |
假設negative example是隨機選擇的
link |
刻意去挑negative example
link |
很難分開的negative example
link |
有不同的representation
link |
所以選negative example
link |
你需要做很多trial and error
link |
才能夠選到好的negative example
link |
既然選negative example是一個問題
link |
可以避開negative example的選擇呢
link |
這兩招可以避開negative example這件事
link |
第一招叫做boost trapping
link |
丟掉negative example並不是一件容易的事
link |
為什麼丟掉negative example會有問題呢
link |
有人會說假設我們這麼不喜歡negative example
link |
我們為什麼訓練的時候不用positive example就好了呢
link |
兩張positive的pair我們就讓它的向量越近越好
link |
我們就只用這個objective來認我們的內臥
link |
就不要管negative example呢
link |
只有positive example
link |
那你沒給機器negative example
link |
直接輸入直接輸出zero vector
link |
有沒有辦法在只有positive example的情況下
link |
我們第一張圖片通過encoder得到向量
link |
可能只有幾成的free forward network
link |
你只計算右邊這條路徑的gradient
link |
只計算右邊這條路徑的gradient
link |
把右邊的encoder update以後的參數
link |
你就只需要positive example
link |
不需要negative example了
link |
為什麼這樣訓練就不會collapse
link |
所以右邊一定要有這個predictor
link |
沒有這個predictor還是會collapse
link |
就是只train某一邊的encoder
link |
就可以只用positive example
link |
不用negative example
link |
就把你的self supervised model訓練起來
link |
為什麼這樣子訓練就不會collapse呢
link |
是要讓這個vector跟這個vector
link |
但是當我們去update這個encoder
link |
想要把這個vector跟它比較接近的時候
link |
接下來再把這個encoder的參數複製過來
link |
通過representation以後
link |
這個encoder要把這個vector
link |
這兩個encoder就沒有辦法達成共識
link |
讓用很trivial的solution
link |
然後讓他們參數update的方式不同
link |
只用positive example狀況不會collapse的
link |
那有另外一個觀點可以看待bootstrapping
link |
很多人都知道knowledge distillation這個技術
link |
假設你有一個比較大的teacher network
link |
然後它輸出一個representation
link |
那你用這個student network
link |
去學teacher network的行為
link |
讓這個student network看到同一張圖片的時候
link |
它的輸出跟teacher network
link |
然後你就可以訓練出一個比較小的network
link |
跟大的teacher network是差不多的
link |
這個是knowledge distillation的概念
link |
knowledge distillation
link |
就是你有一個teacher的encoder
link |
你有一個student的encoder
link |
這個student的encoder輸入
link |
同一張圖片的不同的augmentation
link |
這個student encoder的這邊的架構
link |
跟teacher encoder有一點不同
link |
輸出一個representation
link |
這個student encoder通過predictor
link |
我們update student encoder
link |
我們就把student encoder的參數
link |
也就是每次student encoder
link |
這個teacher encoder哪來呢
link |
參數來作為teacher encoder的參數嗎
link |
只會產生隨機的representation
link |
最早的這一類boosting的paper
link |
隨機的teacher encoder
link |
我剛才說最早的boosting的方法呢
link |
有一篇叫boosting your own latent
link |
就算teacher encoder是個隨機的encoder
link |
還是可以學到一點東西的那篇paper
link |
他不是直接把student encoder的參數
link |
複製給teacher encoder
link |
去影響teacher encoder
link |
他是用moving average的方法
link |
去影響teacher encoder
link |
也就是說假設teacher encoder
link |
跟student encoder的參數
link |
做linear interpolation以後
link |
所以teacher encoder的參數
link |
不會馬上變得跟student一模一樣
link |
越來越多teacher跟student
link |
moving average不是必要的
link |
data2vec最近是一個蠻知名的paper
link |
他們用同樣的learning algorithm
link |
但他們用的跟BYOL還是有一些差異啦
link |
的representation做平均
link |
總之data2vec是一個蠻general的方法
link |
positive example之外
link |
一個是BYOL twins一個是VIC reg
link |
那BYOL twins跟VIC reg
link |
invariance covariance
link |
invariance跟covariance
link |
用positive example來train
link |
Sales Supervised Model的時候
link |
我們只用positive example
link |
他們output的representation
link |
我們剛才有講過只有positive example
link |
會collapse encoder會學到
link |
總是output一樣的vector就好
link |
你給encoder一個batch的image
link |
你在train的時候下一個額外的criterion
link |
encoder不管看到什麼樣的image
link |
我們把這個batch裡面的這個vector
link |
拿出來計算個covariance的matrix
link |
假設你只有variance跟invariance
link |
那你可能認出來的representation
link |
就假設這個representation是二維
link |
你可能認出來representation
link |
但是整個latent space裡面
link |
所以如果加covariance的話呢
link |
不會有redundant的dimension
link |
invariance,variance
link |
加covariance看起來很簡單的一個概念
link |
最關鍵的就是一定要有variance
link |
其實沒有covariance也沒有關係
link |
沒有covariance還是訓練的起來
link |
只有invariance就是會collapse
link |
你就可以訓練出self-supervised model
link |
不用negative example
link |
加上regularization的方式
link |
今天的concluding remark
link |
直接借來的generative的方法
link |
然後還有contrastive的方法
link |
這個negative sample是困難的一件事
link |
所以有bootstrapping的方法
link |
跟regularization的方法
link |
其實Sales Supervise Learning
link |
Sales Supervise Learning的技術