自己电脑怎么做网站服务器吗,和田网页设计,Wordpress搜索指定页面内容,iis如何设置服务器上网站空间大小到目前为止#xff0c;我们已经反复提到像梯度爆炸或梯度消失#xff0c; 以及需要对循环神经网络分离梯度。 例如#xff0c;我们在序列上调用了detach函数。 为了能够快速构建模型并了解其工作原理#xff0c; 上面所说的这些概念都没有得到充分的解释。 本节将更深入地探…到目前为止我们已经反复提到像梯度爆炸或梯度消失 以及需要对循环神经网络分离梯度。 例如我们在序列上调用了detach函数。 为了能够快速构建模型并了解其工作原理 上面所说的这些概念都没有得到充分的解释。 本节将更深入地探讨序列模型反向传播的细节 以及相关的数学原理。
当我们首次实现循环神经网络时 遇到了梯度爆炸的问题。 如果做了练习题就会发现梯度截断对于确保模型收敛至关重要。 为了更好地理解此问题本节将回顾序列模型梯度的计算方式 它的工作原理没有什么新概念毕竟我们使用的仍然是链式法则来计算梯度。 循环神经网络中的前向传播相对简单。 通过时间反向传播backpropagation through timeBPTTWerbos, 1990实际上是循环神经网络中反向传播技术的一个特定应用。 它要求我们将循环神经网络的计算图一次展开一个时间步 以获得模型变量和参数之间的依赖关系。 然后基于链式法则应用反向传播来计算和存储梯度。 由于序列可能相当长因此依赖关系也可能相当长。 例如某个1000个字符的序列 其第一个词元可能会对最后位置的词元产生重大影响。 这在计算上是不可行的它需要的时间和内存都太多了 并且还需要超过1000个矩阵的乘积才能得到非常难以捉摸的梯度。 这个过程充满了计算与统计的不确定性。 在下文中我们将阐明会发生什么以及如何在实践中解决它们。
完全计算
计算全部总和 然而这样的计算非常缓慢并且可能会发生梯度爆炸 因为初始条件的微小变化就可能会对结果产生巨大的影响。 也就是说我们可以观察到类似于蝴蝶效应的现象 即初始条件的很小变化就会导致结果发生不成比例的变化。 这对于我们想要估计的模型而言是非常不可取的。 毕竟我们正在寻找的是能够很好地泛化高稳定性模型的估计器。 因此在实践中这种方法几乎从未使用过。
截断时间步
在实践中这种方式工作得很好。 它通常被称为截断的通过时间反向传播 (Jaeger, 2002)。 这样做导致该模型主要侧重于短期影响而不是长期影响。 这在现实中是可取的因为它会将估计值偏向更简单和更稳定的模型。
比较策略
比较RNN中计算梯度的策略3行自上而下分别为随机截断、常规截断、完整计算
当基于循环神经网络使用通过时间反向传播 分析《时间机器》书中前几个字符的三种策略 第一行采用随机截断方法是将文本划分为不同长度的片断 第二行采用常规截断方法是将文本分解为相同长度的子序列。 这也是我们在循环神经网络实验中一直在做的 第三行采用通过时间的完全反向传播结果是产生了在计算上不可行的表达式。
遗憾的是虽然随机截断在理论上具有吸引力 但很可能是由于多种因素在实践中并不比常规截断更好。 首先在对过去若干个时间步经过反向传播后 观测结果足以捕获实际的依赖关系。 其次增加的方差抵消了时间步数越多梯度越精确的事实。 第三我们真正想要的是只有短范围交互的模型。 因此模型需要的正是截断的通过时间反向传播方法所具备的轻度正则化效果。