从表示到分布-有关深度学习记忆和效率的思考

三月是春天, 然而两会以后,北京的春天没有一个蓝天。 这一个星期都不见春日暖阳,最近两天是接连不断的冷雨。雨一直下,浇不灭人工智能大发展的火焰。因为当前全球经济滞涨,技术进步据说解决这个问题唯一救命稻草(还有战争)。 而眼前能看到的技术进步, 以第四次技术革命(人工智能)为甚 。之前的新能源和生物基因都被玩坏了。还能怎么样呢?深度学习作为这一波人工智能大潮的核心驱动力量, 已经被炒作的热的不能再热了。本文也在这个热点里继续掺和一下,来谈谈作者自己最近的思考。

成为热点的好处之一是资本聚集。资本就是钱, 金钱能带来的是眼球,因为媒体的呐喊助威, 不管你愿不愿意, 大家多多少少都知道了深度学习,是所谓很多很多层的神经网络, 知道了深度学习能下围棋赢世界冠军, 知道卷积神经网络识别图像能过人, 还知道这后面是凋参技能。

一种被更广泛宣传的观点是深度神经网络是个黑箱,首先要大规模收集数据, 然后开动大规模计算,再雇几个会凋参的博士, 网络就出来了。 所以要比拼深度学习哪家强,变成了那家数据强, 系统效率高,博士名声大。 这三项关键技里, 系统很复杂, 属于商业机密,一般不太好比较。雇博士可是手到擒来,于是博士们水涨船高。相关专业的刚毕业博士据在国内已经开到了百万年薪。而据(传)说领军人物的年薪则动辄是八位数字。是否真能值回票价,一时半会儿还看不出来。但是要玩尾巴摇狗(请自行搜索), 那是值得不能再值了。

再有就是看谁数据多,数据就是商业价值。算算数是投资人的核心技, 所以看数据收集了多少年,多少TB,有无专有的数据来源,  决定了公司就能值多少钱。

但是按照作者观点,真正推动深度神经网络或者人工智能的不断进步, 不能看有多少资金投入, 而要看有多少研究人员的深入思考。思想的深度决定事物的高度。 这是光注意短视的金钱涌动所永远不能触及的。

最近一段时间有关深度神经网络的研究工作, 最让人赞赏的还是deepmind。 从对创办人的访谈可知, deepmind一开始就志存高远, 一直想做类人智能,因此并不忙于凋参变现,常常对深度神经网络往往有独到的理解。比如最近就有一篇谈网络学习如何拥有记忆的话题。

有关学习和记忆, 从去年开始写文以来已经反复提过多次。总结之前的理解, 记忆并不是存储,而是一种计算, 是和学习过程紧密连接起来的,更关键的,记忆是一个动态和静态结合的过程。人都是边学边记得, 学会了,就记住了。

而当前神经网络学习和应用的过程是分开的, 一批数据进去, 网络学好,就拿去应用了。 应用的时候是固定的网络,当然也不存在学和忘。 而训练的过程,更是反其道而行之,所谓transfer learning迁移学习, 拿训练好的一个网络,给一个新的任务, 可以通过凋参很快适应那个新任务,之前的当然就忘掉了。

而Deepmind这篇文章,就试图解决这个所谓遗忘的问题。 他们通过找到深度学习网络对之前任务的最重要的部分,包括对应的连接结构和部分关键参数。在学新任务的时候有意识的保留这一部分,可以做到在学会新任务的同时, 并不丢弃做旧任务的能力。也就是所谓学会了不忘, 这样可以说网络就有了记忆。

网络有了记忆可以让人浮想联翩。 因为在现实应用中, 网络并不总是100%好使,总会碰到一些出错的例子。 这个时候就需要对网络做调整。而这个调整要做到结识新朋友,不忘老朋友。那么Deepmind这篇文章方法似乎就可以借鉴。

然而事物的发展通常不是水到渠成。这里面最大的问题,是这样的出错的例子, 实在太少 。众所周知,深度网络学习严重依赖大量的数据。如果只有几个样本就想学会,那就是大写的不可以! 怎么办, 一种思路是利用对坑式网络, GAN, 我用生成网络去生成一大堆近似样本呗。 这样可以吗? 有没有更直接的方法能让网络在小样本上高效率学习?

要回答这个问题,必须要打开深度网络的黑箱。其实deepmind有关网络记忆的那篇已经在试图在拆分黑箱了,需要把网络中重要的部分挑出来。 而打开黑箱,首先要理解深度学习网络到底是在做什么?所谓看问题的角度, 和可能影响了最终的成败。

传统的说法,深度学习网络,尤其是CNN, 学习的是一种从输入到输出的映射。把深度理解为一种函数拟合。 而多层网络, 因为引入了非线性, 不管多么复杂的函数映射,都可以拟合出来。 这在理论上是没有问题上, 然而在现实中这么玩,因为碰到非线性数学工具就不好使。 一下就玩不动了。没有数学理论指明方向,只好出动凋参大军,搞水漫金山或者瞎猫碰上死耗子战术。

可瞎猫总能逮到耗子, 这就不得不让人怀疑哪里出了问题。我们说,可能是思考问题的角度出了问题, 不能用映射来理解问题,那样就玩不下去, 要用统计的角度来理解。  而对于统计来说, 一切都只是分布而已。

我们都知道,这个世界是基于统计的, 因为世界是由一些基本粒子(现在分到了夸克)组成的。 每个粒子的性质都是一模一样的, 他们的相互作用一开始也不是特别复杂,基本都可以认为是线性的, 就算不是线性, 用泰勒展开一阶近似也差不到哪里去。而粒子的结构本身又是分层的,比如基本粒子组成了原子,原子构成了分子, 分子和分子之间有各种化学反应。 到原子还只有一百个,到分子简直有无穷多, 化学更是变换莫测。 复杂性一下就出来了。 所以三生万物, 三层网络就可以生成世界。当然这都属于胡说,别较真。理解基本思路是简单构成的复杂就对了。

神经网络比世界的基本粒子更简单, 通常情况下只有两种。 一种线性的,只做组合, 一种做简单的非线性映射。 我们说线性部分提供表示能力, 非线性部分构成复杂。每一层网络节点都只是把初始分布映射为边际分布。而每一层做线性映射的神经元张成线性子空间。神经网络就是用非线性映射联结线性子空间构成的高维空间来描述输入数据的分布。 因为每一个线性子空间提供了数据分布的边际分布,每一个线性子空间都是观察输入分布的一个窗口。 线性子空间的各种结构分析方法–线性代数和矩阵分析方法都可以得到应用。

用边际分布来表示最终的联合分布,就是朱松莼老师交给我们的云上打洞理论,而神经网络的效率,要看这些洞打的好不好, 最终取决于这些边际分布的熵的某种组合。

从概率分布的角度出发, 可以利用几何方法来研究。请参见顾险峰老师看穿机器学习的黑箱系列文章。学习所谓最优传输映射问题的凸几何解释。顾老师说逼近一个概率分布比学习一个映射容易的多。而逼近一个概率分布,解空间包含无穷多映射,构成一个无穷维李群。

期待这个方向的深入思考和理解能带来更多突破。最近给自家娃买了一本德国手绘百科全书,他看的津津有味。那本书每一页是一个主题,比如房子各种不同的样本,每一种只有一张图, 比如非洲的树屋,或者爱基斯摩人的雪屋。我相信他看过这张图片,如果下次有机会亲自见得树屋和雪屋,一定能认出来。深度学习也应该或者说必须做到这一点,大家试图理解无穷维李群过程中死掉的堆积如山的脑细胞才是值得的。