深度学习神经网络入门-问答学习
神经网络问题
1⃣️神经元的构成
处理输入z=wTa+b,进行输出a=g(z)
2⃣️激活函数的作用是什么?
①激活传递有效特征
②非线性拟合
3⃣️为什么不同神经元的权重不同?
不同神经元从不同角度进行特征检测分析,最后进行综合判断决策
每个神经元都可以画出一条自己的“决策边界”。通过组合多个神经元(即组合多条直线),网络可以逼近任意复杂的非线性函数,形成复杂的不规则决策区域。
4⃣️损失函数和成本函数是什么,有什么关系?
lost计算单个样本预测值与真实值之间的误差
cost所有训练样本损失函数的平均值
网络模型迭代优化目标:最小化成本函数
5⃣️如何利用反向传播和梯度下降算法进行迭代优化
过程简述:
①前向传播:输入数据从输入层传到输出层,得到预测值,并计算损失。
②反向传播:将损失从输出层向输入层传播,利用链式法则反向逐层计算损失函数相对于每一层权重和偏置的梯度。
③参数更新: 使用梯度下降法,根据计算出的梯度更新所有参数。
6⃣️参数偏导的意义是什么?如何利用偏导(梯度)改变不同神经元的权重?
偏导的意义:参数对总误差的贡献程度或责任大小
- 偏导值为正:增大这个权重会增加误差(应该减小权重)
- 偏导值为负:增大这个权重会减少误差(应该增大权重)
- 偏导值接近0:这个权重对误差影响很小(不需要大调整)
7⃣️梯度下降公式的作用是什么?
MIN:梯度下降公式自动实现了偏导为正则调小参数,偏导为负则调大参数
8⃣️在神经网络中,怎么划分数据集,什么是训练集,开发集,测试集?开发集和测试集有什么区别?
训练集:用于学习。
开发集:用于迭代和调试模型。
测试集:用于最终评估模型性能。
9⃣️偏差和方差的意义是什么?如何利用误差判断偏差和方差并采取应对策略?
偏差衡量的是平均预测与真实值的差距
方差衡量的是模型预测本身的波动性或稳定性
训练误差高:高偏差问题(模型太简单或或训练次数少)。
**开发集误差远高于训练误差:**高方差问题(模型把训练数据的噪声都记住了,泛化能力差)。
**开发集误差和训练误差都高且接近:**纯粹的高偏差问题 (说明模型复杂度不够)。
高偏差:欠拟合
高方差:过拟合
🔟什么是范数和正则化?
范数,它是一种为向量(或矩阵)赋予一个“长度”或“大小”的函数。
L1范数(曼哈顿范数):就像你在棋盘式的街道上行走,只能沿着街道走直角。你需要走完横向距离再走纵向距离
L2范数(欧几里得范数):就像你“直线距离”飞过去。这是最直观的距离。

正则化是一种用于防止模型过拟合的技术。
MIN:正则化就是在损失函数中添加惩罚项(由范数衡量),使损失函数和参数复杂度挂钩,实现在最小化损失函数的过程中同时也降低参数复杂度的目的
1⃣️1⃣️为什么正则化会有效减小方差?什么是偏差-方差权衡思想?
通过正则化能减小或分散权重,防止部分神经元权重极端导致方差过大
随着模型复杂度的增加,偏差会减小,方差会增大,反之模型复杂度降低,偏差会增大,方差会减小。我们的目标是找到图中的 “最优模型复杂度”** 点,此时泛化误差最小,偏差和方差达成了一种“妥协”或“平衡”,

1⃣️2⃣️参数VS超参数
参数是模型从训练数据中自己学习得到的内部变量**,如权重w和偏置值b**。
超参数是我们在开始训练前手动设置的,用于控制训练过程本身的配置**,如学习率,迭代次数,隐藏层数量,激活函数等。**
13什么是输入归一化,有什么好处?
归一化:将所有特征值均值设0,方差设1。
好处:消除不同特征的量纲差距,更容易优化损失函数
14什么是梯度消失和梯度爆炸,如何改善?
在深层神经网络中,如果所有权重都比1略大,激活值和梯度可能会指数级增长;如果所有权重都比1略小,激活值和梯度可能会指数级下降📉;
改善方法~对权重初始化进行处理
Xavier初始化的根本目标是确保在网络的前向传播和反向传播过程中,信号的方差能够保持稳定,避免随着网络深度增加而指数级地放大或衰减。


15如何在调试时进行梯度检验?
采用双侧差分估计梯度,然后判断估计值和计算值的误差

16小批量梯度下降相比批量梯度下降有什么优势和影响?
把训练集分割为小一点的子集(称之 mini-batch)训练,即Mini-batch 梯度下降。
小批量梯度下降:每次只计算一个小批量的梯度,计算量小得多,更新频率高得多。因此,在相同的时间内,小批量梯度下降可以完成更多次的参数更新,模型可以更快地看到进展(损失下降),内存消耗更小,易于处理大数据集。
- batch 梯度下降法:指的就是前面讲的梯度下降法,每次需要同时处理整个训练集
- mini-batch梯度下降:每次处理的是单个的 mini-batch 训练子集
小批量梯度下降的损失曲线会带有“噪声”,呈现震荡下降的趋势。每次迭代后 cost 不一定是下降的,因为每次迭代都在训练不同的样本子集,但总体趋势应该是下降的。
mini-batch 的 size 大小:
- 大小 = m,就是batch梯度下降法
- 大小 = 1,就是随机梯度下降
17什么是指数加权平均算法?如何进行偏差修正
指数加权平均是一种计算序列数据移动平均的方法。它不像简单移动平均那样需要一个固定的窗口,而是通过一个衰减系数,给历史数据赋予指数级递减的权重。(越近的数据,权重越高;越远的数据,权重越低,并且最终可以忽略不计)


从上面的公式我们看到,v₀ 被初始化为 0。在计算的初期(t很小的时候),由于初始值 v₀=0 的影响,计算出的 vₜ 会严重偏向于0,比真实的平均值要小很多。
修正方法非常简单:使用 vₜ 除以 (1 - βᵗ)。
修正后的公式为:
 vₜ_corrected = vₜ / (1 - βᵗ)
除了常规的批量梯度下降和小批量梯度下降方法还有哪些加速方法去训练模型?
动量Momentum梯度下降法、RMSprop方法、Adam 优化算法,他们的目的都是抑制梯度下降中的震荡
动量梯度下降方法是如何利用指数加权平均算法进行加速的?

动量梯度下降通过指数加权平均算法,将历史梯度信息累积到一个“速度”变量中。这个机制带来了两大好处:
- 定向加速:在梯度方向一致的维度上,速度不断累积,实现加速。
- 抵消震荡:在梯度方向频繁变化的维度上,正负梯度相互抵消,抑制震荡,使收敛路径更平滑。
最终,这使得优化过程不仅更快,而且更稳定
什么是RMSprop(Root Mean Square Propagation)均方根传播?

什么是Adam 优化算法?
Adam (Adaptive Moment Estimation) 优化算法基本上就是将 Momentum 和 RMSprop 结合在一起
Adam算法结合了 Momentum 和 RMSprop 梯度下降法,并且是一种极其常用的学习算法
 其被证明能有效适用于不同神经网络,适用于广泛的结构

为什么学习率衰减可以优化收敛效果?
学习率衰减可以使模型在学习初期,使用较大的步伐,开始收敛的时候,用小一些的学习率能让步伐小一些,达到更好的收敛效果,学习率衰减的方法有很多种

如何调试超参数?
在深度学习领域,常采用随机选点进行参数搜索(试验了更多的不同的超参数值),由粗糙到精细的策略(集中计算资源到可能更优的小区域进行更密集的搜索)
随机取值:①在范围内均匀取值②使用对数标尺进行取值
训练模型进行参数调试:
①没有计算资源,你可以试验一个或者少量的模型,不断的调试和观察效果(熊猫式)
②有计算资源,同时试验不同参数的模型,最后选择一个最好的(鱼子酱式)
什么是batch norm批量归一化?
batch norm批量归一化,对每一层的输入进行标准化(将隐藏层的对下一层的输出z也进行归一化),引入了新的参数 β , γ

为什么需要批量归一化?(主要解决“内部协变量偏移”问题)
- 网络每一层的输入分布,会随着前一层参数的更新而不断改变。这是因为训练过程中,网络的参数在不停更新,导致每一层的输出分布也在动态变化。
- 对于后面一层来说,它好不容易适应了前一层输出的某种分布,结果这个分布又变了,它不得不重新学习、重新适应。这大大降低了训练速度。
BN如何解决这个问题?
 BN通过强制将每一层输入的分布稳定在一个固定的区间(均值为0,方差为1),极大地减少了内部协变量偏移。
批量归一化后为什么还需要进行放缩和平移?
这是BN设计中最精妙的一点!如果只有第一步的标准化,会带来一个严重的副作用:限制了网络的表达能力。
为什么?
 考虑一个Sigmoid激活函数。如果我们强制它的输入永远是均值为0、方差为1的分布,那么这些输入基本上都落在Sigmoid函数的近似线性区域。
这意味着,无论你堆叠多少层,整个网络的表达能力可能会退化为一个线性模型,无法学习复杂的非线性关系。这显然不是我们想要的。
放缩(γ)和平移(β)的作用:
 引入可学习的参数 γ 和 β,就是为了在稳定分布和保留非线性表达能力之间取得一个完美的平衡。
- γ(放缩参数):可以重新调整标准差的尺度。如果 γ = σ(原始标准差),那么它就完全恢复了原始的数据分布。
- β(平移参数):可以重新调整均值的位置。如果 β = μ(原始均值),那么它就完全恢复了原始的数据分布。
关键点在于:
- 网络拥有选择权:BN层让网络自己通过学习来决定,对于当前的任务,每一层的输出分布到底保持“标准化”多少比较好,还是说应该完全恢复成原来的样子。
- 如果标准化有益:网络就会学习将 γ设置得接近1,β接近0。
- 如果原始分布更好:网络就会学习将 γ和β调整到能够恢复原始分布的值。
多分类问题为什么使用softmax函数输出?
在神经网络的最后一层,通常会这样设计:
- 二分类问题:使用 1 个输出节点 + Sigmoid 激活函数。
- 多分类问题(互斥):使用 KK 个输出节点 + Softmax 激活函数。

例如,一个用于识别手写数字(0-9)的神经网络,其输出层会有 10 个节点。经过 Softmax 处理后,这 10 个节点的输出就是一个概率分布,我们选择概率最高的那个节点作为模型的预测结果。
机器学习策略
什么是正交化?对模型改进有什么作用?
正交化 的核心思想是:系统中的每一个控制旋钮(或参数)都只负责调节一个、且只有一个特定的性能指标。
当系统是正交化设计时,你可以调整一个参数来改变某个特性,而不会影响其他特性。这就像一台高保真音响:
- 一个旋钮只控制音量。
- 一个旋钮只控制低音。
- 一个旋钮只控制高音。
你调高低音时,音量和高音不会改变。这就是正交化。
常见的“旋钮”和它们主要控制的目标:
- 目标:在训练集上表现更好 - 旋钮:使用更复杂的模型(如增加网络层数、神经元数量)、训练更长时间、使用更好的优化算法(如Adam)。
- 为什么是正交的:这些方法主要目的是降低训练误差,让模型更好地拟合已知数据。
 
- 目标:在验证集上表现更好(泛化能力) - 旋钮:获取更多训练数据、使用正则化技术(如L2正则化、Dropout)、数据增强。
- 为什么是正交的:这些方法主要目的是防止模型过拟合训练数据,从而提高在未知数据(验证集)上的表现。它们通常不会帮助模型在训练集上拟合得更好,甚至可能会暂时让训练集表现变差。
 
什么是单一数字评估指标?
单一数字评估指标 指的是用一个具体的、综合性的数字来衡量一个模型或一个系统的整体性能。这个数字能够让你快速、明确地比较不同模型或不同策略的优劣,从而简化决策过程。
在分类问题中,尤其是当数据不平衡时(比如垃圾邮件检测),我们常用两个指标:
- 精确率:在所有被预测为“正例”(如垃圾邮件)的样本中,有多少是真的正例。(宁缺毋滥,追求准确)
- 召回率:在所有真实的正例中,有多少被成功预测了出来。(宁可错杀,追求全面)
- F1分数:这是精确率和召回率的调和平均数。它特别适用于当精确率和召回率都同等重要时。 - F1 = 2 * (精确率 * 召回率) / (精确率 + 召回率)
 
这两个指标通常是相互矛盾的。提高一个,往往会降低另一个。
假设你有两个垃圾邮件过滤器:
结论:模型A的F1分数略高,因此选择模型A。F1分数就是一个优秀的单一数字评估指标。
什么是满足和优化指标?
有时,除了一个需要优化的单一指标(如准确率),还需要设置一些必须满足的约束条件,称为“满足性指标”。

考虑 N 个指标,有时候选择其中一个做为优化指标是合理的。
尽量优化那个指标,然后剩下 N-1 个指标都是满足指标,意味着只要它们达到一定阈值,你不再关心指标在阈值内的大小。
训练集、开发集、测试集划分原则
如果数据来自不同的分布,应该随机打乱所有的数据,重新划分

什么是贝叶斯最优误差、可避免偏差?
贝叶斯最优误差
贝叶斯最优误差定义:从理论上讲,对于一个给定的任务,任何预测模型所能达到的绝对最低错误率。
这是一个理论极限,在实践中我们永远无法知道它的确切值,但我们可以估计它,在大多数情况下,人类表现水平是贝叶斯最优误差的一个非常好的近似或代理

可避免偏差
可避免偏差定义:你的模型的训练误差 与 贝叶斯最优误差(通常用人类表现水平近似) 之间的差值。
直观理解:
- 偏差 衡量的是模型在训练集上的表现有多差。
- “可避免” 意味着这部分误差,理论上是我们通过改进模型可以且应该消除掉的。
公式(概念上):
 可避免偏差 ≈ 模型训练误差 - 人类表现水平
**意义:**可避免偏差:模型当前表现与极限之间的差距,这个差距指导我们下一步应该优化模型本身(瞄准—减偏差) 还是提升泛化能力(稳定-减方差)
根据可避免偏差和方差改进模型

- 训练集误差 与 贝叶斯估计误差 之间的差距:可避免偏差
- 训练集误差 与 开发集误差 之间的差距:方差
改进偏差:
- 更大规模的模型
- 训练更久、迭代次数更多
- 更好的优化算法(Momentum、RMSprop、Adam)
- 更好的新的神经网络结构
- 更好的超参数
- 改变激活函数、网络层数、隐藏单元数
- 其他模型(循环NN,卷积NN)
改进方差:
- 收集更多的数据去训练
- 正则化(L2正则、dropout正则、数据增强)
- 更好的新的神经网络结构
- 更好的超参数
进行误差分析
收集 n 个预测错误的开发集样本,手动检查,统计各种误差的比例,检查哪种误差占比较高,优先解决
如果训练数据里有标签错误:深度学习算法对于训练集中的随机错误是相当健壮的(robust),所以可以不用管
 你有时间,修正下也没问题,如果你要更正标签,请注意同时在 开发集和测试集 上操作(同一分布)
数据分布不匹配时,如何进行偏差与方差的分析?
由于目标数据集太小,需要使用其他相关数据集进行训练
设置策略:训练集(相关数据集+目标数据集) 开发训练集(相关数据集+目标数据集) 开发集(目标数据集) 测试集(目标数据集)
三种问题:可避免偏差、方差、数据不匹配
发现有严重的数据不匹配,需亲自做误差分析,了解 训练集 和 开发集 的具体差异,可以通过人工合成数据让训练数据更接近开发集
什么是端到端的深度学习?
以前有一些数据处理系统或者学习系统,它们需要多个阶段的处理。那么端到端深度学习就是忽略所有这些不同的阶段,用单个神经网络代替它。它需要很多的数据来训练,才可能有好的效果
