待解决的问题
事实证明我们的大脑是不存在端对端的反向传播,也没有一个通过大脑的错误信号优化全局目标目标的步骤,也没有太多的带标签的数据供我们训练。本篇论文的主要目的就是寻找一种能够有效训练未标记数据集的新方法,
解决方法
方法的基础概念就是 “慢特征”:
慢特征:慢特征是指数据特征图的单元与其相邻单元之间固有的相似性。 与特征表示的任意随机部分相比,这些特征与其附近的特征具有相似的属性。例如,NLP中,几毫秒的语音发生和邻近的发声共享信息;又比如图像中的一个特定对象所包含的所有元素在纹理、颜色、照明和渐变等方面都表现出了局部相似性。
CPC 算法
该算法是一种自监督的,用于提取有用 representations 的学习算法。
该算法的主要原理:已知当前数据块的表示的情况下,学习数据块中的下一个序列的相似性。
算法步骤
- 使用一个深度模型 g e n c ( x t ) = z t g_{enc}(x_t)=z_t genc(xt)=zt 对输入数据 x t x_t xt 进行编码。
- 利用自回归函数 g a r ( z 0 : t ) = c t g_{ar}(z_{0:t})=c_t gar(z0:t)=ct 表示从 0 到时刻 t 的有用信息(即 representation )。
- 通过特殊的损失函数,最大化 c t c_t ct 和 z t + k z_{t+k} zt+k 之间的互信息.(尝试所有 k 的取值,寻找相似性最高的 k 值)。
损失和训练过程
上面提到的特殊损失为 Noise Contrastive Estimation (NCE) 损失。
将模型输入记作
X
=
{
z
t
+
k
,
z
j
1
,
z
j
2
,
.
.
.
,
z
j
N
−
1
}
X = \{z_{t+k},z_{j_1},z_{j_2},...,z_{j_{N-1}}\}
X={zt+k,zj1,zj2,...,zjN−1} ,其中
z
t
+
k
z_{t+k}
zt+k 是正样本,其他 N-1 个
z
j
z_j
zj 编码 为随机从
z
t
z_t
zt 中选出来的 N-1 个编码。
该损失函数将
(
c
t
,
z
j
)
(c_t,z_j)
(ct,zj) 成对输入,具体形式如下:
其中
f
(
⋅
)
f(\cdot)
f(⋅) 函数用于预测任意
z
j
z_j
zj 为正样本(
z
t
+
k
z_{t+k}
zt+k) 的概率,这里取 log 对数函数,如下:
f
k
(
z
j
,
c
t
)
=
e
x
p
(
z
j
T
W
k
c
t
)
f_k(z_j,c_t)=exp(z_j^TW_kc_t)
fk(zj,ct)=exp(zjTWkct)
通过该损失函数来优化编码模型 g e n c g_{enc} genc 和自回归模型 g a r g_{ar} gar,以提取相邻数据块之间报纸一直但在随机数据块之间保持发散的特征。同时这个打分模型将使用该功能对匹配対进行正确分类。
Greedy InfoMax (GIM)
在 CPC 算法的基础上,本文对模型的结构进行了修改,引入了一种用于自监督的学习算法:infoMax(GIM)。
如图:
左图展示了,采用传统机器学习框架将其分为 M 个模块,梯度只在模块内流动,没有梯度在模块间流动。采用局部自监督损失,进而减少梯度的消失问题。
右图描绘了从时间戳 “t” 到 “t+k”再到 “j” 的所有编码。每个编码模型都会将它的输入
z
t
m
−
1
z_t^{m-1}
ztm−1 映射为
g
e
n
c
m
(
G
r
a
d
i
e
n
t
B
l
o
c
k
(
z
t
m
−
1
)
)
=
z
t
m
g_{enc}^m(GradientBlock(z_t^{m-1}))=z_t^m
gencm(GradientBlock(ztm−1))=ztm。这里的
z
t
m
z_t^m
ztm 将会被当做下一个模块的输入。
通过计算预测值
z
t
+
k
m
z_{t+k}^m
zt+km 和负样本
z
j
m
z_j^m
zjm 来计算 NCE 损失,对该损失进行梯度下降,进而使模块最大程度的保留输入信息。
方法的优点
- Greedy InfoMax 算法在音频和图像上表现良好。
- 由于神经网络的异步与独立,我们可以解耦训练,从而训练出任意深度的神经网络。
- 互信息的最大化可以减少梯度消失的问题。
实验
基于STL-10的无监督视觉分类
数据预处理
- 从 96 × 96 96\times 96 96×96的图片中随机剪切 64 × 64 64\times64 64×64 的图像,然后将其进行翻转,灰度化等数据增强
- 将每个 64 × 64 64\times64 64×64 图像,划分为 7 个局部色块,每个色块大小 16 ∗ 16 16*16 16∗16(重叠 8 个像素)。
- 选择 ResNet-50-V2 作为编码模型。
- 将模型分成三个梯度隔离的模块,每个模块同步训练,学习率恒定