神经类别
❦
在伪装的查询中,我谈到过一个把「blegg」和「rube」分类的任务。典型的 blegg 是蓝色、蛋形、长毛、柔软可弯、不透明、在黑暗中发光,并且含有钒。典型的 rube 是红色、立方体、光滑、坚硬、半透明、不发光,并且含有钯。为简化起见,让我们先忘掉「柔软/坚硬」与「不透明/半透明」这两组特征。这样,在事物空间(thingspace)中就只剩五个维度:颜色、形状、纹理、亮度,以及内部成分。
假设我想创建一个人工神经网络(Artificial Neural Network,ANN),根据已观测到的 blegg 特征去预测尚未观测到的 blegg 特征。再假设我对 ANN 相当外行:我读过一些热血沸腾的科普书,讲神经网络如何分布式、涌现式、并行,**就像人类大脑一样!!**但我连带有 sigmoid 单元的非循环多层网络里用于梯度下降的微分方程都推不出来(其实比听起来容易多了)。
于是我可能会设计一个大概长得像 Network 1 那样的神经网络。
Network 1
Network 1 用来把 blegg 和 rube 分类。但由于「blegg」是个陌生且人为造出来的概念,我还加入了一个类似的 Network 1b,用来区分人类与太空怪物,其输入来自亚里士多德(「凡人皆有一死」)以及柏拉图的学院(「一只没有羽毛、指甲宽阔的两足动物」)。
Network 1b
神经网络需要一条学习规则。一个显而易见的想法是:当两个节点经常同时激活时,我们就应当加强它们之间的连接——这是最早被提出的神经网络训练规则之一,称为赫布定则(Hebb’s Rule)。
因此,如果你经常看到某些东西既是蓝色又有毛——从而同时把「color」节点激活到 + 状态、把「texture」节点也激活到 + 状态——color 与 texture 之间的连接就会被加强,于是 + 的颜色会激活 + 的纹理,反之亦然。若你常看到某些东西既是蓝色、又是蛋形、还含有钒,那么 color、shape 与 interior 之间的相互正连接就会被强化。
假设你已经看过许多 blegg 和 rube 从传送带上下来。但现在你看到一个有毛、蛋形,而且——天哪!——偏红的紫色(我们把它建模为「color」的激活水平为 −2/3)。你还没测试它的亮度或内部成分。该预测什么呢,该预测什么呢?
接下来,Network 1 里的各个激活水平会来回跳动一阵子。正激活从 shape 流向 luminance,负激活从 color 流向 interior,负激活又从 interior 流向 luminance……当然,这些信息全都是以并行!!、**异步!!**的方式传递的,就像人类大脑一样……
最后,Network 1 会收敛到一个稳定状态,其中「luminance」与「interior」都呈现较高的正激活。于是我们可以说(尽管它尚未亲眼看到)网络「预期」这个物体会在黑暗中发光,而且它含有钒。
看哪,哪怕网络里没有任何显式节点写着这东西是不是 blegg,Network 1 仍然会表现出这种行为。这个判断隐含在整个网络之中!!「blegg 性」(bleggness)是一个**吸引子(attractor)!!它作为涌现行为!!的结果,从分布式!!**的学习规则中产生。
但在现实中,这种网络设计——听起来再怎么赶时髦——也会遇到各种各样的问题。循环(recurrent)网络并不总是能立刻收敛:它们可能振荡,可能呈现混沌行为,或者只是需要很长时间才能稳定下来。当你看到一个又大、又黄、还有条纹的东西,却必须等上五分钟,等你的分布式神经网络收敛到「老虎」这个吸引子时,这可不是好事。它也许是异步的、并行的,但它不是实时的。
此外还有别的问题,比如当信息来回反弹时会重复计算证据:如果你怀疑某个物体会在黑暗中发光,这种怀疑会激活你对「该物体含有钒」的信念,而后者又会反过来激活你对「该物体会在黑暗中发光」的信念。
再者,如果你试图把 Network 1 的设计扩展到更大规模,它需要 O(N 2) 条连接,其中 N 是可观测量(observables)的总数。
那么,更现实的神经网络设计会是什么样?
在 Network 2 里,激活波会从任何被钳制(clamped,已观测)的节点汇聚到中央节点,然后再向任何未钳制(unclamped,未观测)的节点回涌。这样我们就能一步算出答案,而不必等网络慢慢收敛——在生物学里,当神经元只能以 20 Hz 左右运行时,这是个重要要求。而且这种网络结构的规模复杂度是 O(N ),而不是 O(N 2)。
Network 2
诚然,有些东西用第一种网络结构比第二种更容易察觉。Network 1 在任意两节点之间都有直接连接。因此,如果红色物体从不在黑暗中发光,但红色且有毛的物体通常又具备 blegg 的其他特征(如蛋形与含钒),Network 1 就能轻松表示这一点:只需从 color 到 luminance 设一条非常强的直接负连接,同时从 texture 到除 luminance 之外的所有其他节点设更强的正连接即可。
而且这也不是对「blegg 会发光」这一一般规律的「特殊例外」——记住,在 Network 1 中并不存在一个代表 blegg 性的单元;blegg 性是在分布式网络中以吸引子的形式涌现出来的。
所以没错,那些 O(N 2) 条连接确实为我们买来了点东西,但也就那么一点点。在大多数现实问题上,Network 1 并不会更有用——你很少会遇到一种动物卡在「半猫半狗」的中间地带。
(还有一些事实,你在 Network 1 或 Network 2 里都不容易表示出来。比如说,海蓝色(sea-blue)的颜色与球形(spheroid)的形状一旦同时出现,就总意味着存在钯;但当它们各自单独出现、而缺少另一项时,它们却又分别是支持「含钒」的极强证据。无论哪种结构,不加额外节点都很难表达这种关系。Network 1 和 Network 2 都内含着关于环境结构可能长什么样的隐含假设;在机器学习里,能否把这些假设读出来,正是区分成人与婴儿的地方。)
别搞错了:无论是 Network 1 还是 Network 2,都不符合生物学现实。但我仍觉得可以合理猜测:不管大脑真实的工作方式是什么,从某种意义上说,它更接近 Network 2,而不是 Network 1。快、便宜、可扩展、擅长区分猫和狗:自然选择就爱这种东西,就像水沿着适应度景观(fitness landscape)往下流。
把物体分成 blegg 或 rube 并丢进相应的箱子里,看起来像是再普通不过的任务。但如果海蓝色的物体从来不发光,你会注意到吗?
也许会——如果有人给你看二十个除了都是海蓝色之外几乎完全相同的物体,然后关掉灯,而它们一个也不发光。换句话说,就是你被它当头一棒。或许,把这些海蓝色物体成组呈现给你,会让你的大脑形成一个新的子类别,并能在该子类别内部检测出「不发光」这一特征。但如果这些海蓝色物体散落在另外一百个 blegg 和 rube 之中,你大概就不会注意到了;这并不容易、也不直观,不像区分猫和狗那样既容易又直观。
又或者:「苏格拉底是人,所有人都会死,所以苏格拉底会死。」亚里士多德怎么知道苏格拉底是人?嗯,苏格拉底没有羽毛,指甲宽阔,直立行走,说希腊语,而且——总之——外形像人、行为也像人。于是大脑一劳永逸地判定:苏格拉底是人;并由此推断:苏格拉底会像迄今为止观察到的所有其他人一样会死。要问「穿衣服」相比「使用语言」与「会死」之间各自有多大关联,似乎既不容易也不直观。你只会说:「会穿衣、会用语言的东西是人」,以及「人都会死」。
把事物一劳永逸地归入某个类别,这种做法会带来偏见吗?当然会。参见例如邪教式的反文化气质。