总结:学习了暂退法,前向传播,反向传播和计算图暂退法重新审视过拟合当面对更多的特征而样本不足时,线性模型往往会过拟合。相反,当给出更多样本而不是特征,通常线性模型不会过拟合。不幸的是,线性模型泛化的可靠性是有代价的。简单地说,线性模型没有考虑到特征之间的交互作用。对于每个特征,线性模型必须指定正的或负的权重,而忽略其他特征。泛化性和灵活性之间的这种基本权衡被描述为偏差-方差权衡(bias‐variance tradeoff)。线性模型有很高的偏差:它们只能表示一小类函数。然而,这些模型的方差很低:它们在不同的随机数据样本上可以得出相似的结果。深度神经网络位于偏差‐方差谱的另一端。与线性模型不同,神经网络并不局限于单独查看每个特征,而是学习特征之间的交互。例如,神经网络可能推断“尼日利亚”和“西联汇款”一起出现在电子邮件中表示垃圾邮件,但单独出现则不表示垃圾邮件。即使我们有比特征多得多的样本,深度神经网络也有可能过拟合。2017年,一组研究人员通过在随机标记的图像上训练深度网络。这展示了神经网络的极大灵活性,因为人类很难将输入和随机标记的输出联系起来,但通过随机梯度下降优化的神经网络可以完美地标记训练集中的每一幅图像。想一想这意味着什么?假设标签是随机均匀分配的,并且有10个类别,那么分类器在测试数据上很难取得高于10%的精度,那么这里的泛化差距就高达90%,如此严重的过拟合。扰动的稳健性在探究泛化性之前,我们先来定义一下什么是一个“好”的预测模型?我们期待“好”的预测模型能在未知的数据上有很好的表现:经典泛化理论认为,为了缩小训练和测试性能之间的差距,应该以简单的模型为目标。此外,参数的范数也代表了一种有用的简单性度量。简单性的另一个角度是平滑性,即函数不应该对其输入的微小变化敏感。例如,当我们对图像进行分类时,我们预计向像素添加一些随机噪声应该是基本无影响的。1995年,克里斯托弗·毕晓普证明了具有输入噪声的训练等价于Tikhonov正则化。这项工作用数学证实了“要求函数光滑”和“要求函数对输入的随机噪声具有适应性”之间的联系。然后在2014年,斯里瓦斯塔瓦等人就如何将毕晓普的想法应用于网络的内部层提出了一个想法:在训练过程中,他们建议在计算后续层之前向网络的每一层注入噪声。因为当训练一个有多层的深层网络时,注入噪声只会在输入‐输出映射上增强平滑性。这个想法被称为暂退法。暂退法在前向传播过程中,计算每一内部层的同时注入噪声,这已经成为训练神经网络的常用技术。这种方法之所以被称为暂退法,因为我们从表面上看是在训练过程中丢弃一些神经元。在整个训练过程的每一次迭代中,标准暂退法包括在计算下一层之前将当前层中的一些节点置零。需要说明的是,暂退法的原始论文提到了一个关于有性繁殖的类比:神经网络过拟合与每一层都依赖于前一层激活值相关,称这种情况为“共适应性”。作者认为,暂退法会破坏共适应性,就像有性生殖会破坏共适应的基因一样。那么关键的挑战就是如何注入这种噪声。一种想法是以一种无偏向(unbiased)的方式注入噪声。这样在固定住其他层时,每一层的期望值等于没有噪音时的值。实践中的暂退法当我们将暂退法应用到隐藏层,以p的概率将隐藏单元置为零时,结果可以看作一个只包含原始神经元子集的网络。这样,输出层的计算不能过度依赖于任何一个元素。通常,我们在测试时不用暂退法。给定一个训练好的模型和一个新的样本,我们不会丢弃任何节点,因此不需要标准化。然而也有一些例外:一些研究人员在测试时使用暂退法,用于估计神经网络预测的“不确定性”:如果通过许多不同的暂退法遮盖后得到的预测结果都是一致的,那么我们可以说网络发挥更稳定。前向传播、反向传播和计算图自动微分大大简化了深度学习算法的实现。在自动微分之前,即使是对复杂模型的微小调整也需要手工重新计算复杂的导数,学术论文也不得不分配大量页面来推导更新规则。通过一些基本的数学和计算图,深入探讨反向传播的细节。首先,我们将重点放在带权重衰减(L2正则化)的单隐藏层多层感知机上。前向传播前向传播(forward propagation或forward pass)指的是:按顺序(从输入层到输出层)计算和存储神经网络中每层的结果。我们将一步步研究单隐藏层神经网络的机制,为了简单起见,我们假设输入样本是x∈Rd,并且我们的隐藏层不包括偏置项。这里的中间变量是:z=W(1)x其中W(1)∈Rh×d是隐藏层的权重参数。将中间变量z∈Rh通过激活函数ϕ后,我们得到长度为h的隐藏激活向量:h=ϕ(z).隐藏变量h也是一个中间变量。假设输出层的参数只有权重W(2)∈Rq×h,我们可以得到输出层变量,它是一个长度为q的向量:o=W(2)h.假设损失函数为l,样本标签为y,我们可以计算单个数据样本的损失项,L=l(o, y).根据L2正则化的定义,给定超参数λ,正则化项为其中矩阵的Frobenius范数是将矩阵展平为向量后应用的L2范数。最后,模型在给定数据样本上的正则化损失为:J=L+s.在下面的讨论中,我们将J称为目标函数。前向传播计算图绘制计算图有助于我们可视化计算中操作符和变量的依赖关系。图4.7.1是与上述简单网络相对应的计算图,其中正方形表示变量,圆圈表示操作符。左下角表示输入,右上角表示输出。注意显示数据流的箭头方向主要是向右和向上的。反向传播反向传播(backward propagation或backpropagation)指的是计算神经网络参数梯度的方法。简言之,该方法根据微积分中的链式规则,按相反的顺序从输出层到输入层遍历网络。该算法存储了计算某些参数梯度时所需的任何中间变量(偏导数)。假设我们有函数Y=f(X)和Z=g(Y),其中输入和输出X,Y,Z是任意形状的张量。利用链式法则,我们可以计算Z关于X的导数在这里,我们使用prod运算符在执行必要的操作(如换位和交换输入位置)后将其参数相乘。对于向量,这很简单,它只是矩阵‐矩阵乘法。对于高维张量,我们使用适当的对应项。运算符prod指代了所有的这些符号。回想一下,在计算图图4.7.1中的单隐藏层简单网络的参数是和。反向传播的目的是计算梯度和。为此,我们应用链式法则,依次计算每个中间变量和参数的梯度。计算的顺序与前向传播中执行的顺序相反,因为我们需要从计算图的结果开始,并朝着参数的方向努力。第一步是计算目标函数J=L+s相对于损失项L和正则项s的梯度。接下来,我们根据链式法则计算目标函数关于输出层变量o的梯度:接下来,我们计算正则化项相对于两个参数的梯度:现在我们可以计算最接近输出层的模型参数的梯度。使用链式法则得出:为了获得关于的梯度,我们需要继续沿着输出层到隐藏层反向传播。关于隐藏层输出的梯度由下式给出:由于激活函数ϕ是按元素计算的,计算中间变量z的梯度需要使用按元素乘法运算符,我们用⊙表示:最后,我们可以得到最接近输入层的模型参数的梯度。根据链式法则,我们得到:训练神经网络在训练神经网络时,前向传播和反向传播相互依赖。对于前向传播,我们沿着依赖的方向遍历计算图并计算其路径上的所有变量。然后将这些用于反向传播,其中计算顺序与计算图的相反。以上述简单网络为例:一方面,在前向传播期间计算正则项(4.7.5)取决于模型参数W(1)和W(2)的当前值。它们是由优化算法根据最近迭代的反向传播给出的。另一方面,反向传播期间参数的梯度计算,取决于由前向传播给出的隐藏变量h的当前值。因此,在训练神经网络时,在初始化模型参数后,我们交替使用前向传播和反向传播,利用反向传播给出的梯度来更新模型参数。注意,反向传播重复利用前向传播中存储的中间值,以避免重复计算。带来的影响之一是我们需要保留中间值,直到反向传播完成。这也是训练比单纯的预测需要更多的内存(显存)的原因之一。此外,这些中间值的大小与网络层的数量和批量的大小大致成正比。因此,使用更大的批量来训练更深层次的网络更容易导致内存不足。
总结:学习了暂退法,前向传播,反向传播和计算图暂退法重新审视过拟合当面对更多的特征而样本不足时,线性模型往往会过拟合。相反,当给出更多样本而不是特征,通常线性模型不会过拟合。不幸的是,线性模型泛化的可靠性是有代价的。简单地说,线性模型没有考虑到特征之间的交互作用。对于每个特征,线性模型必须指定正的或负的权重,而忽略其他特征。泛化性和灵活性之间的这种基本权衡被描述为偏差-方差权衡(bias‐variance tradeoff)。线性模型有很高的偏差:它们只能表示一小类函数。然而,这些模型的方差很低:它们在不同的随机数据样本上可以得出相似的结果。深度神经网络位于偏差‐方差谱的另一端。与线性模型不同,神经网络并不局限于单独查看每个特征,而是学习特征之间的交互。例如,神经网络可能推断“尼日利亚”和“西联汇款”一起出现在电子邮件中表示垃圾邮件,但单独出现则不表示垃圾邮件。即使我们有比特征多得多的样本,深度神经网络也有可能过拟合。2017年,一组研究人员通过在随机标记的图像上训练深度网络。这展示了神经网络的极大灵活性,因为人类很难将输入和随机标记的输出联系起来,但通过随机梯度下降优化的神经网络可以完美地标记训练集中的每一幅图像。想一想这意味着什么?假设标签是随机均匀分配的,并且有10个类别,那么分类器在测试数据上很难取得高于10%的精度,那么这里的泛化差距就高达90%,如此严重的过拟合。扰动的稳健性在探究泛化性之前,我们先来定义一下什么是一个“好”的预测模型?我们期待“好”的预测模型能在未知的数据上有很好的表现:经典泛化理论认为,为了缩小训练和测试性能之间的差距,应该以简单的模型为目标。此外,参数的范数也代表了一种有用的简单性度量。简单性的另一个角度是平滑性,即函数不应该对其输入的微小变化敏感。例如,当我们对图像进行分类时,我们预计向像素添加一些随机噪声应该是基本无影响的。1995年,克里斯托弗·毕晓普证明了具有输入噪声的训练等价于Tikhonov正则化。这项工作用数学证实了“要求函数光滑”和“要求函数对输入的随机噪声具有适应性”之间的联系。然后在2014年,斯里瓦斯塔瓦等人就如何将毕晓普的想法应用于网络的内部层提出了一个想法:在训练过程中,他们建议在计算后续层之前向网络的每一层注入噪声。因为当训练一个有多层的深层网络时,注入噪声只会在输入‐输出映射上增强平滑性。这个想法被称为暂退法。暂退法在前向传播过程中,计算每一内部层的同时注入噪声,这已经成为训练神经网络的常用技术。这种方法之所以被称为暂退法,因为我们从表面上看是在训练过程中丢弃一些神经元。在整个训练过程的每一次迭代中,标准暂退法包括在计算下一层之前将当前层中的一些节点置零。需要说明的是,暂退法的原始论文提到了一个关于有性繁殖的类比:神经网络过拟合与每一层都依赖于前一层激活值相关,称这种情况为“共适应性”。作者认为,暂退法会破坏共适应性,就像有性生殖会破坏共适应的基因一样。那么关键的挑战就是如何注入这种噪声。一种想法是以一种无偏向(unbiased)的方式注入噪声。这样在固定住其他层时,每一层的期望值等于没有噪音时的值。实践中的暂退法当我们将暂退法应用到隐藏层,以p的概率将隐藏单元置为零时,结果可以看作一个只包含原始神经元子集的网络。这样,输出层的计算不能过度依赖于任何一个元素。通常,我们在测试时不用暂退法。给定一个训练好的模型和一个新的样本,我们不会丢弃任何节点,因此不需要标准化。然而也有一些例外:一些研究人员在测试时使用暂退法,用于估计神经网络预测的“不确定性”:如果通过许多不同的暂退法遮盖后得到的预测结果都是一致的,那么我们可以说网络发挥更稳定。前向传播、反向传播和计算图自动微分大大简化了深度学习算法的实现。在自动微分之前,即使是对复杂模型的微小调整也需要手工重新计算复杂的导数,学术论文也不得不分配大量页面来推导更新规则。通过一些基本的数学和计算图,深入探讨反向传播的细节。首先,我们将重点放在带权重衰减(L2正则化)的单隐藏层多层感知机上。前向传播前向传播(forward propagation或forward pass)指的是:按顺序(从输入层到输出层)计算和存储神经网络中每层的结果。我们将一步步研究单隐藏层神经网络的机制,为了简单起见,我们假设输入样本是x∈Rd,并且我们的隐藏层不包括偏置项。这里的中间变量是:z=W(1)x其中W(1)∈Rh×d是隐藏层的权重参数。将中间变量z∈Rh通过激活函数ϕ后,我们得到长度为h的隐藏激活向量:h=ϕ(z).隐藏变量h也是一个中间变量。假设输出层的参数只有权重W(2)∈Rq×h,我们可以得到输出层变量,它是一个长度为q的向量:o=W(2)h.假设损失函数为l,样本标签为y,我们可以计算单个数据样本的损失项,L=l(o, y).根据L2正则化的定义,给定超参数λ,正则化项为其中矩阵的Frobenius范数是将矩阵展平为向量后应用的L2范数。最后,模型在给定数据样本上的正则化损失为:J=L+s.在下面的讨论中,我们将J称为目标函数。前向传播计算图绘制计算图有助于我们可视化计算中操作符和变量的依赖关系。图4.7.1是与上述简单网络相对应的计算图,其中正方形表示变量,圆圈表示操作符。左下角表示输入,右上角表示输出。注意显示数据流的箭头方向主要是向右和向上的。反向传播反向传播(backward propagation或backpropagation)指的是计算神经网络参数梯度的方法。简言之,该方法根据微积分中的链式规则,按相反的顺序从输出层到输入层遍历网络。该算法存储了计算某些参数梯度时所需的任何中间变量(偏导数)。假设我们有函数Y=f(X)和Z=g(Y),其中输入和输出X,Y,Z是任意形状的张量。利用链式法则,我们可以计算Z关于X的导数在这里,我们使用prod运算符在执行必要的操作(如换位和交换输入位置)后将其参数相乘。对于向量,这很简单,它只是矩阵‐矩阵乘法。对于高维张量,我们使用适当的对应项。运算符prod指代了所有的这些符号。回想一下,在计算图图4.7.1中的单隐藏层简单网络的参数是和。反向传播的目的是计算梯度和。为此,我们应用链式法则,依次计算每个中间变量和参数的梯度。计算的顺序与前向传播中执行的顺序相反,因为我们需要从计算图的结果开始,并朝着参数的方向努力。第一步是计算目标函数J=L+s相对于损失项L和正则项s的梯度。接下来,我们根据链式法则计算目标函数关于输出层变量o的梯度:接下来,我们计算正则化项相对于两个参数的梯度:现在我们可以计算最接近输出层的模型参数的梯度。使用链式法则得出:为了获得关于的梯度,我们需要继续沿着输出层到隐藏层反向传播。关于隐藏层输出的梯度由下式给出:由于激活函数ϕ是按元素计算的,计算中间变量z的梯度需要使用按元素乘法运算符,我们用⊙表示:最后,我们可以得到最接近输入层的模型参数的梯度。根据链式法则,我们得到:训练神经网络在训练神经网络时,前向传播和反向传播相互依赖。对于前向传播,我们沿着依赖的方向遍历计算图并计算其路径上的所有变量。然后将这些用于反向传播,其中计算顺序与计算图的相反。以上述简单网络为例:一方面,在前向传播期间计算正则项(4.7.5)取决于模型参数W(1)和W(2)的当前值。它们是由优化算法根据最近迭代的反向传播给出的。另一方面,反向传播期间参数的梯度计算,取决于由前向传播给出的隐藏变量h的当前值。因此,在训练神经网络时,在初始化模型参数后,我们交替使用前向传播和反向传播,利用反向传播给出的梯度来更新模型参数。注意,反向传播重复利用前向传播中存储的中间值,以避免重复计算。带来的影响之一是我们需要保留中间值,直到反向传播完成。这也是训练比单纯的预测需要更多的内存(显存)的原因之一。此外,这些中间值的大小与网络层的数量和批量的大小大致成正比。因此,使用更大的批量来训练更深层次的网络更容易导致内存不足。
kernel.org 突发内核文件“消失“:Linux基金会确认配置失误,全球镜像同步触发连锁反应 2026年7月2日,开源社区迎来了一场虚惊。全球开发者赖以获取 Linux 内核源码的核心站点 kernel.org 突然出现异常——所有托管的内核归档文件仿佛凭空蒸发,无论是历史存档还是当前版本,访问路径统一返回 HTTP 404 或 403 错误。对于依赖这一基…
Lemos知识库-AI+知识图谱驱动智能脑进化 Lemos 通过其“AI知识图谱”双引擎,将传统的静态知识库转变为动态智能脑,其核心转变体现在知识单元、组织逻辑、构建方式、交互模式、演化能力及最终目标六个层面。 转变维度传统静态知识库 (以Ima为例)Lemos 动态智能脑实现转变的关键机制知识单元原子…
深度学习计算图与反向传播:从自动求导原理到梯度流动实践 🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 你肯定见过这样的场景:一个刚入门的同学,照着教程把模型跑起来了,训练损失也在下降,但…
Markdown锚点跳转失败的解决办法 前情提要 在浏览我前几天的一篇博文《Claude Code 终端高效使用指南》时,发现从目录链接无法跳转到标题 "五、快速前缀:/ ! 三板斧"。 博文目录中的写法: - [五、快速前缀:/ ! 三板斧](#五快速前缀--三板斧)博文正…
3分钟极速指南:用Python工具一键获取国家中小学智慧教育平台电子课本 3分钟极速指南:用Python工具一键获取国家中小学智慧教育平台电子课本 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容…
【git教程】科研技能必备——git的使用 【git教程】科研技能必备——git的使用 git的知识其实常用的就那几个,由于网上的教程有很多,笔者感觉能给各位读者做的也只有帮忙筛选了。 注:其实这些git的命令行操作在目前主流的IDE(如VScode,cursor)上已经集成好了…
个人数据主权革命:WeChatMsg如何重新定义数字记忆资产管理 个人数据主权革命:WeChatMsg如何重新定义数字记忆资产管理 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…
WebService,jQuery,原生对象几种前端加载数据的性能比较(1) 详细分析 1. 首先,创建一系列的实体类: 代码 /// <summary> /// 用户信息 /// </summary> public class UserInfo { public int UserId { get; set; } public string UserName { get; set; } public string Email { …
【 CLI与GUI两种AI编程范式技术解析】终端Agent与可视化IDE架构对比 文章目录CLI与GUI两种AI编程范式技术解析:终端Agent与可视化IDE架构对比一、引言二、两种范式的技术架构2.1 三种基本架构分类2.2 GUI 型:AI 是编辑器里的一个能力模块2.3 CLI 型:AI 是独立运行的自主 Agent三、核心差异维度对比3.1 交互模式…
中文大模型选型不是比参数,而是做工程化决策 1. 这不是“选模型”,而是“选解法”:为什么问“中文大模型哪一个最好”本身就是一个危险问题“第一个问题,中文大模型哪一个最好?”——这句话我每天在技术群、面试现场、客户会议室里至少听到七次。它像一句口头禅,也…
STM32与LENA-R8构建全球定位与通信嵌入式系统 1. LENA-R8与STM32F215RE的硬件组合解析这个项目最吸引人的地方在于将LENA-R8蜂窝通信模块与STM32F215RE微控制器相结合,构建了一个既能实现全球网络连接又能进行高精度位置跟踪的嵌入式系统。我们先拆解这两个核心硬件的特点。LENA-R8是u-blox推出的一款多模LTE Ca…
含金量高的EMBA|2026国内及境外中英双语EMBA综合实力TOP5榜单 一、评测引言随着国内企业全球化布局提速、数字化转型深化,企业创始人、高管及核心决策者对高端在职商科教育的需求持续升级,兼具国际化视野、本土化适配、学历认可度高的中英双语EMBA项目成为择校主流选择。本次2026 EMBA综合实力TOP5榜单,以…
3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单中那些…
GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复 如果你正在用 GXDE OS 或者任何基于 Deepin 的发行版,并且遇到了“检测到窗口系统采用 Wayland 协议,程序即将退出”这类弹窗,或者发现 VMware Tools 在 Ubuntu 24.04 这类默认 Wayland 的系统上启动失败,那这篇文章就是为你准备的…
企业AI落地困境与AgenticOps实践指南 1. 企业AI落地的现实困境与破局之道过去两年,大模型技术呈现爆发式增长,从GPT-3到GPT-4,从LLaMA到DeepSeek,模型参数规模从百亿级跃升至万亿级,多模态能力从单一文本扩展到图文音视频的综合处理。然而在企业应用层面&a…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…