神经网络中的“感知机”
1. 定义
感知机(Perceptron) 是一种早期的线性分类器,也是最简单的神经网络模型之一。它可以用于处理二分类问题,目的是将输入数据分类为两类。感知机由输入层和输出层组成,并使用一个线性函数来计算分类结果,再通过激活函数来决定最终的输出。
几个知识点:
- 线性分类器:在简单的几何意义上,可以理解为通过不断变换一条直线的位置和旋转角度,尝试将平面上的对象分成两个类别。
- 二分类:即目标只为分成两类
- 线性函数:通过直线来分割
- 激活函数:每次变换直线位置和角度后,都需要一个函数来判断当前直线是否达成目标的程度。
2. 感知机的组成
感知机的组成
-
输入层:感知机的输入是特征向量,每个输入特征对应一个权重。输入数据的每一个特征值 x i x_i xi 和对应的权重 w i w_i wi 进行加权求和。
-
权重和偏置:每个输入特征有一个对应的权重 w ,还有一个偏置项 b 。权重和偏置通过学习调整以优化模型的表现。
-
加权求和:感知机通过以下公式计算输入的加权和:
z = ∑ i = 1 n w i x i + b z = \sum_{i=1}^{n} w_i x_i + b z=∑i=1nwixi+b
其中, x i x_i xi 是第 i 个输入特征, w i w_i wi 是对应的权重, b 是偏置项。
-
激活函数:感知机使用阶跃激活函数将加权求和的结果转换为最终的输出。输出通常是二分类(例如 0 或 1,或者 -1 和 1):
y = { 1 , if z ≥ 0 0 , if z < 0 y = \begin{cases} 1, & \text{if } z \geq 0 \\ 0, & \text{if } z < 0 \end{cases} y={1,0,if z≥0if z<0
3. 感知机的工作过程
感知机的核心是计算输入特征的加权和,并使用激活函数(如阶跃函数)来决定分类结果。具体过程如下:
-
初始化:随机初始化权重 w_i 和偏置 b 。
-
前向传播:将输入数据 x 和对应的权重进行加权求和,计算出 z 。
-
激活:使用阶跃函数确定分类输出 y 。
-
学习过程:如果输出与真实标签不一致,更新权重和偏置,使模型逐渐逼近正确分类。
-
权重更新的公式是:
w i = w i + η ( y true − y pred ) x i w_i = w_i + \eta (y_{\text{true}} - y_{\text{pred}}) x_i wi=wi+η(ytrue−ypred)xi
其中 η \eta η 是学习率, y true y_{\text{true}} ytrue 是真实标签, y pred y_{\text{pred}} ypred 是预测标签。
4. 感知机的局限性
感知机只能解决线性可分的问题。如果数据是线性不可分的,感知机将无法收敛到一个正确的解。例如,感知机无法正确处理 异或(XOR)问题,因为它是线性不可分的。
5. 多层感知机(MLP)
为了解决感知机不能处理线性不可分问题的局限性,后续提出了多层感知机(MLP)。MLP 是感知机的扩展版本,包含一个或多个隐藏层,使用非线性激活函数(如 ReLU、Sigmoid 等),能够解决复杂的非线性分类问题。
在多层感知机(MLP)中,非线性激活函数具有至关重要的作用,因为它使得神经网络能够处理复杂的非线性问题。如果没有激活函数,网络的每一层都只是在执行线性变换,无法表达复杂的非线性关系。下面详细解释其重要性:
-
打破线性限制
MLP 的每一层神经元对输入执行加权求和操作。如果所有层之间的激活函数都是线性的,那么即使增加多个隐藏层,整个网络依旧只是在做线性变换。这意味着我们可以用一个单层线性模型来替代多层网络,失去了深度网络的优势。因此,非线性激活函数使得网络能够打破这种限制,具备更强的表达能力。 -
建模复杂函数
引入非线性激活函数后,神经网络可以学习复杂的输入与输出之间的映射关系。这使得神经网络能够解决诸如图像识别、语音识别等高度复杂的问题,而这些问题的输入输出关系通常是非线性的。 -
层间相互作用
每一层在 MLP 中的作用是对输入数据进行某种变换,生成新的特征表示。通过引入非线性激活函数,神经网络的每一层可以学到越来越抽象的特征。例如,在图像处理任务中,初始层可以学习简单的边缘信息,而后续的层则会捕捉更复杂的形状和结构。 -
形成非线性决策边界
在分类任务中,线性模型只能生成简单的直线或平面决策边界。然而,非线性激活函数允许 MLP 生成复杂的曲线决策边界,使得网络能够更好地处理非线性可分的数据。例如,经典的异或(XOR)问题无法通过线性模型解决,但通过引入非线性激活函数,MLP 可以轻松解决这一问题。 -
反向传播中的作用
激活函数还影响反向传播中的梯度计算。像 Sigmoid 和 Tanh 这样的激活函数能够将输出“压缩”到一个有限的范围内,从而稳定训练过程。虽然这些函数有时会引发梯度消失问题,但像 ReLU 这样的函数则避免了这一问题,因为它在正区间中保持梯度不为零,使得网络更容易训练深层结构。 -
常见的非线性激活函数
• Sigmoid:将输出压缩到 0 和 1 之间,适用于二分类问题。
• Tanh:输出范围为 -1 到 1,适用于需要正负输出的任务。
• ReLU:在深度网络中广泛使用,能有效避免梯度消失问题。
6. 感知机的应用
虽然感知机模型简单,但它是神经网络的基础。其思想在后来发展为更加复杂的神经网络模型(如多层感知机、卷积神经网络等),应用于广泛的分类、回归和生成任务中。