特稿 >

行业洞察 >

一文讲述如何将预测范式引入到机器学习模型中

一文讲述如何将预测范式引入到机器学习模型中

Xtecher原创 丨 行业洞察

15230
2203

2017-09-28

           

作者 | Filip Piekniewski

编译 | ziqi zhang


随着人工智能的持续深入,深度学习技术在多智能体学习、推理系统和推荐系统上取得了很大进展。


对于多智能体来说,预测能力有着关键性的作用。一个训练有素的智能体已经能骗过智商正常的人类了!你可能不会相信,仅仅从一个反应系统学习90%的动作命令,它就已经可以取得这样的“成就”了。


这是结合了统计学和动力学而实现的。对于这个问题,大多数方案是通过统计学方法,构建概率模型来解决。这点与行为引导(behavior guiding)研究相同。但是,在这两类研究中,应用统计学方法可能会忽略一些重要的极端值,而相关重要信息又往往只能根据这些极端值的分布情况来得到。


Filip Piekniewski是一位资深的人工智能爱好者,他曾经推出一篇博文,详细介绍了上述多智能体的实现过程。


最近,他又发布一篇博文,详细介绍了——视觉预测模型(Predictive Vision Model),用于将预测范式引入到机器学习模型中。


这是一篇有趣的干货长文,希望大家能花时间来阅读。下面简要介绍下视觉预测模型的思路及部分细节。



主要思路


本文构建了一个在视觉条件下以感官信息作为输入的预测模型。由于无法准确建立感官信息的运动方程,只能通过机器学习来完成。


这个实现过程很简单,只需将当前输入值与将来的同等值联系起来,这与自动编码器相似,但是当前模型不是预测信号本身,而是下一帧信号。一旦建立了对应联系,所构成的系统就可以预测出下一个输入值。


事实上,我们可以同时训练并使用这个系统。显然,这个结果系统不能准确输出外部实际值,但是可以产生一个相当逼近实际情况的近似值。在很多情况下,这样的近似值已经足以用来产生一个鲁棒性很好的表现。



实现细节


构建一个上述的预测编码器本身十分简单,问题的关键在于缩放上。在构建一个系统的时候,有时可以通过将一个大的系统拆分成小块或者缩小数量来解决这个问题,而不是一次性构建一个庞大的整体。我们就应用这种想法。


我们不用构建一个大规模的预测编码器来处理大图像,而是构建许多小规模的预测编码器。工作时,每个小编码器都输入并处理一个小的片段,工作流程如下图所示:

2.png

这样我们就得到了一个“分布式”预测系统。


当然,这样仍然存在问题:虽然每个单元能够独立地进行预测了,但是它们所处理的信号有些具有全局一致性。


如何实现资源共享,从而提高运行效率呢?


互联!我们可以尝试将这些独立的单元连接起来,这样,每个单元就可以向相邻单元通报它们刚刚看到(预测)了什么。


听起来相当不错,但是如果我们现在向每个单元发送多组信号的副本,即每个单元的预测信息,那么这些单元承担的信息量将大大增加,时间和空间的压力可想而知,以至于我们无法进一步扩展系统。


如何解决这一问题呢?


压缩!压缩方法就像去噪自编码器(denosing autoencoder)一样,强制每个单元只能预测,而且只能使用基本特征进行预测。


我们通过引入一个瓶颈,缩小中间层来实现压缩功能。一旦这一功能实现了,我们就能利用“压缩后”的表达信息连接到相邻单元,从而构成横向连接。工作流程如下图所示:


3.png


到目前为止,我们实现了:每个单元不光可以预测自身的输入信息,还可以预测附近单元的输入信息。由于感官数据通常具有局部性(locality)特点,这些附近单元的附加信息通常对预测是十分有用的。


需要注意的是,即使现在的系统是稀疏连接的(本地连接),只要我们添加更多的单元(其实就是以更高分辨率处理图像)就可以扩展这个系统而且总的收敛时间将不受任何影响(假设添加的算力与添加的单元成正比)。



分层与反馈


我们现在只有一层单元来预测未来的输入信息,那么,问题又来了:对于这个系统,我们一直是在一个非常精细的规模下传递预测信息的。但是,当想要获得较大规模场景的规律时,即便加入横向反馈,这种单层预测系统也无能为力。


为了在大规模的场景中仍然可以找到规律,我们可能会想到使用一个能够处理整个场景的单元,但是因为它不能扩展,所以这种想法不太可行。但是请注意,我们已经对数据进行了压缩,如果我们再添加一个层,用来预测第一层的压缩特征,那么这一层中的每个单元都将可以获得更大的视野(虽然这样做会失去对较低一级预测无用的功能)。如下图所示:


4.png


好了,现在有了较高一层单元,我们就可以发现更大规模视野的规律。我们可以不断地添加更多的层,直到剩下一个能够捕获整个场景规律的单元,尽管这个单元处理的分辨率可能不是很高。


层数增加带来单元数量的增加,每个单元都会产生预测信息,中间这些额外的预测信息可以做什么呢?


作为反馈进行回传!这样,可以帮助低一层的单元更好地进行预测,如下图所示:


5.png


到目前为止,我们就完成了一个完整的视觉预测模型的系统搭建任务。每个单元都有其清晰的目标函数,误差以分布式的方式在系统中传播,而不是以单个反向传播标签的形式,并且系统仍然具有扩展性。原理上,这就是通用的视觉预测模型——没有任何变形,只是以一种新的方式安排了联想记忆(associative memories)。


该模型的主要目标是进行预测。如果构建输入信号的内部模型,这个系统仍然可以胜任。由于其内部的循环连接,该系统可以扩展为非常复杂的模型。下面的动画显示了信息的流动过程:


6.jpg


好了,现在系统设计完成了,详细说明一下它到底能做什么,在这之前,关于该模型还有几个重要的东西需要强调一下:


  • PVM使用关联存储器单元进行数据的压缩,它可以通过反向传播(backprop)或其它别的方法来实现:玻尔兹曼机(Boltmann Machine)、脉冲网络(Spiking Network),等等。这些也给了系统在硬件方面巨大的灵活性。

  • 系统是分布式的,并且完全避免了梯度消失(vanishing gradient)这一问题,因为训练信号是局部的,丰富而且足够强。因此不需要卷积和繁杂的正则化方法等等。

  • PVM可以应用于视觉方面,其它模式当然也能适用。事实上,你可以自由地将模式进行组合,让它们在不同的抽象层次上相互预测。

  • PVM中的反馈可以任意地布置。如果信号具有预测性质,那么它将被利用,否则将被忽略(这是可能发生的最坏的事情)。

  • PVM中的输入信号可以是单个图像(例如视频中的一帧)或者序列。实际上,我做过一些针对处理视频帧的有意义的实验。

  • 如果输入信号的一小部分以一种可预测的方式(例如相机上有个像素坏掉了)被破坏了,它将在低层的处理过程中被预测,越往高层传播,这种影响就越小。在极端情况下,例如长期无效的像素,是可以通过偏执单元(常数)单独进行预测的,且高层可以完全忽略它们的存在,这点非常像人眼中的盲区。

  • 信号误差作为系统的副产品基本上是都是异常的检测信号。在不同的规模下,可以获得不同层级的异常信息。这种信息在行为识别方面是一个十分有用的信号,涉及到显著性以及注意力机制的概念。



真的有用吗?我们用实验去证明!


大量的实验证明,PVM确实在基本预测任务中发挥了巨大的作用,但它还能做别的事情吗?


一方面,推荐系统会利用预测误差给用户提供他们想要的信息,但是这是一个长期的过程。


另一方面,我们决定增加一个有监督的视觉目标跟踪任务,并在上面测试PVM的实际性能。

        

我们往PVM中加入一些小东西:


  • 我们使处理单元闭环(自己以前的状态成为上下文的一部分)。这种做法使PVM单元类似于简答的循环神经网络。当然也可以把LSTM加上去,但是我真的非常不喜欢LSTM,因为它们看上去非常的“不自然”。

  • 在输入向量中,我们加入了几个“预先计算过的特征”,这些特征仅仅用于帮助简单的三层感知机找到相应的模式。

  • 我们还添加了一个读出层,通过明确的监督训练(现在是带标签的数据,带有M的框),就可以训练出感兴趣目标的热图。与PVM系统中其他部分相同,该热图由所有单元以分布式方式生产,之后进行组合用来计算目标的边界。


7.png

热图的产生过程:


8.png


总而言之:它是起作用的!详细的信息可以参考我的长篇论文。


通常通过训练这个系统,我们可以将它用于稳定的视觉目标跟踪,其效果可以打败几种最先进的目标跟踪器。



第一行从左到右为:视觉输入信息、后续几层的内部压缩后的激活信号。


第二行:连续的预测信息。第一层的视觉预测,对于第一层激活的第二层预测等等。


第三行是误差信息(实际信息与预测之间的偏差)。


第四行是有监督对象的热图(我们这个实验是对“STOP”标志敏感)。


最后一列:各种跟踪的可视化信息。



以下是针对数据集中,其它跟踪目标的实例(注意,我们从不在训练集上对系统进行评估,因为这样训练出来的系统泛化性是很差的),红色框代表人为标注的真实地面目标,黄色框是PVM的返回。总而言之,它的效果非常好,特别是它在低分辨率(96*96)的视频上仍然起作用(虽然这个分辨率对于人类来说足够理解场景中的物品了)。



结论


我们都知道,上世纪80年代提出的深度卷积神经网络是基于60年代的神经学知识发展起来的,现在还异常火热。


PVM不同于卷积神经网络,它是基于全新的大脑皮质结构和功能的一种新的算法。PVM能避免许多机器学习都会遇到的问题:比如过度拟合和梯度消失问题。它也不用使用一些繁杂的技巧:比如卷积和正则化,它会把任务当成在线信号预测的任务。


虽然PVM还不能作为感知任何事物的黑盒(还没人知道这个黑盒是否存在),但是与各种感知应用的方法来比,它还是很有竞争力的,这里就不得不提深度学习的方法了,相比来说这是最大的挑战。PVM的不同之处在于,它是由直觉进行驱动的,它将使机器人在长期内真正起作用。


目前有关PVM的应用性实验都可以在Github上找到,enjoy!


参考文献:

[1]http://blog.piekniewski.info/2016/11/03/reactive-vs-predictive-ai/

[2]http://blog.piekniewski.info/2016/11/04/predictive-vision-in-a-nutshell/

[3]https://arxiv.org/abs/1607.06854

[4]http://blog.piekniewski.info/2016/05/09/deep-nets-and-the-brain/

[5]https://github.com/braincorp/PVM



打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

账号登录

重置密码

还没有账号?立即注册>

账号注册

已有账号?立即登录>注册企业会员

重置密码

返回

绑定手机