【机器学习】业界干货 | 图解自监督学习,从入门到专家必读的九篇论文
作者?| 對白
整理 | 對白的算法屋
編者寄語:
一文搞懂AI未來最火的技術:自監(jiān)督學習。
大家好,我是對白。
如果人工智能比作一塊蛋糕,那么蛋糕的大部分是自監(jiān)督學習,蛋糕上的糖衣是監(jiān)督學習,蛋糕上的櫻桃是強化學習。
Yann Lecun在他的演講中引入了“蛋糕類比”來說明自監(jiān)督學習的重要性。雖然這個類比是有爭論的,但我們也已經看到了自監(jiān)督學習的影響,在自然語言處理領域最新發(fā)展(Word2Vec,Glove, ELMO, BERT)中,已經接受了自監(jiān)督,并取得了最佳的成果。
“如果人工智能是一塊蛋糕,那么蛋糕的大部分是自監(jiān)督學習,蛋糕上的糖衣是監(jiān)督學習,蛋糕上的櫻桃是強化學習(RL)。”
出于對自監(jiān)督學習在CV、NLP和推薦領域應用的好奇,我通過最近工作中的學習心得,并查閱了大量的論文,希望能以最通俗易懂的方式給大家講解清楚,自監(jiān)督學習這項技術的魅力。
這篇文章是我對自監(jiān)督學習的直觀總結。
一、概覽
1.1?基于上下文(Context based)
基于數(shù)據(jù)自身的上下文信息可以構造很多任務。以拼圖的方式構造pretext,比如將一張圖分成9個部分,通過預測這幾個部分的相對位置來產生損失;以摳圖的方式構造pretext,隨機將圖片的一部分刪掉,用剩余的部分預測扣掉的部分;預測圖片的顏色,比如輸入圖像的灰度圖,預測圖片的色彩。
1.2?基于時序(Temporal based)
在視頻等場景,不同樣本間也有基于時序約束。
1.3?基于對比(Contrastive based)
PS:我的最愛
通過學習對兩個事物的相似或不相似進行編碼來構建表征,即通過構建正負樣本,然后度量正負樣本的距離來實現(xiàn)自監(jiān)督學習。核心思想樣本和正樣本之間的相似度遠遠大于樣本和負樣本之間的相似度,類似Triplet模式。
二、主要方法
2.1?基于上下文(Context based)
論文一:《Rethinking Data Augmentation: Self-Supervision and Self-Distillation》
Data?augmentation?and?self-supervision
Data Augmentation相關的方法會對通過對原始圖片進行一些變換(顏色、旋轉、裁切等)來擴充原始訓練集合,提高模型泛化能力;
Multi-task learning將正常分類任務和self-supervised learning的任務(比如旋轉預測)放到一起進行學習。
作者指出通過data augmentation或者multi-task learning等方法的學習強制特征具有一定的不變性,會使得學習更加困難,有可能帶來性能降低。
因此,作者提出將分類任務的類別和self-supervised learning的類別組合成更多類別(例如 (Cat, 0),(Cat,90)等),用一個損失函數(shù)進行學習。
Self-distillation from aggregation
在學習的過程中限制不同旋轉角度的平均特征表示和原始圖片的特征表示盡可能接近,這里使用KL散度作為相似性度量。
第一項和第二項分別對應圖a和圖b,第三項是正常的分類交叉熵損失,作為一個輔助loss。
論文二:《S4L: Self-Supervised Semi-Supervised Learning》
自監(jiān)督和半監(jiān)督學習(大量數(shù)據(jù)沒有標簽,少量數(shù)據(jù)有標簽)也可以進行結合,對于無標記的數(shù)據(jù)進行自監(jiān)督學習(旋轉預測),和對于有標記數(shù)據(jù),在進行自監(jiān)督學習的同時利用聯(lián)合訓練的想法進行有監(jiān)督學習。通過對 imagenet 的半監(jiān)督劃分,利用 10% 或者 1% 的數(shù)據(jù)進行實驗,最后分析了一些超參數(shù)對于最終性能的影響。
對于標記數(shù)據(jù)來說,模型會同時預測旋轉角度和標簽,對于無標簽數(shù)據(jù)來說,只會預測其旋轉角度,預測旋轉角度”可以替換成任何其它無監(jiān)督task(作者提出了兩個算法,一個是 S^4L-Rotation,即無監(jiān)督損失是旋轉預測任務;另一個是S^4L-Exemplar,即無監(jiān)督損失是基于圖像變換(裁切、鏡像、顏色變換等)的triplet損失)
總的來說,需要借助于無監(jiān)督學習,為無標注數(shù)據(jù)創(chuàng)建一個pretext task,這個pretext task能夠使得模型利用大量無標注學習一個好的feature representation
2.2 基于時序(Temporal?based)
之前介紹的方法大多是基于樣本自身的信息,比如旋轉、色彩、裁剪等。而樣本間其實也是具有很多約束關系的,比如視頻相鄰幀的相似性、物體多個視覺的視頻幀。
論文三:
《Time-Contrastive Networks: Self-Supervised Learning from Video》
對于視頻中的每一幀,其實存在著特征相似的概念,可以認為相鄰幀特征是相似的,而相隔較遠的視頻幀是不相似的,通過構建這種position和negative的樣本來進行自監(jiān)督約束。
對于同一個物體的拍攝是可能存在多個視角(multi-view),對于多個視角中的同一幀,可以認為特征是相似的,對于不同幀可以認為是不相似的。
論文四:《Unsupervised Learning of Visual Representations Using Videos》
基于無監(jiān)督追蹤方法,首先在大量的無標簽視頻中進行無監(jiān)督追蹤,獲取大量的物體追蹤框。那么對于一個物體追蹤框在不同幀的特征應該是相似的,而對于不同物體的追蹤框中的特征應該是不相似的。
論文五:《Shuffle and learn: unsupervised learning using temporal order verification》
基于順序約束的方法,可以從視頻中采樣出正確的視頻序列和不正確的視頻序列,構造成正負樣本對然后進行訓練。簡而言之,就是設計一個模型,來判斷當前的視頻序列是否是正確的順序。
2.3基于對比(Contrastive?based)
基于對比的約束,通過構建正樣本(positive)和負樣本(negative),然后度量正負樣本的距離來實現(xiàn)自監(jiān)督學習。核心思想樣本和正樣本之間的距離遠遠大于樣本和負樣本之間的距離。
1. score 是度量函數(shù),評價兩個特征間的相似性。𝑥通常稱為“anchor” 數(shù)據(jù)。
2. 為了優(yōu)化 anchor 數(shù)據(jù)和其正負樣本的關系,可以使用點積的方式構造距離函數(shù),然后構造一個 softmax 分類器,以正確分類正樣本和負樣本。
3. 這應該鼓勵相似性度量函數(shù)(點積)將較大的值分配給正例,將較小的值分配給負例。
論文六:
《Learning deep representations by mutual information estimation and maximization》
Deep InfoMax 通過利用圖像中的局部結構來學習圖像表示,對比任務是對一對圖像中的全局特征和局部特征進行分類。
全局特征是CNN的最終輸出,局部特征是編碼器中的中間層的輸出。每個局部特征圖都有一個有限的感受野。
對于一個 anchor image 𝑥,𝑓(𝑥)是來自一幅圖像的全局特征,正樣本𝑓(𝑥+)是相同圖像的局部特征,負樣本𝑓(𝑥?)是不同圖像的局部特征。
本文探討的簡單思想是訓練一個表示學習函數(shù),即編碼器,以最大化其輸入和輸出之間的互信息(MI)。作者以一種類似于對抗自動編碼器的方式,將MI最大化和先驗匹配結合起來,根據(jù)期望的統(tǒng)計特性約束表示。
為了得到一個更適合分類的表示,作者將圖像的高層表示與局部patch之間的平均MI值最大化。
論文七:
《Representation Learning with Contrastive Predictive Coding》
CPC是一個基于對比約束的自監(jiān)督框架,可以適用于文本、語音、視頻、圖像等任何形式數(shù)據(jù)的對比方法(圖像可以看作為由像素或者圖像塊組成的序列)。
CPC通過對多個時間點共享的信息進行編碼來學習特征表達,同時丟棄局部信息。這些特征被稱為“慢特征”:隨時間不會快速變化的特征。比如說:視頻中講話者的身份,視頻中的活動,圖像中的對象等。
CPC 主要是利用自回歸的想法,對相隔多個時間步長的數(shù)據(jù)點之間共享的信息進行編碼來學習表示,這個表示 c_t 可以代表融合了過去的信息,而正樣本就是這段序列 t 時刻后的輸入,負樣本是從其他序列中隨機采樣出的樣本。CPC的主要思想就是基于過去的信息預測的未來數(shù)據(jù),通過采樣的方式進行訓練。
論文八:
Moco《Momentum Contrast for Unsupervised Visual Representation Learning》基于對比的自監(jiān)督學習其實就是訓練一個編碼器然后在一個大的字典里確保和對應的key是相似的,和其它的是不相似的。
傳統(tǒng)上字典的大小就是batch-size,由于算力的影響不能設置過大,因此很難應用大量的負樣本。因此效率較低。
本文采用隊列來存儲這個字典,在訓練過程中,每一個新batch完成編碼后進入隊列,最老的那個batch的key出隊列,字典的大小與batchsize實現(xiàn)分離,這樣可用的字典大小就可以遠遠大于batchsize,負樣本的數(shù)目就會大大擴增,效率得到大幅提升。
動量更新主要是為了解決字典這部分數(shù)據(jù)在反向傳播的時候更新參數(shù)的問題,因為反向傳播需要在隊列中所有的樣本中進行傳播。在這里作者使用了一種動量更新的方式緩慢平滑的更新參數(shù):
a) 傳統(tǒng)方法-端到端,這種方式query和key用兩個encoder,然后兩個參數(shù)是都進行更新的,但這種方式你的字典大小就是mini-batch的大小。
b) 采用一個較大的memery bank存儲較大的字典(存儲所有的樣本),但是每次進行query之后才會對memory進行更新,所以每次采樣得到的query可能是很多步驟之前編碼的的向量,這樣就丟失了一致性。
c) 使用queue,每次query之后都刪除最早的batch的樣本,然后將最新的batch更新入隊,這樣就巧妙的緩解了memory-bank一致性的問題。同時利用隊列可以保存遠大于batchsize的樣本,這樣也解決了end-to-end的batch-size的耦合問題。
論文九:SimCLR《A Simple Framework for Contrastive Learning of Visual Representations》
是什么使對比預測任務能夠學習有用的表示?
1) 數(shù)據(jù)增強的組合在定義有效的預測任務方面起著關鍵作用;
2) 在表示和對比損失之間引入一個可學習的非線性變換,大大提高了學習表示的質量。
3) 與有監(jiān)督學習相比,對比學習可以從更大的batch和更多的訓練步驟中獲益。
取一幅圖像對其進行隨機變換,得到一對增廣圖像x_i和x_j。該對中的每個圖像都通過編碼器以獲得圖像的表示。然后用一個非線性全連通層來獲得圖像表示z,其任務是最大化相同圖像的z_i和z_j兩種表征之間的相似性。
隨機數(shù)據(jù)增強模塊:隨機剪裁之后Resize到同一尺寸,接著是隨機顏色擾動,隨機高斯模糊。隨機剪裁和顏色擾動的組合對獲得好性能至關重要。
用于從增強后的數(shù)據(jù)樣本中提取表征向量的神經網絡基礎編碼器。該框架能夠無限制的適用不同的網絡框架。作者們采用簡單通用的ResNet。
神經網絡projection head g(),用來將表征映射到對比損失應用的空間。
對比損失函數(shù),用于對比預測任務。給定一個包含正樣本對的數(shù)據(jù)集,對比預測任務目標是識別出正樣本對。
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統(tǒng)計學習方法》的代碼復現(xiàn)專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件本站qq群554839127,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【机器学习】业界干货 | 图解自监督学习,从入门到专家必读的九篇论文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网友:这才是高质量人类女性!32岁清华女
- 下一篇: 如何实现rtsp h265 转 rtmp