再谈记忆之墒和能量-人是什么系列外篇

本来这一篇打算继续心理学系列讲意识。整理思路时发现, 要说意识, 就要理解记忆是什么。 而只从从心理学出发谈记忆, 很容易跑火车。这里先从计算的角度谈谈记忆,铺垫一下。

 

在进入正文之前说点儿题外话。为了写这个系列的文章, 我查看了心理学, 认知神经学, 脑神经科学等一些相关学科的经典文献,强烈的感受到现代科学在各种分支上已经走的太远,每个学科各自为战。即使一些学科内的顶尖人物,纵使这些人通常已经是跨多个学科的大才,他们作品中仍然流露出来片面的认识和不足。 因为大脑实在太复杂,可以被称作科学的皇冠,要研究大脑,就像人类的意识形成自我一样(这个我们后文详细谈),需要各个学科的有效配合,取得一致。只有这样才能真正解决问题。而各个学科的各自独立进展其实已经有不少了,就差整合。

 

人工智能起源于1956年夏天的达特茅斯学院。 那一年的暑期,学界和业界的几个大佬, 达特茅斯学院的约翰.麦卡锡,哈佛的马文.明斯基,贝尔实验室的香农和IBM的罗切斯特在达特茅斯学院一起讨论了两个月。思想碰撞之下创建了人工智能这个学科。

 

时至今日, 我们需要又一场思想碰撞。 热切的盼望有识之士能够把各个学科的大佬召集到一起,再搞一次暑期研讨班,来梳理人工智能和脑科学前沿的方向,必将能促进学科的突破和进展。是时候了。

 

在去年夏天写的几篇讨论人工的智能的文章里, 曾经提到过想搞出类人智能的关键基础在于弄明白记忆的机制。我最早的想法来源于杰夫.霍金斯。 杰夫自己说, 他在1978年, 因为看到了神经科学家芒卡斯尔的一片论文而得到了启示,立志要搞明白智能是什么。

 

芒卡斯尔那篇文章主要讨论大脑的新皮层,也就是支撑人类智能的关键部分。 文章的结论很简单,就一句话,大脑新皮层虽然功能有分区整体结构上却非常类似。不同功能的长的都一样, 这很奇怪, 因为耳朵和眼睛天差地别,而分别处理视觉和听觉的神经中枢竟然完全一样。这在当时是个突破性的想法。而在随后的各种实验中,这个想法得到了反复验证。实际上同样一块区域, 既可以处理视觉, 也可以被训练成处理听觉。 而大脑的新皮层,统共只有六层, 每层的神经元都是使用电化学反应来传递电信号, 因为用到的化学媒介其实很慢。 因此如果把大脑的计算当作一个计算机,顶多是几百HZ主频的量级。 但是大脑又极其的有效,识别一个人只需要零点几秒。 这靠传统的计算模型完全不可能。

 

于是杰夫认为那些在当时搞ai的人完全走错了路。 要掀大家的桌子, 别人当然不答应。 如果杰夫不是因为创办palm挣到了很多很多钱, 必将会被当作一个民科来耻笑。 幸亏有钱就可以任性,杰夫自掏腰包成立了研究所, 按他的想法来研究。 他说大脑新皮层并不是在计算,而是在做记忆。 所谓识别, 就是在回忆。 而这个处理过程, 不应当是简单自底向上, 需要自底向上和自顶向下配合。他把自己的学说写成了一本书 On intelligence 。 按照书名里名词越少书越牛B的定律。 杰夫的这本书也值得一读。

 

杰夫有一些真正的洞见, 与我们对深度神经网络的最新解释是一致的。 比如传统上我们认为深度学习网络就是在提取特征,抽取模式的分层表示,这样的理解也许是是很片面的。 与杰夫的看法类似, 最新的深度学习研究猜测,深度学习比传统方法有效, 正是因为用大量的参数进行了记忆。 而相比大脑只要6层就搞定一切, 我们要150多层甚至1000层才在某一个特定领域与人可比。 说明我们的方法离人的效率还有很远的距离。 这可能有两个原因。 第一, 我们的网络训练的时候利用了自底向上和自顶相下的结合。 但识别应用时只是一个单向的过程。杰夫认为大脑皮层在工作的时候一直是两种机制结合。 第二, 最近一些讨论, 认为我们的网络学习特别的不充分, 这表现在网络可以大幅压缩, 或者做各种量化都不损失性能,其中必然存在大量的冗余。

 

众所周知, 大脑的效率极高, 大约十几瓦的功耗就做了那么多事情。 令搞深度学习网络硬件实现的人汗颜。 做硬件的兄弟们其实已经发现,提高性能/功耗比的核心要义就是降频。 如果以芯片面积或者说制造成本为代价, 通过展开网络来降低对单层网络计算主频的要求,功耗就可以要多低有多低。 美国人韩国人在业界学界都干了类似的事情。 可以忽悠各路神仙。

 

话有说回来,这个方向是对的。从硬件角度看,我们早晚是要和冯诺依曼结构说再见了。 为了实现记忆的有效计算, 我们需要计算和内嵌存储的小单元,通过网络连接在一起,每个单元不需要复杂的指令, 只支持一些很基本的计算就可以, 但是单元之间的连接要快速和高效。神级网络硬件实现的核心要义是优化所谓data flow。 大脑的计算是大家追寻的终极的目标。 我们只是迈出了一小步。

 

杰夫虽然提出了概念, 其实并没有说明白, 记忆到底是什么。 我们目前也只有很初级的猜测。这里就大胆的探讨一下。 现在的深度神经网络大概分为几类, 最成功的CNN所做的都是感知, 用来从现实世界中抽取各种实体概念。 CNN的世界是静态的,处理不好动态。 要理解动态信号,流行的是RNN和一系列特殊形式的RNN。 各种变体比如LTSM, 在自然语言处理中也有大量应用。 这对理解记忆有有什么启示呢? 我们说记忆的过程, 其实是一个动态演化, 对于神经网络的学习来说, 可以从两个理论的角度来考察:

 

第一条路是统计。 我对统计的全部理解都来源于十六年前夏天听朱松莼老师开讲。 朱老师一上来就讲你们之前学的都是错的。释放气场之后,朱老师说这个世界是一朵云。 不管是旧金山的雨云, 还是硅谷傍晚天边的火烧云(前两天所见),都是概率云。 我们要理解这个世界是怎么回事, 就是要掌握这个云的分布。 学习就是对世界的联合概率分布估计。

 

好吧, 朱老师实际没说世界是一朵云。 他是说我们要研究问题是一朵云。 自觉讲世界会更酷一点, 毕竟大脑的任务就是理解世界嘛。 当我们对整个世界一无所知时,也就是没有任何信息时, 按照热力学第二定律, 这个世界最可能是一个处处均匀的死掉的热寂宇宙。这就是所谓最大熵原理,此时熵最大。

 

随后我们开始观察这个世界, 世界的维度太高太复杂, 想一下子把握整体无从开始。 我们只能有用低维度的简单武器,在云上打一个洞。 就像研究地球的内部结构一样,找一个矿井, 打一个深洞, 抽取一段岩层, 看看岩层长什么样。 如果岩层仍是一整块, 说明这个洞打的不好,没有有效信息。 如果发现分了几层, 我们对世界多了点了解。目前人类在地球上打的最深的洞也就是万米级别。 假设地球是一个苹果,这个洞全在苹果皮上。  如果世界是平的, 按照不知道的就得均匀分布的最大熵理论,如果观察到几层,世界就是几层板叠在一起。 如果地球是个球, 就是几层大球套小球。 同样打一个洞,看到的分层越多, 说明获取的信息越多,熵的减小也越多。 我们希望每次打的洞, 都获取了最多的有效信息。 而对于看不到的东西就当做是均匀分布最大熵, 这就是朱老师教给我们的最大最小熵原理。

 

我们曾经是山顶洞人,那是几万年前。 北京北边延庆县有个旅游景点叫古崖居。据说是辽金时期的一个村落遗址, 就是在一个山上打了很多洞, 人都住在里面,那是一千年前。 还有黄土高原上一直到现在都有很多人住在窑洞里。 我外婆家就有窑洞,小时候去玩,住在里面冬暖夏凉,还可以亲近各种生物, 比如跳蚤。 可见从古至今, 住在洞里观察世界都大有人在。这是继承优良传统。

 

等等, 这跟记忆有什么关系? 朱老师告诉我们打洞可以研究世界,而且每打一个洞都能知道这个洞打的好不好。 但是终究没有告诉我们该怎么打洞。胡乱打洞效率太低。 于是其实还是没解决问题。

 

而深度学习正是可以解决问题的武器。按照我们的打洞理论来理解深度神经网络, 每一个神经元都是一个洞。 洞是一层一层打的, 一开始先均匀的打一遍。 那个洞打的好, 下一次就在它附近多打。 打的不好的洞就不要了。  网络训练好之后, 有一些洞很好, 里面的模式很丰富, 特别是边界陡峭, 也就是说有很大很大的负熵在这个洞里。 我们在这个洞里看世界, 看的格外清楚, 这个洞就是构成记忆的一部分。 可称为记忆之洞。 记忆就是一些提供了最大负熵或者说最有效信息的山洞的总和。 其实仔细想想没有这么简单, 这里只是浅谈。

 

第二条解释记忆的路径, 来源于理论物理。主要是换了另外一套术语。在理论物理看来, 世界由能量决定。 提出理论就是要先定义能量函数。 有了能量函数, 就可以描述世界。 而记忆在这个体系里, 进去是能量函数的极小值。 能量函数在极小值附近越陡峭,记忆就越好。 凡事都有两面, 记性好, 认的越清楚, 那么很容易差一点就不认了,这叫泛化能力弱,过学习。但是对神经网路不会过学习, 因为网络里有很多层,很多极小,不是各个都记忆好, 有的认识的多, 有的认的准, 大家互帮互助,就什么都认识了。

 

熵和能量是一回事, 但是数学处理不同, 一正一负。 各有各的用途。

 

好了, 以上从计算的角度说了说什么是记忆, 如果看完没有理解, 说明我是在胡说。下次我们换个角度, 看看心理学是怎么研究记忆的。 谢谢观赏!

发表回复