【模式识别与机器学习(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)逐层预训练,然后使用监督学习微调。

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

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

相关推荐
.格子衫.1 小时前
026动态规划之跨步DP——算法备赛
算法·动态规划
*星星之火*1 小时前
【大白话 AI 答疑】第5篇 从 “窄域专精” 到 “广谱通用”:传统机器学习与大模型的 6 大核心区别
人工智能·机器学习
做怪小疯子1 小时前
LeetCode 热题 100——二叉树——二叉树的最大深度
算法·leetcode·职场和发展
张飞签名上架1 小时前
苹果TF签名:革新应用分发的解决方案
人工智能·安全·ios·苹果签名·企业签名·苹果超级签名
xcLeigh1 小时前
AI 绘制图表专栏:用豆包轻松实现 HTML 柱状图、折线图与饼图
前端·人工智能·html·折线图·柱状图·图表·豆包
玖日大大1 小时前
LongCat-Flash-Omni:5600 亿参数开源全模态模型的技术革命与产业实践
人工智能·microsoft·语言模型
Maỿbe1 小时前
暴打力扣之优先级队列(堆)
算法·leetcode·职场和发展
Swift社区1 小时前
LeetCode 438 - 找到字符串中所有字母异位词
算法·leetcode·职场和发展
北冥湖畔的燕雀1 小时前
二叉搜索树:高效查找与删除的实现
数据结构·c++·算法