目前,包括计算机视觉、语音识别和机器人在内的诸多人工智能应用已广泛使用了深度神经网络(Deep Neural Networks,DNN)。DNN 在很多人工智能任务之中表现出当前最佳的准确度,但同时也存在着计算复杂度高的问题。

打开网易新闻 查看精彩图片

因此,那些能帮助DNN高效处理并提升效率和吞吐量,同时又无损于表现准确度或不会增加硬件成本的技术是在人工智能系统之中广泛部署DNN的关键。所以在为深度神经网络排除故障方面,我们要先考虑要寻找什么,再花时间追踪故障,解决问题。

打开网易新闻 查看精彩图片

下面讨论如何可视化深度学习模型和性能指标:

1、TensorBoard

在每一步追踪每个动作、检查结果是非常重要。在预置包如 TensorBoard 的帮助下,可视化模型和性能指标变得简单。能够有效地展示Tensorflow在运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的数据信息。

打开网易新闻 查看精彩图片

2、数据可视化

验证模型数据的输入和输出,在向模型馈送数据之前,先保存一些训练和验证样本用于视觉验证。然后取消数据预处理,将像素值重新调整回 [0, 255],检查多个批次,以确定没有重复相同批次的数据。定期保存对应模型的输出,可用于验证和误差分析。

打开网易新闻 查看精彩图片

3、损失&准确率

除了定期记录损失和准确率之外,还可以记录和绘制它们,以分析其长期趋势。绘制损失图能够帮助我们调整学习率,损失的任意长期上升表明学习率太高了。如果学习率较低,则学习的速度变慢。

打开网易新闻 查看精彩图片

深度学习训练可以在更高级别的数学精度上非常精确地进行,然后在运行时可以用较低精度的数学来实现,从而获得改良的吞吐量、效率甚至延迟。所以保持高准确率对于最佳用户体验至关重要。

打开网易新闻 查看精彩图片

4、总结

权重&偏置

紧密监控训练出来的特征参数,出现大型权重是不正常的,正态分布的权重表明训练过程很顺利。权重更新较小,进而导致收敛速度变慢,这使会使得损失函数的优化变得缓慢。在最坏的情况下,可能会完全停止神经网络的进一步训练。

打开网易新闻 查看精彩图片

激活

为了梯度下降以实现训练的最佳性能,激活函数之前的节点输出应该呈正态分布。如果不是,那么我们可能向卷积层应用归一化,或者向RNN应用层归一化,并将激活函数应用于其获取该层的输出并将其作为输入馈送到下一个层。最后还需监控激活函数之后无效节点的数量。

打开网易新闻 查看精彩图片

梯度

我们监控每一层的梯度,以确定一个最严肃的深度学习问题:梯度消失或爆炸。如果梯度从最右层向最左层快速下降,导致于要用非常大的训练轮数去训练,那么就出现了梯度消失问题。如果在梯度下降的过程中每一次迭代的步长非常大,这对我们找到最优解也就是最小值有非常大的阻碍,增加了我们的训练难度,这就是梯度爆炸。

打开网易新闻 查看精彩图片