【模式识别与机器学习(7)】主要算法与技术(下篇:高级模型与集成方法)之 扩展线性模型(Extending Linear Models)

「C++ 40 周年」主题征文大赛(有机会与C++之父现场交流!) 10w+人浏览 752人参与

神经网络与SVM详解

本文内容一览(快速理解)

  1. RBF网络是什么? 径向基函数神经网络,使用径向基函数作为激活函数,具有局部感受区,训练速度快但需要较多样本

  2. 径向基函数的特点? 函数值只依赖于输入点到中心点的距离,在中心点最大,距离越远越小,形成局部影响区域,就像"灯塔"效应

  3. RBF网络vs传统ANN? RBF使用局部性激活函数(局部感受区),训练速度快(直接计算权重),需要较多样本;传统ANN使用全局性激活函数(Sigmoid),训练慢(需要迭代),需要较少样本

  4. SVM的核心思想? 找到最优的分类超平面,使得两类样本之间的间隔(margin)最大,只有支持向量影响分类超平面,泛化能力强

  5. 支持向量是什么? 距离分类超平面最近的样本点,只有支持向量影响分类结果,构造超平面的复杂度只取决于支持向量的个数

  6. 核技巧的作用? 通过非线性映射将数据映射到高维空间使其线性可分,不需要显式计算高维映射,只需计算核函数,大大降低计算复杂度

  7. 感知器的局限性? 单层感知器只能解决线性可分问题,无法解决XOR等非线性问题,无论使用什么非线性激活函数分类能力都一样

  8. 多层网络的能力? 具有一个隐含层的前馈网络可以逼近任何连续函数,隐含层学习非线性特征,可以解决非线性分类和回归问题

  9. 反向传播算法是什么? 通过前向传播计算输出,反向传播误差,使用梯度下降更新权重,可以训练多层网络但只能找到局部最小值

  10. 神经网络的优缺点? 优点:鲁棒性强、处理能力强、并行性好、表达能力强大;缺点:训练时间长、参数选择困难、缺乏可解释性、局部最小值问题、饱和区问题

学习路线建议

初学者:理解RBF网络的局部性特点、SVM的最大间隔思想、感知器的局限性、多层网络的能力 | 进阶者:深入理解核技巧的原理、反向传播算法的梯度计算、神经网络的表达能力 | 考试复习:重点掌握RBF网络特点、SVM原理、感知器局限性、多层网络表达能力、反向传播算法流程、神经网络优缺点

总结口诀

  • RBF网络:局部感受区 → 训练速度快 → 需要较多样本
  • 径向基函数:距离中心越远 → 函数值越小 → 局部影响
  • SVM核心:最大间隔 → 支持向量 → 泛化能力强
  • 核技巧:非线性映射 → 高维空间 → 线性可分
  • 感知器局限:单层 → 只能线性可分 → 无法XOR
  • 多层网络:隐含层 → 非线性特征 → 逼近任意连续函数
  • 反向传播:前向传播 → 反向传播误差 → 梯度下降更新权重
  • 神经网络:鲁棒强、并行好、表达强,但训练慢、难解释、局部最优

一、考试范围知识框架

[!NOTE]
📝 关键点总结:考试重点围绕RBF网络、SVM、神经网络的核心原理和特点,需要理解局部性vs全局性、最大间隔原理、感知器局限性、多层网络表达能力、反向传播算法。

考查重点

  • 径向基函数网络(RBF Networks):径向基函数的特点、局部感受区、训练速度快的原因、与传统ANN的区别
  • 支持向量机(SVM):最大间隔原理、支持向量的作用、核技巧、非线性升维映射
  • 神经网络:感知器模型、感知器的局限性、多层前馈网络的表达能力、反向传播算法原理
  • 激活函数:Sigmoid函数的全局性、RBF函数的局部性、激活函数的选择

可能考查的问题:感知器的局限性、多层前馈网络的表达能力、反向传播算法的原理、激活函数的选择、RBF网络vs传统ANN的区别、SVM的最大间隔原理

考试范围

  • 径向基函数网络(RBF Networks)

  • 支持向量机(SVM)

  • 神经网络(Neural Networks)

  • 感知器模型

  • 反向传播算法(BP算法)

可能考查的问题

  1. 神经网络相关问题

    • 感知器的局限性

    • 多层前馈网络的表达能力

    • 反向传播算法的原理

    • 激活函数的选择

 

二、径向基函数网络(RBF Networks)

[!NOTE]
📝 关键点总结:RBF网络使用径向基函数作为激活函数,具有局部感受区,训练速度快但需要较多样本,与传统ANN的主要区别是局部性vs全局性。

径向基函数特点

  • 定义:以某个中心点为基准的特殊函数,函数值只依赖于输入点到中心点的距离,与方向无关
  • 常见形式:高斯函数(最常用)ϕ(x)=exp⁡(−∣∣x−c∣∣22σ2)\phi(x) = \exp(-\frac{||x-c||^2}{2\sigma^2})ϕ(x)=exp(2σ2∣∣xc2)、多二次函数、逆多二次函数
  • 特点:函数值在中心点最大,距离中心点越远函数值越小,形成一个"局部"的影响区域
  • 形象比喻:就像灯塔,中心最亮,越远越暗

RBF网络结构

  • 网络结构:输入层接收输入特征、隐层使用径向基函数作为激活函数、输出层线性组合隐层输出
  • 数学表达y=∑j=1Mwjϕj(x)+w0y = \sum_{j=1}^{M} w_j \phi_j(x) + w_0y=j=1Mwjϕj(x)+w0MMM是隐层单元数量,ϕj(x)\phi_j(x)ϕj(x)是第jjj个隐单元的径向基函数,wjw_jwj是权重)

RBF网络特点

  • 局部感受区:只有当输入xxx接近某个中心点cjc_jcj时,对应的隐单元ϕj(x)\phi_j(x)ϕj(x)才有较大的输出,远离中心点时输出接近0,每个隐单元只"关注"输入空间的某个局部区域
  • 训练速度快:使用聚类确定函数中心,隐单元到输出的权重可以直接计算(最小二乘法),避免了反向传播的反复迭代过程
  • 需要较多训练样本:因为需要确定多个中心点,需要足够的样本覆盖输入空间

RBF网络vs传统ANN

特性RBF网络传统ANN(Sigmoid)
激活函数径向基函数(局部性)Sigmoid函数(全局性)
感受区局部感受区全局影响
训练速度快(直接计算权重)慢(需要迭代)
训练样本需要较多需要较少
适用场景函数逼近、模式识别分类、回归

决策标准:需要快速训练且样本充足 → 使用RBF网络;样本较少或需要全局学习 → 使用传统ANN

2.1 什么是径向基函数?

径向基函数(Radial Basis Function, RBF)是一类以某个中心点为基准的特殊函数。函数值只依赖于输入点到中心点的距离,与方向无关。

常见径向基函数

  1. 高斯函数(最常用):

    ϕ(x)=exp⁡(−∣∣x−c∣∣22σ2)\phi(x) = \exp\left(-\frac{||x - c||^2}{2\sigma^2}\right)ϕ(x)=exp(2σ2∣∣xc2)

    其中 ccc 是中心点,σ\sigmaσ 是宽度参数

  2. 多二次函数ϕ(x)=1+(∣∣x−c∣∣/σ)2\phi(x) = \sqrt{1 + (||x - c||/\sigma)^2}ϕ(x)=1+(∣∣xc∣∣/σ)2

  3. 逆多二次函数ϕ(x)=1/1+(∣∣x−c∣∣/σ)2\phi(x) = 1/\sqrt{1 + (||x - c||/\sigma)^2}ϕ(x)=1/1+(∣∣xc∣∣/σ)2

特点

  • 函数值在中心点最大

  • 距离中心点越远,函数值越小

  • 形成一个"局部"的影响区域

形象比喻:就像灯塔,中心最亮,越远越暗。

 

2.2 RBF网络的结构

径向基函数神经网络(RBF Network)是一种前馈式神经网络,结构简单,训练速度快。

网络结构

  • 输入层:接收输入特征

  • 隐层:使用径向基函数作为激活函数

  • 输出层:线性组合隐层输出

数学表达

y=∑j=1Mwjϕj(x)+w0y = \sum_{j=1}^{M} w_j \phi_j(x) + w_0y=j=1Mwjϕj(x)+w0

其中:

  • MMM 是隐层单元数量

  • ϕj(x)\phi_j(x)ϕj(x) 是第 jjj 个隐单元的径向基函数

  • wjw_jwj 是第 jjj 个隐单元到输出的权重

  • w0w_0w0 是偏置项

 

2.3 RBF网络的特点

1. 局部感受区

RBF网络的隐单元激活函数是局部性的,每一隐单元有一个局部"感受区"(reception field)。

含义

  • 只有当输入 xxx 接近某个中心点 cjc_jcj 时,对应的隐单元 ϕj(x)\phi_j(x)ϕj(x) 才有较大的输出

  • 远离中心点时,输出接近0

  • 每个隐单元只"关注"输入空间的某个局部区域

例子

假设有3个隐单元,中心点分别是 c1=0c_1 = 0c1=0c2=5c_2 = 5c2=5c3=10c_3 = 10c3=10

  • 输入 x=0.5x = 0.5x=0.5ϕ1\phi_1ϕ1 输出大,ϕ2\phi_2ϕ2ϕ3\phi_3ϕ3 输出小

  • 输入 x=5.2x = 5.2x=5.2ϕ2\phi_2ϕ2 输出大,ϕ1\phi_1ϕ1ϕ3\phi_3ϕ3 输出小

  • 输入 x=9.8x = 9.8x=9.8ϕ3\phi_3ϕ3 输出大,ϕ1\phi_1ϕ1ϕ2\phi_2ϕ2 输出小

2. 训练速度快

原因

  • 使用聚类(如K-means)确定函数中心

  • 隐单元到输出的权重可以直接计算(不需要迭代)

  • 避免了反向传播的反复迭代过程

训练步骤

  1. 使用聚类算法确定隐单元的中心点

  2. 设置宽度参数 σ\sigmaσ

  3. 直接计算输出层权重(最小二乘法)

3. 需要较多训练样本

因为需要确定多个中心点,需要足够的样本覆盖输入空间,一般说来,所需训练样本比传统ANN多。

 

2.4 RBF网络 vs 传统ANN

特性RBF网络传统ANN(Sigmoid)
激活函数径向基函数(局部性)Sigmoid函数(全局性)
感受区局部感受区全局影响
训练速度快(直接计算权重)慢(需要迭代)
训练样本需要较多需要较少
逼近能力最佳逼近性能良好逼近性能
适用场景函数逼近、模式识别分类、回归

Sigmoid函数的全局性

  • 无论输入在哪里,Sigmoid函数都有输出

  • 一个权重的改变会影响整个输入空间

  • 学习基于随机逼近原理,收敛速度慢

RBF函数的局部性

  • 只在中心点附近有显著输出

  • 一个隐单元只影响局部区域

  • 训练速度快,但需要更多样本

选择建议

  • 需要快速训练且样本充足 → 使用RBF网络

  • 样本较少或需要全局学习 → 使用传统ANN

 

三、支持向量机(SVM)

[!NOTE]
📝 关键点总结:SVM找到最优的分类超平面使得两类样本之间的间隔最大,只有支持向量影响分类超平面,通过核技巧处理非线性问题,泛化能力强。

核心思想

  • 最大间隔原理:找到最优的分类超平面,使得两类样本之间的间隔(margin)最大
  • 形象比喻:就像在两个城市之间修路,要找到一条最宽的路(最大间隔),这条路要尽可能远离两个城市(两类样本)
  • 优势:分类更可靠(容错能力强)、泛化能力更好(对新样本预测更准确)

支持向量

  • 定义:距离分类超平面最近的样本点
  • 特点:只有支持向量影响分类超平面的位置,其他样本点可以删除不影响分类结果,支持向量通常只占样本的一小部分
  • 复杂度:构造超平面的复杂度只取决于支持向量的个数,而不是样本总数,这使得SVM在处理大数据集时仍然高效

非线性升维映射

  • 问题:如果数据在原始空间中线性不可分怎么办?
  • 解决方案:通过非线性映射将数据映射到高维空间,在高维空间中数据可能变成线性可分的
  • 核技巧:不需要显式地计算高维映射,只需要计算高维空间中的内积(通过核函数),大大降低了计算复杂度
  • 常见核函数:线性核、多项式核、高斯核(RBF核,最常用)、Sigmoid核

SVM特点

  • 优点:泛化能力强(最大间隔原理)、对高维数据有效(核技巧)、内存效率高(只存储支持向量)、理论基础扎实(统计学习理论)
  • 缺点:对大规模数据训练慢、对参数和核函数选择敏感、不直接提供概率输出
  • 适用场景:二分类问题(可以扩展到多分类)、高维数据、需要强泛化能力的场景、样本数量中等

决策标准:需要强泛化能力 → 使用SVM;高维数据 → 使用核技巧;非线性问题 → 使用非线性核函数

3.1 什么是支持向量机?

支持向量机(Support Vector Machine, SVM)是一种强大的分类算法,由Vladimir N. Vapnik提出,基于统计学习理论

核心思想:找到最优的分类超平面,使得两类样本之间的间隔(margin)最大

形象比喻:就像在两个城市之间修路,要找到一条最宽的路(最大间隔),这条路要尽可能远离两个城市(两类样本),这样即使有误差,也不容易分错类。

 

3.2 最大边际分类超平面

问题:给定两类样本,如何找到最好的分类线(或超平面)?

SVM的答案:找到间隔最大的分类超平面。

间隔(Margin):分类超平面到最近样本的距离。

最大间隔:让这个距离尽可能大,这样:

  • 分类更可靠(容错能力强)

  • 泛化能力更好(对新样本预测更准确)

例子

假设二维平面上有两类点:正类(红色点)和负类(蓝色点)。有很多条直线可以分开这两类点,但SVM选择的是:距离两类点都最远的直线,这条直线到最近的红点和蓝点的距离相等且最大。

 

3.3 支持向量

支持向量(Support Vectors):距离分类超平面最近的样本点。

特点

  • 只有支持向量影响分类超平面的位置

  • 其他样本点可以删除,不影响分类结果

  • 支持向量通常只占样本的一小部分

构造超平面的复杂度:只取决于支持向量的个数,而不是样本总数。这使得SVM在处理大数据集时仍然高效。

 

3.4 非线性升维映射

问题:如果数据在原始空间中线性不可分怎么办?

SVM的解决方案:通过非线性映射将数据映射到高维空间,在高维空间中数据可能变成线性可分的。

核技巧(Kernel Trick)

  • 不需要显式地计算高维映射

  • 只需要计算高维空间中的内积(通过核函数)

  • 大大降低了计算复杂度

常见核函数

  1. 线性核K(xi,xj)=xiTxjK(x_i, x_j) = x_i^T x_jK(xi,xj)=xiTxj(原始空间)

  2. 多项式核K(xi,xj)=(xiTxj+1)dK(x_i, x_j) = (x_i^T x_j + 1)^dK(xi,xj)=(xiTxj+1)d

  3. 高斯核(RBF核)K(xi,xj)=exp⁡(−γ∣∣xi−xj∣∣2)K(x_i, x_j) = \exp(-\gamma ||x_i - x_j||^2)K(xi,xj)=exp(γ∣∣xixj2)

    • 最常用,可以将数据映射到无限维空间
  4. Sigmoid核K(xi,xj)=tanh⁡(αxiTxj+β)K(x_i, x_j) = \tanh(\alpha x_i^T x_j + \beta)K(xi,xj)=tanh(αxiTxj+β)

例子

假设二维平面上有一个圆形的分类问题(圆内是一类,圆外是另一类):

  • 在二维空间中:线性不可分

  • 映射到三维空间:可能变成线性可分(比如用 z=x2+y2z = x^2 + y^2z=x2+y2

  • SVM在高维空间中找到一个平面,完美分类

 

3.5 SVM的理论基础

SVM与以下理论相关:

  • Vapnik-Chervonenkis(VC)理论:研究学习机器的复杂度

  • VC维数:衡量模型复杂度的指标

  • 统计学习理论:研究机器学习的基本原理

  • 结构风险最小化:在经验风险和模型复杂度之间平衡

核心思想:不仅要让训练误差小,还要让模型复杂度低,从而保证泛化能力。

 

3.6 SVM的特点

优点

  • ✅ 泛化能力强(最大间隔原理)

  • ✅ 对高维数据有效(核技巧)

  • ✅ 内存效率高(只存储支持向量)

  • ✅ 理论基础扎实(统计学习理论)

缺点

  • ❌ 对大规模数据训练慢

  • ❌ 对参数和核函数选择敏感

  • ❌ 不直接提供概率输出

适用场景

  • 二分类问题(可以扩展到多分类)

  • 高维数据

  • 需要强泛化能力的场景

  • 样本数量中等(不是特别大)

 

四、神经网络(Neural Networks)

[!NOTE]
📝 关键点总结:神经网络模拟生物神经元机制,感知器只能解决线性可分问题无法解决XOR,多层前馈网络可以逼近任何连续函数,通过反向传播算法训练多层网络。

生物神经元启发

  • 人脑结构:由大量(约101010^{10}1010个)高度互连的神经元组成,每个神经元大约有10410^4104个连接
  • 有趣事实:生物神经元很慢(10−310^{-3}103秒),电子电路很快(10−910^{-9}109秒),但人脑能快速完成复杂任务
  • 原因:生物神经网络具有巨大的并行性,可以同时处理大量信息

McCulloch-Pitts神经元模型

  • 模型定义y={1如果 u≥θ0否则y = \begin{cases} 1 & \text{如果 } u \geq \theta \\ 0 & \text{否则} \end{cases}y={10如果 uθ否则u=∑iwixi−∑icixiu = \sum_i w_i x_i - \sum_i c_i x_iu=iwixiicixi
  • 特点:输入x1,...,xnx_1,...,x_nx1,...,xn、权重w1,...,wnw_1,...,w_nw1,...,wn(兴奋性连接)、抑制c1,...,cnc_1,...,c_nc1,...,cn(抑制性连接)、阈值θ\thetaθ、输出0或1(二值输出)
  • 可以执行:AND、OR、NOT逻辑函数
  • 局限性:单层感知器无法执行XOR逻辑函数(异或)

感知器的局限性

  • 单层感知器:只能解决线性可分问题,无法解决XOR等非线性问题
  • Minsky和Papert的证明(1969):只要是单层感知器,无论使用什么样的非线性激活函数,其分类能力都一样,即只能解决线性可分问题
  • XOR问题:XOR在二维空间中不是线性可分的,单层感知器无法解决,需要两条直线(或多层网络)

多层前馈网络的能力

  • 重要定理:具有一个隐含层的前馈神经元网络可以逼近任何连续函数
  • 含义:只要有足够的隐含层节点,单隐含层网络就可以表示任意复杂的连续函数
  • 为什么需要多层:隐含层可以学习非线性特征,多个隐含层可以学习更复杂的特征组合,可以解决非线性分类和回归问题
  • XOR问题解决:两层网络(一个隐含层)可以解决,隐含层学习两个线性边界,输出层组合这些边界形成XOR的非线性决策边界

决策标准:线性可分问题 → 单层感知器;非线性问题 → 多层前馈网络;需要逼近复杂函数 → 增加隐含层节点数

4.1 什么是神经网络?

神经网络(Neural Networks)是对生物神经元机制进行模拟的模型,最早由心理学家和神经学家开创。

生物神经元的启发

人脑由大量(约 101010^{10}1010 个)高度互连的神经元组成,每个神经元大约有 10410^4104 个连接。

有趣的事实

  • 生物神经元很慢(10−310^{-3}103 秒)

  • 电子电路很快(10−910^{-9}109 秒)

  • 但人脑能快速完成复杂任务(如识别图像、理解语言)

原因:生物神经网络具有巨大的并行性,可以同时处理大量信息。

 

4.2 McCulloch-Pitts神经元模型

这是最早的神经元模型之一,模拟了生物神经元的基本功能。

模型定义

一个阈值为 θ\thetaθ 的McCulloch-Pitts神经元:

y={1如果 u≥θ0否则y = \begin{cases} 1 & \text{如果 } u \geq \theta \\ 0 & \text{否则} \end{cases}y={10如果 uθ否则

其中 u=∑iwixi−∑icixiu = \sum_i w_i x_i - \sum_i c_i x_iu=iwixiicixi(加权输入减去抑制输入)

特点

  • 输入:x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn

  • 权重:w1,w2,...,wnw_1, w_2, ..., w_nw1,w2,...,wn(兴奋性连接)

  • 抑制:c1,c2,...,cnc_1, c_2, ..., c_nc1,c2,...,cn(抑制性连接)

  • 阈值:θ\thetaθ

  • 输出:0或1(二值输出)

可以执行的逻辑函数

  • AND:当所有输入都为1时输出1

  • OR:当至少一个输入为1时输出1

  • NOT:输出输入的相反值

局限性:单层感知器无法执行XOR逻辑函数(异或)。

XOR问题

  • 输入 (0,0)(0,0)(0,0) → 输出 0

  • 输入 (0,1)(0,1)(0,1) → 输出 1

  • 输入 (1,0)(1,0)(1,0) → 输出 1

  • 输入 (1,1)(1,1)(1,1) → 输出 0

XOR在二维空间中不是线性可分的,单层感知器无法解决。

 

4.3 感知器(Perceptron)

感知器由Rosenblatt提出,是神经网络的基础。

单层感知器:只能解决线性可分问题,无法解决XOR等非线性问题。

Minsky和Papert的证明(1969):只要是单层感知器(网络),无论使用什么样的非线性激活函数,其分类能力都一样,即只能解决线性可分问题

线性可分的例子

  • AND可以用一条直线分开

  • OR可以用一条直线分开

线性不可分的例子

  • XOR无法用一条直线分开,需要两条直线(或多层网络)

 

4.4 多层前馈神经网络

网络结构

多层前馈神经元网络由以下部分组成:

  • 输入层:接收输入特征

  • 隐含层(中间层):一个或多个,进行特征变换

  • 输出层:输出最终结果

连接方式

  • 层间:全连接(每个节点连接到下一层的所有节点)

  • 层内:无连接(同一层的节点之间不连接)

数学表达

对于具有一个隐含层的网络:

y=f(∑jwj⋅g(∑iwijxi+bj)+b)y = f\left(\sum_{j} w_j \cdot g\left(\sum_{i} w_{ij} x_i + b_j\right) + b\right)y=f(jwjg(iwijxi+bj)+b)

其中:

  • xix_ixi 是输入

  • ggg 是隐含层激活函数

  • fff 是输出层激活函数

  • wijw_{ij}wij 是输入层到隐含层的权重

  • wjw_jwj 是隐含层到输出层的权重

  • bj,bb_j, bbj,b 是偏置项

 

4.5 多层网络的表达能力

重要定理:具有一个隐含层的前馈神经元网络可以逼近任何连续函数

含义:只要有足够的隐含层节点,单隐含层网络就可以表示任意复杂的连续函数,这就是神经网络的强大之处。

为什么需要多层?

单层感知器的局限

  • 只能学习线性决策边界

  • 无法解决XOR等非线性问题

多层网络的能力

  • 隐含层可以学习非线性特征

  • 多个隐含层可以学习更复杂的特征组合

  • 可以解决非线性分类和回归问题

例子

XOR问题

  • 单层感知器无法解决

  • 两层网络(一个隐含层)可以解决

  • 隐含层学习两个线性边界,输出层组合这些边界,形成XOR的非线性决策边界

实际应用

  • 图像识别中多层网络可以学习从边缘→形状→物体的层次特征

  • 自然语言处理中可以学习词→短语→句子的语义表示

  • 语音识别中可以学习从音频特征→音素→单词的映射

 

五、反向传播算法(BP算法)

[!NOTE]
📝 关键点总结:反向传播算法通过前向传播计算输出,反向传播误差,使用梯度下降更新权重,可以训练多层网络但只能找到局部最小值。

核心思想

  • 基本流程:前向传播(输入数据从输入层→隐含层→输出层,计算网络输出)→ 计算误差(比较网络输出和期望输出)→ 反向传播(将误差从输出层→隐含层→输入层,逐层反向传播)→ 权值更新(根据误差梯度,使用梯度下降法更新权重)
  • 形象比喻:前向传播信息从前往后流动(信号传递),反向传播误差从后往前流动("问责"机制),权值更新根据"问责"信息调整权重减少错误

算法详细步骤

  1. 初始化:确定网络结构(层数、每层节点数),初始化网络权重为随机小数,初始化总误差Etotal=0E_{total} = 0Etotal=0,设定误差阈值EmaxE_{max}Emax和最大迭代次数
  2. 迭代训练:对每个训练样本进行前向传播(计算各层输出)、计算误差(输出层误差E=12(d−O)2E = \frac{1}{2}(d-O)^2E=21(dO)2)、反向传播(计算各层的局部梯度δ\deltaδ)、权值修正(根据局部梯度更新权重w←w+ηΔww \leftarrow w + \eta \Delta www+ηΔw
  3. 检查终止条件:如果Etotal<EmaxE_{total} < E_{max}Etotal<Emax或达到最大迭代次数则停止,否则继续下一轮迭代

关键概念

  • 局部梯度δ\deltaδ表示该节点的误差对输入的敏感度,输出层δk=(dk−Ok)⋅f′(netk)\delta_k = (d_k - O_k) \cdot f'(net_k)δk=(dkOk)f(netk),隐含层δj=∑kwjkδk⋅g′(netj)\delta_j = \sum_k w_{jk} \delta_k \cdot g'(net_j)δj=kwjkδkg(netj)
  • 权值更新规则Δwij=η⋅δj⋅Oi\Delta w_{ij} = \eta \cdot \delta_j \cdot O_iΔwij=ηδjOiη\etaη是学习率,δj\delta_jδj是下一层节点的局部梯度,OiO_iOi是当前层节点的输出)
  • 链式法则:误差对权重的梯度 = 误差对输出的梯度 × 输出对输入的梯度 × 输入对权重的梯度

算法优缺点

  • 优点:理论基础扎实(基于梯度下降)、可以训练多层网络、应用广泛效果良好
  • 缺点:只能找到局部最小值不保证全局最优、训练时间长(需要多次迭代)、对初始权重敏感、可能陷入局部最优或"平台"(梯度接近0但未收敛)
  • 改进方法:使用动量项加速收敛、使用自适应学习率、使用不同的初始化策略、使用正则化防止过拟合

决策标准:需要训练多层网络 → 使用反向传播算法;需要避免局部最优 → 使用不同的初始化策略或改进算法

5.1 如何训练神经网络?

如果网络结构(隐含层个数、每层节点数)已知,训练神经网络就是确定各节点之间的连接权值

问题:如何找到最优的权重,使得网络输出与期望输出尽可能接近?

答案:使用反向传播算法(Backpropagation, BP算法)

 

5.2 反向传播算法的核心思想

基本流程

  1. 前向传播:输入数据从输入层→隐含层→输出层,计算网络输出

  2. 计算误差:比较网络输出和期望输出,计算误差

  3. 反向传播:将误差从输出层→隐含层→输入层,逐层反向传播

  4. 权值更新:根据误差梯度,使用梯度下降法更新权重

形象比喻

  • 前向传播:信息从前往后流动,就像信号传递

  • 反向传播:误差从后往前流动,就像"问责"机制,告诉前面的层哪里出错了

  • 权值更新:根据"问责"信息,调整权重,减少错误

 

5.3 算法详细步骤

1. 初始化

  • 根据训练集确定网络结构(层数、每层节点数)

  • 初始化网络权重为随机小数(通常 [−0.5,0.5][-0.5, 0.5][0.5,0.5] 或更小)

  • 初始化总误差 Etotal=0E_{total} = 0Etotal=0,设定误差阈值 EmaxE_{max}Emax

  • 设定最大迭代次数

2. 迭代训练

对每个训练样本:

a. 前向传播

  • 从输入层开始,逐层计算每层网络的输出

  • 直到输出层,得到网络输出 OOO

b. 计算误差

  • 计算输出层误差:E=12(d−O)2E = \frac{1}{2}(d - O)^2E=21(dO)2(其中 ddd 是期望输出,OOO 是网络输出)

  • 累加总误差:Etotal=Etotal+EE_{total} = E_{total} + EEtotal=Etotal+E

c. 反向传播

  • 计算输出层的局部梯度 δk\delta_kδk

  • 从输出层向输入层,逐层计算每层的局部梯度 δj\delta_jδj

d. 权值修正

  • 根据局部梯度,计算权值的更新量 Δw\Delta wΔw

  • 更新权重:w←w+ηΔww \leftarrow w + \eta \Delta www+ηΔw(其中 η\etaη 是学习率)

3. 检查终止条件

  • 如果 Etotal<EmaxE_{total} < E_{max}Etotal<Emax 或达到最大迭代次数 → 停止

  • 否则,重置 Etotal=0E_{total} = 0Etotal=0,继续下一轮迭代

 

5.4 关键概念

1. 局部梯度

局部梯度 δ\deltaδ 表示:该节点的误差对输入的敏感度

  • 输出层:δk=(dk−Ok)⋅f′(netk)\delta_k = (d_k - O_k) \cdot f'(net_k)δk=(dkOk)f(netk)

  • 隐含层:δj=∑kwjkδk⋅g′(netj)\delta_j = \sum_k w_{jk} \delta_k \cdot g'(net_j)δj=kwjkδkg(netj)

其中 f′f'fg′g'g 是激活函数的导数。

2. 权值更新规则

Δwij=η⋅δj⋅Oi\Delta w_{ij} = \eta \cdot \delta_j \cdot O_iΔwij=ηδjOi

其中:

  • η\etaη 是学习率

  • δj\delta_jδj 是下一层节点的局部梯度

  • OiO_iOi 是当前层节点的输出

3. 链式法则

反向传播的核心是链式法则

  • 误差对权重的梯度 = 误差对输出的梯度 × 输出对输入的梯度 × 输入对权重的梯度

  • 通过链式法则,可以从输出层逐层向前计算梯度

 

5.5 算法的优缺点

优点

  • ✅ 理论基础扎实(基于梯度下降)

  • ✅ 可以训练多层网络

  • ✅ 应用广泛,效果良好

缺点

  • ❌ 只能找到局部最小值,不保证全局最优

  • ❌ 训练时间长(需要多次迭代)

  • ❌ 对初始权重敏感(不同初始值可能得到不同结果)

  • ❌ 可能陷入局部最优或"平台"(梯度接近0但未收敛)

改进方法

  • 使用动量项加速收敛

  • 使用自适应学习率

  • 使用不同的初始化策略

  • 使用正则化防止过拟合

 

六、神经网络特点

[!NOTE]
📝 关键点总结:神经网络具有鲁棒性强、处理能力强、并行性好、表达能力强大等优点,但也有训练时间长、参数选择困难、缺乏可解释性、局部最小值问题、饱和区问题等缺点。

神经网络优点

  • 鲁棒性强:算法鲁棒对噪声数据不敏感,具有对未经训练的数据进行分析的能力(泛化能力),即使输入有小的扰动输出也相对稳定
  • 处理能力强:可以处理无关属性(自动学习哪些特征重要),可以处理多种数据形式(离散、连续、向量等),不需要复杂的特征工程
  • 并行性好:算法固有并行性,适用于并行计算(GPU加速),可以加快训练和预测过程
  • 表达能力强大:可以逼近任意连续函数,可以学习复杂的非线性关系,多层网络可以学习层次化特征

神经网络缺点

  • 训练时间长:需要多次迭代,特别是深层网络训练时间很长,需要大量计算资源
  • 参数选择困难:需要依靠经验选择网络拓扑结构(层数、每层节点数),需要选择学习率、激活函数等超参数,不同问题需要不同的网络结构
  • 缺乏可解释性:网络模型是"黑盒",隐含层和权值中包含的信息难以理解,不知道网络为什么做出某个预测,这在医疗、金融等需要解释的场景中是问题
  • 局部最小值问题:标准BP算法只能找到局部最小值,网络训练容易陷入局部最优,不保证找到全局最优解
  • 饱和区问题:Sigmoid型激活函数都有饱和区,当输入很大或很小时梯度接近0,网络训练容易产生麻痹现象(权重几乎不更新)

改进方法:使用ReLU等激活函数避免饱和、使用批量归一化、使用残差连接

神经网络扩展

  • 极限学习机(ELM):神经网络权值直接确定法,不需要迭代训练,训练速度非常快,随机初始化输入层到隐含层的权重(固定不变),只训练隐含层到输出层的权重(线性问题,直接求解)
  • 深度学习:通过组合低层特征形成更加抽象的高层表示,发现数据的分布式特征表示,层次化学习(第1层学习边缘、线条等低级特征,第2层学习形状、纹理等中级特征,第3层及以上学习物体、场景等高级特征)

决策标准:需要强表达能力 → 使用神经网络;需要快速训练 → 考虑ELM;需要层次化特征学习 → 使用深度学习

6.1 神经网络的优点

1. 鲁棒性强

  • 算法鲁棒,对噪声数据不敏感

  • 具有对未经训练的数据进行分析的能力(泛化能力)

  • 即使输入有小的扰动,输出也相对稳定

2. 处理能力强

  • 可以处理无关属性(自动学习哪些特征重要)

  • 可以处理多种数据形式:离散、连续、向量等

  • 不需要复杂的特征工程

3. 并行性好

  • 算法固有并行性

  • 适用于并行计算(GPU加速)

  • 可以加快训练和预测过程

4. 表达能力强大

  • 可以逼近任意连续函数

  • 可以学习复杂的非线性关系

  • 多层网络可以学习层次化特征

 

6.2 神经网络的缺点

1. 训练时间长

  • 需要多次迭代

  • 特别是深层网络,训练时间很长

  • 需要大量计算资源

2. 参数选择困难

  • 需要依靠经验选择网络拓扑结构(层数、每层节点数)

  • 需要选择学习率、激活函数等超参数

  • 不同问题需要不同的网络结构

3. 缺乏可解释性

  • 网络模型是"黑盒"

  • 隐含层和权值中包含的信息难以理解

  • 不知道网络为什么做出某个预测

  • 这在医疗、金融等需要解释的场景中是问题

4. 局部最小值问题

  • 标准BP算法只能找到局部最小值

  • 网络训练容易陷入局部最优

  • 不保证找到全局最优解

5. 饱和区问题

  • Sigmoid型激活函数都有饱和区

  • 当输入很大或很小时,梯度接近0

  • 网络训练容易产生麻痹现象(权重几乎不更新)

改进方法

  • 使用ReLU等激活函数避免饱和

  • 使用批量归一化

  • 使用残差连接

 

6.3 神经网络的扩展

1. 极限学习机(ELM)

特点

  • 神经网络权值直接确定法

  • 不需要迭代训练

  • 训练速度非常快

原理

  • 随机初始化输入层到隐含层的权重(固定不变)

  • 只训练隐含层到输出层的权重(线性问题,直接求解)

2. 深度学习(Deep Learning)

核心思想

  • 通过组合低层特征形成更加抽象的高层表示

  • 发现数据的分布式特征表示

层次化学习

  • 第1层学习边缘、线条等低级特征

  • 第2层学习形状、纹理等中级特征

  • 第3层及以上学习物体、场景等高级特征

监督学习模型

  • 卷积神经网络(CNNs):主要用于图像处理,使用卷积层提取局部特征,使用池化层降低维度

无监督学习模型

  • 深度置信网(DBNs):主要用于特征学习,使用受限玻尔兹曼机(RBM)逐层预训练,然后使用监督学习微调

深度学习的优势

  • 自动学习特征(不需要手工设计)

  • 在图像、语音、自然语言处理等领域表现优异

  • 可以处理大规模数据

深度学习的挑战

  • 需要大量数据和计算资源

  • 训练时间长

  • 仍然缺乏可解释性

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值