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