边疆战事和烽火台的比喻

题图:金泽古镇 绘于:2020年4月12日

对于一个崭新的领域,比喻是一种容易的入门的方法,尤其对于牵涉大量的技术细节的领域。当我们既想尽量详细的了解它,有没有时间和勇气去深入进去的时候,比喻是最好的方式。不同的人对于不同的比喻的亲近和理解程度不一样,于是我试着用几种不同的比喻,描述同一个事物,总有一种能让某一个人心有戚戚焉。

北疆的战事

第一个我能想到的比喻,是这样一幅画面:

在辽阔的中国大地上面,长城修建好的时候,坐在北京的皇帝是如何知道边疆有战事的。

大家当然知道这个信号就是烽火台的浓烟。那就让我们仔细去思考一下,从成千上万的边疆战士的死亡和最终离北京最近的那一个烽火台点燃之间发生的一连串事件。

上帝视角还是平民视角

我们人脑识别一张图片里面有什么的时候,我们最终的意识其实是上帝视角,可以把所有的信息放在自己的大脑里面,但大脑里面的神经元并不是上帝视角。它们每一个都只有非常有限的信息,就是和它连接的几个神经元,然后通过它们的激活或者未激活来决定自己是否激活。对于每个神经元来说,它们都是被蒙在鼓里的。

历史学家也是站在上帝视角讲述边疆的战事。但我们以这个世界上的每一个人的个体来看,没有一个人可以如上帝一样,从塞北的荒漠一眼看到北京的紫禁城。每个人只能接受到和自己最近的几公里的信息,然后做一些决定。这样,我们就拿每个个体去模拟神经网络的神经元。

原始信息输入

最前方的,是伤亡层。被敌人忽然攻击的个体忽然流血了,疼痛,惨叫,死去。这些细节就像进入卷积网络的第一层的那些像素的灰度值。

这些信息对于个体很重要,但是对于上一层神经网络,就是校尉这一层来说,并不那么重要。他关心的,和被杀死的士兵,有相同也有不同。

相同的是,他们都关心这个士兵死了。但是这个死去的士兵到底是头部中箭,还是胸部受伤而死,这些细节对于士兵来说是无比残忍的全部世界,对于校尉来说,是需要忽略的细节。而且他关心的不仅仅是一个士兵,而是要用一个“过滤器”去获取死亡的士兵的总数,就知道了死亡率。

校尉的决定

校尉需要做一个决定,就是用 ReLU (注一)函数来判断,自己要不要向上一级(就是下一层神经网络)汇报。当死亡率低于一定阈值的时候,他最好什么都不做,输出为 0 ,以免干扰上级。如果无论什么地方死一两个士兵都把这个信息一层层上传,然后由北京来做决定的话,这个效率太低了。但一旦高于一个阈值,警报就要拉响,而且比阈值高得越多,警报就拉得越响。

校尉就是神经网络里面的第一层,卷积层。他们通过把士兵的疼痛,哀嚎,所有战场的混乱等等信息进行处理,丢失细节,形成在死伤率这个最重要的维度的值,然后往上一级传递。

将军的决定

在上一级可能是驻守边关的大将军。他和他手下的全部校尉都保持联系。坐在大帐里面的将军已经听不到厮杀声和惨叫声了,因为已经有校尉这层把个人的疼痛信息转化为死伤率这个维度的强烈程度。这就模拟了数字识别系统中,后面几层的神经网络得到的信息已经不是最初的图像的灰度信息,而是“竖线度”,“斜线度” 等等边缘检测信息。

细节的丢失虽然让大将军没有办法对战士的死亡从情感上感同身受,但是抽象一层的信息可以帮助他从理性上推断下一步要不要向北京报告。

将军这一层的处理也是一个技术活。肯定不是一个逻辑的“或”操作,不是简单的只要有任何一个校尉报告就点烽火台,也肯定不是一个一句话能说明白的算法。他可能需要根据手下的十几个的校尉报来的死伤信息,和多年战争经验得来的经验信息相结合。

结合的方法可能是一个复杂的线性函数。他对不同的重要度的关卡给予不同的权重。有些要塞就算死了10%的士兵也需要立刻采取行动,而有些不重要的,就算100%的死亡也不用担心。要塞之间或许还有些相互关联。如此这些都在将军的脑子里面,他不需要把脑子里面的这几万个参数写出来,就足以果断的做一个决定:现在的军情,有没有触发他的 ReLU 函数的那个临界值。

如果将军做出判断,事情危机,ReLU 函数输出为正,一个时辰以后,在北疆的大漠里,一柱浓烟腾空而起,十几里外都看得清清楚楚。

信息的传递

在此之后的神经网络比较简单,直接看到上一层激活,下一层就跟着激活,如此传递上千公里,直到北京附近的那些烽火台浓烟滚滚。作为这个国家的神经中枢,北京的皇帝就知道了一件事情:北疆起战事了。

整个形成概念的过程

从成千上万的士兵身体被长矛利剑刺穿,到校尉分析在伤亡率这个关键维度的输出值,到将军分析来自各个不同的军队的数据,用学习得来的参数对数据加权相加,最终到从北疆到首都的一系列烽火台被点亮,直到最终形成一一比特的信息:有还是没有战事(0 还是 1),这是一个组织的信息形成机制,也很类似于神经网络的学习方式。

我们看到一个数字 0 ,当大脑形成 0 的印象的时候,其实就是如北京的皇帝知道了边疆的战事一样,或许根本没有想到,在这 0 个结论前面,已经有视神经的刺激,电信号的形成,边缘识别,再从边缘形成形状,最终结合经验得出数字的过程。

所以所以如果你需要向别人简单的解释人工智能里的神经网络是怎么工作的,你可以用这个例子。在这个例子中需要注意的是,经过一层层的神经网络,信息的细节越来越少,而维度越来越多。大多数的维度是第一层不具备的。比如死亡率这个维度,就不是任何一个士兵通过个体可以感知得到的信息。但信息的密度越来越高。一个人的身上上亿的神经元感受的疼痛,浓缩到一个人的生死,上千人的生死,浓缩到校尉的报告还是不报告;十几个校尉的类似信息才最后形成烽火台的浓烟燃起还是保持安静。

最终,每一个士兵的每一点疼痛,最终集体的决定了,北京附近的那一柱浓烟。这一柱浓烟丢失了所有士兵感受到的细节,却浓缩了所有人共同的感受,从而让一个帝国像一个人一样,可以对入侵的敌人作出反应。

神经网络也是一摸一样的。

注一:ReLU (Rectified Linear Unit)就是输入小于零,输出为零,输入大于零,输出这个数的几位简单的函数。代码是 max(0, x) 。

我们是怎么认识0的

细节消失,抽象生成

卷积像卷地毯

最终形成判断

就像医生看化验单

发表回复

您的电子邮箱地址不会被公开。