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

文章目录

一、考试范围知识框架

  • 径向基函数网络(RBF Networks)
  • 支持向量机(SVM)
  • 神经网络(Neural Networks)
  • 感知器模型
  • 反向传播算法(BP算法)

可能考查的问题

  1. 神经网络相关问题
    • 感知器的局限性
    • 多层前馈网络的表达能力
    • 反向传播算法的原理
    • 激活函数的选择

二、正文内容

1. 径向基函数网络(RBF Networks)

关键词:径向基函数、局部感受区、函数中心、聚类确定中心

什么是径向基函数?

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

常见径向基函数

  1. 高斯函数 (最常用):
    ϕ ( x ) = exp ⁡ ( − ∣ ∣ x − c ∣ ∣ 2 2 σ 2 ) \phi(x) = \exp\left(-\frac{||x - c||^2}{2\sigma^2}\right) ϕ(x)=exp(−2σ2∣∣x−c∣∣2)

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

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

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

特点:函数值在中心点最大;距离中心点越远,函数值越小;形成一个"局部"的影响区域。

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

RBF网络的结构

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

网络结构输入层 接收输入特征;隐层 使用径向基函数作为激活函数;输出层线性组合隐层输出。

数学表达

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

其中: M M M 是隐层单元数量; ϕ j ( x ) \phi_j(x) ϕj(x) 是第 j j j 个隐单元的径向基函数; w j w_j wj 是第 j j j 个隐单元到输出的权重; w 0 w_0 w0 是偏置项。

RBF网络的特点

1. 局部感受区

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

含义 :只有当输入 x x x 接近某个中心点 c j c_j cj 时,对应的隐单元 ϕ j ( x ) \phi_j(x) ϕj(x) 才有较大的输出;远离中心点时,输出接近0;每个隐单元只"关注"输入空间的某个局部区域。

例子

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

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

2. 训练速度快

原因:使用聚类(如K-means)确定函数中心;隐单元到输出的权重可以直接计算(不需要迭代);避免了反向传播的反复迭代过程。

训练步骤 :1. 使用聚类算法确定隐单元的中心点;2. 设置宽度参数 σ \sigma σ;3. 直接计算输出层权重(最小二乘法)。

3. 需要较多训练样本

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

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

Sigmoid函数的全局性:无论输入在哪里,Sigmoid函数都有输出;一个权重的改变会影响整个输入空间;学习基于随机逼近原理,收敛速度慢。

RBF函数的局部性:只在中心点附近有显著输出;一个隐单元只影响局部区域;训练速度快,但需要更多样本。

选择建议:需要快速训练且样本充足 → 使用RBF网络;样本较少或需要全局学习 → 使用传统ANN。

2. 支持向量机(SVM)

关键词:统计学习理论、最大边际、支持向量、非线性升维映射

什么是支持向量机?

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

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

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

最大边际分类超平面

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

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

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

最大间隔:让这个距离尽可能大,这样:分类更可靠(容错能力强);泛化能力更好(对新样本预测更准确)。

例子

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

支持向量

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

特点:只有支持向量影响分类超平面的位置;其他样本点可以删除,不影响分类结果;支持向量通常只占样本的一小部分。

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

非线性升维映射

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

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

核技巧(Kernel Trick):不需要显式地计算高维映射;只需要计算高维空间中的内积(通过核函数);大大降低了计算复杂度。

常见核函数

  1. 线性核 : K ( x i , x j ) = x i T x j K(x_i, x_j) = x_i^T x_j K(xi,xj)=xiTxj(原始空间)

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

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

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

例子

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

  • 在二维空间中:线性不可分
  • 映射到三维空间:可能变成线性可分(比如用 z = x 2 + y 2 z = x^2 + y^2 z=x2+y2)
  • SVM在高维空间中找到一个平面,完美分类
SVM的理论基础

SVM与以下理论相关:Vapnik-Chervonenkis(VC)理论 研究学习机器的复杂度;VC维数 衡量模型复杂度的指标;统计学习理论 研究机器学习的基本原理;结构风险最小化在经验风险和模型复杂度之间平衡。

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

SVM的特点

优点:✅ 泛化能力强(最大间隔原理);✅ 对高维数据有效(核技巧);✅ 内存效率高(只存储支持向量);✅ 理论基础扎实(统计学习理论)。

缺点:❌ 对大规模数据训练慢;❌ 对参数和核函数选择敏感;❌ 不直接提供概率输出。

适用场景:二分类问题(可以扩展到多分类);高维数据;需要强泛化能力的场景;样本数量中等(不是特别大)。

3. 神经网络(Neural Networks)

关键词:生物神经元、McCulloch-Pitts神经元、感知器、多层前馈网络、反向传播

什么是神经网络?

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

生物神经元的启发

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

有趣的事实 :生物神经元很慢( 1 0 − 3 10^{-3} 10−3 秒),电子电路很快( 1 0 − 9 10^{-9} 10−9 秒),但人脑能快速完成复杂任务(如识别图像、理解语言)。

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

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 = ∑ i w i x i − ∑ i c i x i u = \sum_i w_i x_i - \sum_i c_i x_i u=∑iwixi−∑icixi(加权输入减去抑制输入)

特点 :输入: x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn;权重: w 1 , w 2 , . . . , w n w_1, w_2, ..., w_n w1,w2,...,wn(兴奋性连接);抑制: c 1 , c 2 , . . . , c n c_1, c_2, ..., c_n c1,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在二维空间中不是线性可分的,单层感知器无法解决。

感知器(Perceptron)

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

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

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

线性可分的例子:AND可以用一条直线分开;OR可以用一条直线分开。

线性不可分的例子:XOR无法用一条直线分开,需要两条直线(或多层网络)。

多层前馈神经网络

网络结构

多层前馈神经元网络由以下部分组成:输入层 接收输入特征;隐含层 (中间层)一个或多个,进行特征变换;输出层输出最终结果。

连接方式层间 全连接(每个节点连接到下一层的所有节点);层内无连接(同一层的节点之间不连接)。

数学表达

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

y = f ( ∑ j w j ⋅ g ( ∑ i w i j x i + b j ) + b ) y = f\left(\sum_{j} w_j \cdot g\left(\sum_{i} w_{ij} x_i + b_j\right) + b\right) y=f(j∑wj⋅g(i∑wijxi+bj)+b)

其中: x i x_i xi 是输入; g g g 是隐含层激活函数; f f f 是输出层激活函数; w i j w_{ij} wij 是输入层到隐含层的权重; w j w_j wj 是隐含层到输出层的权重; b j , b b_j, b bj,b 是偏置项。

多层网络的表达能力

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

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

为什么需要多层?

单层感知器的局限:只能学习线性决策边界;无法解决XOR等非线性问题。

多层网络的能力:隐含层可以学习非线性特征;多个隐含层可以学习更复杂的特征组合;可以解决非线性分类和回归问题。

例子

XOR问题:单层感知器无法解决;两层网络(一个隐含层)可以解决。隐含层学习两个线性边界,输出层组合这些边界,形成XOR的非线性决策边界。

实际应用:图像识别中多层网络可以学习从边缘→形状→物体的层次特征;自然语言处理中可以学习词→短语→句子的语义表示;语音识别中可以学习从音频特征→音素→单词的映射。

4. 反向传播算法(BP算法)

关键词:误差反向传播、梯度下降、权值修正、局部最小值

如何训练神经网络?

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

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

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

反向传播算法的核心思想

基本流程

  1. 前向传播:输入数据从输入层→隐含层→输出层,计算网络输出
  2. 计算误差:比较网络输出和期望输出,计算误差
  3. 反向传播:将误差从输出层→隐含层→输入层,逐层反向传播
  4. 权值更新:根据误差梯度,使用梯度下降法更新权重

形象比喻前向传播 信息从前往后流动,就像信号传递;反向传播 误差从后往前流动,就像"问责"机制,告诉前面的层哪里出错了;权值更新根据"问责"信息,调整权重,减少错误。

算法详细步骤

1. 初始化 :根据训练集确定网络结构(层数、每层节点数);初始化网络权重为随机小数(通常 [ − 0.5 , 0.5 ] [-0.5, 0.5] [−0.5,0.5] 或更小);初始化总误差 E t o t a l = 0 E_{total} = 0 Etotal=0,设定误差阈值 E m a x E_{max} Emax;设定最大迭代次数。

2. 迭代训练

对每个训练样本:

a. 前向传播 :从输入层开始,逐层计算每层网络的输出,直到输出层,得到网络输出 O O O。

b. 计算误差 :计算输出层误差: E = 1 2 ( d − O ) 2 E = \frac{1}{2}(d - O)^2 E=21(d−O)2(其中 d d d 是期望输出, O O O 是网络输出);累加总误差: E t o t a l = E t o t a l + E E_{total} = E_{total} + E Etotal=Etotal+E。

c. 反向传播 :计算输出层的局部梯度 δ k \delta_k δk;从输出层向输入层,逐层计算每层的局部梯度 δ j \delta_j δj。

d. 权值修正 :根据局部梯度,计算权值的更新量 Δ w \Delta w Δw;更新权重: w ← w + η Δ w w \leftarrow w + \eta \Delta w w←w+ηΔw(其中 η \eta η 是学习率)。

3. 检查终止条件 :如果 E t o t a l < E m a x E_{total} < E_{max} Etotal<Emax 或达到最大迭代次数 → 停止;否则,重置 E t o t a l = 0 E_{total} = 0 Etotal=0,继续下一轮迭代。

算法流程图
flowchart TD A[初始化权值w0] --> B{训练集中是否还有未学习过的样本?} B -->|是| C[输入样本x, 计算各层输出] B -->|否| D{停机否 E|否| A D -->|是| E[结束] C --> F[计算输出层误差 E←E+‖d-O‖²/2] F --> G[计算局部梯度δj, δk] G --> H[修正输出层权值 wk←wk+ηΔwk] H --> I[修正隐层权值 wj←wj+ηΔwj] I --> B
关键概念

1. 局部梯度

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

  • 输出层: δ k = ( d k − O k ) ⋅ f ′ ( n e t k ) \delta_k = (d_k - O_k) \cdot f'(net_k) δk=(dk−Ok)⋅f′(netk)
  • 隐含层: δ j = ∑ k w j k δ k ⋅ g ′ ( n e t j ) \delta_j = \sum_k w_{jk} \delta_k \cdot g'(net_j) δj=∑kwjkδk⋅g′(netj)

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

2. 权值更新规则

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

其中: η \eta η 是学习率; δ j \delta_j δj 是下一层节点的局部梯度; O i O_i Oi 是当前层节点的输出。

3. 链式法则

反向传播的核心是链式法则:误差对权重的梯度 = 误差对输出的梯度 × 输出对输入的梯度 × 输入对权重的梯度。通过链式法则,可以从输出层逐层向前计算梯度。

算法的优缺点

优点:✅ 理论基础扎实(基于梯度下降);✅ 可以训练多层网络;✅ 应用广泛,效果良好。

缺点 :❌ 只能找到局部最小值,不保证全局最优;❌ 训练时间长(需要多次迭代);❌ 对初始权重敏感(不同初始值可能得到不同结果);❌ 可能陷入局部最优或"平台"(梯度接近0但未收敛)。

改进方法:使用动量项加速收敛;使用自适应学习率;使用不同的初始化策略;使用正则化防止过拟合。

5. 神经网络特点

关键词:鲁棒性、并行性、局部最小值、网络结构选择、可解释性

神经网络的优点

1. 鲁棒性强 :算法鲁棒,对噪声数据不敏感;具有对未经训练的数据进行分析的能力(泛化能力);即使输入有小的扰动,输出也相对稳定。

2. 处理能力强 :可以处理无关属性 (自动学习哪些特征重要);可以处理多种数据形式:离散、连续、向量等;不需要复杂的特征工程。

3. 并行性好:算法固有并行性;适用于并行计算(GPU加速);可以加快训练和预测过程。

4. 表达能力强大:可以逼近任意连续函数;可以学习复杂的非线性关系;多层网络可以学习层次化特征。

神经网络的缺点

1. 训练时间长:需要多次迭代;特别是深层网络,训练时间很长;需要大量计算资源。

2. 参数选择困难 :需要依靠经验选择网络拓扑结构(层数、每层节点数);需要选择学习率、激活函数等超参数;不同问题需要不同的网络结构。

3. 缺乏可解释性 :网络模型是"黑盒";隐含层和权值中包含的信息难以理解;不知道网络为什么做出某个预测;这在医疗、金融等需要解释的场景中是问题。

4. 局部最小值问题 :标准BP算法只能找到局部最小值;网络训练容易陷入局部最优;不保证找到全局最优解。

5. 饱和区问题 :Sigmoid型激活函数都有饱和区 ;当输入很大或很小时,梯度接近0;网络训练容易产生麻痹现象(权重几乎不更新)。

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

神经网络的扩展

1. 极限学习机(ELM)

特点 :神经网络权值直接确定法;不需要迭代训练;训练速度非常快。

原理:随机初始化输入层到隐含层的权重(固定不变);只训练隐含层到输出层的权重(线性问题,直接求解)。

2. 深度学习(Deep Learning)

核心思想 :通过组合低层特征 形成更加抽象的高层表示 ;发现数据的分布式特征表示

层次化学习:第1层学习边缘、线条等低级特征;第2层学习形状、纹理等中级特征;第3层及以上学习物体、场景等高级特征。

监督学习模型:**卷积神经网络(CNNs)**主要用于图像处理,使用卷积层提取局部特征,使用池化层降低维度。

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

深度学习的优势:自动学习特征(不需要手工设计);在图像、语音、自然语言处理等领域表现优异;可以处理大规模数据。

深度学习的挑战:需要大量数据和计算资源;训练时间长;仍然缺乏可解释性。

相关推荐
实在智能RPA2 分钟前
实在 Agent 和通用大模型有什么不一样?深度拆解 AI Agent 的感知、决策与执行逻辑
人工智能·ai
独隅6 分钟前
PyTorch 模型部署的 Docker 配置与性能调优深入指南
人工智能·pytorch·docker
lihuayong13 分钟前
OpenClaw 系统提示词
人工智能·prompt·提示词·openclaw
Wilber的技术分享17 分钟前
【LeetCode高频手撕题 2】面试中常见的手撕算法题(小红书)
笔记·算法·leetcode·面试
邪神与厨二病20 分钟前
Problem L. ZZUPC
c++·数学·算法·前缀和
黑客说27 分钟前
AI驱动剧情,解锁无限可能——AI游戏发展解析
人工智能·游戏
踩着两条虫32 分钟前
AI驱动的Vue3应用开发平台深入探究(十):物料系统之内置组件库
android·前端·vue.js·人工智能·低代码·系统架构·rxjava
小仙女的小稀罕38 分钟前
听不清重要会议录音急疯?这款常见AI工具听脑AI精准转译
开发语言·人工智能·python
reesn44 分钟前
qwen3.5 0.8B纠正任务实践
人工智能·语言模型