记忆,又见记忆。总是回忆。

春节一边休息一边忙着吃, 不大关注研究的进展, 这两天有时间才看了看最新的论文成果。 这么说有点给自己脸上贴金。不在一线战斗, 其实没有太紧跟研究工作和论文。 所谓关注也只是刷刷人工智能相关的一些媒体公号朋友圈,看看人家帮忙给筛出了什么热点。今天就简单说说几个朋友圈热点,主题是有关记忆。

首先是一场热闹, 有关深度神经网络是不是在做记忆。两篇文章的一场对话。 其中一篇曾经在年前讨论过, 理解深度学习需要重新思考泛化能力。 作者从网络能记住随机的label出发,延展到讨论为什么无需正则化,这样的网络就可以有很好的泛化能力。作者最后的解释是认为泛化能力已经紧密结合在所谓记忆的细节里。这是传统理论没有涉及到的盲区。 该文作者只是提出了思考,没有给出恰当的解释。 就提出问题来说, 这是一篇好文章。 问题没有解决,也给大家留下了讨论的余地。

紧接着讨论就来了,Bengio团队有一篇题目为:深度网络不需要通过记忆来学习,的文章发表在ICLR上。这篇文章大概是说,虽然网络有大量参数足够用来记忆,但是并不是简单粗暴记忆法,前面那篇文章这么想,是因为实验做的不够细致, 学习随机label特别是噪声时网络需要更大的容量,而且随机样本更难学。改变学习中的某些类似在做正则化的方法,比如dropout, 对随机样本学习的影响比真实数据的要大。

文章中还特别说明了什么是记忆, 以及大家对这个概念理解的含混之处。前面一篇文章提到的记忆,意指类似用一张表格记住所有训练样本一样的简单记录法。这样可以精确对样本分类,然而对非样本集合, 分类结果就是随机的,所谓随机泛化误差。深度网络显然不是这样。

因为实验做的不够细致被打脸是常有的事情, 但是前一篇文章提出的问题还在。 为什么这么大量参数的网络, 无需正则化,就有很好的泛化能力。 Bengio文章里也提到了可能是某种early stop, 因为没有那么充分的学习去适应样本的缘故。这又是一个可以被打成筛子的想法。

涉及到记忆, 大家仍然各种稀里糊涂。这大半年对AI进展的思考,让我觉得对记忆的理解是解开人工智能奥妙的关键核心。有关记忆的含混的提法太多, 是因为记忆本身就特别复杂。

我们熟悉的存储, 那种记录在存储单元里精确的表格,看似简单的东西, 对大脑的记忆来说, 实际上是一种高级货。 按照研究大脑记忆的认知神经科学的提法, 记忆至少可以被分成语义记忆和情境记忆。 前面提到的那种精确的记忆来源于大脑形成了符号系统之后的语义记忆,是一种陈述性记忆,只有依靠语言和符号系统的帮助, 大脑才能长期记住一些事件。而情境记忆以对感官刺激的回应为主, 我们在儿时的早期记忆, 大致都是来源于感观的一些鲜活的画面和情境。 我们能够回忆起这些画面, 特别是其中的某些细节,但是就整体来说,并不是当时场景照相般的重复。

前面AI大牛吵来吵去, 似乎是弄混了语义记忆和情景记忆。 深度网络在玩的东西,都还只是在情境记忆的范畴。  如果沿着人的记忆形成机制来理解这个问题, 其实大家没有分歧。 因为人的记忆的有趣之处, 是在于所谓回忆,本身是一种计算过程。

在心理学系列里面,我们提到过利用科学方法研究记忆最早的是德国人赫尔曼.艾宾浩斯。艾宾浩斯通过研究自己学习新语言的过程, 提出了著名的遗忘曲线。直到今天还是我们教育依赖的所谓科学方法之一。 随后英国心理学家弗雷德里克.巴特莱特在1930年代做了很多有关记忆的研究工作. 巴特莱特有一本就叫做回忆(remembering)的大作。 他当时就发现, 人们的回忆不准确, 对同一个事件, 不同人在做回忆时, 会受到各自的世界观的影响,其中包括人们认为这个世界是如何运转的, 各种事物之间的关系如何, 都会干扰到他如何复述自己看到的故事。最终扭曲事实只是为了和自己的信念一致。

在随后的心理学研究里,记忆事实上是一种计算的观点被反复验证过。 所谓回忆, 实际上是根据当时的现场和个人的主观意识结合来重新生成一种对过去经历的描述。 会被修正,篡改和扭曲。除了前面两种记忆的划分,参与记忆形成计算的,还可以被分成能够进入意识的, 和在没有进入意识,可称之为只在潜意识中的记忆。 这一部分又包括程序性的技能和对极端情绪情感的记忆。 不同的记忆在现在脑成像辅助研究下已经被证明会激活不同的大脑区域,因此是来源于不同的计算。

似乎讨论认知神经科学和脑科学并没有帮助我们理解问题, 反而引发更多的混乱。 这里有太多的含混之处。 但是深度神经网络的另外一个热点,所谓生成对抗网络,又可以帮助我们加深理解。 就算你不同意生成对抗网络里做识别的那个在记忆, 做生成的那个网络要产生和真实样本一样的图像,总该是真正记住了某些东西了吧?

更加有趣的,生成对抗网络中一些现象, 和人的记忆过程有对应关系。 展开写可能又收不住了, 我们有机会再聊。 这里说说最近生成对抗网络中的所谓突破性进展, 在引入了来源于概率分布测度的Wasserstein距离后,对抗式学习的训练迈出了一大步。 顾险峰老师在他的公众号里用统计理论和微分几何来解释这个问题,有题为:看穿机器学习的黑箱系列文章,强烈推荐阅读。

讲了这么一大套枯燥的东西之后, 最后我们说点好玩的, 最近有两篇来源于用深度网络做生成的文章, 一篇用来补洞,High-Resolution Image In-painting using Multi-Scale Neural Patch Synthesis. 还有一篇讲像素到像素转换的Image-to-Image Translation with Conditional Adversarial Networks。 有人用这篇文章的思路做了个网站http://affinelayer.com/pixsrv/index.html。 利用简单的轮廓边缘来生成实际图像,比如猫,建筑,鞋子,包之类的。 这个因为有趣,出发了流行,被各种玩坏。从能够形成像模像样的大量细节来看, 网络确实记住了一些东西, 而从生成的各种怪物来看, 语义仍然是个很大的问题。 任重且道远。