自監督學習概述
原題:Self-Supervised Representation Learning
原文:HTML
作者:Lilian Weng
文章目錄
給定一個任務和足夠的標籤,監督學習可以很好地解決它。良好的效能通常需要相當數量的標籤,但是收集手動標籤是昂貴的,比如使用眾包服務標註影像的ImageNet資料集,並且難以擴大規模。考慮到未標記資料的數量(例如,免費文字、網際網路上的所有影像)遠遠超過了有限數量的人工標註資料集,不使用它們有點浪費。然而,無監督學習並不容易,通常比有監督學習效率低得多。
如果我們可以免費獲取未標記資料的標籤,並以有監督的方式訓練無監督資料集,會怎樣?我們可以通過以一種特殊的形式構建一個有監督的學習任務來實現這一點,以便只使用剩餘的資訊來預測資訊的子集。這樣,就提供了所有需要的資訊,包括輸入和標籤。這就是自監督學習(self-supervised learning)。
這一思想在語言建模中得到了廣泛的應用。語言模型的預設任務是根據過去的序列預測下一個單詞。BERT新增了另外兩個輔助任務,並且都依賴於自生成的標籤(self-generated labels)。
Fig. 1. A great summary of how self-supervised learning tasks can be constructed (Image source: LeCun’s talk)
如果有興趣進一步閱讀,這是精心挑選的自監督學習論文清單:LINK。
注意,本文既不涉及NLP/語言建模、生成模型。
Why Self-Supervised Learning?
自監督學習(Self-supervised learning)使我們能夠免費利用資料附帶的各種標籤。產生具有乾淨標籤的資料集是昂貴的,但是一直在產生未標記的資料。為了利用大量的未標記資料,一種方法是適當地設定學習目標,以便從資料本身獲得監督。
自監督任務,也稱為 pretext 任務,引導我們到監督損失函式。然而,我們通常不關心這個任務的最終效能。相反,我們對所學的中間表示感興趣,期望這種表示能夠承載良好的語義或結構意義,並且能夠有益於各種實際的下游任務。
例如,我們可以隨機旋轉影像,並訓練一個模型來預測每個輸入影像是如何旋轉的。旋轉預測任務是虛構的,所以實際的精度並不重要,就像我們如何對待輔助任務一樣。但是我們希望該模型能夠為現實世界的任務學習高質量的潛在變數,例如用很少的標記樣本構建一個物件識別分類器。
廣義而言,所有的生成模型都可以被認為是自監督的,但目標不同:生成模型側重於建立多樣和真實的影像,而自監督表示學習關心產生良好的特徵,通常對許多工有所幫助。生成式建模不是本帖的重點,有興趣的話,可以檢視我之前的部落格。
Images-Based
已經提出了許多關於影像的自監督表示學習的想法。一個常見的工作流程是:用未標記的影像在一個或多個 pretext 任務上訓練一個模型,然後使用該模型的一箇中間特徵層來為ImageNet分類上的多項式邏輯迴歸分類器提供資訊。最終的分類精度量化了學習的表示有多好。
最近,一些研究人員提出在標記資料上同時訓練監督學習,在未標記資料上同時訓練自監督 pretext 任務,如 Zhai et al, 2019 和 Sun et al, 2019。
Distortion
我們期望影像上的小失真(small distortion)不會改變其原始語義或幾何形式。輕微失真的影像被認為與原始影像相同,因此所學習的特徵被期望對失真不變。
Exemplar-CNN (Dosovitskiy et al., 2015) 使用未標記的影像塊建立替代訓練資料集:
- 在不同的位置和比例下,從不同的影像中取樣 N N N 個大小為32 × 32畫素的小塊,僅從包含相當大的梯度的區域中取樣,因為這些區域覆蓋邊緣並且往往包含物件或物件的一部分。它們是模範(exemplary)補丁。
- 通過應用各種隨機變換來扭曲每個補丁(如平移、旋轉、縮放等)。所有生成的扭曲補丁都被認為屬於同一個代理類。
- pretext 任務是區分一組代理類(surrogate classes)。我們可以任意建立任意多的代理類。
圖2。一隻可愛的小鹿的原始補丁在左上角。應用隨機變換,導致各種扭曲的補丁。在pretext任務中應該全部歸入同一類。(圖片來源:Dosovitskiy et al., 2015)
旋轉整個影像(Gidaris et al. 2018)是另一種有趣和廉價的方式來修改輸入影像,而語義內容保持不變。每個輸入影像首先隨機旋轉 90 ° 90° 90° 的倍數,對應於 [ 0 ° , 90 ° , 180 ° , 270 ° ] [0°,90°,180°,270°] [0°,90°,180°,270°]。該模型被訓練來預測哪個旋轉已經被應用,因此是一個4類分類問題。
為了識別具有不同旋轉的相同影像,模型必須學會識別高階物件部分,例如頭部、鼻子和眼睛,以及這些部分的相對位置,而不是區域性模式。這個pretext任務驅動模型以這種方式學習物件的語義概念。
圖3。通過旋轉整個輸入影像的自監督學習的說明。該模型學會預測應用哪個旋轉。(圖片來源:Gidaris et al. 2018)
Patches
第二類自監督學習任務從一幅影像中提取多個補丁(patches),並要求模型預測這些補丁之間的關係。
Doersch et al. (2015) 將pretext任務表述為預測來自一幅影像的兩個隨機補丁之間的相對位置。模型需要理解物件的空間上下文,以便辨別部件之間的相對位置。
訓練補丁的取樣方式如下:
- 在不參考影像內容的情況下隨機取樣第一個補丁。
- 考慮第一個補丁放置在3x3網格的中間,第二個補丁是從其周圍的8個相鄰位置取樣的。
- 為了避免模型僅捕獲低電平的瑣碎訊號(low-level trivial signals),例如跨邊界連線直線或匹配區域性模式,通過以下方式引入額外的噪聲:
- Add gaps between patches
- Small jitters
- Randomly downsample some patches to as little as 100 total pixels, and then upsampling it, to build robustness to pixelation.
- Shift green and magenta toward gray or randomly drop 2 of 3 color channels (See “chromatic aberration” below)
- 訓練模型以預測從第二個補丁中選擇的8個相鄰位置中的哪個位置,這是8個類別的分類問題。
Fig. 4. Illustration of self-supervised learning by predicting the relative position of two random patches. (Image source: Doersch et al., 2015)
除了像邊界圖案或紋理連續的瑣碎(trivial)訊號之外,另一個有趣和有點令人驚訝的瑣碎解決方案,稱為“chromatic aberration”。它是由不同波長的光通過透鏡的不同焦距觸發的。在這個過程中,顏色通道之間可能存在小的偏移。因此,該模型可以通過簡單地比較綠色和品紅色在兩個斑塊中的分離程度來學習辨別相對位置。這是一個瑣碎的(trivial)解決方案,與影像內容無關。通過將綠色和品紅色向灰色移動或隨機丟棄3個顏色通道中的2個來預處理影像,可以避免這種瑣碎的(trivial)解決方案。
既然在上面的任務中已經在每個影像中設定了一個3×3的網格,為什麼不使用全部9個補丁而是僅用2個補丁來執行任務呢?按照這個想法,Noroozi & Favaro (2016) 設計了一個拼圖遊戲(jigsaw puzzle)作為pretext任務:訓練模型,以將9個被打亂順序的補丁放回原來的位置。
卷積網路以共享的權重獨立地處理每個補丁,並且從預定義的置換集合中輸出每個補丁索引的概率向量。為了控制拼圖遊戲的難度,提出了根據預定義的置換集(permutation set)來打亂補丁,並配置模型來預測集合中所有索引的概率向量。
因為輸入補丁的打亂方式不會改變預測的正確順序。加速訓練的一個潛在改進是使用不變序列(permutation-invariant)圖卷積網路(GCN),這樣就不必多次打亂相同的補丁集合,這與論文中的想法相同。
Fig. 6. Illustration of self-supervised learning by solving jigsaw puzzle. (Image source: Noroozi & Favaro, 2016)
另一個想法是將“feature”或“visual primitives”視為標量值屬性,可以在多個補丁上進行求和,並在不同補丁之間進行比較。然後可以通過計數特徵(counting features)和簡單的算術來定義補丁之間的關係(Noroozi, et al, 2017)。
本文考慮了兩種轉換:
- 縮放(Scaling):如果將影像放大2倍,視覺圖元(visual primitives)的數量應保持不變。
- 平鋪(Tiling):如果將影像平鋪到2x2網格中,則視覺圖元的數量應為總和,是原始計數特徵的4倍。
該模型使用上述特徵計數關係學習特徵編碼器 ϕ ( . ) ϕ(.) ϕ(.) 。給定輸入影像 x ∈ R m × n × 3 \mathbf{x} \in \mathbb{R}^{m \times n \times 3} x∈Rm×n×3,考慮兩種型別的變換運算元:
- 降取樣運算子(Downsampling operator): D : R m × n × 3 ↦ R m 2 × n 2 × 3 D: \mathbb{R}^{m \times n \times 3} \mapsto \mathbb{R}^{\frac{m}{2} \times \frac{n}{2} \times 3} D:Rm×n×3↦R2m×2n×3
- 平鋪運算子(Tiling operator): T i : R m × n × 3 ↦ R m 2 × n 2 × 3 T_i: \mathbb{R}^{m \times n \times 3} \mapsto \mathbb{R}^{\frac{m}{2} \times \frac{n}{2} \times 3} Ti:Rm×n×3↦R2m×2n×3,從影像的2x2網格中提取第 i i i 個圖塊(tile)。
我們希望學習:
ϕ
(
x
)
=
ϕ
(
D
∘
x
)
=
∑
i
=
1
4
ϕ
(
T
i
∘
x
)
\phi(\mathbf{x}) = \phi(D \circ \mathbf{x}) = \sum_{i=1}^4 \phi(T_i \circ \mathbf{x})
ϕ(x)=ϕ(D∘x)=i=1∑4ϕ(Ti∘x)
因此,MSE損失為: L feat = ∥ ϕ ( D ∘ x ) − ∑ i = 1 4 ϕ ( T i ∘ x ) ∥ 2 2 \mathcal{L}_\text{feat} = \|\phi(D \circ \mathbf{x}) - \sum_{i=1}^4 \phi(T_i \circ \mathbf{x})\|^2_2 Lfeat=∥ϕ(D∘x)−∑i=14ϕ(Ti∘x)∥22。避免瑣碎的解決方案 ϕ ( x ) = 0 , ∀ x \phi(\mathbf{x}) = \mathbf{0}, \forall{\mathbf{x}} ϕ(x)=0,∀x,新增了另一個損失項以鼓勵兩個不同影像的特徵之間的差異: L diff = max ( 0 , c − ∥ ϕ ( D ∘ y ) − ∑ i = 1 4 ϕ ( T i ∘ x ) ∥ 2 2 ) \mathcal{L}_\text{diff} = \max(0, c -\|\phi(D \circ \mathbf{y}) - \sum_{i=1}^4 \phi(T_i \circ \mathbf{x})\|^2_2) Ldiff=max(0,c−∥ϕ(D∘y)−∑i=14ϕ(Ti∘x)∥22),其中 y \mathbf{y} y 是不同於 x \mathbf{x} x 的另一個輸入影像, c c c 是標量常數。最後的損失是:
L = L feat + L diff = ∥ ϕ ( D ∘ x ) − ∑ i = 1 4 ϕ ( T i ∘ x ) ∥ 2 2 + max ( 0 , M − ∥ ϕ ( D ∘ y ) − ∑ i = 1 4 ϕ ( T i ∘ x ) ∥ 2 2 ) \mathcal{L} = \mathcal{L}_\text{feat} + \mathcal{L}_\text{diff} = \|\phi(D \circ \mathbf{x}) - \sum_{i=1}^4 \phi(T_i \circ \mathbf{x})\|^2_2 + \max(0, M -\|\phi(D \circ \mathbf{y}) - \sum_{i=1}^4 \phi(T_i \circ \mathbf{x})\|^2_2) L=Lfeat+Ldiff=∥ϕ(D∘x)−i=1∑4ϕ(Ti∘x)∥22+max(0,M−∥ϕ(D∘y)−i=1∑4ϕ(Ti∘x)∥22)
Colorization
著色(Colorization)可以用作一個強大的自監督任務:訓練一個模型來給灰度輸入影像著色;準確地說,任務是將該影像對映到量化的顏色值輸出上的分佈 (Zhang et al. 2016)。
該模型在 CIE Lab* color space 中輸出顏色。Lab*顏色旨在近似人類視覺,而相比之下,RGB或CMYK模擬物理裝置的顏色輸出。
- L* 分量與人類對亮度的感知相匹配;L* = 0 是黑色,L* = 100 表示白色。
- a* 分量代表綠色(負值)或品紅色(正值)。
- b* 分量模擬藍色(負值)或黃色(正值)。
由於著色問題的多模態性質,預測概率分佈在顏色值分箱(binned color values)上的交叉熵損失比原始顏色值的L2損失工作得更好。 a b ab ab 顏色空間用大小為10的桶(bucket size)進行量化。
為了在常見顏色(通常是低ab值,如雲、牆和灰塵等常見背景)和罕見顏色(可能與影像中的關鍵物件相關聯)之間進行平衡,損失函式通過增加罕見顏色桶損失的加權項進行重新平衡。這就是為什麼在資訊檢索模型(information retrieval model)中我們需要
t
f
,
i
d
f
tf,idf
tf,idf 來給單詞打分。加權項被構造為:(1-λ) * 高斯核平滑的經驗概率分佈 + λ * 均勻分佈
,其中兩個分佈都在量化的
a
b
ab
ab 顏色空間上。
Generative Modeling
生成建模的pretext任務是在學習有意義的潛在表示的同時重構原始輸入。
去噪自動編碼器(denoising autoencoder,Vincent, et al, 2008)學習從部分損壞或具有隨機噪聲的版本中恢復影像。該設計的靈感來自於這樣一個事實:即使有噪聲,人類也可以很容易地識別圖片中的物件,這表明可以從噪聲中提取和分離關鍵的視覺特徵。可以參考我以前的文章。
上下文編碼器(context encoder,Pathak, et al., 2016)被訓練來填充影像中缺失的部分。假設 M ^ \hat{M} M^ 是一個二進位制掩碼,0代表丟棄的畫素,1代表剩餘的輸入畫素。該模型結合重建損失(L2 loss)和對抗損失(adversarial loss)進行訓練。由掩碼限定的去除區域可以是任何形狀。
在影像上應用掩碼時,上下文編碼器會移除部分割槽域中所有顏色通道的資訊。那如果只隱藏顏色通道的子集呢?裂腦自動編碼器(split-brain autoencoder,Zhang et al., 2017)通過從其餘通道預測顏色通道的子集來做到這一點。設帶有 C C C 色通道的資料張量 x ∈ R h × w × ∣ C ∣ \mathbf{x} \in \mathbb{R}^{h \times w \times \vert C \vert } x∈Rh×w×∣C∣ 為網路第 l l l 層的輸入。它被分成兩個不相交的部分, x 1 ∈ R h × w × ∣ C 1 ∣ \mathbf{x}_1 \in \mathbb{R}^{h \times w \times \vert C_1 \vert} x1∈Rh×w×∣C1∣ 和 x 2 ∈ R h × w × ∣ C 2 ∣ \mathbf{x}_2 \in \mathbb{R}^{h \times w \times \vert C_2 \vert} x2∈Rh×w×∣C2∣ 其中 C 1 , C 2 ⊆ C C_1 , C_2 \subseteq C C1,C2⊆C。接著訓練兩個子網路來做兩個互補的預測(complementary predictions):一個網路 f 1 f_1 f1 從 x 1 x_1 x1 預測 x 2 x_2 x2,另一個網路 f 1 f_1 f1 從 x 2 x_2 x2 預測 x 1 x_1 x1。如果顏色值被量化(quantized),則損失是 L 1 L_1 L1 損失或交叉熵損失。
這種分裂可以在RGB-D或Lab*顏色空間中發生一次,或者甚至發生在CNN網路的每一層,其中通道的數量可以是任意的。
生成式對抗網路(GANs)能夠學習從簡單的潛在變數對映到任意複雜的資料分佈。研究表明,這種生成模型的潛在空間捕捉資料中的語義變化(semantic variation);例如,當在人臉上訓練GAN模型時,一些潛在變數(latent variables)與面部表情、眼鏡、性別等相關聯(Radford et al., 2016)。
雙向GANs(Bidirectional GANs,Donahue, et al, 2017)引入了一個額外的編碼器 E ( . ) E(.) E(.) 來學習從輸入到潛變數 z \mathbf{z} z 的對映。鑑別器(discriminator ) D ( . ) D(.) D(.) 在輸入資料和潛在表示的聯合空間中預測, ( x , z ) (\mathbf{x}, \mathbf{z}) (x,z),以區分生成的對 ( x , E ( x ) ) (\mathbf{x}, E(\mathbf{x})) (x,E(x)) 和真實的對 ( G ( z ) , z ) (G(\mathbf{z}), \mathbf{z}) (G(z),z)。該模型被訓練來優化目標: min G , E max D V ( D , E , G ) \min_{G, E} \max_D V(D, E, G) minG,EmaxDV(D,E,G),其中生成器(generator) G G G 和編碼器(encoder) E E E 學習生成資料和潛在變數,這些資料和潛在變數足夠真實以混淆鑑別器,同時鑑別器 D D D 試圖區分真實和生成的資料。
V ( D , E , G ) = E x ∼ p x [ E z ∼ p E ( . ∣ x ) [ log D ( x , z ) ] ⏟ log D ( real ) ] + E z ∼ p z [ E x ∼ p G ( . ∣ z ) [ log 1 − D ( x , z ) ] ⏟ log ( 1 − D ( fake ) ) ) ] V(D, E, G) = \mathbb{E}_{\mathbf{x} \sim p_\mathbf{x}} [ \underbrace{\mathbb{E}_{\mathbf{z} \sim p_E(.\vert\mathbf{x})}[\log D(\mathbf{x}, \mathbf{z})]}_{\log D(\text{real})} ] + \mathbb{E}_{\mathbf{z} \sim p_\mathbf{z}} [ \underbrace{\mathbb{E}_{\mathbf{x} \sim p_G(.\vert\mathbf{z})}[\log 1 - D(\mathbf{x}, \mathbf{z})]}_{\log(1- D(\text{fake}))}) ] V(D,E,G)=Ex∼px[logD(real) Ez∼pE(.∣x)[logD(x,z)]]+Ez∼pz[log(1−D(fake)) Ex∼pG(.∣z)[log1−D(x,z)])]
Contrastive Predictive Coding
對比預測編碼(Contrastive Predictive Coding,CPC,van den Oord, et al. 2018)是一種通過將生成建模問題轉化為分類問題來從高維資料進行無監督學習的方法。受噪聲對比估計(Noise Contrastive Estimation,NCE)的啟發,CPC中的對比損失(contrastive loss)或資訊噪聲對比估計損失(InfoNCE loss)使用交叉熵損失來衡量模型在一組不相關的“負”樣本中對“特徵”表示的分類程度。這種設計的部分動機是:像最小均方誤差(MSE)這樣的單峰損失沒有足夠的能力,但學習一個完整的生成模型可能太昂貴。
CPC 使用編碼器壓縮輸入資料 z t = g enc ( x t ) z_t = g_\text{enc}(x_t) zt=genc(xt),使用自迴歸解碼器(autoregressive decoder)學習未來預測中潛在共享的高階上下文(high-level context), c t = g ar ( z ≤ t ) c_t = g_\text{ar}(z_{\leq t}) ct=gar(z≤t)。端到端培訓依賴於受NCE啟發的對比損失(NCE-inspired contrastive loss)。
在預測未來資訊時,對CPC進行了優化,以最大化輸入
x
x
x 與上下文向量
c
c
c 之間的互資訊:
I
(
x
;
c
)
=
∑
x
,
c
p
(
x
,
c
)
log
p
(
x
,
c
)
p
(
x
)
p
(
c
)
=
∑
x
,
c
p
(
x
,
c
)
log
p
(
x
∣
c
)
p
(
x
)
I(x; c) = \sum_{x, c} p(x, c) \log\frac{p(x, c)}{p(x)p(c)} = \sum_{x, c} p(x, c)\log\frac{p(x|c)}{p(x)}
I(x;c)=x,c∑p(x,c)logp(x)p(c)p(x,c)=x,c∑p(x,c)logp(x)p(x∣c)
CPC不是直接對未來觀測值
p
k
(
x
t
+
k
∣
c
t
)
p_k(x_{t+k} \vert c_t)
pk(xt+k∣ct) 建模(這可能相當昂貴),而是對密度函式建模,以保留
x
t
+
k
x_{t+k}
xt+k 和
c
t
c_t
ct 之間的共同資訊(mutual information):
f
k
(
x
t
+
k
,
c
t
)
=
exp
(
z
t
+
k
⊤
W
k
c
t
)
∝
p
(
x
t
+
k
∣
c
t
)
p
(
x
t
+
k
)
f_k(x_{t+k}, c_t) = \exp(z_{t+k}^\top W_k c_t) \propto \frac{p(x_{t+k}|c_t)}{p(x_{t+k})}
fk(xt+k,ct)=exp(zt+k⊤Wkct)∝p(xt+k)p(xt+k∣ct)
其中 f k f_k fk 可以是未規範化的(unnormalized),並且線性變換 W k ⊤ c t W_k^\top c_t Wk⊤ct 用於預測,對於每個步驟 k k k 具有不同的 W k W_k Wk 矩陣。
給定一組僅包含一個正樣本 x t ∼ p ( x t + k ∣ c t ) x_t \sim p(x_{t+k} \vert c_t) xt∼p(xt+k∣ct) 和 N − 1 N-1 N−1 個負樣本 x i ≠ t ∼ p ( x t + k ) x_{i \neq t} \sim p(x_{t+k}) xi=t∼p(xt+k) 的 N N N 個隨機樣本 X = { x 1 , … , x N } X = \{x_1, \dots, x_N\} X={x1,…,xN},正確分類正樣本的交叉熵損失 (其中 f k ∑ f k \frac{f_k}{\sum f_k} ∑fkfk 是預測值) 為:
L
N
=
−
E
X
[
log
f
k
(
x
t
+
k
,
c
t
)
∑
i
=
1
N
f
k
(
x
i
,
c
t
)
]
\mathcal{L}_N = - \mathbb{E}_X \Big[\log \frac{f_k(x_{t+k}, c_t)}{\sum_{i=1}^N f_k (x_i, c_t)}\Big]
LN=−EX[log∑i=1Nfk(xi,ct)fk(xt+k,ct)]
當對影像使用CPC時(Henaff, et al. 2019),預測器網路應該只訪問遮蔽的特徵集(masked feature set),以避免瑣碎的預測(trivial prediction)。準確地說:
- 每個輸入影像被分成一組重疊的補丁,每個補丁由resnet編碼器編碼,產生壓縮的特徵向量 z i , j z_{i,j} zi,j。
- 一個掩碼卷積層用一個掩碼進行預測,這樣給定輸出神經元的感受野(receptive field)只能看到影像中它上面的東西。否則,預測問題就微不足道了。預測可以在兩個方向進行(自上而下和自下而上)。
- 根據上下文 z ^ i + k , j = W k c i , j \hat{z}_{i+k, j} = W_k c_{i,j} z^i+k,j=Wkci,j 進行預測 z i + k , j z_{i+k, j} zi+k,j。
Momentum Contrast
動量對比(Momentum Contrast,MoCo,He et al, 2019)提供了一個無監督的學習視覺表示框架作為動態字典查詢(dynamic dictionary look-up)。字典的結構是一個大的FIFO佇列,對資料樣本進行編碼表示。
給定一個查詢樣本
x
q
x_q
xq,我們通過一個編碼器
f
q
:
q
=
f
q
(
x
q
)
f_q:q = f_q(x_q)
fq:q=fq(xq) 得到一個查詢表示(query representation)
q
q
q。關鍵樣本由動量編碼器
k
i
=
f
k
(
x
i
k
)
k_i = f_k (x^k_i)
ki=fk(xik) 編碼,以在字典中產生關鍵表示
{
k
1
,
k
2
,
…
}
\{k_1, k_2, \dots \}
{k1,k2,…} 的列表。假設其中有一個與
q
q
q 匹配的字典中的正鍵
k
+
k^+
k+,在本文中,
k
+
k^+
k+ 是使用
x
q
x_q
xq 的一個副本建立的,帶有不同的增強(augmentation)。然後,對一個正樣本和一個負樣本應用資訊對比損失:
L
q
=
−
log
exp
(
q
⋅
k
+
/
τ
)
∑
i
=
0
K
exp
(
q
⋅
k
i
/
τ
)
\mathcal{L}_q = - \log \frac{\exp(q \cdot k^+ / \tau)}{\sum_{i=0}^K \exp(q \cdot k_i / \tau)}
Lq=−log∑i=0Kexp(q⋅ki/τ)exp(q⋅k+/τ)
其中 τ τ τ 是溫度超引數。
與另一種類似的記憶庫 (Wu et al, 2018) 相比,它儲存資料庫中所有資料點的表示,並隨機抽取一組關鍵字作為負樣本,的基於佇列的字典使我們能夠重用緊接在前面的小批量資料的表示。
MoCo字典作為一個佇列是不可微分的,所以不能依靠反向傳播來更新鍵編碼器 f k f_k fk。一種簡單的方法可能是對 f q f_q fq 和 f k f_k fk 使用相同的編碼器。不同的是,MoCo提議使用基於動量的更新。比方說, f q f_q fq 和 f k f_k fk 的引數分別標為 θ q θ_q θq 和 θ k θ_k θk。
θ k ← m θ k + ( 1 − m ) θ q \theta_k \leftarrow m \theta_k + (1-m) \theta_q θk←mθk+(1−m)θq
其中, m ∈ [ 0 , 1 ) m∈[0,1) m∈[0,1) 是動量係數(momentum coefficient)。沒有梯度流通過 f k f_k fk 的更新。
SimCLR (Chen et al, 2020) 提出了一個視覺表徵對比學習的簡單框架。它通過潛在空間中的對比損失(contrastive loss),通過最大化同一樣本的不同增強檢視之間的一致性(agreement)來學習視覺輸入的表示。
SimCLR 通過以下三個步驟工作:
- (1) 隨機抽樣n個樣本的小批量,每個樣本應用兩個不同的資料增強操作,得到2n個增強後的樣本。
x ~ i = t ( x ) , x ~ j = t ′ ( x ) , t , t ′ ∼ T \tilde{\mathbf{x}}_i = t(\mathbf{x}),\quad\tilde{\mathbf{x}}_j = t'(\mathbf{x}),\quad t, t' \sim \mathcal{T} x~i=t(x),x~j=t′(x),t,t′∼T
其中,兩個獨立的資料增強操作符 t t t 和 t ’ t’ t’ 是從同一個增強系列 T \mathcal{T} T 中取樣的。資料增強包括隨機裁剪、隨機翻轉調整大小、顏色失真和高斯模糊。 - (2) 給定一對正樣本,其他
2
(
n
−
1
)
2(n-1)
2(n−1) 資料點被視為負樣本。該表示由基本編碼器
f
(
.
)
f(.)
f(.) 產生:
h i = f ( x ~ i ) , h j = f ( x ~ j ) \mathbf{h}_i = f(\tilde{\mathbf{x}}_i),\quad \mathbf{h}_j = f(\tilde{\mathbf{x}}_j) hi=f(x~i),hj=f(x~j) - (3) 使用餘弦相似性 sim ( . , . ) \text{sim}(.,.) sim(.,.) 定義對比損失。注意,損失是在通過 g ( . ) g(.) g(.) 對錶示進行額外投影的基礎上進行的。而不是直接在表示 h \mathbf{h} h 上。但是隻有表示 h \mathbf{h} h 用於下游任務。
z i = g ( h i ) , z j = g ( h j ) , sim ( z i , z j ) = z i ⊤ z j ∥ z i ∥ ∥ z j ∥ L i , j = − log exp ( sim ( z i , z j ) / τ ) ∑ k = 1 2 n 1 [ k ≠ i ] exp ( sim ( z i , z k ) / τ ) \begin{aligned} \mathbf{z}_i &= g(\mathbf{h}_i),\quad \mathbf{z}_j = g(\mathbf{h}_j),\quad \text{sim}(\mathbf{z}_i, \mathbf{z}_j) = \frac{\mathbf{z}_i^\top\mathbf{z}_j}{\|\mathbf{z}_i\| \|\mathbf{z}_j\|} \\ \mathcal{L}_{i,j} &= - \log\frac{\exp(\text{sim}(\mathbf{z}_i, \mathbf{z}_j) / \tau)}{\sum_{k=1}^{2n} \mathbf{1}_{[k \neq i]} \exp(\text{sim}(\mathbf{z}_i, \mathbf{z}_k) / \tau)} \end{aligned} ziLi,j=g(hi),zj=g(hj),sim(zi,zj)=∥zi∥∥zj∥zi⊤zj=−log∑k=12n1[k=i]exp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ)
其中
1
[
k
≠
i
]
1_{[k≠i]}
1[k=i] 是指示函式( indicator function):如果
k
≠
i
k≠i
k=i 為0,否則為1。
τ
τ
τ 是溫度超引數。
與SimLCR相比,MoCo的優勢在於MoCo將批大小與負樣本的數量分離(decouples),但SimCLR需要較大的批大小才能獲得足夠的負樣本。因此,當批量減小時,SimCLR的效能會下降。
SimCLR中的兩種設計,即 (1) MLP projection head 和 (2) 更強的資料增強,如裁剪、模糊和更強的顏色失真,均被證明是非常有效的。將它們與相結合,我們得到 MoCo V2 (Chen et al, 2020) ,其實現了甚至更好的遷移效能(transfer performance),而不依賴於非常大的批大小。
BYOL (Bootstrap your own latent, Grill, et al 2020) 聲稱在不使用負樣本的情況下實現了新的最先進的結果。它依賴於兩個神經網路,稱為線上(online)和目標(target)網路,它們相互作用並相互學習。目標網路(由 ξ ξ ξ 引數化)具有與線上網路(由 θ θ θ 引數化)相同的架構,但是具有 polyak 平均權重, ξ ← τ ξ + ( 1 − τ ) θ \xi \leftarrow \tau \xi + (1-\tau) \theta ξ←τξ+(1−τ)θ。
目標是學習可用於下游任務的表示 y y y。 θ θ θ 引數化的線上網路包含:
- an encoder f θ f_θ fθ,
- a projector g θ g_θ gθ,
- and a predictor q θ qθ qθ.
目標網路具有相同的網路架構,但引數 ξ ξ ξ 不同,通過 polyak 平均 θ : ξ ← τ ξ + ( 1 − τ ) θ \theta:\xi \leftarrow \tau \xi + (1-\tau) \theta θ:ξ←τξ+(1−τ)θ 更新。
給定影像 x x x,BYOL損失的構造如下:
- 建立兩個增強檢視: v = t ( x ) ; v ′ = t ′ ( x ) v=t(x); v'=t'(x) v=t(x);v′=t′(x),使用增強取樣 t ∼ T , t ′ ∼ T ′ t \sim \mathcal{T}, t' \sim \mathcal{T}' t∼T,t′∼T′;
- 然後將它們編碼為表示形式, y θ = f θ ( v ) , y ′ = f ξ ( v ′ ) y_\theta=f_\theta(v), y'=f_\xi(v') yθ=fθ(v),y′=fξ(v′);
- 然後將它們投影到潛在變數, z θ = g θ ( y θ ) , z ′ = g ξ ( v ′ ) z_\theta=g_\theta(y_\theta), z'=g_\xi(v') zθ=gθ(yθ),z′=gξ(v′);
- 線上網路輸出預測 q θ ( z θ ) q_\theta(z_\theta) qθ(zθ);
- q θ ( z θ ) q_\theta(z_\theta) qθ(zθ) 和 z ′ z' z′ 均經過L2正則化,給定 q ˉ θ ( z θ ) = q θ ( z θ ) / ∥ q θ ( z θ ) ∥ \bar{q}_\theta(z_\theta) = q_\theta(z_\theta) / \| q_\theta(z_\theta) \| qˉθ(zθ)=qθ(zθ)/∥qθ(zθ)∥ 和 z ′ ˉ = z ′ / ∥ z ′ ∥ \bar{z'} = z' / \|z'\| z′ˉ=z′/∥z′∥
- 損失 L θ BYOL \mathcal{L}^\text{BYOL}_\theta LθBYOL 是L2正則化預測 q ˉ θ ( z ) \bar{q}_\theta(z) qˉθ(z) 和 z ′ ˉ \bar{z'} z′ˉ 之間的MSE。
- 另一個對稱損失(symmetric loss) L ~ θ BYOL \tilde{\mathcal{L}}^\text{BYOL}_\theta L~θBYOL 可以通過切換 v ′ v' v′ 和 v v v 來產生。也就是說,將 v ′ v' v′ 饋送到線上網路,將 v v v 饋送到目標網路。
- 最終損失為 L θ BYOL + L ~ θ BYOL \mathcal{L}^\text{BYOL}_\theta + \tilde{\mathcal{L}}^\text{BYOL}_\theta LθBYOL+L~θBYOL,僅引數 θ θ θ 被優化。
與大多數流行的基於對比學習(contrastive learning)的方法不同,BYOL不使用負樣本對。大多數拔靴法法(bootstrapping)依賴於偽標籤(pseudo-labels)或聚類索引,但是BYOL直接增強了潛在表示。
非常有趣和令人驚訝的是,沒有負樣本,BYOL仍然工作得很好。後來,我偶然看到了 Abe Fetterman & Josh Albrecht 的這篇文章,他們在試圖重現BYOL時強調了兩個令人驚訝的發現:
- 當刪除批歸一化(batch normalization)時,BYOL通常不會比隨機執行的更好。
- 批歸一化的存在暗含了一種對比學習的形式。
他們認為使用負樣本對於避免模型崩潰很重要。即,如果模型為每個資料點輸出全零表示會怎麼樣?。批歸一化不精確地引入了對負樣本的依賴性,因為無論一批輸入多麼相似,值都是重新分佈的(分散到 ∼ N ( 0 , 1 ) \sim \mathcal{N}(0, 1) ∼N(0,1)),因此批歸一化防止了模型崩潰。如果你在這個領域工作,強烈建議你閱讀全文。
CURL (Srinivas & Laskin et al,2020)在強化學習中應用了上述思想。它通過對比損失匹配原始觀察的兩個資料增強版本 o q o_q oq 和 o k o_k ok 的嵌入來學習RL任務的視覺表示。CURL主要依靠隨機資料增強。關鍵編碼器實現為動量編碼器,其權重為查詢編碼器權重的 EMA,與MoCo相同。
RL和監督視覺任務的一個顯著區別是,RL依賴於連續幀之間的時間一致性。因此,CURL在每個幀堆疊上一致地應用增強,以保留關於觀察的時間結構的資訊。
Video-Based
視訊包含一系列語義相關的幀。附近的幀在時間上接近,並且比更遠的幀更相關。框架的順序描述了推理和物理邏輯的某些規則;例如物體運動應該平滑且重力指向下方。
一個常見的工作流程是用未標記的視訊在一個或多個pretext任務上訓練一個模型,然後饋送該模型的一箇中間特徵層,以微調動作分類、分割或物件跟蹤的下游任務上的簡單模型。
Tracking
物體的運動是由一系列視訊幀來跟蹤的。同一物體如何在螢幕上近距離捕捉通常差別不大,通常是由物體或相機的微小運動觸發的。因此,對於同一物件,在相鄰幀中學習到的任何視覺表示都應該在潛在特徵空間中是相鄰的。受這一思想的啟發,Wang & Gupta, 2015 提出了一種通過跟蹤視訊中的運動物件來實現視覺表徵的無監督學習的方法。
在小的時間視窗(例如30幀)上精確地跟蹤運動的補丁(patches)。選擇第一個補丁
x
x
x 和最後一個補丁
x
+
x^+
x+ 作為訓練資料點。如果我們直接訓練模型,使兩個補丁的特徵向量之間的差異最小化,那麼模型可能只學會將所有東西對映到同一個值。為了避免這種瑣碎的解決方案(trivial solution),如上所述,新增了隨機的第三個補丁
x
−
x^-
x−。該模型通過強制兩個跟蹤補丁之間的距離比第一個補丁和特徵空間中的隨機補丁之間的距離更近來學習表示,
D
(
x
,
x
−
)
)
>
D
(
x
,
x
+
)
D(\mathbf{x}, \mathbf{x}^-)) > D(\mathbf{x}, \mathbf{x}^+)
D(x,x−))>D(x,x+),其中
D
(
.
)
D(.)
D(.) 是餘弦距離,
D
(
x
1
,
x
2
)
=
1
−
f
(
x
1
)
f
(
x
2
)
∥
f
(
x
1
)
∥
∥
f
(
x
2
∥
)
D(\mathbf{x}_1, \mathbf{x}_2) = 1 - \frac{f(\mathbf{x}_1) f(\mathbf{x}_2)}{\|f(\mathbf{x}_1)\| \|f(\mathbf{x}_2\|)}
D(x1,x2)=1−∥f(x1)∥∥f(x2∥)f(x1)f(x2)
損失函式為:
L
(
x
,
x
+
,
x
−
)
=
max
(
0
,
D
(
x
,
x
+
)
−
D
(
x
,
x
−
)
+
M
)
+
weight decay regularization term
\mathcal{L}(\mathbf{x}, \mathbf{x}^+, \mathbf{x}^-) = \max\big(0, D(\mathbf{x}, \mathbf{x}^+) - D(\mathbf{x}, \mathbf{x}^-) + M\big) + \text{weight decay regularization term}
L(x,x+,x−)=max(0,D(x,x+)−D(x,x−)+M)+weight decay regularization term
其中 M M M 是控制兩個距離之間的最小間隙的標量常數;論文中 M = 0.5 M=0.5 M=0.5。在最佳情況下,損失強制 D ( x , x − ) > = D ( x , x + ) + M D(\mathbf{x}, \mathbf{x}^-) >= D(\mathbf{x}, \mathbf{x}^+) + M D(x,x−)>=D(x,x+)+M。
這種形式的損失函式在人臉識別任務中也被稱為三重損失(triplet loss),其中資料集包含來自多個攝像機角度的多個人的影像。假設
x
a
\mathbf{x}^a
xa 是一個特定人的錨定形象(anchor image),
x
p
\mathbf{x}^p
xp 是這個人從不同角度的正影像樣本(positive image),
x
n
\mathbf{x}^n
xn 是另一個人的負樣本影像(negative image)。在嵌入空間上,
x
a
\mathbf{x}^a
xa 應該比
x
n
\mathbf{x}^n
xn 更接近
x
p
\mathbf{x}^p
xp:
L
triplet
(
x
a
,
x
p
,
x
n
)
=
max
(
0
,
∥
ϕ
(
x
a
)
−
ϕ
(
x
p
)
∥
2
2
−
∥
ϕ
(
x
a
)
−
ϕ
(
x
n
)
∥
2
2
+
M
)
\mathcal{L}_\text{triplet}(\mathbf{x}^a, \mathbf{x}^p, \mathbf{x}^n) = \max(0, \|\phi(\mathbf{x}^a) - \phi(\mathbf{x}^p) \|_2^2 - \|\phi(\mathbf{x}^a) - \phi(\mathbf{x}^n) \|_2^2 + M)
Ltriplet(xa,xp,xn)=max(0,∥ϕ(xa)−ϕ(xp)∥22−∥ϕ(xa)−ϕ(xn)∥22+M)
一種稍微不同的三重損失形式,稱為 n-pair loss,也常用於學習機器人任務中的觀察嵌入。更多相關內容請參見後面的章節。
Fig. 19. Overview of learning representation by tracking objects in videos. (a) Identify moving patches in short traces; (b) Feed two related patched and one random patch into a conv network with shared weights. © The loss function enforces the distance between related patches to be closer than the distance between random patches. (Image source: Wang & Gupta, 2015)
通過兩步無監督光流方法(optical flow)跟蹤和提取相關補丁:
在訓練期間,給定一對相關的補丁 x \mathbf{x} x 和 x + \mathbf{x}^+ x+,在同一批中對 K K K 個隨機補丁 { x − } \{\mathbf{x}^-\} {x−} 進行取樣,以形成 K K K 個訓練三元組(training triplets)。在幾個迴圈(epoch)之後,應用難樣本挖掘(hard negative mining)來使訓練更難和更有效,即搜尋最大化損失的隨機補丁,並使用它們來進行梯度更新。
Frame Sequence
視訊幀自然按時間順序定位。研究人員提出了幾個自監督的任務,其動機是期望良好的表現應該學習正確的幀序列(correct sequence of frames)。
一個想法是驗證幀順序(validate frame order,Misra, et al 2016)。pretext任務是確定來自視訊的幀序列是否以正確的時間順序放置(時間有效,temporal valid)。該模型需要跟蹤和推理物件在幀間的微小運動來完成這樣的任務。
訓練幀是從高運動視窗(high-motion windows)中取樣的。每次取樣5個幀 ( f a , f b , f c , f d , f e ) (f_a, f_b, f_c, f_d, f_e) (fa,fb,fc,fd,fe),時間戳的順序為 a < b < c < d < e a < b < c < d < e a<b<c<d<e。在5個幀中,建立了一個正元組 ( f b , f c , f d ) (f_b, f_c, f_d) (fb,fc,fd) 和兩個負元組 ( f b , f a , f d ) (f_b, f_a, f_d) (fb,fa,fd) 和 ( f b , f e , f d ) (f_b, f_e, f_d) (fb,fe,fd)。
引數 KaTeX parse error: Got function '\max' with no arguments as subscript at position 6: \tau_\̲m̲a̲x̲ ̲= \vert b-d \ve… 控制正訓練例項的難度(如較高→較難),引數 KaTeX parse error: Got function '\min' with no arguments as subscript at position 6: \tau_\̲m̲i̲n̲ ̲= \min(\vert a-… 控制負訓練例項的難度(如較低→較難)。
視訊幀順序驗證的pretext任務被顯示為當用作預處理步驟時,提高動作識別的下游任務的效能。
O3N(Odd-One-Out Network; Fernando et al. 2017)中的任務也基於視訊幀序列驗證。更進一步,任務是從多個視訊剪輯中挑選不正確的序列(pick the incorrect sequence)。
給定 N + 1 N+1 N+1 個輸入視訊剪輯,其中一個幀被打亂,因此順序是錯誤的,其餘 N N N 個幀保持正確的時間順序。O3N學習預測奇數視訊片段(odd video clip)的位置。在他們的實驗中,有6個輸入片段,每個片段包含6幀。
視訊中的時間箭頭(arrow of time,AoT)包含非常豐富的資訊,既有關於低層物理的資訊(例如物體的重力向下;煙霧升起;水往低處流)和高階事件推理(如魚向前遊;打破雞蛋但不能恢復原狀)。因此,另一個想法是受此啟發,通過預測時間箭頭(AoT)來學習潛在表徵(latent representation)——無論視訊是向前播放還是向後播放(Wei et al., 2018)。
為了預測時間箭頭,分類器應該捕捉低階物理和高階語義。提出的時間類啟用圖網路( Temporal Class-Activation-Map,T-CAM)接受
T
T
T 組,每組包含許多光流幀(frames of optical flow)。來自每組的conv層輸出級聯(concatenated),並饋送到二元邏輯迴歸中,用於預測時間箭頭。
有趣的是,資料集中存在一些人工線索。如果處理不當,它們可能導致不依賴實際視訊內容的瑣碎分類器(trivial classifier ):
- 由於視訊壓縮,黑色幀(black framing)可能不是完全黑色的,而是可能包含按時間順序排列的某些資訊。因此,在實驗中應該去除黑色幀。
- 大型攝像機運動,如垂直平移或放大/縮小,也為時間箭頭提供了強訊號,但與內容無關。處理階段應該穩定相機運動。
當用作預訓練步驟時,AoT前置任務可以提高動作分類下游任務的效能。注意,仍然需要微調。
Video Colorization
Vondrick et al. (2018) 提出視訊彩色化是一個自監督學習問題,產生了一個豐富的表示,可用於視訊分割和無標籤的視覺區域跟蹤,而無需額外的微調。
與基於影像的彩色化(colorization)不同,這裡的任務是通過利用視訊幀中顏色的自然時間一致性,將顏色從正常的彩色參考幀複製到另一個灰度目標幀(因此這兩個幀在時間上不應該相距太遠)。為了一致地複製顏色,該模型被設計成學習跟蹤不同幀中的相關畫素。
這個想法很簡單,也很聰明。設
c
i
ci
ci 為參考幀中第
i
i
i 個畫素的真實顏色,
c
j
c_j
cj 為目標幀中第
j
j
j 個畫素的顏色。目標
c
^
j
\hat{c}_j
c^j 中第
j
j
j 種顏色的預測顏色是參考中所有畫素的顏色的加權和,其中加權項測量相似性:
c
^
j
=
∑
i
A
i
j
c
i
where
A
i
j
=
exp
(
f
i
f
j
)
∑
i
′
exp
(
f
i
′
f
j
)
\hat{c}_j = \sum_i A_{ij} c_i \text{ where } A_{ij} = \frac{\exp(f_i f_j)}{\sum_{i'} \exp(f_{i'} f_j)}
c^j=i∑Aijci where Aij=∑i′exp(fi′fj)exp(fifj)
其中 f f f 是對應畫素的學習嵌入; i ’ i’ i’ 索引參考幀中的所有畫素。加權術語實現了基於注意力的指向機制,類似於匹配網路和指標網路。因為完全相似矩陣可能非常大,所以兩個幀都被下采樣。 c j c_j cj 和 c ^ j \hat{c}_j c^j 之間的分類交叉熵損失與量化顏色(quantized colors)一起使用,就像在 Zhang et al. 2016 中一樣。
基於參考幀是如何標記的,該模型可以用於及時完成幾個基於顏色的下游任務,例如跟蹤分割或人體姿態。不需要微調。參見圖15。
A couple common observations:
- Combining multiple pretext tasks improves performance;
- Deeper networks improve the quality of representation;
- Supervised learning baselines still beat all of them by far.
Control-Based
當在現實世界中執行RL策略時,例如根據視覺輸入控制物理機器人,正確跟蹤狀態、獲得獎勵訊號或確定目標是否真正實現是非常重要的。視覺資料有許多與真實狀態無關的噪聲,因此無法從畫素級比較中推斷出狀態的等效性。自監督表示學習在學習可直接用作控制策略輸入的有用狀態嵌入方面,顯示出巨大的潛力。
本節中討論的所有情況都是在機器人學習中進行的,主要是針對來自多個攝像機檢視的狀態表示和目標表示。
Multi-View Metric Learning
度量學習(metric learning)的概念在前面的章節中已經多次提到。一個常見的設定是:給定三個樣本(anchor s a s_a sa, positive sample s p s_p sp, negative sample s n s_n sn),學習的嵌入表示 ϕ ( s ) \phi(s) ϕ(s) 滿足 s a s_a sa 在潛在空間中靠近 s p s_p sp 但遠離 s n s_n sn。
Grasp2Vec (Jang & Devin et al., 2018) 旨在從自由的、未標記的抓取活動中學習機器人抓取任務中以物件為中心的視覺表示。通過以物件為中心,這意味著,不管環境或機器人看起來如何,如果兩幅影像包含相似的專案,它們應該被對映到相似的表示;否則,嵌入應該相隔很遠。
抓取系統可以辨別它是否移動了一個物體,但不能辨別它是哪個物體。設定攝像機拍攝整個場景和被抓物體的影像。在早期訓練期間,抓取機器人被執行以隨機抓取任何物體,產生三重影像(triple of images), ( s pre , s post , o ) (s_\text{pre}, s_\text{post}, o) (spre,spost,o)。
- o o o is an image of the grasped object held up to the camera;
- s p r e s_{pre} spre is an image of the scene before grasping, with the object o in the tray;
- s p o s t s_{post} spost is an image of the same scene after grasping, without the object o in the tray.
為了學習以物件為中心的表示,我們期望 s pre s_\text{pre} spre 和 s post s_\text{post} spost 的嵌入之間的差異來捕獲被移除的物件。這個想法非常有趣,並且類似於在單詞嵌入中觀察到的關係,例如 d i s t a n c e ( “ k i n g ” , “ q u e e n ” ) ≈ d i s t a n c e ( “ m a n ” , “ w o m a n ” ) distance(“king”, “queen”) ≈ distance(“man”, “woman”) distance(“king”,“queen”)≈distance(“man”,“woman”)。
讓 ϕ s ϕ_s ϕs 和 ϕ o ϕ_o ϕo 分別作為場景和物件的嵌入函式。該模型通過使用 n n n 對損失(n-pair loss)最小化 ϕ s ( s pre ) − ϕ s ( s post ) \phi_s(s_\text{pre}) - \phi_s(s_\text{post}) ϕs(spre)−ϕs(spost) 和 ϕ o ( o ) \phi_o(o) ϕo(o) 之間的距離來學習表示:
L grasp2vec = NPair ( ϕ s ( s pre ) − ϕ s ( s post ) , ϕ o ( o ) ) + NPair ( ϕ o ( o ) , ϕ s ( s pre ) − ϕ s ( s post ) ) where NPair ( a , p ) = ∑ i < B − log exp ( a i ⊤ p j ) ∑ j < B , i ≠ j exp ( a i ⊤ p j ) + λ ( ∥ a i ∥ 2 2 + ∥ p i ∥ 2 2 ) \begin{aligned} \mathcal{L}_\text{grasp2vec} &= \text{NPair}(\phi_s(s_\text{pre}) - \phi_s(s_\text{post}), \phi_o(o)) + \text{NPair}(\phi_o(o), \phi_s(s_\text{pre}) - \phi_s(s_\text{post})) \\ \text{where }\text{NPair}(a, p) &= \sum_{i<B} -\log\frac{\exp(a_i^\top p_j)}{\sum_{j<B, i\neq j}\exp(a_i^\top p_j)} + \lambda (\|a_i\|_2^2 + \|p_i\|_2^2) \end{aligned} Lgrasp2vecwhere NPair(a,p)=NPair(ϕs(spre)−ϕs(spost),ϕo(o))+NPair(ϕo(o),ϕs(spre)−ϕs(spost))=i<B∑−log∑j<B,i=jexp(ai⊤pj)exp(ai⊤pj)+λ(∥ai∥22+∥pi∥22)
其中,B指一批 (anchor, positive) 樣本對。
當將表徵學習框架化為度量學習時,n對損失是一種常見的選擇。n對損失不是處理明確的三重(anchor, positive, negative)樣本,而是將一個小批次中所有其他陽性樣本視為陰性樣本。
嵌入函式
ϕ
o
ϕ_o
ϕo 非常適合用影像來表示目標
g
g
g。量化實際抓住的物體
o
o
o 離目標有多近的獎勵函式被定義為
r
=
ϕ
o
(
g
)
⋅
ϕ
o
(
o
)
r = \phi_o(g) \cdot \phi_o(o)
r=ϕo(g)⋅ϕo(o)。注意,計算獎勵只依賴於學習到的潛在空間,不涉及真實位置,因此可以用於在真實機器人上的訓練。
Fig. 24. Localization results of grasp2vec embedding. The heatmap of localizing a goal object in a pre-grasping scene is defined as
ϕ
o
(
o
)
⊤
ϕ
s
,
spatial
(
s
pre
)
\phi_o(o)^\top \phi_{s, \text{spatial}} (s_\text{pre})
ϕo(o)⊤ϕs,spatial(spre), where ϕs,spatial is the output of the last resnet block after ReLU. The fourth column is a failure case and the last three columns take real images as goals. (Image source: Jang & Devin et al., 2018)
除了基於嵌入相似度的獎勵功能外,在gap2vec框架中還有其他一些技巧可以訓練RL策略:
- 事後標記(posthoc labelingP):通過將隨機抓取的物件標記為正確的目標來擴充資料集,如事後經驗回放(Hindsight Experience Replay; HER;Andrychowicz et al.,2017年)。
- 輔助目標增強(Auxiliary goal augmentation):通過用未實現的目標重新標記轉換(transitions)來進一步增加重放緩衝區(augment the replay buffer);準確地說,在每次迭代中,對兩個目標進行取樣 ( g , g ′ ) (g, g') (g,g′),兩個目標都用於向重放緩衝區新增新的轉換。
時間對比網路(Time-Contrastive Networks,TCN;Sermanet, et al. 2018)憑直覺從多攝像機檢視視訊中瞭解到,同一場景同一時間步的不同視點應該共享相同的嵌入,如在FaceNet中,而嵌入應該隨時間變化,即使是同一攝像機視角。因此,嵌入捕捉的是底層狀態的語義意義,而不是視覺相似性。TCN嵌入是用三重損失訓練的。
訓練資料是通過同時從不同角度拍攝同一場景的視訊來收集的。所有的視訊都沒有標註。
Fig. 25. An illustration of time-contrastive approach for learning state embedding. The blue frames selected from two camera views at the same timestep are anchor and positive samples, while the red frame at a different timestep is the negative sample.
TCN嵌入提取對攝像機配置不變的視覺特徵。它可以用於基於演示視訊和潛在空間中的觀察之間的歐幾里德距離來構建模仿學習(imitation learning)的獎勵函式。
對TCN的進一步改進是學習聯合嵌入多個幀而不是單個幀,從而產生多幀時間對比網路( Multi-frame Time-Contrastive Networks,mfTCN; Dwibedi et al., 2019)。給定來自幾個同步攝像機視點
v
1
,
v
2
,
…
,
v
k
v_1, v_2, \dots, v_k
v1,v2,…,vk 的一組視訊,在時間
t
t
t 的幀和在每個視訊中用步幅
s
s
s 選擇的前
n
−
1
n-1
n−1 幀被聚集並對映到一個嵌入向量中,產生大小
(
n
−
1
)
×
s
+
1
(n-1)\times s + 1
(n−1)×s+1。每個幀首先通過CNN提取低階特徵,然後使用3D時間卷積來及時聚合幀。使用n對損失(n-pairs loss)訓練模型。
訓練資料取樣如下:
- 首先,構建兩對視訊片段(clips)。每對包含兩個來自不同攝像機檢視但具有同步時間步長的片段。這兩套視訊在時間上應該相差很遠。
- 以相同的步幅同時從同一對中的每個視訊剪輯中取樣固定數量的幀。
- 具有相同時間步長的幀在n對損失(n-pair loss)中被訓練為正樣本,而跨對的幀是負樣本。
Autonomous Goal Generation
RIG (Reinforcement learning with Imagined Goals; Nair et al., 2018) 描述了一種通過無監督的表示學習來訓練目標條件策略的方法。策略是從自我監督的實踐中學習,首先想象“假”目標,然後試圖實現它們。
任務是控制機器人手臂將桌子上的小圓盤推到期望的位置。理想的位置或目標出現在影像中。在訓練期間,它通過 β \beta β-VAE編碼器學習狀態 s s s 和目標 g g g 的潛在嵌入,並且控制策略完全在潛在空間中執行。
假設一個 β − V A E β-VAE β−VAE 有一個編碼器 q ϕ q_ϕ qϕ 對映輸入狀態到潛在變數 z z z,它由高斯分佈建模,還有一個解碼器 p ψ p_ψ pψ 對映 z z z 回到狀態。RIG中的狀態編碼器被設定為 β − V A E β-VAE β−VAE 編碼器的平均值。
z ∼ q ϕ ( z ∣ s ) = N ( z ; μ ϕ ( s ) , σ ϕ 2 ( s ) ) L β -VAE = − E z ∼ q ϕ ( z ∣ s ) [ log p ψ ( s ∣ z ) ] + β D KL ( q ϕ ( z ∣ s ) ∥ p ψ ( s ) ) e ( s ) ≜ μ ϕ ( s ) \begin{aligned} z &\sim q_\phi(z \vert s) = \mathcal{N}(z; \mu_\phi(s), \sigma^2_\phi(s)) \\ \mathcal{L}_{\beta\text{-VAE}} &= - \mathbb{E}_{z \sim q_\phi(z \vert s)} [\log p_\psi (s \vert z)] + \beta D_\text{KL}(q_\phi(z \vert s) \| p_\psi(s)) \\ e(s) &\triangleq \mu_\phi(s) \end{aligned} zLβ-VAEe(s)∼qϕ(z∣s)=N(z;μϕ(s),σϕ2(s))=−Ez∼qϕ(z∣s)[logpψ(s∣z)]+βDKL(qϕ(z∣s)∥pψ(s))≜μϕ(s)
RIG的問題是在想象的目標圖片中缺乏物件變化。如果 β β β-VAE只用一個黑色的圓盤(black puck)訓練,它就不能用不同形狀和顏色的磚塊等其他物體創造一個目標。後續改進用 CC-VAE (Context-Conditioned VAE; Nair, et al., 2019) 代替 β β β-VAE,靈感來自 CVAE (Conditional VAE; Sohn, Lee & Yan, 2015),用於目標生成。
CVAE以上下文變數 c c c 為條件。它訓練編碼器 q ϕ ( z ∣ s , c ) q_\phi(z \vert s, c) qϕ(z∣s,c) 和解碼器 p ψ ( s ∣ z , c ) p_\psi (s \vert z, c) pψ(s∣z,c),並注意兩者都可以訪問 c c c。CVAE損失懲罰從輸入狀態 s s s 通過資訊瓶頸(information bottleneck)傳遞的資訊,但允許從 c c c 到編碼器和解碼器的無限制資訊流(unrestricted information)。
L CVAE = − E z ∼ q ϕ ( z ∣ s , c ) [ log p ψ ( s ∣ z , c ) ] + β D KL ( q ϕ ( z ∣ s , c ) ∥ p ψ ( s ) ) \mathcal{L}_\text{CVAE} = - \mathbb{E}_{z \sim q_\phi(z \vert s,c)} [\log p_\psi (s \vert z, c)] + \beta D_\text{KL}(q_\phi(z \vert s, c) \| p_\psi(s)) LCVAE=−Ez∼qϕ(z∣s,c)[logpψ(s∣z,c)]+βDKL(qϕ(z∣s,c)∥pψ(s))
為了建立合理的目標(plausible goals),CC-VAE在起始狀態 s 0 s_0 s0 上設定條件,以便生成的目標呈現與 s 0 s_0 s0 中一致的物件型別。這個目標的一致性是必須的;例如,如果當前場景包含一個紅色圓盤,但目標有一個藍色塊,則它會混淆策略。
除了狀態編碼器
e
(
s
)
≜
μ
ϕ
(
s
)
e(s) \triangleq \mu_\phi(s)
e(s)≜μϕ(s) 之外,CC-VAE 訓練第二個卷積編碼器
e
0
(
.
)
e_0(.)
e0(.) 將起始狀態
s
0
s_0
s0 轉換成緊湊的上下文表示
c
=
e
0
(
s
0
)
c = e_0(s_0)
c=e0(s0)。兩個編碼器,
e
(
.
)
e(.)
e(.) 和
e
0
(
.
)
e_0(.)
e0(.),在沒有共享權重的情況下是有意不同的,因為它們被期望編碼影像變化的不同因素。除了CVAE的損失函式之外,CC-VAE增加了一個額外的項來學習將
c
c
c 重構回
s
0
s_0
s0,
s
^
0
=
d
0
(
c
)
\hat{s}_0 = d_0(c)
s^0=d0(c).
L
CC-VAE
=
L
CVAE
+
log
p
(
s
0
∣
c
)
\mathcal{L}_\text{CC-VAE} = \mathcal{L}_\text{CVAE} + \log p(s_0\vert c)
LCC-VAE=LCVAE+logp(s0∣c)
Fig. 30. Examples of imagined goals generated by CVAE that conditions on the context image (the first row), while VAE fails to capture the object consistency. (Image source: Nair, et al., 2019).
Bisimulation
與任務無關的表示(例如,旨在表示系統中所有動態的模型)可能會分散RL演算法的注意力,因為還會出現不相關的資訊。例如,如果只是訓練一個自動編碼器來重建輸入影像,就不能保證整個學習的表示對RL有用。因此,如果我們只想學習與控制相關的資訊,我們需要遠離基於重建的表示學習,因為無關的細節對於重建仍然很重要。
基於互模擬(bisimulation)的控制表徵學習並不依賴於重構(reconstruction),而是基於狀態在MDP的行為相似性對狀態進行分組。
Bisimulation (Givan et al. 2003) 是指具有相似長期行為的兩種狀態之間的等價關係。互模擬度量(Bisimulation metrics)量化了這種關係,這樣就可以聚集狀態,將高維狀態空間壓縮成更小的狀態空間,以實現更高效的計算。兩種狀態之間的互模擬距離對應於這兩種狀態在行為上的差異。
給定一個MDP
M
=
⟨
S
,
A
,
P
,
R
,
γ
⟩
\mathcal{M} = \langle \mathcal{S}, \mathcal{A}, \mathcal{P}, \mathcal{R}, \gamma \rangle
M=⟨S,A,P,R,γ⟩ 和一個互模擬關係
B
B
B,在關係
b
b
b 下相等的兩個狀態(如
s
i
B
s
j
s_i B s_j
siBsj) 應該對所有動作具有相同的立即獎勵(reward),並且在下一個雙相似狀態(bisimilar states)上具有相同的轉移概率:
R
(
s
i
,
a
)
=
R
(
s
j
,
a
)
∀
a
∈
A
P
(
G
∣
s
i
,
a
)
=
P
(
G
∣
s
j
,
a
)
∀
a
∈
A
∀
G
∈
S
B
\begin{aligned} \mathcal{R}(s_i, a) &= \mathcal{R}(s_j, a) \; \forall a \in \mathcal{A} \\ \mathcal{P}(G \vert s_i, a) &= \mathcal{P}(G \vert s_j, a) \; \forall a \in \mathcal{A} \; \forall G \in \mathcal{S}_B \end{aligned}
R(si,a)P(G∣si,a)=R(sj,a)∀a∈A=P(G∣sj,a)∀a∈A∀G∈SB
其中 S B \mathcal{S}_B SB 是關係 B B B 下狀態空間的分割槽。
注意 = 始終是一個互模擬關係(bisimulation relation)。最有趣的是最大互模擬關係
∼
\sim
∼ 定義了一個狀態組最少的
S
∼
\mathcal{S}_\sim
S∼ 劃分(partition)。
DeepMDP (Gelada, et al. 2019) 的目標類似於互模擬度量,簡化了RL任務中的高維觀察,並通過最小化兩個損失來學習潛在空間模型:
- prediction of rewards and
- prediction of the distribution over next latent states.
L R ˉ ( s , a ) = ∣ R ( s , a ) − R ˉ ( ϕ ( s ) , a ) ∣ L P ˉ ( s , a ) = D ( ϕ P ( s , a ) , P ˉ ( . ∣ ϕ ( s ) , a ) ) \begin{aligned} \mathcal{L}_{\bar{\mathcal{R}}}(s, a) = \vert \mathcal{R}(s, a) - \bar{\mathcal{R}}(\phi(s), a) \vert \\ \mathcal{L}_{\bar{\mathcal{P}}}(s, a) = D(\phi \mathcal{P}(s, a), \bar{\mathcal{P}}(. \vert \phi(s), a)) \end{aligned} LRˉ(s,a)=∣R(s,a)−Rˉ(ϕ(s),a)∣LPˉ(s,a)=D(ϕP(s,a),Pˉ(.∣ϕ(s),a))
其中 ϕ ( s ) ϕ(s) ϕ(s) 是狀態 s s s 的嵌入;帶上橫線(bar)符號的表示在同一MDP中但在潛在的低維觀測空間中執行的函式(獎勵函式 R R R 和轉移函式 P P P)。這裡,嵌入表示 ϕ ϕ ϕ 可以連線到互模擬度量(bisimulation metrics),因為互模擬距離被證明是潛在空間中L2距離的上限。
函式
D
D
D 量化了兩個概率分佈之間的距離,應該謹慎選擇。DeepMDP側重於 Wasserstein-1 metric (也稱為 earth-mover distance)。度量空間
(
M
,
d
)
(M,d)
(M,d) (如
d
:
M
×
M
→
R
d: M \times M \to \mathbb{R}
d:M×M→R)上分佈
P
P
P 和
Q
Q
Q 之間的 Wasserstein-1 距離為:
W
d
(
P
,
Q
)
=
inf
λ
∈
Π
(
P
,
Q
)
∫
M
×
M
d
(
x
,
y
)
λ
(
x
,
y
)
d
x
d
y
W_d (P, Q) = \inf_{\lambda \in \Pi(P, Q)} \int_{M \times M} d(x, y) \lambda(x, y) \; \mathrm{d}x \mathrm{d}y
Wd(P,Q)=λ∈Π(P,Q)inf∫M×Md(x,y)λ(x,y)dxdy
其中 π ( P , Q ) π(P,Q) π(P,Q) 是 P P P 和 Q Q Q 的所有耦合(couplings)的集合。 d ( x , y ) d(x, y) d(x,y) 定義了將粒子從點 x x x 移動到點 y y y 的成本。
根據Monge-Kantorovich對偶性,Wasserstein度量具有對偶形式:
W
d
(
P
,
Q
)
=
sup
f
∈
F
d
∣
E
x
∼
P
f
(
x
)
−
E
y
∼
Q
f
(
y
)
∣
W_d (P, Q) = \sup_{f \in \mathcal{F}_d} \vert \mathbb{E}_{x \sim P} f(x) - \mathbb{E}_{y \sim Q} f(y) \vert
Wd(P,Q)=f∈Fdsup∣Ex∼Pf(x)−Ey∼Qf(y)∣
其中
F
d
\mathcal{F}_d
Fd 是指標
d
d
d 下的1-Lipschitz函式:
F
d
=
{
f
:
∣
f
(
x
)
−
f
(
y
)
∣
≤
d
(
x
,
y
)
}
\mathcal{F}_d = \{ f: \vert f(x) - f(y) \vert \leq d(x, y) \}
Fd={f:∣f(x)−f(y)∣≤d(x,y)}
DeepMDP將該模型推廣到範數最大均值偏差 (Norm Maximum Mean Discrepancy,Norm-MMD) 度量,以提高其深度值函式邊界的緊密性,同時節省計算量(Wasserstein計算量很大)。在他們的實驗中,發現過渡(transition )預測模型的模型架構對效能有很大的影響。當訓練無模型的RL代理時,將這些DeepMDP損失作為輔助損失增加,導致大多數Atari遊戲的良好改進。
Deep Bisimulatioin for Control (short for DBC; Zhang et al. 2020) 在沒有領域知識或畫素級重構的情況下,學習對RL任務的控制有益的觀測的潛在表示。
Fig. 32. The Deep Bisimulation for Control algorithm learns a bisimulation metric representation via learning a reward model and a dynamics model. The model architecture is a siamese network. (Image source: Zhang et al. 2020)
類似於DeepMDP,DBC通過學習一個獎勵模型和一個過渡模型來建立動態模型。這兩種模式都在ϕ(s).這個潛在的空間運作嵌入ϕ的優化取決於 Ferns, et al. 2004 (Theorem 4.5) 和 Ferns, et al 2011 (Theorem 2.6) 的一個重要結論:
給定一個折扣因子(discounting factor)
c
∈
(
0
,
1
)
c \in (0, 1)
c∈(0,1),
π
π
π 是一個不斷改進的策略,
M
M
M 是狀態空間
S
S
S 上有界偽度量(pseudometric)的空間,我們可以定義
F
:
M
↦
M
\mathcal{F}: M \mapsto M
F:M↦M:
F
(
d
;
π
)
(
s
i
,
s
j
)
=
(
1
−
c
)
∣
R
s
i
π
−
R
s
j
π
∣
+
c
W
d
(
P
s
i
π
,
P
s
j
π
)
\mathcal{F}(d; \pi)(s_i, s_j) = (1-c) \vert \mathcal{R}_{s_i}^\pi - \mathcal{R}_{s_j}^\pi \vert + c W_d (\mathcal{P}_{s_i}^\pi, \mathcal{P}_{s_j}^\pi)
F(d;π)(si,sj)=(1−c)∣Rsiπ−Rsjπ∣+cWd(Psiπ,Psjπ)
當
F
\mathcal{F}
F 有一個唯一的不動點
d
~
\tilde{d}
d~ 時,它是一個
π
∗
π*
π∗-雙模擬度量,並且
d
~
(
s
i
,
s
j
)
=
0
⟺
s
i
∼
s
j
\tilde{d}(s_i, s_j) = 0 \iff s_i \sim s_j
d~(si,sj)=0⟺si∼sj。
給定批次的觀測值對,的訓練損失
ϕ
ϕ
ϕ,
J
(
ϕ
)
J(\phi)
J(ϕ),最小化策略上的互模擬度量和潛在空間中的歐幾里德距離之間的均方誤差:
J
(
ϕ
)
=
(
∥
ϕ
(
s
i
)
−
ϕ
(
s
j
)
∥
1
−
∣
R
^
(
ϕ
ˉ
(
s
i
)
)
−
R
^
(
ϕ
ˉ
(
s
j
)
)
∣
−
γ
W
2
(
P
^
(
⋅
∣
ϕ
ˉ
(
s
i
)
,
π
ˉ
(
ϕ
ˉ
(
s
i
)
)
)
,
P
^
(
⋅
∣
ϕ
ˉ
(
s
j
)
,
π
ˉ
(
ϕ
ˉ
(
s
j
)
)
)
)
)
2
J(\phi) = \Big( \|\phi(s_i) - \phi(s_j)\|_1 - \vert \hat{\mathcal{R}}(\bar{\phi}(s_i)) - \hat{\mathcal{R}}(\bar{\phi}(s_j)) \vert - \gamma W_2(\hat{\mathcal{P}}(\cdot \vert \bar{\phi}(s_i), \bar{\pi}(\bar{\phi}(s_i))), \hat{\mathcal{P}}(\cdot \vert \bar{\phi}(s_j), \bar{\pi}(\bar{\phi}(s_j)))) \Big)^2
J(ϕ)=(∥ϕ(si)−ϕ(sj)∥1−∣R^(ϕˉ(si))−R^(ϕˉ(sj))∣−γW2(P^(⋅∣ϕˉ(si),πˉ(ϕˉ(si))),P^(⋅∣ϕˉ(sj),πˉ(ϕˉ(sj)))))2
其中 ϕ ˉ ( s ) \bar{\phi}(s) ϕˉ(s) 表示帶有停止梯度的 ϕ ( s ) \phi(s) ϕ(s), π ˉ \bar{\pi} πˉ 是平均策略輸出。學習的獎勵模型 R ^ \hat{\mathcal{R}} R^ 是確定性的,學習的前向動力學模型 P ^ \hat{\mathcal{P}} P^ 輸出高斯分佈。
DBC基於SAC,但在潛在空間上執行:
Cited as:
@article{weng2019selfsup,
title = “Self-Supervised Representation Learning”,
author = “Weng, Lilian”,
journal = “lilianweng.github.io/lil-log”,
year = “2019”,
url = “https://lilianweng.github.io/lil-log/2019/11/10/self-supervised-learning.html”
}
相關文章
- 自監督學習
- 一圖看懂監督學習、無監督學習和半監督學習
- 機器學習——監督學習&無監督學習機器學習
- 監督學習
- 基於自編碼器的表徵學習:如何攻克半監督和無監督學習?
- 【機器學習】李宏毅——自監督式學習機器學習
- Hinton新作!越大的自監督模型,半監督學習需要的標籤越少模型
- 機器學習:監督學習機器學習
- 【ML吳恩達】3 有監督學習和無監督學習吳恩達
- 003.00 監督式學習
- 監督學習,無監督學習常用演算法集合總結,引用scikit-learn庫(監督篇)演算法
- 監督學習or無監督學習?這個問題必須搞清楚
- 自監督、半監督和有監督全涵蓋,四篇論文遍歷對比學習的研究進展
- 監督學習基礎概念
- 監督學習之迴歸
- 有監督學習——梯度下降梯度
- 吳恩達《Machine Learning》精煉筆記 1:監督學習與非監督學習吳恩達Mac筆記
- 監督學習之支援向量機
- 無監督學習之降維
- 非監督學習最強攻略
- 有監督學習——高斯過程
- 雙目深度估計中的自監督學習概覽
- Facebook AI 108頁ppt 講述自監督學習在最新AI
- 監督學習之高斯判別分析
- 【半監督學習】MixMatch、UDA、ReMixMatch、FixMatchREM
- 有監督學習——線性迴歸
- 機器學習--有監督學習--演算法整理機器學習演算法
- 【機器學習基礎】無監督學習(1)——PCA機器學習PCA
- 【機器學習基礎】半監督學習簡介機器學習
- 【機器學習基礎】無監督學習(3)——AutoEncoder機器學習
- AAAI 2020 | 基於多工自監督學習的文字順滑研究AI
- 監督學習之樸素貝葉斯
- 當前最好的詞句嵌入技術概覽:從無監督學習轉向監督、多工學習
- 機器學習7-模型儲存&無監督學習機器學習模型
- 弱監督學習在醫學影像中的探索
- NeurIPS 2022:基於語義聚合的對比式自監督學習方法
- 【深度】監督學習—從好的label開始
- 無監督學習才不是“不要你管”