关键词:感知机、单层感知机、多层感知机、权重、偏置、内积、激活函数、阶跃函数、sigmoid、tanh、正向传播、线性可分、线性不可分、全连接神经网络


本章概览

本章从感知机开始,逐步引出神经网络。先介绍感知机的基本原理:输入与权重相乘后求和,再加上偏置,根据结果是否大于 0 输出 0 或 1。然后通过“判断图像长边”“判断图像是否为正方形”两个例子,说明单层感知机只能解决线性可分问题。为了解决问题,引入多层感知机,也就是神经网络。最后介绍权重矩阵、偏置向量、激活函数、层编号、正向传播和神经网络的通用化表达式。

一句话总结:神经网络是感知机的叠加。每一层都在做“矩阵乘法 + 向量加法 + 激活函数”的计算,输入从左到右逐层传递,这个过程就是正向传播。


2.1 先来学习感知机

核心内容:
要学习神经网络,最好先从感知机开始。感知机是神经网络的起源,也是机器学习入门中常见的简单算法,可以解决简单的二元分类问题。

要点总结:

  • 感知机是一种简单的二元分类算法。
  • 它能够解决“从两个选项中选择一个答案”的问题。
  • 感知机是神经网络的起源。
  • 学习感知机有助于理解后续的神经网络。

本节启发:
不要一上来就陷入复杂神经网络,先从最简单的感知机入手,更容易理解权重、偏置和输出之间的关系。


2.2 感知机的工作原理

核心内容:
感知机有两个输入 x1x_1x1​、x2x_2x2​,对应权重 w1w_1w1​、w2w_2w2​。计算输入与权重的乘积之和,再与阈值 θ\thetaθ 比较,决定输出 0 还是 1。

要点总结:

  • 输入与权重相乘后相加:

w1x1+w2x2 w_1x_1 + w_2x_2 w1​x1​+w2​x2​

  • 如果结果小于等于阈值 θ\thetaθ,输出 0。
  • 如果结果大于阈值 θ\thetaθ,输出 1。
  • 写成公式:

y={0,w1x1+w2x2≤θ1,w1x1+w2x2>θ y= \begin{cases} 0, & w_1x_1 + w_2x_2 \le \theta \\ 1, & w_1x_1 + w_2x_2 > \theta \end{cases} y={0,1,​w1​x1​+w2​x2​≤θw1​x1​+w2​x2​>θ​

  • 也可以用向量内积表示:

w⋅x \boldsymbol{w}\cdot\boldsymbol{x} w⋅x

  • 感知机内部只有加法和乘法,输出只有 0 或 1。

本节启发:
数学表达式看起来复杂,但本质很简单:加权求和,然后判断结果是否超过阈值。


2.3 感知机和偏置

核心内容:
把阈值 θ\thetaθ 移到不等式左边,并令 b=−θb=-\thetab=−θ,就得到偏置 bbb。偏置控制感知机输出 1 的难易程度。

要点总结:

  • 原始形式:

w⋅x>θ \boldsymbol{w}\cdot\boldsymbol{x} > \theta w⋅x>θ

  • 移项后:

w⋅x−θ>0 \boldsymbol{w}\cdot\boldsymbol{x} - \theta > 0 w⋅x−θ>0

  • 令 b=−θb=-\thetab=−θ,得到:

w⋅x+b>0 \boldsymbol{w}\cdot\boldsymbol{x} + b > 0 w⋅x+b>0

  • bbb 叫作偏置,来自英语 bias。
  • 偏置越大,感知机输出 1 的范围越广。
  • 偏置可以理解为“控制输出 1 难易度的偏移量”。

本节启发:
偏置不是可有可无的项,它决定了感知机判断的“门槛”偏向哪一边。


2.4 使用感知机判断图像的长边

核心内容:
用感知机判断图像是横向还是纵向。设 x1x_1x1​ 为宽,x2x_2x2​ 为高,权重 w=(1,−1)\boldsymbol{w}=(1,-1)w=(1,−1),偏置 b=0b=0b=0。此时感知机实际上在计算“宽 - 高”。

要点总结:

  • 输入:

x=(x1,x2) \boldsymbol{x}=(x_1,x_2) x=(x1​,x2​)

其中 x1x_1x1​ 是宽,x2x_2x2​ 是高。

  • 权重:

w=(1,−1) \boldsymbol{w}=(1,-1) w=(1,−1)

  • 偏置:

b=0 b=0 b=0

  • 计算:

w⋅x+b=x1−x2 \boldsymbol{w}\cdot\boldsymbol{x}+b=x_1-x_2 w⋅x+b=x1​−x2​

  • 如果结果大于 0,说明宽大于高,分类为“横向”。
  • 如果结果小于等于 0,说明宽小于等于高,分类为“纵向”。
  • 例如 x=(48,72)\boldsymbol{x}=(48,72)x=(48,72):

48−72=−24≤0 48-72=-24 \le 0 48−72=−24≤0

输出 0,分类为“纵向”。

本节启发:
感知机的计算可以很直观。这个例子中,它其实就是在比较宽和高哪个更大。


2.5 使用感知机判断图像是否为正方形

核心内容:
尝试用单层感知机判断图像是否为正方形。正方形要求宽和高相等,这不是一条直线能分开的问题,因此单层感知机无法解决。

要点总结:

  • 正方形判断需要满足:

x1=x2 x_1=x_2 x1​=x2​

  • 单层感知机只能根据:

w⋅x+b \boldsymbol{w}\cdot\boldsymbol{x}+b w⋅x+b

的符号输出 0 或 1。

  • 无论怎么调整权重和偏置,都无法准确判断“是否为正方形”。
  • 原因不是权重没训练好,而是单层感知机本身能力有限。
  • 这个问题属于线性不可分问题。

本节启发:
有些问题不是“训练不够”,而是模型结构本身无法解决。单层感知机的局限,正好引出了多层感知机和神经网络。


2.6 感知机的缺点

核心内容:
感知机只能解决线性可分问题。如果数据无法用一条直线分开,感知机就无法分类。

要点总结:

  • 把图像宽高画在平面上,横向和纵向可以用一条直线分开,这是线性可分问题。
  • 正方形和非正方形无法用一条直线分开,这是线性不可分问题。
  • 改变权重和偏置,等价于改变平面上的直线。
  • 如果问题本身不能用直线分开,那么无论怎么调整权重和偏置,都无法正确分类。
  • 感知机的缺点:只能解决线性可分问题。
概念含义
线性可分问题可以用一条直线分类的问题
线性不可分问题不能用一条直线分类的问题
单层感知机只能解决线性可分问题

本节启发:
单层感知机的能力边界非常明确:它只能画一条直线。要解决更复杂的问题,必须改变模型结构。


2.7 多层感知机

核心内容:
把多个感知机组合起来,就得到多层感知机。多层感知机正是神经网络。每层所有单元都由箭头连接的网络,称为全连接神经网络。

要点总结:

  • 单层感知机只有输入和输出,能力很弱。
  • 多层感知机具有多个由感知机单元组成的层。
  • 多层感知机 = 神经网络。
  • 英语中神经网络也叫 multilayer perceptron,即多层感知机。
  • 多个层构成、每层所有单元都由箭头连接的网络,叫全连接神经网络。
  • 通过叠加感知机,可以解决线性不可分问题。

本节启发:
单个感知机很简单,但把多个感知机组合起来,就能表达更复杂的判断逻辑。


2.8 使用神经网络判断图像是否为正方形

核心内容:
使用由感知机 A、B、C 组成的神经网络判断图像是否为正方形。感知机 A 和 B 先判断横向或纵向,感知机 C 综合 A、B 的结果判断是否为正方形。

要点总结:

  • 神经网络中有 3 个感知机:A、B、C。
  • 感知机 A、B 负责判断图像是横向还是纵向。
  • 感知机 C 综合 A、B 的输出,判断是否为正方形。
  • 使用 45×45 图像:
    • 最终输出 1,分类为正方形。
  • 使用 100×35 图像:
    • 最终输出 0,分类为非正方形。
  • 说明多层感知机可以解决单层感知机无法解决的线性不可分问题。
  • 本质是:结合多个简单条件,进行更复杂的条件判断。

本节启发:
每个感知机只做简单判断,但组合后可以完成复杂任务。这就是神经网络强大的原因之一。


2.9 神经网络的权重

核心内容:
神经网络引入“层”的概念,包括输入层、隐藏层、输出层。为了统一表示,给层编号:输入层为第 0 层,隐藏层为第 1 层,输出层为第 2 层。

要点总结:

  • 层编号:
    • 输入层:第 0 层
    • 隐藏层:第 1 层
    • 输出层:第 2 层
  • 权重数量 = 连接各层单元的线的数量。
  • 偏置数量 = 该层单元的数量。
  • 例如:
    • 第 1 层:4 条线、2 个单元 → 4 个权重、2 个偏置
    • 第 2 层:2 条线、1 个单元 → 2 个权重、1 个偏置
  • 权重符号:

wij(l) w_{ij}^{(l)} wij(l)​

表示从第 l−1l-1l−1 层第 jjj 个单元到第 lll 层第 iii 个单元的权重。

  • 偏置符号:

bi(l) b_i^{(l)} bi(l)​

表示第 lll 层第 iii 个单元的偏置。

  • 右上角的 (l)(l)(l) 不是指数,而是层编号。
  • 权重可以按层整理成矩阵 W(l)W^{(l)}W(l),偏置整理成向量 b(l)\boldsymbol{b}^{(l)}b(l)。

本节启发:
权重和偏置的符号虽然多,但有规律。用矩阵和向量表示后,计算会更简洁。


2.10 激活函数

核心内容:
感知机中“根据内积与偏置之和是否大于 0 来输出 0 或 1”的操作,可以定义为激活函数。最开始的例子是阶跃函数。

要点总结:

  • 阶跃函数:

a(x)={0,x≤01,x>0 a(x)= \begin{cases} 0, & x \le 0 \\ 1, & x > 0 \end{cases} a(x)={0,1,​x≤0x>0​

  • 激活函数英文为 activation function,因此常用 aaa 表示。
  • 激活函数可以接收向量,对每个元素分别应用。
  • 激活函数可以逐层定义:

a(l)(x) a^{(l)}(x) a(l)(x)

  • 每层可以使用相同或不同的激活函数。
  • 阶跃函数并不实际用作神经网络的激活函数。
  • 常用的激活函数有 sigmoid 函数、tanh 函数等。
  • 基本要求:能进行非线性微分。

本节启发:
激活函数是神经网络中非常关键的部分。它让多层网络不只是简单的线性叠加。


2.11 神经网络的表达式

核心内容:
用数学表达式描述神经网络。输入为 x(0)x^{(0)}x(0),第 1 层计算权重、偏置和激活函数,得到 x(1)x^{(1)}x(1);第 2 层继续计算,得到输出 x(2)x^{(2)}x(2)。

要点总结:

  • 输入:

x(0) x^{(0)} x(0)

  • 第 1 层:

x(1)=a(1)(W(1)x(0)+b(1)) x^{(1)}=a^{(1)}(W^{(1)}x^{(0)}+b^{(1)}) x(1)=a(1)(W(1)x(0)+b(1))

  • 第 2 层:

x(2)=a(2)(W(2)x(1)+b(2)) x^{(2)}=a^{(2)}(W^{(2)}x^{(1)}+b^{(2)}) x(2)=a(2)(W(2)x(1)+b(2))

  • 输出:

y=x(2) y=x^{(2)} y=x(2)

  • 整体可以写成:

f(x)=a(2)(W(2)a(1)(W(1)x(0)+b(1))+b(2)) f(x)=a^{(2)}(W^{(2)}a^{(1)}(W^{(1)}x^{(0)}+b^{(1)})+b^{(2)}) f(x)=a(2)(W(2)a(1)(W(1)x(0)+b(1))+b(2))

  • 每一层都在重复:
    1. 矩阵乘法
    2. 向量加法
    3. 激活函数计算

本节启发:
神经网络看起来复杂,但每一层的操作是重复且统一的。抓住“矩阵乘法 + 偏置 + 激活函数”这条主线,就更容易理解。


2.12 正向传播

核心内容:
输入值沿着从左到右的方向一层层传递,这个过程叫正向传播,也叫 forward。正向传播的计算与之前手动计算感知机 A、B、C 的过程完全一致。

要点总结:

  • 正向传播:输入从左到右逐层传递,最终得到输出。
  • 英语中常用 forward 表示。
  • 以 45×45 图像为例:
    • 第 1 层计算后应用激活函数。
    • 第 2 层继续计算并应用激活函数。
    • 最终输出 1,分类为正方形。
  • 以 100×35 图像为例:
    • 最终输出 0,分类为非正方形。
  • 使用矩阵和向量可以一次性计算,但每个元素的计算与单个感知机相同。

本节启发:
正向传播并不神秘,它就是“逐层计算”。先算第 1 层,再算第 2 层,直到输出层。


2.13 神经网络的通用化

核心内容:
把具体的神经网络推广到一般形式。设输入层有 m(0)m^{(0)}m(0) 个单元,第 lll 层有 m(l)m^{(l)}m(l) 个单元,除输入层外共有 LLL 层。每一层都用统一公式计算。

要点总结:

  • 输入层单元数:

m(0) m^{(0)} m(0)

  • 第 lll 层单元数:

m(l) m^{(l)} m(l)

  • 除输入层外,神经网络共有 LLL 层。
  • 第 lll 层权重矩阵:

W(l) W^{(l)} W(l)

大小为 m(l)×m(l−1)m^{(l)} \times m^{(l-1)}m(l)×m(l−1)。

  • 第 lll 层偏置向量:

b(l) b^{(l)} b(l)

大小为 m(l)×1m^{(l)} \times 1m(l)×1。

  • 第 lll 层输出:

x(l)=a(l)(W(l)x(l−1)+b(l)) x^{(l)}=a^{(l)}(W^{(l)}x^{(l-1)}+b^{(l)}) x(l)=a(l)(W(l)x(l−1)+b(l))

  • 重复计算 LLL 次,得到最终输出。
  • 计算 WxWxWx 前,要检查矩阵的列数和向量的行数是否一致。

本节启发:
通用化表达式是理解神经网络的关键。具体网络只是通用公式在特定层数、特定单元数下的实例。


专栏 激活函数到底是什么

核心内容:
专栏通过实验说明:如果没有激活函数,多层神经网络会退化成单层感知机。因此,激活函数是必要的,而且通常需要使用非线性函数。

为什么激活函数是必要的

  • 如果不使用激活函数,多层线性计算会合并成一个线性变换。
  • 多个权重矩阵相乘,最终仍然等价于一个单层感知机。
  • 这样多层网络就失去了意义。
  • 所以,激活函数是让多层网络具备更强表达能力的关键。

应该使用什么样的函数

  • 线性函数不适合作为激活函数。
  • 恒等函数 f(x)=xf(x)=xf(x)=x 相当于没有激活函数。
  • 类似 f(x)=−2xf(x)=-2xf(x)=−2x、f(x)=13xf(x)=\frac{1}{3}xf(x)=31​x 的线性函数也会导致网络退化。
  • 应该使用非线性函数作为激活函数。
  • sigmoid 函数是常见的非线性激活函数。
  • sigmoid 函数不满足:

f(x+y)=f(x)+f(y) f(x+y)=f(x)+f(y) f(x+y)=f(x)+f(y)

也不满足:

f(ax)=af(x) f(ax)=af(x) f(ax)=af(x)

  • 使用非线性激活函数后,多层网络才有意义,表达能力也更强。

本节启发:
激活函数不是装饰,而是神经网络能够“变深”“变强”的关键。没有非线性激活函数,多层网络和单层感知机没有本质区别。


本章总结

  • 感知机是最简单的二元分类模型,通过加权求和与阈值判断输出 0 或 1。
  • 引入偏置后,感知机输出可写成:

w⋅x+b>0 \boldsymbol{w}\cdot\boldsymbol{x}+b>0 w⋅x+b>0

  • 单层感知机只能解决线性可分问题,不能解决线性不可分问题。
  • 多个感知机组合成多层感知机,也就是神经网络。
  • 神经网络包括输入层、隐藏层和输出层,层编号从第 0 层开始。
  • 每层有权重矩阵 W(l)W^{(l)}W(l) 和偏置向量 b(l)b^{(l)}b(l)。
  • 每层计算为:

x(l)=a(l)(W(l)x(l−1)+b(l)) x^{(l)}=a^{(l)}(W^{(l)}x^{(l-1)}+b^{(l)}) x(l)=a(l)(W(l)x(l−1)+b(l))

  • 输入从左到右逐层传递,称为正向传播。
  • 激活函数通常使用非线性函数,如 sigmoid、tanh。
  • 没有激活函数,多层网络会退化为单层感知机。
  • 通用化后,神经网络可以表示为重复的矩阵运算和激活函数运算。

公式速查

感知机输出

y={0,w⋅x+b≤01,w⋅x+b>0 y= \begin{cases} 0, & \boldsymbol{w}\cdot\boldsymbol{x}+b \le 0 \\ 1, & \boldsymbol{w}\cdot\boldsymbol{x}+b > 0 \end{cases} y={0,1,​w⋅x+b≤0w⋅x+b>0​

第 lll 层计算

x(l)=a(l)(W(l)x(l−1)+b(l)) x^{(l)}=a^{(l)}(W^{(l)}x^{(l-1)}+b^{(l)}) x(l)=a(l)(W(l)x(l−1)+b(l))

整体神经网络

f(x)=a(L)(W(L)a(L−1)(⋯a(1)(W(1)x(0)+b(1))⋯ )+b(L)) f(x)=a^{(L)}(W^{(L)}a^{(L-1)}(\cdots a^{(1)}(W^{(1)}x^{(0)}+b^{(1)})\cdots)+b^{(L)}) f(x)=a(L)(W(L)a(L−1)(⋯a(1)(W(1)x(0)+b(1))⋯)+b(L))


金句摘录

感知机算法是神经网络的起源。

感知机只能解决线性可分问题。

多层感知机正是神经网络。

神经网络的计算只是逐层重复对输入值应用权重矩阵和偏置,然后再应用激活函数的操作。

这种输入值沿着从左向右的方向一层层传递的操作常常被称为正向传播。

如果没有激活函数,那就意味着网络的表达能力只能相当于单层感知机了。

如果使用非线性函数,项就不会像这样聚集在输入外面,这也就让设置多个层的操作有了意义。


个人思考

  1. 感知机是理解神经网络的起点。它虽然简单,但已经包含了权重、偏置、输入、输出这些核心概念。
  2. 单层感知机的局限非常直观:它只能画一条直线。线性不可分问题必须靠多层结构解决。
  3. 多层感知机并不是完全新的东西,而是感知机的叠加。神经网络本质上就是“很多简单单元的组合”。
  4. 矩阵和向量表示让计算更简洁,但具体计算时,每个元素仍然对应一个感知机。
  5. 激活函数是神经网络的关键。没有非线性激活函数,多层网络会退化成单层感知机。
  6. 正向传播是神经网络计算的主线:输入逐层向前传递,直到输出层得到结果。

更多推荐