前几周,我针对一篇题为《Unsupervised Learning by Predicting Noise》的论文写了自己的解读和看法。在文章中,我提到了解读这一方法的另一个角度——信息最大化,即寻找有限熵数据的非线性表征,同时最大限度地保留输入的信息。
在那篇文章中,我简单地提了一下“Exemplar-CNNs”的方法。这一方法也能被理解为“卷积神经网络范例”。我是从下面这篇论文中了解到这样的解决方法的:
在此之前我从没见过“范例”与“卷积神经网络”的组合,所以我认为这可能是论文所做的的“首创”。
本文对“范例卷积神经网络”的训练方法仅作了简单简单的概述,所以如果想要获得更多、更真实的信息,请阅读论文原文。
本文简要介绍了“变分信息最大化”,并将其运用到了“范例卷积神经网络”的案例中。
我们在案例中只使用了一个数量适中的训练图像集,“范例卷积神经网络”恰恰利用了这一点,把数据分布表示为一个经验分布(离散有限可能性的分布)。
假设我们离散了分布,使之变得不连续,那么“范例卷积神经网络”就能够被推导成为“种子图像”和其表征之间的互信息的一个下界。
在前面提到的论文中,Dosovistkiy等人采用的方法其实很简单。从一个未经标记的数据库中取出适量有趣的图像,把这些图像称为“种子图像”或者是“范例”。你需要对每一个图像进行各种各样的转换,你可以更改“种子图像”的颜色,或者把它旋转至不同的方向。而这些转换后的图像集合就是一个“代理图像集”。下图就是对一只鹿的“种子图像”进行各种转换之后得到的图像集:
每一张范例图像都需要经过转换,形成一个“代理图像集”。所以,你有多少张“种子图像”,就会有多少个“代理图像集”。完成以后,你就能开始一个卷积网络的训练了。你需要让它通过一张转换后的图像,推测其“种子图像”的各项指数。所以,如果你有8000个“种子图像”,你就要解决8000个图像分类的问题。那么相应地,你的卷积网络也就具备了8000维度的分类功能。
当然了,“种子图像”数量越多,网络训练的难度就越大,到最后网络掌握的分类功能的维度也就越高。论文的作者们表示,8000个“种子图像”尚在网络分类功能可处理的范围以内,而且这8000个图像的训练就已足够让我们达到比较理想的效果了。
下面我想补充的是——我们在“范例卷积神经网络”中建立的“马尔科夫链”的图像模型视图。
“信息最大化”可以依据信息测量变量的不同,采取不同的方式来进行表征学习。为了进一步了解“范例卷积神经网络”,我们的角度来看下图的“马尔科夫链”:
上图中的X表示“种子图像”,Tαx表示转换后的图像(随机抽样变换参数α),Z=g(Tαx;Θ)表示采用了随机图像并计算了其表征的一个映射。所以,从Tαx到的Z箭头事实上是一个确定性映射。
如果我们把z看作是x的表征,那么实现“互信息”║[X,Z]的最大化就是有意义的。这个“互信息”有一个下界,这个下界就是标准的“变分下限”。
“范例卷积神经网络”的特别之处就在于,它利用了“分布Px其实就是N观测值的一个经验分布”这一事实。这是当我们推导一个损失函数时,通常被我们否定的一种情况,只有在最后才能代替经验分布,构造一个无偏估计值。这里,我们非常大程度上是依靠这样一个事实——我们只有N观测值,而且N与数据维度D相比较小。用N来模拟离散分布,比模拟图像分布要简单得多。
如果我们有N的“种子图像”Xn,那么我们就可以勉强用X来表示下面的经验分布:
假如Z的分布被稍稍地离散了,那么赋予Z的情境也会被离散,只是离散的比例不同。
因此,在这种情况下,一个仅根据不同比例离散分布的变分集合Q就变得很必要了:
(Z,W)灵活地任意变化,变分集合Q就能意识到其后部内容,而我们对“互信息”的限制就会比较严格。使用上面对qΘ的定义,我们大家可以把下界表达为:
从x能够获得其表征z,使用其中的原理,我们大家可以依据转换参数α的期望值,写出以下表达式:
表达式左边的部分看上去很像是“范例卷积神经网络”学习的“N式”分类问题:我们大家可以把其中的πn看作是“N式”的分类器,这个分类器需要一张任意转换过的图像,然后估测出“代理集合”n。上面的方程式事实上是这个分类器的“损失函数”。
为获得真正的“范例卷积神经网络”方程式,我们应该做的最后一件事是进一步限制Q。因此,我们只可以让离散比例π符合以下的逻辑回归式:
如果我们把这些值重新代入之前得出的方程式,那么我们就会得到论文中提到的“多项损失函数”(与论文中的方程式5相对比):
因此,我们已证明了“范例卷积神经网络”来优化的目标函数,其实就是限制“种子图像”和转换后图像的表征g(Tαx)间的“互信息”的一个下界。
“互信息”的下界限制其实可能并不那么的严格,因为π(z,Θ)仅受限于线性分类器。但是如果我们决心严格限制互信息,那么这个下界是完全可能更加严格的。确实,如果我们不考虑最后一层g,而是把一些中间的隐藏层视作表征,把上面的一些层视作是q的一部分,那么这个所谓的下界限制就仍然是有效的,而且中间层的限制就会更严格。
那些非宽松的界限并不一定就是故障所在,相反,它可能还是一个特色。仅考虑q的逻辑回归模型,其实就是一个比信息优化更严格的目标函数。就像我之前经常提到的,“互信息”本身对表征的可逆再参量化并不敏感,因此它不能自己找到已还原了的表征。所以,仅考虑下界的问题可能更适用于这个案例。你不仅需要用z来保留关于x的信息,还需要一个线性可辨性的格式,如果你之后想要把表征用于线性分类器的话,那么这个线性可辨性就是一个相当有用的属性。
最后,一个这样的问题出现了——到底什么样的函数或映射应该被用作表征呢?关于这一个问题,你有三个选项:
作者是把g(x,Θ)的层用作表征本身的。这在我看来是有些难以理解的,因为这个函数从未经过一个真实图像补丁的训练,它只受过转换过的图像补丁Tαx的训练。我认为作者这一做法的原因是,尽管受到种子补丁的训练较少,但是这个函数已经经过大量转换过的图像的训练,所以它是完全有能力成为表征的。作者还提出,最后一层最终将会被训练得越来越不容易受转换图像的影响。
你可以使用一个随机表征g(Tαx,Θ),但是过不久这个表征就会显得很累赘,不好处理。因为你必须每次都抽样检查α,对它做评估,并且整合α上面建立的所有表征。
最后,就像我在前面说的,你可以把g的中间层当作表征,而不是最后一层。你还是可以训练那些中间层,让他们实现信息最大化,事实上那些中间层的界限还更严格一些。其实作者也是这样做的:他们集合了各个层的特征,然后考虑了所有中间层之上的一个线性SVM。
“范例卷积神经网络”是“自监督学习”的一个绝佳例子。采用一个未经标记的数据库,并在此之上建立一个代理的监督式学习任务来帮助表征学习。像我在本文中说的,“范例卷积神经网络”还能被理解为——寻找一个信息最大化的表征。
相对简单的用于变分界限的变分分布可能是个非常有益的东西,而设立严格的界限可能反而会让事情变得更糟。谁知道呢?但是在这个框架内建立“范例卷积神经网络”,确实让我们更好地理解了其工作原理。