Neural Networks, NN

1943 年 Warren McCulloch 和 Walter Pitts 提出了最早的神经元数学模型(McCulloch-Pitts 神经元),可看作人工神经网络(artificial neural network, ANN)的雏形,通常也简称为神经网络(NN)。该模型受生物神经网络启发,但连接权重需要人为指定,不具备学习能力。

1957 年 Frank Rosenblatt 在此基础上提出了感知机(Perceptron)。感知机同样对加权输入求和,加上偏置项(bias),再经过激活函数得到输出。与早期 ANN 模型的关键区别在于,感知机引入了可学习的权重和偏置,能够根据误差信号自动更新参数

Figure 1 Perceptron structure

上图是一个感知机。​x_m 代表输入,​w_{km} 代表权重,求和后的结果会加上 ​bias,然后经过激活函数 ​Activation Function,最后得到输出。

bias 相当于给线性变换加入了常数项,使决策边界可以偏离原点。

激活函数

Threshold Function

Figure 2 Threshold Function

\phi(v) = \begin{cases} 1 & \text{if } v \geqslant 0 \\ 0 & \text{if } v < 0 \end{cases}

这个激活函数不可微,因此不能用于梯度下降

Piecewise-Linear Function

Figure 3 Piecewise-Linear Function

\phi(v) = \begin{cases} 1 & \text{if } v \geqslant +\frac{1}{2} \\ v & \text{if } -\frac{1}{2} < v < +\frac{1}{2} \\ 0 & \text{if } v \leqslant -\frac{1}{2} \end{cases}

Sigmoid

Figure 4 Sigmoid function

\phi(v) = \frac{1}{1 + \exp(-av)}

其中 ​a 为斜率参数,​a 越大曲线越陡峭;当 ​a = 1 时即为常见的 logistic 函数。输出范围在 0 和 1 之间。

纠错学习

e_k(n) = d_k(n) - y_k(n)

Figure 5 Error correction Learning

​e_k(n) 可以作为一个反馈来修正权重,通用的更新规则为:

\Delta w_{kj}(n) = \eta \, e_k(n) \, x_j(n)

此处 ​\eta 是一个正常数,代表着学习率。对一个神经元的突触权重所做的调整与误差信号和突触输入信号的乘积成正比。

对于学习率的选择,如果 ​\eta 太大,它可能不会收敛;如果太小,它将需要很长的时间才能达到最小值。

通过使用这种方法,我们能够进行纠正性调整,以使输出信号逐步接近预期响应。这一目标是通过最小化 cost function:

\epsilon(n) = \frac{1}{2} e_k^2(n)

随着时间的推移,我们要做的是使我们训练数据集中的所有训练数据项的 cost function 最小化。此外,系统将达到一个稳定的状态,突触权重将变得稳定。


多层感知机,MLP

之前提到的单层感知机对简单的问题(回归和一些二元分类)来说效果不错,但是对于更复杂的问题来说,需要更复杂的网络。

Figure 6 多层感知机

上图展示了一个典型的 MLP 结构:底层为输入层,中间为隐藏层,顶层为输出层。数据从输入层逐层向前传递,每一层的神经元与下一层全连接,最终由输出层给出预测结果。

单层感知机的局限

单层感知机的决策边界是线性的,只能解决线性可分问题。1969 年 Minsky 和 Papert 证明了单层感知机无法学习 XOR 函数——XOR 的 4 个样本点无法用一条直线分开。这一结论直接导致了第一次 AI 寒冬,也推动研究者转向多层结构。

MLP 的结构与前向传播

MLP 在输入层与输出层之间插入一个或多个隐藏层,每层执行「线性变换 + 非线性激活」:

z^{(l)} = W^{(l)} h^{(l-1)} + b^{(l)}
h^{(l)} = \phi\!\left(z^{(l)}\right)

其中 ​h^{(0)} = x 为输入,​W^{(l)} 为第 ​l 层权重矩阵,​b^{(l)} 为偏置,​\phi 为激活函数,​h^{(L)} 为最终输出。信息沿网络从前向后流动,这一过程称为前向传播(forward propagation)。

以含一个隐藏层的 MLP 为例,隐藏层先对输入做加权求和并激活,输出层再对隐藏层结果做同样的操作,最终得到预测值 ​\hat{y}

非线性的必要性

如果各层之间不使用非线性激活函数,那么无论堆叠多少层,整个网络仍等价于一个线性变换。例如两层线性变换 ​W_2(W_1 x) = (W_2 W_1)x 仍可写成单个矩阵与 ​x 的乘积。隐藏层的非线性激活才是 MLP 能够拟合复杂模式的关键。

如何训练 MLP

单层感知机的纠错学习规则只能更新直接与输入相连的权重,无法直接训练隐藏层。要让 MLP 真正可用,需要:

  1. 使用可微的激活函数(如 Sigmoid),使损失函数对权重可导
  2. 通过反向传播(Back Propagation)将输出层的误差逐层回传,计算各层权重的梯度
  3. 梯度下降或其变体(如 SGD、Adam)迭代更新所有层的参数

反向传播的详细推导在后续的深度学习文章中会展开。从感知机到 MLP 的演进,本质上是从「单层线性分类器」迈向「多层非线性函数逼近器」,为现代深度神经网络奠定了基础。