JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

人工神经元

认识一下每个神经网络都由它搭建而成的那个基本单元:加权求和、偏置,再加一个激活函数。我们将从对脑细胞的简笔画一路追溯到诚实的数学——并看清一个神经元究竟能做什么、又做不到什么。

从脑细胞到简笔画

你脑袋里真实的神经元会从成千上万个邻居那里收集微小的电信号刺激。当刺激的总和越过某个阈值,它就沿着自己的「导线」发出一个脉冲;否则就保持安静。这就是早期研究者借来的全部图景——不是那一团杂乱的生物化学,而仅仅是这句口号:*把你的输入加起来,如果总和足够大就发放*。人工神经元 是这句口号刻意画出的一幅简笔画,而坦白承认它只是简笔画,正是诚实的起点。

这个想法正好坐落在被称为 联结主义 的传统之中:它押注智能并非来自人手写下的规则,而是从许多连接在一起的简单单元中涌现出来。这与你在本阶梯前面遇到的、由逻辑和显式规则构成的 符号式人工智能 恰好是相反的哲学。两个阵营都不是全部真理,但神经元是联结主义的原子。

加权求和与偏置

给神经元一把数字作为输入——比如像素的亮度,或者一栋房子的各项 特征。每个输入都会被乘上它自己的 权重,这个数说明该输入有多重要、又朝哪个方向起作用。把这些乘积加在一起,你就得到了加权求和。一个很大的正权重在说「要重视这个输入」;一个负权重在说「这个输入把我往反方向推」;一个接近零的权重则说「忽略它」。

然后我们再加上一个只属于这个神经元自己的数:偏置。它不乘任何输入;它只是把整个和往上或往下平移,决定在任何输入到来之前、这个神经元有多「跃跃欲发放」。可以把权重想成一个决定的*斜率*,把偏置想成你在数轴上把这个决定*栽*在哪里。如果你前面学过 线性回归,你其实已经见过完全相同的形状:权重乘输入再加一个截距。

z = (w1*x1 + w2*x2 + ... + wn*xn) + b

  x = inputs        (given to the neuron)
  w = weights       (learned, one per input)
  b = bias          (learned, one per neuron)
  z = the weighted sum, also called the 'pre-activation'
神经元全部的线性部分浓缩在一行里:点积加上偏置。

激活函数:为什么要把直线掰弯

到目前为止,神经元还是纯线性的——一条直线,或在更高维里是一张平面。最后一步是让加权求和 z 通过一个 激活函数,也就是一条固定的非线性曲线。最早的神经元用的是一个硬阶跃:若 z 越过零就发放 1,否则发放 0。如今更常用的是更平滑的选择——S 形的 sigmoid 把任何数挤进 0 到 1 之间,而风靡一时的 ReLU 干脆在 z 为正时输出 z、否则输出 0。

到底为什么要费劲把直线掰弯?因为把线性步骤叠在线性步骤之上,得到的还是一条直线——一百个笔直的层会塌缩成单独一条直线,学不到任何单层学不到的东西。正是那个非线性的「拐折」,让叠起来的神经元能在数据中刻画出弯曲而精细的边界。激活函数就是那一点点让「深度」变得有价值的关键配料。

每个激活函数都有自己的脾性。sigmoid 给出干净的、类似概率的输出,但会饱和——离零稍远,它的曲线就几乎变平,而平坦的曲线几乎不带梯度,这预示着你在训练深层网络时会遇到的 梯度消失 麻烦。ReLU 对正输入保持陡峭,而且计算便宜,这在很大程度上正是深度学习得以腾飞的原因。并不存在唯一的最佳选择;这是更宽泛的 没有免费午餐 道理的一个小小实例。

感知机,以及它如何学习

给单个神经元配上阶跃激活,你就得到了 感知机——Frank Rosenblatt 在 1958 年造的机器,也是第一个能够*自己学习权重*的人工神经元。它的配方简单得让人感动:给它看一个样例,看看它是否正确发放,如果错了,就把每个权重朝正确答案的方向轻轻推一下。在许多样例上反复进行,权重就会漂移到一个能把两类分开的设置上。

  1. 从随机的(常常是零)权重和偏置开始。
  2. 取一个带标签的样例,算出加权求和,套上阶跃得到一个猜测。
  3. 如果猜测与标签一致,什么都不改。
  4. 如果错了,就给每个权重加上(或减去)输入的一个小倍数,把它推向正确的一侧。
  5. 在数据上循环,直到它不再犯错(如果它做得到的话)。

这是你第一次尝到 监督学习 的滋味:一个 标签 告诉这个单元答案本应是什么,而误差驱动着更新。它也是 梯度下降 的婴儿版——朝着错误「往下坡滚」——而正是这同一台引擎,经由 反向传播 推广之后,训练着每一个现代网络。感知机不是古雅的遗物;它是整门学问的种子。

一个神经元做不到什么

该说点诚实话了。单个神经元恰好只能画出一条直的边界——在二维里是一条线,在更高维里是一张平面。只有当一刀直切就够用时,它才能把苹果和橙子分开。经典的反例是异或(XOR)模式:你必须在两个输入中恰好有一个为开时说「是」。没有任何一条直线能把那四个点分开,因此没有任何单个神经元——无论训练得多么巧妙——能够学会异或。

好戏与悬念都在这里。把好几个神经元并排连成一层,再把一层喂给下一层,那些直的切口就会组合成弯曲、折叠的区域,从而*能够*解决异或乃至更难得多的问题——这就是 多层感知机。一个著名的结果,通用逼近定理,甚至许诺:一个足够大的层,原则上几乎能逼近任何讲理的函数。

不过,要仔细读这个许诺。定理说的是存在一个合适的网络;它从不保证训练能找到它、它必须有多大,也不保证它能 泛化 到新数据上。「存在」不是「配方」。这条诚实的鸿沟——介于「什么是可能的」与「什么是学得会的」之间——正是本阶梯接下来要一个神经元一个神经元去探索的地盘。