深度学习中的常用调试策略

    最近看了花书《深度学习》部分的调试模型部分,觉得讲得挺不错的,故摘出来供大家学习和参考。

一、可视化模型的行为

    很多时候我们训练模型之后,更多的是关注准确率和召回率等量化指标。但是一味地关注这些量化指标,而不是亲自查验一下模型捕捉到了什么,很容易在系统出问题时误以为系统运行良好。

 

二、可视化最严重的错误

    通过查看训练集中很难正确建模的样本,通常可以发现该数据预处理或者标记方面的问题。解释一下什么是“最严重”的错误:某些数据对人来说很容易区分,但机器学习系统却很难对其进行区分。

 

三、根据训练和测试误差检测软件

    往往很难确定底层软件是否正确实现。训练误差和测试误差能够提供一些线索。如果训练误差很低,但测试误差很高,很有可能是训练过程在正常运行,但是过拟合了。另外一种可能是测试误差没有被正确的度量或计算,如加载模型时出现问题,或测试数据和训练数据预处理方法不同等。如果训练和测试误差都很高,通常很难确定是由于软件错误还是算法欠拟合,这个时候需要进一步测试,如下面四介绍的方法。

 

四、拟合极小的数据集

    即使是小模型也可以保证很好的拟合一个足够小的训练集。如果小模型不能够很好的拟合足够小的训练集,很有可能是软件错误造成的。

 

五、监控激活函数值和梯度直方图

    直接复制原书的内容,觉得说的没有任何废话。这部分总结起来看就是说我们应该熟练使用tensorboard工具

    可视化神经网络在大量训练迭代后(也许是一轮)收集到的激活函数值和梯度的统计量往往是有用的。隐层单元的预测值可以告诉我们该单元是否饱和,或者它们的饱和频率如何。例如,对于整流器,它们多久关一次?是否有单元一直关闭?对于双曲正切单元而言,预激活绝对值的平均值可以告诉我们该单元的饱和程度。在深度网络中,传播梯度的快速增长或快速消失,可能会阻碍优化过程。最后,比较参数梯度和参数的量级也是有帮助的。我们一般希望参数在一个小批量更新中变化的幅度是参数值的1%这样类似的级别,而不是50%或者0.001%(这回导致学习过程停滞)。也有可能是某些参数以良好的步长移动,而另一些停滞。如果数据是稀疏的(比如自然语言),有些参数可能很少更新,这是正常的,检测它们变化时应记住这一点。

 

六、确保训练集合中正负样本是否均衡

    这是我做项目过程中踩过的坑,由于训练时正样本远远大于负样本数量,导致模型在实际使用时的测试值总是大于0.5,最后发现是加载负样本数据时出现了问题导致。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值