有关模型泛化性能的一些民科想法

Link:

放Dropbox里面好长时间了,估计也憋不出来什么了,毕竟都是民科想法。

一般模型的泛化性能相比人类来说实在是差了太远,比如人类可以用一张猫图片的训练量做到基本对所有猫在 3D 环境中不同角度的准确分类,而且即使遇到老虎这种东西也可以先分类为大猫,从分类上来看倒也没错,虽然在没有接触狗之前可能还会认为狗也是猫。如此可以通过反思自己来考虑如何利用少量图片获得泛化能力较强模型的脑洞。

识别主要特征的能力&压制不重要特征的能力

大脑似乎具备可以在很少量的数据中获得主要特征的能力,虽然这个应该是结合先验知识获得的。一张对比照片就足够让我们在区分猫狗的任务上获得一个很好的成绩,一眼就可以抓住两者的主要特征,尤其是“形状”这个相对来说更加抽象的特征。似乎我们对利用纹理和色彩这些具体的特征优先级相对更低。可以快速扫一眼一个物体的照片再回忆,往往色彩是我们不怎么关心的。

是否可以增加类似这样一个强力的约束来增加网络的泛化能力?第一个反应就是 Maxout 的方法,这是一个非常经典的只关注主要特征的方法。Conv + ReLU 同样也加入了这样的约束。

如此来看稀疏性的约束似乎是获得主要特征能力的一种方式。不过稀疏性似乎只是增加泛化性带来的结果,而不是目的。虽然我们识别图片目标时只用了少量的几个主要特征,但是我们对目标的概念不是稀疏的,如果换成网络的话,就是底层网络获得稀疏的特征,但是高层网络的概念学习则不是稀疏的。所以,我想稀疏性不应该是单纯的网络追求的目标。

在视觉中提出物体/识别主体的能力

在拍照中,往往会强调主体。说明正常人对图片的观察过程是一个注意力分配的过程,一张图片需要可以放置目光(注意力)的位置。所以这个一个首先识别图片主体之后再具体识别主体内容的过程,或者说,是一个印象->具象的过程。现在神经网络的视觉的注意力机制似乎还是基于直接的图像来处理(视觉的注意力机制论文我只略读过两篇),这样似乎不是一个印象的过程。印象应该是更加粗糙、低分辨率(或者说是感性)的过程。

所以或许可以利用一个类似人类的注意力机制,提取出图片的主体,在此基础上再进行训练。当然,本身的注意力如何来训练?比如利用图像显著性、人眼跟踪的标注?目前单纯的 sliding windows 的方法在运算力上显然过于暴力,即使用于检测也存在正反例不对称的情况。对于场景图片更加复杂的理解,应该需要一个快速的注意力机制,这样可以更好的分配算力,过滤不需要的图片细节,这也可以增加整个模型的鲁棒性,避免无关细节对模型的影响。

利用图片 3D 重建的能力

训练模型针对图片进行 3D 重建的能力,或者更加复杂的可以利用 2D 图片提取主体建立 3D 模型。我们之所以具有这样的空间想象的能力,应该是与自己的所有先验知识相关,外加很多强约束,比如物体的对称,虽然这些强约束和先验可以很容易的利用技巧欺骗眼睛,但是似乎现在的网络还没有这样的空间想象的能力。

区分不同类别特征的能力

特征本身的分类是增加泛化性能的一个方式,因为这样可以抽象成黑色的猫与白色的猫,纯色的猫与虎纹猫。这样情况下,即使只是数据中没有足够样本的猫也可以利用特征的不同来识别出不同花色的猫。这有点类似于识别主要特征的能力,但是在数据有限的情况下,区分不同类别的能力可以让模型更好的处理未知数据的样例。但是,区分特征类别本身就是一个抽象概念学习的过程。比如,边缘、纹理怎样更好的区分?那么起码需要引入 3D 的信息,将目标物体从空间中提出,这样才可以获得其边缘的特征。

识别目标组件位置移动的能力

现在的 CNN 对于目标的组成部分的空间移动后的识别能力还是依靠增加参数来保证,如何利用网络来更好的识别出各组建的移动,而非是更加机械的通过增加模型参数来实现?现有的方法只能是不断的增加数据量。是否可以利用动态图、连续的多帧训练数据,通过帧间差异,获得对目标组成部分的运动模式的理解。

提出问题的能力/识别出未知物体的能力

我们不能指望网络能够做到非常智能的提出问题的能力,但是如果网络有能力提出一个最基本的问题,那么对于网络的学习能力会有本质的提高,那就是“这是什么?”。当人类看到之前没有遇到的东西时,会迅速的问自己这个基本问题,因为大脑能够识别出未知目标,于是可以将未知目标提出,不断的观察来获得其特征,那么只要具备一定的观察时间,我们就可以将其加入已知内容,这类似于一些跟踪算法启动时的 online learning。