logo

感知机

王哲峰 / 2023-02-27


目录

感知机模型介绍

感知机模型

感知机, perceptron 是由美国学者 Frank Rosenblatt 在 1957 年提出来的, 感知机是神经网络(深度学习)的起源算法. 因此, 学习感知机的构造也就是学习通向神经网络和深度学习的一种重要思想, 感知机是神经网络的理论基础.

感知机就是一个通过建立一个线性超平面, 对线性可分的数据集进行分类的线性模型. 感知机接收多个输入信号, 输出一个信号.

假设 $x_1, x_2, \cdots, x_p$ 是输入信号, $\hat{y}$ 是输出信号, $w_1,w_2,\cdots, w_p$ 是权重, $b$ 是偏置.输入信号被送往神经元时, 会被分别乘以固定的权重 $(w_1x_1,w_2x_2,\cdots,w_px_p)$. 神经元会计算传送过来的信号的总和, 只有当这个总和超过了某个界限值时, 才会输出 1. 这也被称为"神经元被激活”. 这里将这个界限值称为阈值, 用符号 $\theta$ 表示.

感知机的多个输入信号都有各自固定的权重, 这些权重发挥着重要控制各个信号的重要性的作用. 也就是说,权重越大, 对应该权重的信号的重要性就越高:

$$\hat{y}=\sigma\Big(\sum_{i=1}^{p} \omega_i x_i + b\Big)$$

$$\begin{cases} y = 1, \text{if} (\sum_{i=1}^{p} \omega_{i} x_{i} + b) > \theta \\ y = 0, \text{if} (\sum_{i=1}^{p} \omega_{i} x_{i} + b) \leq \theta \end{cases}$$

感知机就是一个二分类线性分类器,其目的是从特征学习出一个分类模型 $f(\cdot)$

$$y=f(z), y \in \{0, 1\}$$

感知机模型是将特征变量的线性组合作为自变量:

$$z=\omega^{T}x + b$$

由于自变量 $x$ 取值的范围是 $[-\infty, +\infty]$, 因此需要使用阶跃函数(Step 函数)将线性模型 $z=\omega^{T}x + b$ 映射到集合 $\{0, 1\}$

阶跃函数(step function) $f(\cdot)$ 如下:

$$f(z) = \begin{cases} 1 & & z \geq 0 \\ 0 & & z < 0 \end{cases}$$

感知机模型的目标就是从数据中学习得到 $\omega, b$, 使得正例 $y=1$ 的特征 $\omega^{T}x+b$ 远大于 $0$, 负例 $y=0$ 的特征 $\omega^{T}x + b$ 远小于 $0$

感知机训练

感知机的学习就是寻找一个超平面能够将特征空间中的两个类别的数据分开, 即确定感知机模型参数 $\omega, b$, 所以需要定义学习的损失函数并将损失函数最小化

  1. 定义学习损失函数

$$L(\omega, b)=-\frac{1}{||\omega||}\sum_{x_i \in M}y_i(\omega^{T} x_i + b) \\ =-\sum_{x_i \in M}y_i(\omega^{T} x_i + b)$$

其中:

损失函数的意义是:误分类点到超平面的 $S$ 的距离总和

  1. 感知机学习算法

随机梯度下降算法(Stochastic gradient descent)

最优化问题:

$$\omega, b= argmin L(\omega, b)=-\sum_{x_i \in M}y_i(\omega^{T} x_i + b)$$

算法:

  1. 选取初始值: $\omega_0, b_0$
  2. 在训练数据中选取数据点 $(x_i, y_i)$
  3. 如果 $y_i(\omega\cdot x_i + b)<0$
    • $\omega \gets \omega + \eta y_i x_i$
    • $b \gets b + \eta y_i$
  4. 重新选取数据点,直到训练集中没有误分类点

单层感知机的局限性

多层感知机可以实现异或门

从感知机到神经网络