【LLM】从零开始学大语言模型 | 1 | 神经网络和多层感知机
一、从生物神经元到人工感知机 深度学习的名字里带有“神经”二字,是因为它最初的灵感来自生物神经元。一个生物神经元大致是这样工作的:树突接收来自其他神经元的信号,细胞体对这些信号进行整合;当总信号超过某个阈值时,神经元就会被激活,并通过轴突向外发出脉冲。人工感知机就是对这一过程的高度简化。1957 年前后,Frank Rosenblatt 提出了人工感知机模型。它的数学表达非常简单: $$y = f(W^T x + b)$$ 也可以写成: $$y = f\left(\sum_{i=1}^{n} w_i x_i + b\right)$$ 其中: $x$ 是输入特征向量。例如一张图片的像素值、一个样本的若干数值特征; $W$ 是权重向量,表示每个输入特征的重要程度; $b$ 是偏置,可以理解为一个阈值,决定神经元是否容易被激活; $f$ 是激活函数,或者说输出函数; $y$ 是神经元的输出。 很多初学者第一次看到这个公式时会问:这里的 $f$ 到底是什么?是不是一个 0/1 函数?这个猜测是有道理的。在最早的感知机模型中,$f$ 确实常常是阶跃函数: $$ f(z)= \begin{cases} 1, & z > 0 \\ 0, & z \le 0 \end{cases} $$ 也就是说,从二维来看,如果加权求和的结果大于 0,输出 1;否则输出 0。这看起来就是一个硬性的二分类器。从几何上看,感知机在输入空间中定义了一个超平面: $$ W^T x + b = 0 $$ 这个超平面把数据分成两类:一侧输出 1,另一侧输出 0。在二维空间里,它是一条直线;在三维空间里,它是一个平面;在更高维空间里,它是超平面。因此,感知机本质上是一个线性分类器。 不过,阶跃函数虽然直观,却有一个严重问题:它在 $z=0$ 处不可导。不可导意味着我们无法用微积分中的链式法则去计算梯度,也就很难通过“误差反向传播”来更新参数。所以,在现代神经网络中,感知机公式里的 $f$ 通常不再是阶跃函数,而是更平滑、至少几乎处处可导的函数,例如 Sigmoid、Tanh、ReLU 等。这些函数统称为激活函数。就是说,今天当我们写: ...