https://arxiv.org/pdf/1907.12545.pdf
这篇文章主要强调了RNN中梯度流的重要性。实际上在神经网络模型中梯度有着十分重要的作用,但由于网络结构的复杂性以及参数过于庞大,梯度流的研究一直是一个很困难的问题,所以在一般情况下人们多是通过研究训练好的模型节点的激活情况来研究网络的内部结构以及各参数在网络模型中所起的作用。这篇文章的作者设计了一款网页版的工具,通过这个工具我们可以追踪单层RNN网络的梯度流,从而研究其内部结构以及训练的过程。文章作者强调这个工具可以追踪网络的训练过程,我想这也是和目前常用分析方法最大的区别吧。
文章概要
RNNbow是一个web应用,这个应用可以可视化RNN网络各个节点的输入序列元素的梯度变化。通过可视化梯度而不是激活节点,RNNbow可以深入研究网络是如何学习的。
1、介绍
通过下图我们可以看出RNNbow的一个简单工作模式,真实的字符是“-”,预测的字符是“u”,蓝色高亮的是其损失函数的梯度流,RNN是时间序列,也就是说“-”这个预测结果和之前的5个字符有关。
2、相关工作
目前大多数的工具提供的都是已经训练好的网络的测试效果,而RNNbow提供的是网络的训练过程。这个工具的特点主要体现在:1、可视化梯度流而非激活节点。2、可用于确定超参数是否需要修改。3、与输入数据的类型无关。
3、RNN
循环神经网络,和其他结构相比隐藏层具有长时间记忆能力。输入序列为x1,x2,x3,输出序列为y1,y2,y3,这种结构适合解决上下文关联比较大的问题。
4、RNNbow
图1中显示的是每一个数据簇的最大梯度,图2中显示的是每一个数据簇中的训练结果,图3显示的是每一个点更新参数时的梯度占比,也就是影响前节点的因素。图4中显示的是之前结果对当前结果的影响。
5、应用实例
5.1、观察梯度的变化情况,左边的图可以看出这应该是刚开始训练时的情况,梯度为暗色,主要和附近的输入有关。右边的图可以看出梯度明暗分布,说明模型学习了较长的序列,预测结果和之前较远的结果有关。
5.2、梯度弥散,下图中可以看出后面部分的梯度变暗,其组成部分逐渐变少,说明梯度的构成逐渐变得单一。
5.3、数据簇的最大梯度,以下图为例,真实字符(,预测字符为a,这种情况可能是因为模型并没有训练过这种输入导致的。