首页 > 编程知识 正文

sklearn算法,rnp ar和rnp apch区别

时间:2023-05-05 03:26:26 阅读:22329 作者:4345

本文的第一部分是http://www.wild ml.com/2015/10/recurrent-neural-networks-tutorial-part-3-back propagation-throuroural-3

最近看到RNN,首先犹豫如何实现隐层互联,了解后,不太清楚如何使用BPTT进行训练。 在网上查找资源,因为本博客的介绍详细易懂,所以自己翻译了。 以下内容:

RNN教程,第3部分,时间反向传播(BPTT )和梯度消失

这是RNN教程的第三部分。

本教程的上一部分从一开始就实现了RNN网络,但没有详细讨论BPTT计算梯度的实现。 本节提供了BPTT的简要概述,并说明了与传统反向传播算法的区别。 然后,我们将致力于理解“消失梯度问题”(vanishing gradient problem )。 这个问题推动了LSTMs和GRUs的发展,是NLP )和其他领域目前最受欢迎、最强大的两种模式。 梯度消失问题于1991年由Sepp Hochreiter发现,由于最近深度结构的应用增多而再次受到关注。

如果你想完全理解这部分的内容,建议你熟悉偏导数和基本反向传播工作。 如果你还不熟悉,可以从【为正文提供了三个地址】中找到很好的教程。 这些是随着难度的增加而排序的。

后台传输路由时间(bptt )。

首先,让我们简单回顾一下RNN的等式。 注意到这里有小变化,符号o变成了。 这是为了与我参考的几个文献一致。

我们同时将我们的损失函数(或误差)定义为交叉熵损失,由以下公式给出:

这里是时刻t的正确单词,是网络的预测。 典型地,因为我们以完全序列(句)作为训练实例,所以总误差是各时间点)的误差之和。

我们的目的是计算参数u、v、w梯度的误差,通过随机梯度下降(SGD )学习好的参数。 就像我们计算了误差之和一样,我们也将训练实例按时间啊,把你的坡度加起来。

我们为了计算这些导数而使用链式求导。 这是在误差开始后应用反向传播算法。 本文的其馀部分用作示例,这只是为了用实际数据导出。

在上式中,同时表示两个向量的外积运算。 跟不上上面的话也不要担心。 我跳过了几个步骤。 请你自己计算一下这些导数(请参阅)。 想从上式得到的是只依赖于当前数值的计算。 如果掌握了这些,关于计算误差的v的导数只不过是简单的矩阵乘法。

但是,(和)的情况不同。 让我们排列一下链式法则。 和上面相似。

现在需要注意的是,既依赖于,也依赖于w。 计算关于w的导数,不能简单地视为常数! 我们需要再次使用连锁定律,我们最终得到的公式是:

我们合计各时刻对坡度的贡献。 也就是说,在到达感兴趣的输出的过程中,所有的计算都使用了w,所以需要从t=3开始在网络中的所有路径上反向传播梯度,使t=0。

请注意,这与我们在深度前向神经网络中使用的标准反向传播算法相同。 最大的区别是计算w在各个时刻的坡度,并将它们合计起来。 传统的神经网络不在层间共享参数,因此也不需要求和。 但是在我看来,BPTT只是标准反向传播没有展开的RNN的有趣名字。 可以像反向传播一样定义反向传播的向量。 例如,这里。 然后应用同样的方程式。

简单的BPTT实现类似于以下代码:

翻译结束,原文后续部分考虑梯度消失。

按上面的公式:

部分参考;

3358 blog.Sina.cn/d pool/blog/s/blog _ 6e 32 babb 0102 y 3u7. html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。