jk's notes
  • 第二章 感知机

第二章 感知机

感知机 perceptron 有美国学者 Frank Rosenblatt 在 1957 年提出.

2.1 感知机是什么

  • 感知机接收多个信号输入
  • 输出一个信号

实际上就是对神经元的数学抽象. 感知机也就是神经元. 这里的信号为 0/1 两种取值.如图:

image-20260116141153363

  1. 图中 x1, x2 就是两个输入信号 (用简单的输入来简化说明, 输入个数是可以多个的).
  2. 不同的输入对应不同的权重, 分别用 w1 和 w2 表示 (使用 w 关键字是因为 weight).
  3. 最终输入信号与权重会分别相乘求和: x1w1+x2w2 传递下去.
  4. 但是是否激活神经元, 即使得 y 有值, 取决于一个阈值 θ, 当加权和大于该阈值时激活该神经元.

因此有下面的结果:

y={0(w1x1+w2x2≤θ)1(w1x1+w2x2>θ)

每一个输入信号都会对应一个权重. 实际上训练过程实际上就是在计算确认这个权重的值.

2.2 简单逻辑电路

神经元的这种输入信号 + 权重 + 阈值的模型可以容易的设计成门电路.

作者分别描述了与门, 与非门, 和或门电路的结构. 同时给出一个重要的标准, 实际上是比较实际的真实的描述, 即不是数字化的结果, 而是模拟化的结果. 例如取 (不唯一) (w1,w2,θ)=(0.5,0.5,0.7) 就可以构成与门.

实际上, 从具体的电路电气设备来看, 也并非是绝对的数字化, 比如单片机中对高低电平的定义, 如传统单片机约定 5V 为高电平, 但事实上, 通常当电平拉高到 3.6V 的时候就已经被视为高电平了. 而且电平的切换也不是阶跃的, 时间轴放大后也是慢慢变大的.

有关门电路的模拟这里不做说明, 仅说明结论:

  1. 使用单个神经元, 只能实现部分逻辑门.
  2. 使用多个神经元组合, 可以实现任意逻辑门.
  3. 根据计算机硬件接口原理, 只要有足够多的门电路, 就可以制造一台计算机, 所以理论上只要有足够的神经元, 就可以实现一台计算机.

2.3 感知机的实现

这里主要说明使用 Python 怎么在代码中模拟感知机. 并且使用门电路的方式来作为说明. 并基于 NumPy 工具来完成按权求和的过程. 这里仅整理算法注意项:

  1. 输入参数 x1, x2, 可以看成 NumPy 中的数组 (向量), 可以使用 x = np.array([x1, x2]) 表示.
  2. 同理, 权重也可以表示为 w = np.array([w1, w2]).
  3. 其优势是在 NumPy 中, 两个数组相乘, 是对应分量相乘. 即 x * w 本质得到 [x1 * w1, x2 * w2].
  4. 然后再使用 np.sum() 求和, 就得到输入信号的加权和.

2.4 感知机的局限性

感知机的结果表达式本质上是输入信号的线性组合, 即它是线性函数, 那么逻辑上无法描述非线性特征.

  • 作者依旧使用逻辑门来说明, 单个感知机无法实现异或门.
  • 同时基于 2 个输入信号的神经元, 用平面几何的特性直观的描述了 xw 的图像是一条直线, 无法覆盖非直线的范围 (二元线性组合不等式表示平面上对应直线一侧的区域, 想象一下线性规划).

最后的结论是: 感知机的局限性在于它只能表示一条直线分割的空间. 而曲线分割的空间是非线性的.

2.5 多层感知机

利用逻辑门的叠加 (组合), 构造无法直接实现的异或门. 引出感知机叠加的概念, 这便是多层感知机的雏形.

image-20260116145003707

然后类比为:

image-20260116145022635

本书中有一个约定: 认知不同, 会造成描述的不一样. 如何定义多层感知机的层数是一个问题. 按照作者的描述, 具有权重的层才视为有效层, 因此作者将这个模型视为 2 层感知机模型.

Last Updated: 1/16/26, 2:54 PM
Contributors: jk