2026.04.05-04.06随记·
1、DL1、为什么ReLU函数在x0的点不可导也能作为激活函数做梯度下降答ReLU 在 x0 确实不可导但深度学习里根本不要求激活函数处处可导只要求 “几乎处处可导”“能算梯度” 就够了。x0 点是这样处理的遇到 x0直接把梯度强行设为 0 或 1对整体优化几乎没有影响框架PyTorch / TensorFlow内部就是这么干的# 伪代码 if x 0: grad 1 elif x 0: grad 0 else: grad 0 # 随便给一个就行2、一些术语小批量随记梯度下降mini-batch stochastic gradient descent SGD全连接神经网络Fully Connected Neural Network,FCNN又称为前馈神经网络Feedforward Neural Network或多层感知机Multilayer PerceptronMLP全连接神经网络的层数不看输入层也就是得 - 13、常见的激活函数需要掌握只做了解4、训练误差与泛化误差模型在训练数据集上计算得到的误差称为训练误差training error模型应用在同样从原始样本的分布中抽取的无限多数据样本时模型误差的期望称为泛化误差5、模型复杂性当有简单的模型和大量的数据时期望泛化误差与训练误差都很大而且两者相接近当有复杂的模型和更少的样本时预计训练误差会下降但泛化误差会增大对于神经网络来说我们认为需要更多训练迭代的模型比较复杂而需要早停early stopping的模型 即较少训练迭代周期就不那么复杂影响模型泛化的因素• 可调整参数的数量。当可调整参数的数量有时称为自由度很大时模型往往更容易过拟合• 参数采用的值。当权重的取值范围较大时模型可能更容易过拟合(权重取值大意味着模型在空间中是一个极度崎岖、陡峭的函数。它对输入的微小变化噪音极为敏感稍微偏离训练集一点点输出就会谬以千里。)• 训练样本的数量。6、欠拟合过拟合模型复杂度 高训练数据集 多 正常拟合模型复杂度 高训练数据集 小 过拟合模型复杂度 低训练数据集 多 欠拟合模型复杂度 低训练数据集 小 正常拟合7、权重衰减L2正则化抑制过拟合的手段8、Dropout抑制过拟合的手段Dropout 也是一种抑制过拟合的手段它的做法是在学习的过程中随 机删除神经元的方法在神经网络上做法就是设置这些神经元的激活值为0。 训练时随机选出隐藏层的神经元 然后将其删除被删除的神经元不 再进行信号的传递 。目的为了防止网络过度依赖某些神经元采用ReLU激活会造成某些神经元死掉训成一根筋何时开何时关训练时开测试 / 推理 / 部署时关。具体流程训练期间做激活值修正称为 inverted dropout在每次训练迭代中dropout 会随机禁用网络中的部分神经元例如 50%。这实际上会创建一个新的、更小的神经网络其中包含更少的神经元。但是该层的激活值需要除以 1-dropout 率以便该隐藏层的输出响应的期望不变测试期间不用修改 如果训练期间不对激活值修正那么就在推理测试期间修正乘以1-dropout 率9、网络参数对称如果我们将隐藏层的所有参数初始化为 w c会发生什么初始权重相同前向输出绝对一样 反向传播算出的梯度绝对一样 更新后的新权重依然一样。所有神经元学一样的东西 失去表达能力。参数初始化方法随机初始化 、Xavier 初始化、Kaiming 初始化2、PyTorch1、d2l.use_svg_display() # 使用svg来显示图片这样清晰度高一些。只要调用一次整个文件、整个会话里的所有图都会变成 SVG 高清格式