BPTT深度理解「建议收藏」

BPTT深度理解「建议收藏」本博客适合那些BP网络很熟悉的读者一基本结构和前向传播符号解释:1. cltctl:t时刻第l层的神经元的集合,因为cltctl表示的是一层隐藏层,所以图中一个圆圈表示多个神经元。2. hlthtl:第l层在t时刻的输出。因为hlthtl是一层隐藏层的输出,所以表示的是一个向量。3. LjLj:表示的是在j时刻,网络的输出的值和目标输出值的平方差,L表示的是所有时刻的平方差的和。4. WvWv:…

大家好,又见面了,我是你们的朋友全栈君。

本博客适合那些BP网络很熟悉的读者

一 基本结构和前向传播

BPTT深度理解「建议收藏」

符号解释:

1. cltctl:t时刻第l层的神经元的集合,因为cltctl表示的是一层隐藏层,所以图中一个圆圈表示多个神经元。

2. hlthtl:第l层在t时刻的输出。因为hlthtl是一层隐藏层的输出,所以表示的是一个向量。

3. LjLj:表示的是在j时刻,网络的输出的值和目标输出值的平方差,L表示的是所有时刻的平方差的和。

4. WvWv:是一个矩阵,表示的是输入x到c的权值矩阵,那么他的大小是(c的维度)x(x的维度)。

5. WhWh:是一个矩阵,表示的是输入同一层的上一个时刻h到c的权值矩阵,那么他的大小是(c的维度)x(h的维度)。

6. b:表示的是偏置。

(PS:个人感觉c,h和W这些符号表示的维度很重要,因为理解了维度,才能更好的理解网络的结构,才能更好的去实现这个结构。另外在这里我们要学习的参数是WvWvWhWh)
图中左边的网络结构是一个RNN的时序上展开的结构,所有的列表示的是同一个神经网络,只是时间依次排开而已,紫色(横向)的箭头表示的是时序上的联系。蓝色(竖向)的箭头表示的是空间上的传播(也就是普通的前向传播),而紫色(横向)的箭头表示的上一个时刻隐藏层的输出和当前时刻上一层的输出共同组成当前隐藏层的的输入。例如:cl+1t+1ct+1l+1表示的是t+1时刻第l+1层,那么这一层的输入是该层的上一个时刻的输出hl+1thtl+1和当前时刻的上一层的输出hlt+1ht+1l共同作为cl+1t+1ct+1l+1的输入。

图中右边的公式分别是ct+1lct+1l的输入;ct+1lct+1l的输入的输出,用ht+1lht+1l表示;所有时刻的平方差的和。

二 梯度爆炸或梯度消失

2.1 Back-Propagation Through Time (BPTT)算法

BPTT深度理解「建议收藏」

上图左边的网络结构表示的反向传播的过程。其中绿色的表示的是时间上的反向传播的过程,红色的是同一个时刻空间上的传播的过程(其实也就是普通前馈神经网络的误差过程),

上图右边的公式表示的反向传播的计算,n个输入的误差平方和的关于每个神经元的偏导(也就是δδ),这个过程使用的是链式求导法则。而右边是关于δltδtl的偏导。

第一个公式:将与δltδtl同一个误差时刻(红色部分,也就是普通的前馈传播造成的误差)分离出来,其他时刻的误差(绿色部分)是时序上的,这个也是造成梯度消失或爆炸的原因。

第二个公式,LtLt关于cltctl的分解过程,这是BP网络的分解方式。

第三个公式,Lj∑Lj关于cltctl的分解过程,这和BP网络的分解方式类似。

2.2 BPTT算法存在的问题

BPTT深度理解「建议收藏」

上图表示的是从Lj∑Lj中取出最后一个Lt+nLt+n求关于cltctl,存在n个||Wh||||δ(clτ)||||Wh||||δ′(cτl)||相乘,一般来说||δ(clτ)||||δ′(cτl)||小于等于0.25,如果WhWh小于4,那么就会出现梯度消;如果大于4,那么就会出现梯度爆炸。

2.3 解决方法:Constant Error Carrousel (CEC)

BPTT深度理解「建议收藏」

http://www.cnblogs.com/xweiblogs/p/5914622.html#undefined

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152297.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月23日 下午3:16
下一篇 2022年6月23日 下午3:36


相关推荐

  • python中的缩进规则_什么叫代码缩进

    python中的缩进规则_什么叫代码缩进引言python对缩进是敏感的,而大多教程对缩进规则,往往就几句话带过,对于没有其他语言基础的初学者,十分不友好,本文就把python常见的缩进问题做了一些整理。一、Python缩进长度及缩进字符常看到一些Python缩进错误的解读,“tab符和空格做为缩进不能混用”、“缩进一定是4个空格”。实际上并没有这些限制,例如图中的示例就可以正常运行。a=1ifa==1:print(a)else:print(1)k=1;whilek<5:

    2022年10月11日
    4
  • 科大讯飞iFLYTEK翻译机4.0星火版限时特惠

    科大讯飞iFLYTEK翻译机4.0星火版限时特惠

    2026年3月14日
    2
  • 最优投资组合–马科维茨投资组合理论

    最优投资组合–马科维茨投资组合理论代码已经过期 其中爬虫链接已经失效 一 马科维茨投资组合理论投资组合 Portfolio 是由投资人或金融机构所持有的股票 债券 衍生金融产品等组成的集合 投资组合的目的在于分散风险 投资组合按粗略的分类有三种不同的模式可供运用 即积极的 中庸的和保守的 投资组合理论 1 若干种证券组成的投资组合 其收益是这些证券收益的加权平均数 但是其风险不是这些证券风险的 代码已经过期 其中爬虫链接已经失效

    2026年3月18日
    2
  • c语言oj得pe,ACM入门之OJ~

    c语言oj得pe,ACM入门之OJ~所谓OJ,顾名思义OnlineJudge,一个用户提交的程序在OnlineJudge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等。用户程序执行的结果将被OnlineJudge系统捕捉并保存,然后再转交给一个裁判程序。该裁判程序或者比较用户程序的输出数据和标准输出样例的差别,或者检验用户程序的输出数据是否满足一定的逻辑条件。最后系统返回给用户一个状态:通过(Ac…

    2022年6月17日
    46
  • 多线程编程里如何运用CreateMutex,WaitForSingleObject,ReleaseMutex来实现线程同步

    多线程编程里如何运用CreateMutex,WaitForSingleObject,ReleaseMutex来实现线程同步多线程编程里如何运用CreateMutex,WaitForSingleObject,ReleaseMutex来显现线程同步

    2022年6月26日
    38
  • linux+镜像命令在哪里,怎么查看 linux 镜像文件

    linux+镜像命令在哪里,怎么查看 linux 镜像文件查看镜像文件类型 linux 中文件类型是与文件后缀无关的 不能从文件后缀判断文件类型 要想对镜像操作就要知道它的类型 可以通过 file 命令实现 gzip 文件示例 fileinitramf gzinitramfs gz gzipcompress fromUnix lastmodified SatMar1914 51 cpio 文件示例 filet

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号