1. 摘要
在本文中,我们提出了一种简单有效的方法,用于在半监督环境中训练深度神经网络,其中只有一小部分训练数据被标记。我们引入了自集成
,我们使用网络在不同时期的训练输出形成对未知标签的共识预测,最重要的是,在不同的正则化和输入增强条件下。与最近训练时期的网络输出相比,这种集成预测可以预期是对未知标签更好的预测器,因此可以用作训练的目标。
Notice:
文章开门见山的表示这个是半监督深度神经网络中的方法。主要的贡献是提出对于模型扰动
的思路,提出了两个模型,
Π
\mathbf{\Pi}
Π model, Temporal ensembling。
2. 算法描述
2.1. Π \mathbf{\Pi} Π model
通过论文中的流程图和伪代码,我们可以非常清晰的了解算法的大概流程。其中的一些小细节,可能需要在复现的时候才会发现,这里的话,就把自己的几个疑问记录一下,后面有回看的话再精读以解答。
Q1:
论文中表述文中提出的模型深度依赖Input Augment
和Dropout
,在
Π
\Pi
Π Model 中扰动模型与未扰动模型的Input Augment
是否一致。
Q2:
伪代码损失中的有监督损失与无监督损失的参数为什么相差一个
C
C
C,其中
C
C
C表示数据标签的数量。
2.2. Temporal ensembling
读后感:
首先就是论文描述的很清楚呀,只用看伪代码就能很清楚的理解算法大概的流程。其次就是与
Π
\Pi
Π model相比,Temporal ensembling的无监督损失是建立在模型前一个epoch的输出与当前输出的误差。文中指出,Temporal ensembling会比
Π
\Pi
Π model更快,原因是Temporal ensembling每个batch只用进行一个前向运算,而
Π
\Pi
Π model要进行两次前向运算。其实这里速度更快的本质是空间换时间
,与缓存相似。
TODO:
论文中有一些地方的trick作者没有解释,应该默认大家都知道的知识,但是我并不知道,可以去了解一下。比如说:
Z
←
α
Z
+
(
1
−
α
)
z
(1)
Z \leftarrow \alpha Z + (1-\alpha)z \tag{1}
Z←αZ+(1−α)z(1)
z
~
←
Z
/
(
1
−
α
t
)
(2)
\tilde{z} \leftarrow Z/(1-\alpha^{t}) \tag{2}
z~←Z/(1−αt)(2)。