在監督學習領域, 深度神經網路在許多任務中已經取得了先進水平, 因此將其引入半監督學習, 并結合 Co-Training 思想, 用于處理半監督影像分類問題.
論文地址: Deep Co-Training for Semi-SupervisedImage Recognition
代碼地址: https://github.com/AlanChou/Deep-Co-Training-for-Semi-Supervised-Image-Recognition
會議: ECCV 2018
任務: 分類
Co-Training 假設
D
=
S
∪
U
\mathcal{D}=\mathcal{S} \cup \mathcal{U}
D=S∪U 中的每個資料
x
x
x 有兩個視圖, 即
x
=
(
v
1
,
v
2
)
x = (v_1, v_2)
x=(v1?,v2?), 每個視圖
v
i
v_i
vi? 都足以學習一個有效的模型. 其中
S
\mathcal{S}
S,
U
\mathcal{U}
U 分別表示標記資料集和未標記資料集. 給定
D
\mathcal{D}
D 的分布
X
\mathcal{X}
X, Co-Training 假設表示如下:
f
(
x
)
=
f
1
(
v
1
)
=
f
2
(
v
2
)
,
?
x
=
(
v
1
,
v
2
)
~
X
f(x)=f_1(v_1)=f_2(v_2),\forall x=(v_1,v_2) \sim\mathcal{X}
f(x)=f1?(v1?)=f2?(v2?),?x=(v1?,v2?)~X
即對于在每個視圖
v
i
v_i
vi? 上訓練的模型
f
i
f_i
fi?, 都有一致的輸出, 每個模型都能做出正確的預測. 在給定類標簽的情況下, 兩個視圖條件獨立. 基于這個假設, Co-Training 訓練簡述如下: 首先為
S
\mathcal{S}
S 上的每個視圖學習一個單獨的分類器, 然后將兩個分類器對
U
\mathcal{U}
U 的預測逐漸加到
S
\mathcal{S}
S 上繼續進行訓練.
將 Co-Training 擴展到深度神經網路中, 一個簡單的辦法是在 D \mathcal{D} D 上訓練兩個神經網路, 但是這種方法有兩個嚴重的缺點:
- 不能保證兩個網路的視圖是不同和互補的.
- 協同訓練會使得兩個網路在訓練程序中趨于一致, 即 collapsed neural networks 現象.
基于此, 提出 Deep Co-Training(DCT), 通過最小化兩個網路在 U \mathcal{U} U 上的預測之間的 JS 散度來模擬 Co-Training 假設. 為了避免 collapsed neural networks, 通過訓練對抗樣本來施加視圖差異約束(View Di?erence Constraint).
Deep Co-Training 演算法
Co-Training Assumption in DCT
在 DCT 中,
v
1
(
x
)
v_1(x)
v1?(x) 和
v
2
(
x
)
v_2(x)
v2?(x) 是
x
x
x 在最終全連接層
f
i
(
?
)
f_i(·)
fi?(?) 之前的卷積表示. 在標記資料集
S
\mathcal{S}
S 上的標準交叉熵損失函式定義為:
L
s
u
p
(
x
,
y
)
=
H
(
y
,
f
1
(
v
1
(
x
)
)
)
+
H
(
y
,
f
2
(
v
2
(
x
)
)
)
\mathcal{L}_{\mathrm{sup}}(x,y)=H(y,f_1(v_1(x)))+H(y,f_2(v_2(x)))
Lsup?(x,y)=H(y,f1?(v1?(x)))+H(y,f2?(v2?(x)))
其中
H
(
p
,
q
)
H(p,q)
H(p,q) 表示交叉熵. 而對于未標記資料集
U
\mathcal{U}
U, 基于 Co-Training 假設, 期望
f
1
(
v
1
(
x
)
)
f_1(v_1(x))
f1?(v1?(x)) 和
f
2
(
v
2
(
x
)
)
f_2(v_2(x))
f2?(v2?(x)) 有相似的預測, 使用 JS 散度來進行
f
1
(
v
1
(
x
)
)
f_1(v_1(x))
f1?(v1?(x)) 和
f
2
(
v
2
(
x
)
)
f_2(v_2(x))
f2?(v2?(x)) 之間的相似性度量, 損失函式定義如下:
L
c
o
t
(
x
)
=
H
(
1
2
(
f
1
(
v
1
(
x
)
)
+
f
2
(
v
2
(
x
)
)
)
)
?
1
2
(
H
(
f
1
(
v
1
(
x
)
)
)
+
H
(
f
2
(
v
2
(
x
)
)
)
)
\mathcal{L}_{\mathrm{cot}}(x)=H(\frac{1}{2}(f_1(v_1(x))+f_2(v_2(x))))-\frac{1}{2}(H(f_1(v_1(x)))+H(f_2(v_2(x))))
Lcot?(x)=H(21?(f1?(v1?(x))+f2?(v2?(x))))?21?(H(f1?(v1?(x)))+H(f2?(v2?(x))))
其中
H
(
p
)
H(p)
H(p) 表示
p
p
p 的熵.
View Di?erence Constraint in DCT
利用 g ( x ) g(x) g(x) 從 D \mathcal{D} D 中生成對抗樣本資料集 D ′ \mathcal{D}' D′, 在 D ′ \mathcal{D}' D′ 中 f 1 ( v 1 ( g ( x ) ) ) ≠ f 2 ( v 2 ( g ( x ) ) ) f_1(v_1(g(x))) \neq f_2(v_2(g(x))) f1?(v1?(g(x)))?=f2?(v2?(g(x))). 希望 g ( x ) g(x) g(x) 與 x x x 之間足夠小, 以便于對抗樣本還能保持自然的影像特征. 不過當 g ( x ) ? x g(x)-x g(x)?x 很小時, 有很大概率會出現 f 1 ( v 1 ( g ( x ) ) = f 1 ( v 1 ( x ) ) f_1(v_1(g(x))=f_1(v_1(x)) f1?(v1?(g(x))=f1?(v1?(x)) 和 f 2 ( v 2 ( g ( x ) ) = f 2 ( v 2 ( x ) ) f_2(v_2(g(x))=f_2(v_2(x)) f2?(v2?(g(x))=f2?(v2?(x)), 這就與我們的想法違背. 即希望當 f 1 ( v 1 ( g ( x ) ) = f 1 ( v 1 ( x ) ) f_1(v_1(g(x))=f_1(v_1(x)) f1?(v1?(g(x))=f1?(v1?(x)) 出現時, 需滿足 f 2 ( v 2 ( g ( x ) ) ≠ f 2 ( v 2 ( x ) ) f_2(v_2(g(x))\neq f_2(v_2(x)) f2?(v2?(g(x))?=f2?(v2?(x)).
通過交叉熵來訓練網路
f
1
f_1
f1?,
f
2
f_2
f2?, 使得可以抵抗相互的對抗示例:
L
d
i
f
(
x
)
=
H
(
f
1
(
v
1
(
x
)
)
,
f
2
(
v
2
(
g
1
(
x
)
)
)
)
+
H
(
f
1
(
v
1
(
g
2
(
x
)
)
)
,
f
2
(
v
2
(
x
)
)
)
\mathcal{L}_{\mathrm{dif}}(x)=H(f_1(v_1(x)), f_2(v_2(g_1(x))))+H(f_1(v_1(g_2(x))), f_2(v_2(x)))
Ldif?(x)=H(f1?(v1?(x)),f2?(v2?(g1?(x))))+H(f1?(v1?(g2?(x))),f2?(v2?(x)))
其他文獻中, 使用對抗技術可以作為正則化技術來平滑輸出, 如 VAT. 或者創建負示例來收緊決策邊界.
最終的損失函式定義為:
L
=
E
(
x
,
y
)
∈
S
L
s
u
p
(
x
,
y
)
+
λ
c
o
t
E
x
∈
U
L
c
o
t
(
x
)
+
λ
d
i
f
E
x
∈
D
L
d
i
f
(
x
)
\mathcal{L}=\mathbb{E}_{(x,y)\in\mathcal{S}}\mathcal{L}_{\mathrm{sup}}(x,y)+\lambda_{\mathrm{cot}}\mathbb{E}_{x\in\mathcal{U}}\mathcal{L}_{\mathrm{cot}}(x)+\lambda_{\mathrm{dif}}\mathbb{E}_{x\in\mathcal{D}}\mathcal{L}_{\mathrm{dif}}(x)
L=E(x,y)∈S?Lsup?(x,y)+λcot?Ex∈U?Lcot?(x)+λdif?Ex∈D?Ldif?(x)
DCT 訓練迭代程序

在 DCT 訓練回圈的每次迭代中, 兩個神經網路
p
1
p_1
p1?,
p
2
p_2
p2? 接收不同的標記資料
(
x
b
1
,
y
b
1
)
(x_{b_1},y_{b_1})
(xb1??,yb1??),
(
x
b
2
,
y
b
2
)
(x_{b_2},y_{b_2})
(xb2??,yb2??). 通過 FGSM 分別生成對抗樣本
g
1
(
x
b
1
∪
x
u
)
g_1(x_{b_1} \cup x_u)
g1?(xb1??∪xu?),
g
2
(
x
b
2
∪
x
u
)
g_2(x_{b_2} \cup x_u)
g2?(xb2??∪xu?). 使用梯度下降計算
L
\mathcal{L}
L, 并更新
p
1
p_1
p1?,
p
2
p_2
p2? 的引數.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/429287.html
標籤:AI
上一篇:推薦演算法架構1:召回
