机器学习&九,十,十一章,深度神经,降维,聚类
深度学习模型训练的核心是反向传播算法,通过链式求导计算梯度并更新参数。DNN和CNN的反向传播原理相似,但CNN需特殊处理卷积/池化层的梯度计算。激活函数中ReLU因缓解梯度消失成为主流选择。梯度下降存在学习率难调、易陷局部最优等问题。降维方法分为特征选择和特征提取,PCA作为经典线性降维方法通过主成分保留最大方差,但无法处理非线性结构。聚类算法中,K-Means简单高效但需预设k值,GMM支持概
9. 深度神经模型训练
9.1 梯度计算:反向传播
反向传播(Back Propagation,BP)是深度学习模型训练的核心—— 简单说就是 “先算预测误差,再把误差从输出层往输入层传,最后更新权重 / 偏置,让误差变小”。梯度可以理解为 “权重 / 偏置该往哪个方向、改多少才能让误差变小”。
9.1.1 DNN 的反向传播算法(全连接神经网络)
先明确 3 个核心支撑概念,再讲算法流程:
(1)核心概念拆解
- 误差计算:衡量模型预测值和真实值的差距,最常用的是均方误差(MSE)(回归问题)和交叉熵损失(Cross Entropy)(分类问题)。
- 例(二分类):真实值 y(0 或 1),预测值 y^(0~1),交叉熵损失 L=−[ylny^+(1−y)ln(1−y^)],损失越大,预测越不准。
- 梯度下降法:核心思想是 “沿着梯度的反方向调整参数(权重w、偏置b),让损失函数最小化”。
- 类比:你站在山坡上想走到谷底,每次都往 “最陡的下坡方向” 走一小步,直到走到最低处。
- 公式(单参数更新):wnew=wold−η⋅∂w∂L(η是学习率,即 “每步走多远”;∂w∂L是损失对权重的梯度)。
- 链式求导法则:反向传播的数学基础,核心是 “复合函数的导数等于各层导数的乘积”。
- 例:L=f(y^),y^=g(z),z=h(w),则 ∂w∂L=∂y^∂L⋅∂z∂y^⋅∂w∂z—— 这正是误差从输出层传到权重的过程。
(2)DNN 反向传播流程(简化版)
假设网络:输入层→隐藏层→输出层
- 前向计算:算输出层预测值 y^,计算损失 L;
- 反向传误差:
- 输出层:算损失对输出层神经元的梯度(∂zo∂L,zo是输出层线性和);
- 隐藏层:用链式法则,把输出层的误差传到隐藏层,算损失对隐藏层神经元的梯度(∂zh∂L);
- 更新参数:用梯度下降法,更新隐藏层→输出层、输入层→隐藏层的所有权重和偏置;
- 重复上述步骤,直到损失足够小。
9.1.2 CNN 的反向传播算法
CNN 的反向传播和 DNN 核心逻辑一致(算梯度 + 更新参数),但因为有卷积、池化层,梯度计算更特殊,重点理解 “反向时怎么处理卷积 / 池化的梯度”:
(1)卷积层的反向传播(核心思路)
卷积层的参数是卷积核的权重,反向传播要算 “损失对卷积核权重的梯度”。
- 直观理解:前向是 “卷积核滑过输入算特征图”,反向是 “把误差(损失对特征图的梯度)滑回输入,算卷积核的梯度”。
- 简化计算过程:
- 先算损失对卷积层输出(特征图)的梯度 ∂out∂L;
- 把这个梯度和前向的输入做 “互相关运算”(类似卷积,只是卷积核不翻转),得到损失对卷积核权重的梯度 ∂w∂L;
- 用梯度下降更新卷积核权重。
(2)池化层的反向传播(核心思路)
池化层没有可训练的参数(只有窗口大小、步长),反向传播只需要把 “损失对池化输出的梯度” 传递回池化层的输入即可。
- 以最大池化为例:前向时我们取了窗口内的最大值,反向时只把梯度 “分配” 给这个最大值的位置,其他位置梯度为 0。例:前向 2×2 最大池化取了右上角的 10,反向时只有这个位置的梯度等于损失对池化输出的梯度,其余 3 个位置梯度为 0。
9.2 激活函数(核心对比)
激活函数的核心作用是给神经网络引入非线性,没有它,再多层网络也等价于单层线性模型。下面是 3 个核心激活函数的对比:
| 激活函数 | 表达式 | 核心优点 | 核心缺点 |
|---|---|---|---|
| Sigmoid | σ(z)=1+e−z1 | 1. 输出在 0~1 之间,可解释为概率;2. 连续可导,适合早期反向传播 | 1. 梯度消失:z 绝对值大时,导数接近 0,反向传播梯度传不下去;2. 输出不是以 0 为中心(均值≈0.5),导致权重更新偏向一个方向;3. 计算慢(有指数运算) |
| Tanh | tanh(z)=ez+e−zez−e−z | 1. 输出在 - 1~1 之间,以 0 为中心(解决 Sigmoid 的均值问题);2. 连续可导 | 仍存在梯度消失问题(z 绝对值大时导数接近 0);计算仍有指数运算,速度一般 |
| ReLU | ReLU(z)=max(0,z) | 1. 计算极快(只有比较和取最大值);2. 缓解梯度消失(z>0 时导数 = 1,梯度能有效传递);3. 稀疏激活(z<0 时输出 0,减少参数冗余) | 1. 部分神经元 “死亡”(z 始终 < 0 时,输出恒为 0,梯度为 0,参数不再更新);2. 输出仍不是以 0 为中心 |
补充:ReLU 是目前最常用的激活函数,衍生出的 Leaky ReLU(max(αz,z),α是小正数)能解决 “神经元死亡” 问题。
9.3 深度学习中的优化算法:梯度下降法的一些问题
梯度下降是优化的基础,但原始梯度下降有明显缺陷,先讲原始梯度下降的 3 类形式,再讲核心问题:
(1)梯度下降的 3 种基础形式
- 批量梯度下降(BGD):用全部训练数据算梯度,更新一次参数。优点:梯度准确;缺点:数据量大时计算极慢,内存扛不住。
- 随机梯度下降(SGD):用单个样本算梯度,更新一次参数。优点:计算快,能在线学习;缺点:梯度波动大,收敛不稳定。
- 小批量梯度下降(Mini-batch SGD):用一小批样本(比如 32、64 个)算梯度,是 BGD 和 SGD 的折中,目前最常用。
(2)梯度下降的核心问题
- 学习率难调:
- 学习率太大:参数更新幅度过大,损失会震荡,甚至不收敛;
- 学习率太小:收敛极慢,训练耗时久,还可能陷入局部最优。
- 所有参数共享学习率:不同参数的 “最优更新步长” 不同,但原始梯度下降用同一个学习率,无法适配不同参数的需求。
- 容易陷入局部最优 / 鞍点:损失函数的曲面不是 “单峰”,梯度下降可能卡在 “局部最低点”(不是全局最优)或 “鞍点”(梯度为 0,但不是最优)。
- 梯度消失 / 爆炸:深层网络中,反向传播时梯度要么趋近于 0(消失),要么趋近于无穷大(爆炸),导致参数无法有效更新(激活函数的缺陷会加剧这个问题)。
补充:后续的优化算法(Adam、RMSprop、Momentum)都是为了解决这些问题,比如 Momentum 加入 “动量” 模拟惯性,Adam 自适应调整每个参数的学习率。
10. 降维
降维的核心目的:减少数据的维度(比如从 100 个特征降到 10 个),同时保留数据的核心信息,解决 “维度灾难”(维度太多时,数据稀疏、计算量大、模型易过拟合)。
10.1 降维的核心分类与特点
(1)两种核心降维方式
| 方式 | 核心思想 | 主要方法 |
|---|---|---|
| 维度选择(特征选择) | 从原始维度中挑选一部分重要的维度,抛弃不重要的,维度本身不变 | 1. 过滤法(比如方差选择、相关系数):先筛选特征再训练模型;2. 包裹法(比如递归特征消除):用模型性能评估特征重要性;3. 嵌入法(比如 L1 正则化):训练模型时自动筛选特征 |
| 维度抽取(特征提取) | 不保留原始维度,而是通过数学变换生成新的低维特征,新特征是原始特征的组合 | 线性:PCA(主成分分析);非线性:LLE(局部线性嵌入)、t-SNE、核 PCA |
(2)线性 / 非线性降维的优缺点
- 线性降维(PCA)缺点:
- 只捕捉数据的线性关系,无法处理非线性结构(比如螺旋形数据);
- 对异常值敏感,异常值会严重影响主成分的方向;
- 新特征的可解释性差(是原始特征的线性组合,无法对应具体物理意义)。
- 非线性降维(代表方法):
- t-SNE:适合高维数据可视化(比如把 100 维数据降到 2 维画图),能捕捉非线性结构;
- LLE:基于 “局部邻域线性拟合”,保留数据的局部结构;
- 核 PCA:用核函数把数据映射到高维,再做 PCA,间接捕捉非线性关系。
10.2 主成分分析(PCA)
(1)主要思想
PCA 是最经典的线性降维方法,核心是:
- 找一组正交的新维度(主成分),这些主成分是原始特征的线性组合;
- 第一个主成分能解释数据的最大方差(包含最多信息),第二个主成分解释剩余方差中最大的部分,且和第一个正交(无重叠信息);
- 选择前 k 个主成分,抛弃其余维度,实现降维。
- 直观类比:把三维空间的点投影到二维平面,选择 “点分布最分散” 的平面(方差最大),这样投影后丢失的信息最少。
(2)PCA 算法步骤(算法 10-1,简化版)
- 数据预处理:对原始数据标准化(每个特征均值为 0,方差为 1),避免量纲影响(比如 “身高(厘米)” 和 “体重(公斤)” 量级不同);
- 计算协方差矩阵:协方差衡量两个特征的线性相关性,协方差矩阵能反映所有特征间的相关性;
- 计算协方差矩阵的特征值和特征向量:
- 特征值:代表对应主成分的方差大小(特征值越大,主成分越重要);
- 特征向量:代表主成分的方向;
- 选择主成分:把特征值从大到小排序,选前 k 个特征值对应的特征向量,组成 “投影矩阵”;
- 数据降维:把原始数据乘以投影矩阵,得到 k 维的新数据(降维完成)。
11. 聚类
聚类是无监督学习的核心(没有标签,只靠数据本身的相似性分组),目标是 “让同一簇内的数据尽可能相似,不同簇尽可能不同”。
11.1 聚类算法的性能指标与相似性度量
(1)DBI 指标(戴维斯 - 布尔丁指数)
DBI 是评估聚类效果的常用指标,核心是 “越小越好”:
- 计算公式(简化):DBI=k1∑i=1kmaxj=i(dijavgi+avgj)
- avgi:第 i 簇内数据的平均距离(簇内紧凑度);
- dij:第 i 簇和第 j 簇中心的距离(簇间分离度);
- 含义:DBI 越小,说明 “簇内越紧凑,簇间越分离”,聚类效果越好。
(2)相似性度量(核心是 “距离越小,越相似”)
- 闵可夫斯基距离:是一类距离的统称,常见特例:
- 曼哈顿距离(L1):d=∑i=1n∣xi−yi∣(比如从 A 到 B 走直角街道的距离);
- 欧氏距离(L2):d=∑i=1n(xi−yi)2(直线距离,最常用);
- 切比雪夫距离(L∞):d=max(∣x1−y1∣,∣x2−y2∣,...,∣xn−yn∣)(比如棋盘上国王走一步的最大距离)。
- 夹角余弦:衡量两个向量的 “方向相似性”,公式:cosθ=∑i=1nxi2∑i=1nyi2∑i=1nxiyi,值越接近 1,方向越一致(比如文本相似度常用)。
- 相关系数:衡量两个变量的线性相关性,公式:r=σXσYcov(X,Y),值在 - 1~1 之间,绝对值越大,线性相关性越强。
11.2 K 均值聚类(K-Means)
(1)核心思想
预先指定簇的数量 k,通过 “迭代调整簇中心 + 分配数据”,让每个簇内的数据到簇中心的距离之和最小。
- 直观类比:把全班同学分成 k 组,先随便选 k 个组长,然后每个人选离自己最近的组长组队;组队后重新选每组的 “新组长”(簇中心),重复直到组长位置不再变化。
(2)算法步骤
- 初始化:随机选 k 个数据点作为初始簇中心;
- 分配数据:计算每个数据点到 k 个簇中心的距离,把数据点分配到距离最近的簇;
- 更新簇中心:对每个簇,计算所有数据点的均值,作为新的簇中心;
- 迭代:重复步骤 2-3,直到簇中心的变化小于阈值,或达到最大迭代次数;
- 输出:最终的 k 个簇。
缺点:对初始簇中心敏感(可能陷入局部最优);需要预先指定 k;对异常值敏感。
11.3 高斯混合聚类(GMM)
(1)核心思想
假设数据是由多个高斯分布(正态分布)混合生成的,每个高斯分布对应一个簇。GMM 不是 “硬分配”(数据只属于一个簇),而是 “软分配”(数据属于每个簇的概率)。
- 直观类比:每个簇是一个 “高斯云”,数据点可能同时属于多个云,只是概率不同(比如某点有 80% 概率属于簇 1,20% 属于簇 2)。
(2)算法步骤(EM 算法)
- 初始化:指定簇数 k,初始化每个高斯分布的参数(均值、方差、权重);
- E 步(期望步):计算每个数据点属于每个簇的概率(后验概率);
- M 步(最大化步):根据 E 步的概率,更新每个高斯分布的均值、方差、权重,让数据的似然度最大;
- 迭代:重复 E 步 - M 步,直到参数稳定;
- 输出:每个数据点的簇概率,或按最大概率分配簇。
优点:能处理非球形簇、软分配;缺点:计算复杂,对初始参数敏感。
11.4 层次聚类
(1)核心思想
不需要预先指定簇数 k,而是通过 “层层合并 / 拆分” 构建聚类树(谱系图),最后根据需求截取树的某一层得到簇。
- 两类方式:
- 凝聚式(自底向上):每个数据点先自成一簇,然后不断合并最相似的簇,直到所有数据成一个簇;
- 分裂式(自顶向下):所有数据先成一个簇,然后不断拆分最不相似的簇,直到每个数据自成一簇。
(2)算法步骤(凝聚式,最常用)
- 初始化:每个数据点为一个独立的簇;
- 计算簇间距离:比如 “单链接”(两簇最近点的距离)、“全链接”(两簇最远点的距离)、“平均链接”(两簇所有点的平均距离);
- 合并簇:找到距离最近的两个簇,合并成一个新簇;
- 迭代:重复步骤 2-3,直到所有数据合并为一个簇;
- 截取结果:根据聚类树,选择合适的层数,得到最终的 k 个簇。
优点:无需指定 k,能可视化聚类过程;缺点:计算复杂度高,不适合大数据。
11.5 DBSCAN
(1)核心思想
基于 “密度” 聚类:把 “密度足够高” 的区域划为一个簇,能自动发现任意形状的簇,还能识别 “噪声点”(不属于任何簇的异常点)。
- 核心概念:
- ε(邻域半径):以某点为中心,半径 ε 内的区域;
- 最小点数(MinPts):ε 邻域内至少有 MinPts 个点,该点才是 “核心点”;
- 核心点:ε 邻域内点数≥MinPts;
- 边界点:在核心点的 ε 邻域内,但自身不是核心点;
- 噪声点:既不是核心点,也不是边界点。
(2)算法步骤
- 初始化:设置 ε 和 MinPts,标记所有点为 “未访问”;
- 遍历点:选一个未访问的点 p,标记为已访问;
- 找核心点:计算 p 的 ε 邻域内的点数,若≥MinPts,p 是核心点,开始扩展簇;
- 扩展簇:把 p 邻域内的所有点加入当前簇,然后遍历这些点的邻域,把核心点的邻域点也加入簇,直到没有新点可加;
- 标记噪声:若 p 不是核心点,标记为噪声点;
- 迭代:重复步骤 2-5,直到所有点都被访问;
- 输出:所有簇和噪声点。
优点:无需指定 k,能识别噪声,处理任意形状簇;缺点:对 ε 和 MinPts 敏感,高维数据效果差。
总结
- 深度模型训练:反向传播是核心(链式求导传误差 + 梯度下降更参数),CNN 反向传播需适配卷积 / 池化的梯度特性;激活函数中 ReLU 解决了 Sigmoid/Tanh 的梯度消失问题,是主流选择;梯度下降的核心问题是学习率难调、易陷局部最优等。
- 降维:分维度选择(选重要原始特征)和维度抽取(生成新特征);PCA 是线性降维核心,靠主成分保留最大方差,缺点是无法处理非线性数据。
- 聚类:DBI 越小聚类效果越好;K-Means 简单高效但需指定 k,GMM 支持软分配,层次聚类无需指定 k,DBSCAN 基于密度能识别噪声和任意形状簇。
更多推荐


所有评论(0)