京公网安备 11010802034615号
经营许可证编号:京B2-20210330
作者 | Andrej Karpathy
编译 | AI有道
特斯拉人工智能部门主管 Andrej Karpathy 发布新博客,介绍神经网络训练的技巧。
Andrej Karpathy 是深度学习计算机视觉领域、与领域的研究员。博士期间师从李飞飞。在读博期间,两次在谷歌实习,研究在 Youtube 视频上的大规模特征学习,2015 年在 DeepMind 实习,研究深度强化学习。毕业后,Karpathy 成为 OpenAI 的研究科学家,后于 2017 年 6 月加入特斯拉担任人工智能与视觉总监。
今日他发布的这篇博客能为深度学习研究者们提供极为明晰的洞见,在 Twitter 上也引发了极大的关注。
1. 谁说神经网络训练简单了?
很多人认为开始训练神经网络是很容易的,大量库和框架号称可以用 30 行代码段解决你的数据问题,这就给大家留下了(错误的)印象:训练神经网络这件事是非常简单的,不同模块即插即用就能搭个深度模型。
简单的建模过程通常如下所示:
>>> your_data = # plug your awesome dataset here
>>> model = SuperCrossValidator(SuperDuper.fit, your_data, ResNet50, SGDOptimizer)# conquer world here
这些库和示例令我们想起了熟悉标准软件及模块,标准软件中通常可以获取简洁的 API 和抽象。
例如 Request 库的使用展示如下:
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code200
酷!这些库和框架的开发者背负起理解用户 Query 字符串、url、GET/POST 请求、HTTP 连接等的大量需求,将复杂度隐藏在几行代码后面。这就是我们熟悉与期待的。
然而,神经网络不一样,它们并不是现成的技术。我在 2016 年撰写的一篇博客中试图说明这一点,在那篇文章中我认为反向传播是「leaky abstraction」,然而现在的情况似乎更加糟糕了。
Backprop + SGD 不是魔法,无法让你的网络运行;批归一化也无法奇迹般地使网络更快收敛;RNN 也不能神奇地让你直接处理文本。不要因为你可以将自己的问题表示为强化学习,就认为你应该这么做。如果你坚持在不理解技术原理的情况下去使用它,那么你很可能失败。
2. 背着我不 work 的神经网络
当你破坏代码或者错误配置代码时,你通常会得到某种异常。你在原本应该插入字符串的地方插入了整数;导入出错;该关键字不存在……此外,为了方便 debug,你还很可能为某个功能创建单元测试。
这还只是开始。训练神经网络时,有可能所有代码的句法都正确,但整个训练就是不对。可能问题出现在逻辑性(而不是句法),且很难通过单元测试找出来。
例如,你尝试截损失度而不是梯度,这会导致训练期间的异常值被忽视,但语法或维度等检测都不会出现错误。又或者,你弄错了正则化强度、学习率、衰减率、模型大小等的设置,那么幸运的话网络会报错,然而大部分时候它会继续训练,并默默地变糟……
因此,「快速激烈」的神经网络训练方式没有用,只会导致困难。现在,这些经验性困难是使神经网络正常运行的拦路虎,你需要更加周密详尽地调试网络才能减少困难,需要大量可视化来了解每一件事。
在我的经验中,深度学习成功的重要因素是耐心和注重细节。
如何解决
基于以上两点事实,我开发了一套将神经网络应用于新问题的特定流程。该流程严肃地执行了上述两项原则:耐心和注重细节。
具体来说,它按照从简单到复杂的方式来构建,我们在每一步都对即将发生的事作出准确的假设,然后用实验来验证假设或者调查直到发现问题。我们试图尽力阻止大量「未经验证的」复杂性一次来袭,这有可能导致永远也找不到的 bug/错误配置。如果让你像训练神经网络那样写它的代码,你会想使用非常小的学习率,然后猜测,再在每次迭代后评估整个测试集。
1. 梳理数据
训练神经网络的第一步是不要碰代码,先彻底检查自己的数据。这一步非常关键。我喜欢用大量时间浏览数千个样本,理解它们的分布,寻找其中的模式。幸运的是,人类大脑很擅长做这件事。有一次,我发现数据中包含重复的样本,还有一次我发现了损坏的图像/标签。我会查找数据不均衡和偏差。我通常还会注意自己的数据分类过程,它会揭示我们最终探索的架构。比如,只需要局部特征就够了还是需要全局语境?标签噪声多大?
此外,由于神经网络是数据集的压缩/编译版本,你能够查看网络(错误)预测,理解预测从哪里来。如果网络预测与你在数据中发现的不一致,那么一定是什么地方出问题了。
在你对数据有了一些感知之后,你可以写一些简单的代码来搜索/过滤/排序标签类型、标注规模、标注数量等,并沿任意轴可视化其分布和异常值。异常值通常能够揭示数据质量或预处理中的 bug。
2. 配置端到端训练/评估架构、获取基线结果
现在我们已经理解了数据,那我们就可以开始构建高大上的多尺度 ASPP FPN ResNet 并训练强大的模型了吗?当然还不到时候,这是一个充满荆棘的道路。我们下一步需要构建一个完整的训练、评估架构,并通过一系列实验确定我们对准确率的置信度。
在这个阶段,你们最好选择一些不会出错的简单模型,例如线性分类器或非常精简的 ConvNet 等。我们希望训练这些模型,并可视化训练损失、模型预测和其它度量指标(例如准确率)。当然在这个过程中,我们还需要基于一些明确假设,从而执行一系列对照实验(ablation experiments)。
该阶段的一些技巧与注意事项:
3. 过拟合
到了这个阶段,我们应该对数据集有所了解了,而且有了完整的训练+评估流程。对于任何给定的模型,我们可以计算出我们信任的度量。而且还为独立于输入的基线准备了性能,一些 dumb 基线的性能(最好超过这些),我们人类的表现有大致的了解(并希望达到这一点)。现在,我们已经为迭代一个好的模型做好了准备。
我准备用来寻找好模型的方法有两个阶段:首先获得足够大的模型,这样它能够过拟合(即关注训练损失),然后对其进行适当的正则化(弃掉一些训练损失以改进验证损失)。我喜欢这两个阶段的原因是,如果我们不能用任何模型实现较低的误差率,则可能再次表明一些问题、bug 和配置错误。
该阶段的一些技巧与注意事项:
4. 正则化
理想情况下,我们现在至少有了一个拟合训练集的大模型。现在是时候对它进行正则化,并通过放弃一些训练准确率来提升验证准确率了。技巧包括:
最后,为了更加确保网络是个合理的分类器,我喜欢可视化网络第一层的权重,确保自己获得了有意义的边缘。如果第一层的滤波器看起来像噪声,那需要去掉些东西。类似地,网络内的激活函数有时候也会揭示出一些问题。
5. 精调
现在你应该位于数据集一环,探索取得较低验证损失的架构模型空间。这一步的一些技巧包括:
6. 最后的压榨
一旦你找到最好的架构类型和超参数,依然可以使用更多的技巧让系统变得更好:
结论
一旦你做到了这些,你就具备了成功的所有要素:对神经网络、数据集和问题有了足够深的了解,配置好了完整的训练/评估体系,取得高置信度的准确率,逐渐探索更复杂的模型,提升每一步的表现。现在万事俱备,就可以去读大量论文,尝试大量实验并取得 SOTA 结果了。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据可视化领域,树状图(Tree Diagram)是呈现层级结构数据的核心工具——无论是电商商品分类、企业组织架构,还是数据挖掘中 ...
2025-11-17核心结论:“分析前一天浏览与第二天下单的概率提升”属于数据挖掘中的关联规则挖掘(含序列模式挖掘) 技术——它聚焦“时间序 ...
2025-11-17在数据驱动成为企业核心竞争力的今天,很多企业陷入“数据多但用不好”的困境:营销部门要做用户转化分析却拿不到精准数据,运营 ...
2025-11-17在使用Excel透视表进行数据汇总分析时,我们常遇到“需通过两个字段相乘得到关键指标”的场景——比如“单价×数量=金额”“销量 ...
2025-11-14在测试环境搭建、数据验证等场景中,经常需要将UAT(用户验收测试)环境的表数据同步到SIT(系统集成测试)环境,且两者表结构完 ...
2025-11-14在数据驱动的企业中,常有这样的困境:分析师提交的“万字数据报告”被束之高阁,而一张简洁的“复购率趋势图+核心策略标注”却 ...
2025-11-14在实证研究中,层次回归分析是探究“不同变量组对因变量的增量解释力”的核心方法——通过分步骤引入自变量(如先引入人口统计学 ...
2025-11-13在实时数据分析、实时业务监控等场景中,“数据新鲜度”直接决定业务价值——当电商平台需要实时统计秒杀订单量、金融系统需要实 ...
2025-11-13在数据量爆炸式增长的今天,企业对数据分析的需求已从“有没有”升级为“好不好”——不少团队陷入“数据堆砌却无洞察”“分析结 ...
2025-11-13在主成分分析(PCA)、因子分析等降维方法中,“成分得分系数矩阵” 与 “载荷矩阵” 是两个高频出现但极易混淆的核心矩阵 —— ...
2025-11-12大数据早已不是单纯的技术概念,而是渗透各行业的核心生产力。但同样是拥抱大数据,零售企业的推荐系统、制造企业的设备维护、金 ...
2025-11-12在数据驱动的时代,“数据分析” 已成为企业决策的核心支撑,但很多人对其认知仍停留在 “用 Excel 做报表”“写 SQL 查数据” ...
2025-11-12金融统计不是单纯的 “数据计算”,而是贯穿金融业务全流程的 “风险量化工具”—— 从信贷审批中的客户风险评估,到投资组合的 ...
2025-11-11这个问题很有实战价值,mtcars 数据集是多元线性回归的经典案例,通过它能清晰展现 “多变量影响分析” 的核心逻辑。核心结论是 ...
2025-11-11在数据驱动成为企业核心竞争力的今天,“不知道要什么数据”“分析结果用不上” 是企业的普遍困境 —— 业务部门说 “要提升销量 ...
2025-11-11在大模型(如 Transformer、CNN、多层感知机)的结构设计中,“每层神经元个数” 是决定模型性能与效率的关键参数 —— 个数过少 ...
2025-11-10形成购买决策的四个核心推动力的是:内在需求驱动、产品价值感知、社会环境影响、场景便捷性—— 它们从 “为什么买”“值得买吗 ...
2025-11-10在数字经济时代,“数字化转型” 已从企业的 “可选动作” 变为 “生存必需”。然而,多数企业的转型仍停留在 “上线系统、收集 ...
2025-11-10在数据分析与建模中,“显性特征”(如用户年龄、订单金额、商品类别)是直接可获取的基础数据,但真正驱动业务突破的往往是 “ ...
2025-11-07在大模型(LLM)商业化落地过程中,“结果稳定性” 是比 “单次输出质量” 更关键的指标 —— 对客服对话而言,相同问题需给出一 ...
2025-11-07