机器学习-期末复习
本文根据作者的课程考试要求进行编写,并仅作复习参考使用。🌷🌷🌷感谢各位专家批评指正! 参考链接nndl.
机器学习是人工智能(AI)的主要分支领域之一,
主要研究开发基于算法的人工智能技术以实现计算机系统的自主学习与优化。
简而言之,
这些智能系统能够通过对海量数据进行分析识别规律并提取有用信息
进而实现对未来事件的预测与决策
无需预先设定具体的行为准则或逻辑框架。
这些基于大量数据的学习机制不仅提升了系统的自适应能力
还使它们能够在复杂多变的环境中持续进化与优化。
机器学习:利用先进算法使计算机能够从海量数据中发现隐藏模式并对新输入的数据做出精准判断与回应。
考点
- 二分类线性模型的分界线
- KL散度与交叉熵损失
- 感知机
- 卷积神经网络(固定)
- 序列建模技术
- 注意力机制原理
- 模型优化策略与正则化方法
-
- BN的优势
- BN潜在的问题
- (随机丢弃法)
二分类线性模型的决策边界
对于二分类问题而言,在这种情况下由于输出目标是两个离散标签而模型的连续输出范围却覆盖了实数域因此直接使用f(\mathbf{x};\omega, b)无法实现有效的分类任务为此我们需要引入一种非线性激活函数g(\cdot)来辅助完成这一功能其中常用的如sigmoid函数它能够将模型的连续预测结果转换至所需的两类标签之中

探讨原因

问题:什么才是一个好的权重?

Logistic Regression
将二分类问题看作条件概率估计问题
Logistic函数

Logistic回归

Logistic 回归选择交叉熵作为损失函数,并运用梯度下降算法来进行参数优化。
KL散度和交叉熵损失

问题:如何衡量两个条件分布的差异?
KL散度(Kullback-Leibler Divergence)是一种用于评估两个概率分布之间差异的方法。它表明的是两个概率分布P和Q之间的信息损失程度。随着P与Q之间的接近程度增加时(即两者的相似性增强),KL散度会随之减小;反之,在P与Q之间存在较大差异时(即两者的相似性降低),KL散度也会显著增大。由此可见,在模型预测中使用KL散度可以有效地量化预测分布与真实分布之间的信息差距。

交叉熵损失(Cross-Entropy Loss)作为一种重要的损失函数,在机器学习和深度学习领域得到了广泛应用。
它主要用于衡量模型预测的概率分布与其真实标签之间的差异程度。
对于分类问题而言,在监督学习中通常会将真实标签表示为one-hot编码的形式。
此外,在训练过程中,交叉熵损失通过计算模型预测的概率分布与其真实标签之间的差异程度来帮助模型逐步优化以降低预测误差。

感知器
该算法被视为一种经典的线性分类器的参数学习方法。
感知器属于二元分类模型的一种,
其核心机制在于通过不断调整权重向量和阈值参数来实现对输入数据的最佳分类。
当感知器处理一个误分类样本时,
即其输出结果与预期类别不符,
从而意识到当前的权重向量和阈值参数设置不够理想,
因此需要对其进行优化调整。
这一优化过程的核心目标是通过最小化损失函数来确定最佳参数配置。
具体而言,
对于每个误分类样本,
该模型会计算对应的损失度量(如交叉熵损失或其他类似指标),
然后基于这些损失信息更新权重向量和阈值参数。
这些优化步骤通常采用梯度下降法及其变种来进行计算。


为什么采用误分类样本来调整权重?
当感知器神经网络处理一个被误分类为其他类别的样本时,则表示当前模型未能将该实例正确归类至其所属类别中。此时模型需根据这一错误结果调整其参数设置,从而减少未来出现相同情况的机会。具体而言,神经网络会计算该误分类实例的实际输出与预期输出之间的差异(即误差),然后依据这一误差信息对各层权值进行微调,最终使模型预测结果逐步逼近真实标签
卷积神经网络
首先阐述一个基本概念,在深度学习领域中存在一种称为卷积神经网络的核心架构技术。其中核心组件包括所谓的卷积层,在这种层中使用了一种称为滤波器的小型权重矩阵去探测图像的空间模式信息。这种滤波器系统通过在输入图像数据上滑动并执行数学运算来提取关键特征信息,在深度学习模型中扮演着重要角色。每一组独立的滤波器都会被设计去捕获输入数据中的特定类型模式信息

Stride and zero padding are key parameters in convolutional neural networks. The stride denotes the spatial distance between successive applications of the convolutional kernel.
零填充的目的:
零填充的主要目的是维持空间尺寸。当卷积核的空间维度大于输入图像的空间维度时,在不减少输出尺寸的情况下实现补零操作能够避免卷积操作后的图像尺寸减小的问题。这种技术不仅有助于维持输出空间与输入空间的一致性,在后续操作中能够保证输出传递到下一层时不出现尺寸不匹配的情况。此外,在离散信号或数据处理中避免边界效应也是零填充的重要作用之一。通过补零的方法可以在不产生边界干扰的情况下实现与循环卷积相同的输出效果。
卷积运算的参数量
输出尺寸 = (输入尺寸 - 卷积核尺寸 + 2 * 零填充) / 步长 + 1

Inception网络
1x1卷积核的作用

补充:1x1卷积核实现升维/降维的原理
输入数据的组织形式定义为M × N × 10(其中M和N分别代表数据矩阵的行与列),而这里的"×"符号表示矩阵维度之间的关系。如果目标输出维度设定为M × N × 5,则可以通过部署5组具有尺寸为(1×1)且通道数为10的卷积层来实现。
这一过程包括两个主要步骤:首先对数据进行降维处理(dimensionality reduction),随后再将其恢复至更高维度(dimensionality expansion)。所有层均具有相同的通道数量(即均为10)。值得注意的是,在深度维度上无法进行滑动操作(sliding operations),因此经过卷积操作后该维度上的通道数量将缩减至单一值。
补充一个经典的神经网络的例子:LeNet-5

LeNet-5共有7层,接受输入图像大小为32 × 32 = 1 024,输出对应 10个类别的得分。
LeNet-5中的每一层结构如下:
(1) C1层是卷积层,使用6个5×5的卷积核,得到6组大小为28×28 = 784的特征映射.因此,C1 层的神经元数量为 6 × 784 = 4 704,可训练参数数量为6 × 25 + 6 = 156,连接数为156 × 784 = 122304(包括偏置在内,下同)。
(2) S2 层为汇聚层,采样窗口为 2 × 2,使用平均汇聚,并使用一个如公式 (5.27) 的非线性函数.神经元个数为 6 × 14 × 14 = 1 176,可训练参数数量为6 × (1 + 1) = 12,连接数为6 × 196 × (4 + 1) = 5 880.
(3) C3 层为卷积层.LeNet-5 中用一个连接表来定义输入和输出特征映射之间的依赖关系,如图5.11所示,共使用 60 个 5 × 5 的卷积核,得到 16 组大小为 10 × 10 的特征映射.神经元数量为 16 × 100 = 1 600,可训练参数数量为(60 × 25) + 16 = 1 516,连接数为100 × 1 516 = 151 600.
(4) S4层是一个汇聚层,采样窗口为2 × 2,得到16个5 × 5大小的特征映射,可训练参数数量为16 × 2 = 32,连接数为16 × 25 × (4 + 1) = 2 000.
(5) C5 层是一个卷积层,使用 120 × 16 = 1 920 个 5 × 5 的卷积核,得到120 组大小为 1 × 1 的特征映射.C5 层的神经元数量为 120,可训练参数数量为1 920 × 25 + 120 = 48 120,连接数为120 × (16 × 25 + 1) = 48 120.
(6) F6层是一个全连接层,有84个神经元,可训练参数数量为84 × (120 +1) = 10 164.连接数和可训练参数个数相同,为10 164.
(7) 输出层:输出层由10个径向基函数(Radial Basis Function,RBF)组成.这里不再详述.
卷积层:卷积层作为CNN的关键组成部分,在实际应用中负责通过滑动式卷积核对输入特征图进行操作以提取局部特征信息。经过卷积操作后通常会引入ReLU(Rectified Linear Unit)或Sigmoid等激活函数来进行非线性变换处理,从而有助于网络模型学习更为复杂的特征表达和模式识别能力。
全连接层:在CNN架构中,在完成各卷积层特征提取后的一般情况下会接驳一个全连接层进行进一步的特征融合与分类工作。该全连接层中的每个神经元都与前一层的所有神经元建立直接连接关系,在完成信息传递过程中其输出结果实质上是由前一层所有神经元输出值与其对应权重参数计算得出的加权求和值。经过这一线性组合运算后通常也会应用一个非线性激活函数来调控信息传递路径并确保网络模型的有效运行。
序列建模
从机器学习的角度来看:语言模型是对语句的概率分布的建模。
N-gram模型旨在缩减历史基元的数量。其中,
当n等于1时,
即出现在第i位上的基元wi独立于历史。
这种一阶文法也被称为uni-gram或monogram;
而当n等于2时,
出现于第i位上的基元wi仅依赖于wi−1,
这种二阶文法被称为bi-gram(或二元文法);
同样地,
当n等于3时,
出现于第i位上的基元wi依赖于前两个基元{wi−1, wi−2},
这种三阶文法则被称为tri-gram(或三元文法),依此类推。
举例如下:
给定训练预料:
"John read Moby Dick"
"Mary read a different book"
"She read a book by Cher"
基于上述二元文法规则,请计算下面句子的概率?
句子 John read a book 的概率计算如下:
需要注意的是,在计算过程中需要考虑所求句子与训练预料中单词之间的前后关系。
特别提示:
具体的计算步骤如下:

注意力机制
注意机制,在人类中被理解为"关注度"这一概念,在计算领域则等同于赋予不同权重值。其中重要区域或关联区域会获得更高的权重值
注意力机制 为了从 N 个输入向量 \{\mathbf{x}_1, \dots, \mathbf{x}_N\} 中提取与特定任务相关的信息, 我们需要定义一个与任务相关的表示, 称之为查询向量 (Query Vector), 并通过一种评分机制来计算每个输入向量与其对应的查询向量之间的关联度。
在卷积神经网络中,注意力机制的计算过程可分为两个步骤:第一步是对所有输入数据进行权重分配以反映其重要性;第二步是通过关注分配后的加权求平均以获得最终结果.

注意力模型的基本实现过程如下:
1.首先,在输入序列的每个元素上进行处理以计算其对应的注意力权重。这些权重通常基于当前输出与相应输入元素之间的相关性或匹配程度。
2.随后,在应用这些预先确定好的注意力权重后将整个输入序列进行加权综合运算以获得一个表示所有相关信息的关键向量(context vector)。该关键向量包含了在生成当前输出时所需考虑的关键信息。
3.最后,在综合考虑所有因素后利用关键向量及其相关的辅助信息来完成最终的输出结果。
补充:softmax函数
软max函数是一种将原始得分映射为归一化的概率分布的方法。它通常被用于多分类任务中的输出层设计中以确保预测结果的有效性。
软max函数的工作流程如下所述:
计算各个类别对应的原始得分:通过模型结构得出各分类项的预估值。
进行软max处理:将每个原始得分转换为对应类别的概率值。这一过程通过指数运算并结合归一化方法实现。
具体而言,在计算每个类别得分xi时:
pi = e^xi / Σj e^xj ,其中Σj e^xj表示所有类别得分的总和。输出最终的概率分布:经过软max处理后得到各分类的概率值集合其总和必定等于1。
模型的优化和正则化
基于网络每一层激活函数输入前进行归一化处理,并随后进行比例缩放和平移操作。


BN带来的好处
_1.减少了对参数初始化的影响,并有助于优化参数调整。
2.训练速度更快,并且能够允许采用更大的学习率以提升学习效率。
3.BN显著提升了模型在不同数据集上的泛化能力。
BN存在的问题
_BN受制于批大小的影响,在batch size较小时(即较小的batch size),计算出的均值和方差会变异性大;因此在这样的情况下(亦即难以设置较大的batch size),BN并不适用)。循环神经网络因其动态结构的特点(即不同批次中的实例可能长度不一),导致每个时间步都必须维护各自独立的统计量;这使得BN无法正确应用。
Dropout(丢弃法)


每一次丢弃操作等于从原始神经网络中获取一个子网络.假设某个神经元数量为𝑛,则总能获取到2^𝑛数量的不同子网.每一次迭代过程等同于训练一个个独立且共享原始参数的不同子网.总体而言该方法可被视为整合了指数数量不同组合后的统一模型。
问题1:Dropout为什么有效?
Dropout减少了网络复杂度并降低了模型过拟合的风险; Dropout相当于一种集成学习的方法。
问题2:Dropout不适用的场景

通过应用dropout之后,在输出数据的均值属性上并未发生变化(即μ保持不变),然而其方差σ²却随之发生了改变。归因于Dropout操作后的输出还需经历非线性激活过程(例如经过Linear层与ReLU激活函数),因此方差的变化会导致后续非线性层输出结果的均值发生偏移现象。对于回归任务而言,在预测结果是一个绝对数值的情况下对这种变化较为敏感;但对于分类任务而言,则仅需关注相对化的logit值(即分类决策边界)而对其波动不那么敏感。
这表明,在采用dropout技术的情况下,在训练阶段隐藏层神经元输出的方差与其在验证阶段的表现存在差异。这种差异通过非线性层进行处理后会导致输出值发生偏移,并最终使得模型在验证集上的表现显著下降。
PS:要想学好这门课真得有不错的数学功底啊!
