AIGC宇宙 AIGC宇宙

神经网络debug太难了,这里有六个实用技巧

作者:机器之心
2021-06-11 02:24
神经网络的 debug 过程着实不容易,这里是一些有所帮助的 tips。

基于神经网络的项目瓶颈通常并非对网络的实现。有时候,在编写了所有代码并尝试了一大堆超参数配置之后,网络就是无法正常工作。尤其是面对着数百万的参数, 任何一个小变动都有可能前功尽弃。

在面对各种各样的问题后,有人总结了一些帮助调试神经网络的实用 tips,希望能够减少大家调试神经网络的成本。

神经网络debug太难了,这里有六个实用技巧

检查梯度问题

有时梯度是引发问题的原因。下面是几种与梯度相关的调试方法:

数值计算每个权重的梯度。这通常被称为「梯度检查」,有助于确保正确计算梯度,其中一种方法是使用有限差分。 

比较每个权重的大小和梯度的大小。要确保大小的比率是合理的。如果梯度大小远小于权重大小,网络将花费很长时间进行训练。如果梯度大小与权重大小大致相同或更大,网络将非常不稳定,可能根本不会训练。

检查梯度爆炸或消失。如果梯度变为 0 或 nan/infinity,则可以确定网络没有被正确训练。需要首先弄清楚为什么会发生爆炸 / 消失梯度,是否步数太大。一旦弄清楚梯度爆炸 / 消失的原因,就有各种解决方案来解决这个问题,例如添加残差连接以更好地传播梯度或简单地使用较小的网络。

激活函数也会导致梯度爆炸 / 消失。如果 sigmoid 激活函数的输入太大,梯度将非常接近 0。随着时间的推移检查激活函数的输入,然后确保这些输入不会导致梯度始终为 0 或很大。

检查训练过程

经常检查网络的训练进度可以节省时间。以训练贪吃蛇游戏为例,不是训练网络好几天,然后再检查网络是否学到了什么,而是每十分钟用当前学到的权重运行游戏。几个小时后,如果我们注意到每次都在做同样的事情并且获得零奖励,就知道可能有问题了,而这节省了几天的训练时间。

不要依赖定量输出

如果只查看定量输出,我们可能会错过有用的调试信息。例如,在训练语音翻译网络时,比起只检查评估函数是否在减少,更重要的是阅读翻译后的语音以确保它有意义;当训练一个用于图像识别的网络时,一定要确保手动检查网络提供的标签。

不应该依赖定量输出的原因有两个:首先,评估函数中可能存在错误。如果只查看错误评估函数输出的数字,可能需要数周时间才能意识到出现问题。其次,在神经网络输出中可能存在无法定量显示的错误模式。我们可能会意识到某个特定单词总是被错误翻译,或者在左上象限的图像识别网络总是错误的。这些观察结果反过来可以帮助找到数据处理部分的代码 bug,否则这些 bug 将被忽视。

尝试小数据集

确定代码是否存在 bug 或数据是否难以训练的另一种方法是首先拟合较小的数据集,比如将数据集中 100000 个训练示例修剪成只有 100 个甚至 1 个训练示例。如果在一个训练示例的情况下,网络仍然有很高的测试错误,不能够非常好地拟合数据,那么几乎可以肯定网络代码有问题。

尝试更简单的网络

如果全尺寸网络在训练时遇到问题,可以尝试使用层数较少的较小网络,这样可以更快地训练。如果较小的网络在全尺寸网络失败的情况下成功了,则表明全尺寸模型的网络架构过于复杂。如果简单网络和全尺寸网络都失败,则代码中可能存在 bug。

试着使用框架

如果没有使用机器学习框架编写神经网络的代码,那么可以通过在机器学习框架中编写相同的网络架构来检查问题何在。然后将打印语句放入非框架版本和框架版本中逐层比较输出,直到找到打印语句出现差异的位置,即错误所在。如果在反向传播期间发生错误,则可以从最后一层开始逐层打印权重的渐变,直到找到差异。但是此方法仅适用于网络的第一次迭代,因为由于第一次迭代输出的差异,第二次及以后的迭代将具有不同的起点。

参考内容:https://towardsdatascience.com/debugging-tips-for-neural-networks-f7dc699d6845

相关标签:

相关资讯

Meta 构建分布式 RoCEv2 网络:探索串联数万片 GPU,训练千亿参数级 AI 模型

Meta 公司于 8 月 5 日发布博文,表示为了满足大规模分布式 AI 训练对网络的需求,构建了基于 RoCEv2 协议的大规模 AI 网络。RoCEv2 的全称是 RDMA Over Converged Ethernet version 2,是一种节点间通信传输方式,用于大部分人工智能容量。Meta 公司已成功扩展了 RoCE 网络,从原型发展到部署了众多集群,每个集群可容纳数千个 GPU。这些 RoCE 集群支持广泛的生产型分布式 GPU 训练工作,包括排名、内容推荐、内容理解、自然语言处理和 GenAI 模
8/7/2024 7:35:32 AM
故渊

DeepSeek本地部署教程,小白也能搞定!

安装环境操作系统:Windows 10及以上准备工具:轻量级AI模型调用工具Ollama,调用AI模型为deepseek-r1AI 模型管理工具Cherry-Studio或AnythingLLM(二选一)资源链接:复制安装步骤第一步、下载安装Ollama并修改环境变量要运行大模型,首先需要一个好用的工具,推荐使用 Ollama ,它是一个轻量级的工具,支持快速安装和运行大语言模型(如deepseek、Llama、Qwen 等)。 ollama下载地址 :官网链接(文章开头)选择合适的操作系统下载,默认安装完成即可。 这里注意,ollama安装完成后先不要启用,因为它默认是会将模型下载到C盘的,deepseek、Qwen等模型最小也有好几个GB会占用C盘空间,所以需要先设置ollama的环境变量。
2/10/2025 11:11:47 AM
小云君网络

清华“太极-Ⅱ”光芯片面世:成果登 Nature,首创全前向智能光计算训练架构

据清华大学官方消息,清华大学电子工程系方璐教授课题组、自动化系戴琼海院士课题组另辟蹊径,首创了全前向智能光计算训练架构,研制了“太极-II”光训练芯片,实现了光计算系统大规模神经网络的高效精准训练。该研究成果以“光神经网络全前向训练”为题,于北京时间 8 月 7 日晚在线发表于《自然》期刊。AI在线查询获悉,清华大学电子系为论文第一单位,方璐教授、戴琼海教授为论文的通讯作者,清华大学电子系博士生薛智威、博士后周天贶为共同一作,电子系博士生徐智昊、之江实验室虞绍良博士参与了该项工作。该课题受到国家科技部、国家自然科学
8/8/2024 9:05:32 AM
汪淼
  • 1