This paper introduces a generic framework to train deep networks, end-to-end, with no supervision.
这篇论文主要围绕以下公式展开,
参数含义如下:
- n: 样本数
- l: Loss函数
- fθ: 深度网络
- yi: 目标表示
- xi: 输入图像
在有监督框架下,yi代表label信息,上述目标函数的目的是“使得深度网络的输出与目标表示尽可能接近”。据此,我们可以通过误差方向传播算法更新θ值。
在无监督框架下,我们没有label信息。如果以某种方式指定目标表示yi,我们就可以无缝的利用有监督框架的所有tricks了。这应该是这篇paper追求的一个目标之一。
下面的一个问题就是如何选择目标表示yi,以及这样选择的约束是什么?
在回答这个问题之前,我们得选择一个Loss函数(毕竟不能总是用一个抽象的l表示)
X,Y是矩阵化的xi、yi,这个loss函数的好处“Using a squared l2 distance works well in many supervised settings, as long as the final activations are unit normalized. This loss only requires access to a single target per sample, making its computation independent of the number of targets”,主要是为了后续能够采用Batch SGD训练深度网络。
C包含k个目标表示(k>n),P是一个选择矩阵,Y=PC的含义就是“从k个表示中选择n个”(如果对公式细节比较较真,请参考论文)。当然了,我们不能乱选择一通了,因此就有了下面对选择矩阵P的约束:
这个约束很好理解,用原文的话说就是“Each image is assigned to a different target and each target can only be assigned once”.
这k个目标表示,我们就从单位球(因为“the final activations are unit normalized”)上随机抽取好了。下图以图像化的语言示意了上述过程
用数学公式的形式表示上述过程就是
为啥由F范数变为了Tr(迹)呢?它们是等级的,个人觉得Tr表示有很多现成的求导公式可用,比较适合我这数学功底比较薄弱的工科男。
下面的问题就是,怎么优化(5)呢?它是不是能够利用标准的Batch SGD呢?先看算法的流程图,再解释流程图的内涵!
这个流程图有三个特点:采用了Batch、优化P,优化θ。作者令k=n(这样就不用考虑剩余的k-n unassigned representations),每次优化P的一个子矩阵(示意图深灰色方块),剩下的就是采用标准流程更新深度网络的参数θ了。
总结:
- 将优化过程分为两步,“一步常规优化、一步标准Batch SGD优化”给我很大启发。
- 从函数影射的角度表示深度网络,简单、清晰、易懂。
- 这应该属于"基于Image的无监督"范式。
- 没有类内、类间的一个区分,这样学习到的特征可能discriminative能力有限。