自监督学习现状和未来
本文作者來自東北大學,他通過整理自監督學習的一系列工作,把主流方法分成三大類,方便大家更全面的了解自監督學習的定義、方法、用途。
與此同時,文中也穿插著幾大主流方法的最新工作進展,現在正在探索自監督學習未來前景研究方向的同學,也不妨借鑒一二,說不定能找到靈感哦~
我們首先來回顧下機器學習中兩種基本的學習范式,如圖所示,一種是監督學習,一種是無監督學習。
監督學習與無監督學習[1]
監督學習利用大量的標注數據來訓練模型,模型的預測和數據的真實標簽產生損失后進行反向傳播,通過不斷的學習,最終可以獲得識別新樣本的能力。而無監督學習不依賴任何標簽值,通過對數據內在特征的挖掘,找到樣本間的關系,比如聚類相關的任務。有監督和無監督最主要的區別在于模型在訓練時是否需要人工標注的標簽信息。
無監督學習中被廣泛采用的方式是自動編碼器(autoencoder):
編碼器將輸入的樣本映射到隱層向量,解碼器將這個隱層向量映射回樣本空間。我們期待網絡的輸入和輸出可以保持一致(理想情況,無損重構),同時隱層向量的維度大大小于輸入樣本的維度,以此達到了降維的目的,利用學習到的隱層向量再進行聚類等任務時將更加的簡單高效。對于如何學習隱層向量的研究,可以稱之為表征學習(Representation Learning)。但這種簡單的編碼-解碼結構仍然存在很多問題,基于像素的重構損失通常假設每個像素之間都是獨立的,從而降低了它們對相關性或復雜結構進行建模的能力。尤其使用 L1 或 L2 損失來衡量輸入和輸出之間的差距其實是不存在語義信息的,而過分的關注像素級別的細節而忽略了更為重要的語義特征。對于自編碼器,可能僅僅是做了維度的降低而已,我們希望學習的目的不僅僅是維度更低,還可以包含更多的語義特征,讓模型懂的輸入究竟是什么,從而幫助下游任務。而自監督學習最主要的目的就是學習到更豐富的語義表征。
自監督學習主要是利用輔助任務(pretext)從大規模的無監督數據中挖掘自身的監督信息,通過這種構造的監督信息對網絡進行訓練,從而可以學習到對下游任務有價值的表征。
所以對于自監督學習來說,存在三個挑戰:
對于大量的無標簽數據,如何進行表征學習?
從數據的本身出發,如何設計有效的輔助任務 pretext?
對于自監督學習到的表征,如何來評測它的有效性?
對于第三點,評測自監督學習的能力,主要是通過 Pretrain-Fintune 的模式。我們首先回顧下監督學習中的 Pretrain - Finetune 流程:我們首先從大量的有標簽數據上進行訓練,得到預訓練的模型,然后對于新的下游任務(Downstream task),我們將學習到的參數進行遷移,在新的有標簽任務上進行「微調」,從而得到一個能適應新任務的網絡。而自監督的 Pretrain - Finetune 流程:首先從大量的無標簽數據中通過 pretext 來訓練網絡,得到預訓練的模型,然后對于新的下游任務,和監督學習一樣,遷移學習到的參數后微調即可。所以自監督學習的能力主要由下游任務的性能來體現。
自監督學習的方法主要可以分為 3 類:1. 基于上下文(Context based) 2. 基于時序(Temporal Based)3. 基于對比(Contrastive Based)。
- 基于上下文(Context Based)
基于數據本身的上下文信息,我們其實可以構造很多任務,比如在 NLP 領域中最重要的算法 Word2vec 。Word2vec 主要是利用語句的順序,例如 CBOW 通過前后的詞來預測中間的詞,而 Skip-Gram 通過中間的詞來預測前后的詞。
而在圖像中,研究人員通過一種名為 Jigsaw(拼圖)[7] 的方式來構造輔助任務。我們可以將一張圖分成 9 個部分,然后通過預測這幾個部分的相對位置來產生損失。比如我們輸入這張圖中的小貓的眼睛和右耳朵,期待讓模型學習到貓的右耳朵是在臉部的右上方的,如果模型能很好的完成這個任務,那么我們就可以認為模型學習到的表征是具有語義信息的。
后續的工作[8]人們又拓展了這種拼圖的方式,設計了更加復雜的,或者說更難的任務。首先我們依然將圖片分為 9 塊,我們預先定義好 64 種排序方式。模型輸入任意一種被打亂的序列,期待能夠學習到這種序列的順序屬于哪個類,和上個工作相比,這個模型需要學習到更多的相對位置信息。這個工作帶來的啟發就是使用更強的監督信息,或者說輔助任務越難,最后的性能越好。
除了這種拼圖的模式,還有一種是摳圖[9]。想法其實也很簡單粗暴,就是我們隨機的將圖片中的一部分刪掉,然后利用剩余的部分來預測扣掉的部分,只有模型真正讀懂了這張圖所代表的含義,才能有效的進行補全。這個工作表明自監督學習任務不僅僅可以做表征學習,還能同時完成一些神奇的任務。
而對于這種摳圖的方式,其實和 nlp 中的 BERT [10] 的 MASK LM 訓練方式有異曲同工之妙,BERT 在訓練時也可以是看做隨機扣掉一些詞,然后來預測扣掉的詞,從而讓模型讀懂句子。
還有一種思路是通過圖片的顏色信息[11],比如給模型輸入圖像的灰度圖,來預測圖片的色彩。只有模型可以理解圖片中的語義信息才能得知哪些部分應該上怎樣的顏色,比如天空是藍色的,草地是綠色的,只有模型從海量的數據中學習到了這些語義概念,才能得知物體的具體顏色信息。同時這個模型在訓練結束后就可以做這種圖片上色的任務。
這種基于預測顏色的生成模型帶給了人們新的啟發,其實這種灰度圖和 ab 域的信息我們可以當做是一張圖片的解耦表達,所以只要是解耦的特征,我們都可以通過這種方式互相監督的學習表征,著名的 Split-Brain Autoencoders [12] 就在做這樣一件事情。對于原始數據,首先分成兩部分,然后通過一部分的信息來預測另一部分,最后再合成完成的數據。和傳統編碼器不同的是,這種預測的方式可以促使模型真正讀懂數據的語義信息才能夠實現,所以相當于間接地約束編碼器不單單靠 pixel-wise 層面來訓練,而要同時考慮更多的語義信息。
最后我們要介紹的是根據類似數據增廣的方式來尋找自監督上下文。ICLR 2018 [13]的工作是給定一張輸入的圖片,我們對其進行不同角度的旋轉,模型的目的是預測該圖片的旋轉角度。這種樸素的想法最后帶來的增益竟然是非常巨大的,所以數據增強對于自監督學習也是非常有益處的,我個人的想法是數據增強不僅帶來了更多的數據,還增加了預訓練模型的魯棒性。
自監督學習在預訓練模型中的成功讓研究人員覺得非常興奮,同時也激發了更多的靈感。我們之前介紹的模型都是在專注如何尋找自監督信息,而自監督學習一定要脫離下游的具體任務嗎?答案是否定的,越來越多的工作開始思考自監督學習和具體任務緊密結合的方法(Task Related Self-Supervised Learning)。
而自監督和半監督學習[16]也可以進行結合,對于無標記的數據進行自監督學習(旋轉預測),和對于有標記數據,在進行自監督學習的同時利用聯合訓練的想法進行有監督學習。通過對 imagenet 的半監督劃分,利用 10% 或者 1% 的數據進行實驗,最后分析了一些超參數對于最終性能的影響。
這兩篇文章最后都中了 ICCV 2019,說明目前來說審稿人對于這類任務相關的自監督模型都是比較感興趣的。
2. 基于時序(Temporal Based)
之前介紹的方法大多是基于樣本自身的信息,比如旋轉、色彩、裁剪等。而樣本間其實也是具有很多約束關系的,這里我們來介紹利用時序約束來進行自監督學習的方法。最能體現時序的數據類型就是視頻了(video)。
第一種思想是基于幀的相似性[17],對于視頻中的每一幀,其實存在著特征相似的概念,簡單來說我們可以認為視頻中的相鄰幀特征是相似的,而相隔較遠的視頻幀是不相似的,通過構建這種相似(position)和不相似(negative)的樣本來進行自監督約束。
另外,對于同一個物體的拍攝是可能存在多個視角(multi-view),對于多個視角中的同一幀,可以認為特征是相似的,對于不同幀可以認為是不相似的。
還有一種想法是來自 @Xiaolong Wang 大佬 ICCV 2015 [18]的基于無監督追蹤方法,首先在大量的無標簽視頻中進行無監督追蹤,獲取大量的物體追蹤框。那么對于一個物體追蹤框在不同幀的特征應該是相似的(positive),而對于不同物體的追蹤框中的特征應該是不相似的(negative)。
除了基于特征相似性外,視頻的先后順序也是一種自監督信息。比如ECCV 2016, Misra, I. [19] 等人提出基于順序約束的方法,可以從視頻中采樣出正確的視頻序列和不正確的視頻序列,構造成正負樣本對然后進行訓練。簡而言之,就是設計一個模型,來判斷當前的視頻序列是否是正確的順序。
Self-supervised Dialogue Learning
基于順序的約束還被應用了到了對話系統中,ACL 2019 [20] 提出的自監督對話學習就是基于這種思想。這篇文章主要是想解決對話系統中生成的話術連貫性的問題,期待機器生成的回復和人類交談一樣是符合之前說話的風格、習慣等等。從大量的歷史預料中挖掘出順序的序列(positive)和亂序的序列(negative),通過模型來預測是否符合正確的順序來進行訓練。訓練完成后就擁有了一個可以判斷連貫性的模型,從而可以嵌入到對話系統中,最后利用對抗訓練的方式生成更加連貫的話術。
BERT pic from [21]
而 BERT 的另一種訓練方式,Next Sentence Prediction 也可以看作是基于順序的約束,通過構造大量的上下文樣本,目的是讓模型理解兩個句子之間的聯系。這一任務的訓練語料可以從語料庫中抽取句子對包括兩個句子A和B來進行生成,其中50%的概率B是A的下一個句子,50%的概率B是語料中的一個隨機句子。該任務預測B是否是A的下一句。
3. 基于對比(Contrastive Based)
第三類自監督學習的方法是基于對比約束,它通過學習對兩個事物的相似或不相似進行編碼來構建表征,這類方法的性能目前來說是非常強的,從最近的熱度就可以看出,很多大牛的精力都放在這個方向上面。關于這個方向的方法,[22] 總結的比較好。這里我們再簡單的闡述一下,加上一些我個人的看法。
其實我們第二部分所介紹的基于時序的方法已經涉及到了這種基于對比的約束,通過構建正樣本(positive)和負樣本(negative),然后度量正負樣本的距離來實現自監督學習。核心思想樣本和正樣本之間的距離遠遠大于樣本和負樣本之間的距離:
這里的 x 通常也稱為 「anchor」數據,為了優化 anchor 數據和其正負樣本的關系,我們可以使用點積的方式構造距離函數,然后構造一個 softmax 分類器,以正確分類正樣本和負樣本。這應該鼓勵相似性度量函數(點積)將較大的值分配給正例,將較小的值分配給負例:
通常這個損失也被稱為 InfoNCE (多么炫酷的名字啊),后面的所有工作也基本是圍繞這個損失進行的。
DIM
我們首先介紹 ICLR 2019 的 DIM [23],DIM 的具體思想是對于隱層的表達,我們可以擁有全局的特征(編碼器最終的輸出)和局部特征(編碼器中間層的特征),模型需要分類全局特征和局部特征是否來自同一圖像。所以這里 x 是來自一幅圖像的全局特征,正樣本是該圖像的局部特征,而負樣本是其他圖像的局部特征。這個工作的開創性很強,已經被應用到了其他領域,比如 graph [24]。
CPC
CPC 同樣是一個基于對比約束的自監督框架,主要是可以應用于能夠以有序序列表示的任何形式的數據:文本、語音、視頻、甚至圖像(圖像可以被視為像素或塊的序列,后面作者也給出了具體的想法)。CPC 主要是利用自回歸的想法,對相隔多個時間步長的數據點之間共享的信息進行編碼來學習表示,這個表示 c_t 可以代表融合了過去的信息,而正樣本就是這段序列 t 時刻后的輸入,負樣本是從其他序列中隨機采樣出的樣本。CPC的主要思想就是基于過去的信息預測的未來數據,通過采樣的方式進行訓練。
CMC
所以基于對比約束的自監督方法主要圍繞如何選取正負樣本, @慕容腹黑 大佬提出了利用多模態(多視角)的信息來構造樣本[26] ,一個樣本的多個模態為正樣本,其他樣本的模態為負樣本。我認為這個工作還是很有啟發性的,很遺憾 ICCV2019 沒有中,真心希望這篇文章能夠有一個好的歸宿。
SImCLR
最近 hinton 組又放出了 SimCLR[29],這個工作主要是對于一個輸入的樣本,進行不同的數據增廣方式,對于同一個樣本的不同增廣是正樣本,對于不同樣本的增廣是負樣本。整個過程比之前kaiming提出的動量對比(MoCo)更加的簡單,同時省去了數據存儲隊列。這個工作的創新主要有兩個:
在表征層和最后的損失層增加了一個非線性映射可以增加性能 (這個地方我比較好奇,希望能有大佬給出更直觀的解釋)。
數據增廣對于自監督學習是有益的,不同數據增廣方式的結合比單一增廣更好。
同時作者公布了非常多的實驗經驗,比如自監督學習需要更大的 batch 和更長的訓練時間。
通過閱讀這些經典工作,我自己的思考主要如下:
找到合適的輔助任務(pretext)對于自監督學習是最需要解決的問題。
數據和資源越多,自監督預訓練的效果會更好(Bert, MoCo, SimCLR)。
自監督直接和具體任務的結合(Task Related Self-Supervised Learning)是個可探索的方向,已經在很多任務中初露頭角,也比較符合審稿人的口味。
Reference
[1] https://lawtomated.com/supervised-vs-unsupervised-learning-which-is-better/
[2] https://zhuanlan.zhihu.com/p/102573476
[3] https://zhuanlan.zhihu.com/p/107126866
[4] https://zhuanlan.zhihu.com/p/30265894
[5] https://zhuanlan.zhihu.com/p/108625273
[6]https://lilianweng.github.io/lil-log/2018/08/12/from-autoencoder-to-beta-vae.html
[7] Carl Doersch, Abhinav Gupta, and Alexei A. Efros. Unsupervised Visual Representation Learning by Context Prediction. In ICCV 2015
[8] Noroozi, M., & Favaro, P. Unsupervised learning of visual representations by solving jigsaw puzzles. In ECCV 2016.
[9] Deepak Pathak et al. Context Encoders: Feature Learning by Inpainting. In CVPR 2016.
[10] Devlin, Jacob et al. “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.” NAACL-HLT (2019).
[11] Zhang, R., Isola, P., & Efros, A. A. Colorful image colorization. In ECCV 2016.
[12] Zhang, R., Isola, P., & Efros, A. A. Split-Brain Autoencoders: Unsupervised Learning by Cross-Channel Prediction. In CVPR 2017
[13] Gidaris, Spyros et al. “Unsupervised Representation Learning by Predicting Image Rotations.” In ICLR 2018
[14] Lee, Hankook et al. “Rethinking Data Augmentation: Self-Supervision and Self-Distillation.” ArXiv abs/1910.05872 (2019): n. pag.
[15] Gidaris, Spyros et al. “Boosting Few-Shot Visual Learning with Self-Supervision.” ICCV 2019
[16] Zhai, Xiaohua et al. “SL: Self-Supervised Semi-Supervised Learning.” ” ICCV 2019
[17] Sermanet, Pierre et al. “Time-Contrastive Networks: Self-Supervised Learning from Video.” 2018 IEEE International Conference on Robotics and Automation (ICRA) (2017): 1134-1141.
[18] Wang, Xiaolong and Abhinav Gupta. “Unsupervised Learning of Visual Representations Using Videos.” 2015 IEEE International Conference on Computer Vision (ICCV) (2015): 2794-2802.
[19] Misra, I., Zitnick, C. L., & Hebert, M. Shuffle and learn: unsupervised learning using temporal order verification. In ECCV 2016.
[20] Wu, Jiawei et al. “Self-Supervised Dialogue Learning.” ACL (2019).
[21] cloud.tencent.com/devel
[22] ankeshanand.com/blog/20
[23] Hjelm, R. Devon et al. “Learning deep representations by mutual information estimation and maximization.” . ICLR 2019
[24] Velickovic, Petar et al. “Deep Graph Infomax.” ArXiv abs/1809.10341 (2018): n. pag.
[25] Oord, A?ron van den et al. “Representation Learning with Contrastive Predictive Coding.” ArXiv abs/1807.03748 (2018): n. pag.
[26] Tian, Yonglong et al. “Contrastive Multiview Coding.” ArXiv abs/1906.05849 (2019): n. pag.
[27] Wu, Zhirong et al. “Unsupervised Feature Learning via Non-parametric Instance Discrimination.” CVPR 2018
[28] He, Kaiming et al. “Momentum Contrast for Unsupervised Visual Representation Learning.” ArXiv abs/1911.05722 (2019): n. pag.
[29] Chen, Ting et al. “A Simple Framework for Contrastive Learning of Visual Representations.” ArXiv abs/2002.05709 (2020): n. pag.
[30] 題圖: educators.brainpop.com/
總結
以上是生活随笔為你收集整理的自监督学习现状和未来的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二元学习法3.0:三把学习大剑,打通学习
- 下一篇: 从2012年到现在深度学习领域标志成果