BPTT-应用于简单的循环神经网络「建议收藏」

BPTT-应用于简单的循环神经网络「建议收藏」上面是一组序列变量,即四个变量z1,z2,z3,z4z_1,z_2,z_3,z_4中的任一ziz_i的值均依赖于它前面的变量z1,z2,..,zi−1z_1,z_2,..,z_{i-1},且有z2=2∗z1z_2=2*z_1z3=3∗z2+z1z_3=3*z_2+z_1z4=4∗z3+2∗z2+z1z_4=4*z_3+2*z_2+z_1

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

这里写图片描述
上面是一组序列变量,即四个变量 z1,z2,z3,z4 中的任一 zi 的值均依赖于它前面的变量 z1,z2,..,zi1 ,且有
z2=2z1

z3=3z2+z1

z4=4z3+2z2+z1

E=4z4+2z2

现在我们定义:

Ezi : 目标函数 E 对变量

zi
的偏微分,
+Edzi : 目标函数 E 对变量

zi
的全微分。比如,

+Ez4=Ez4=4

+Ez3=Ez3++Ez4z4z3=16

+Ez2=Ez2++Ez4z4z2++Ez3z3z2=58

+Ez1=Ez1++Ez4z4z1++Ez3z3z1++Ez2z2z1=136

综上,我们有如下的链式法则[1]

+Ezi=Ezi+j>iT+EzjzjziEq.1

traditional recurrent neural network

下图是一个基础的循环神经网络示意图
循环神经网络
Fig. 1: 循环神经网络示意图

其中x_t, h_t, y_t 分别代表 t 时刻网络的输入向量隐藏层向量输出向量w_ih, w_ho均为 权重矩阵,具体的计算公式如下:

xct=[xt,ht1]

ht=ϕ(zht)=tanh(wihxct+bih)

yt=σ(zot)=softmax(whoht+bho)

成本函数采用信息熵形式

C=t=1Tk(1y^(t)k)log(y(t)k)=t=1Tc(yt)




k表示输出层节点个数,

y^
表示真实的目标输出。

我们的目标是计算

+Cwih






+Cwho



即在给定

x1,x2,...xT
作为输入序列,

y^1,y^2,...,y^T
作为目标输出序列的前提下,计算成本函数

C
对权重矩阵



wih,who

的全微分 (这里我们暂时忽略

bih,bho
)。为此,我们先计算

+Czht


+Czot
, 其中

zht


zot
分别是图中绿色模块和黄色模块的输入。

根据 Fig. 1, 我们看出绿色模块之间有如下的依赖关系
differciate_h
那么 zhi 仅仅依赖于 zhi1 ,根据链式方程 Eq. 1:

+Czht=Czht+t>tT+Czhtzhtzht=Czht++Czht+1zht+1zht



并且,


+CzhT=CzhT=CzoTwhoϕ˙(zhT)

因为 Fig. 1 中黄色模块之间的相互依赖关系是通过绿色模块产生的,它们之间并没有直接的依赖关系,所以有

+Czot==Czotc˙(yt)σ˙(zot)



由上面的三个公式,可进而依次求出

t=T1,T2,...,2,1
时刻时的

+Czht
值。

最终有:

+Cwho=t=1T+Czotzotwho=t=1T+Czotht




+Cwih=t=1T+Czhtzhtwih=t=1T+Czhtxct



[1] Backpropagation through time: what it does and how to do it
(web)

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python把数字转换为字符串_python中将列表转化为字符串

    python把数字转换为字符串_python中将列表转化为字符串要将数字转换为字符串的方法有三个;第一是使用str()函数直接转换,然后用加号来连接前后的字符串;二是使用字符串的格式说明符;三是使用字符串的格式化函数.format()。

    2022年10月12日
    3
  • JAVA缓存机制_JAVA锁机制

    JAVA缓存机制_JAVA锁机制缓存可分为二大类:一、通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式; 二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查.下面为一个简单的缓存代码Java代码package lhm.hcy.guge.frameset.cache;    import j

    2022年10月4日
    2
  • 常用存储过程语法

    常用存储过程语法 前面学过了基本的存储过程,见 存储过程入门 现在学一下常用的存储过程的语法,只要花一点点时间学习下,就能用存储过程实现很复杂的功能,可以少写很多代码。 为了方便说明,数据库使用SQLServer的示例数据库,Northwind和pubs,如果SQLServer中没有的话,可以按下面的方法安装1,下载SQL2000SampleDb.msi,下载地址是:http://ww

    2022年7月17日
    17
  • Windows 8或不再支持1394接口「建议收藏」

    Windows 8或不再支持1394接口「建议收藏」根据上月底泄露的Windows8开发规划,微软新操作系统将提供对USB3.0、蓝牙3.0+HS等新外设接口的支持,而“古老”的IEEE1394接口却没有丝毫提及。有媒体因此猜测,Windows8很可能将放弃对IEEE1394的支持。  IEEE1394接口标准于1995年颁布,由苹果主持推动,但其中的大部分技术标准来自德州仪器、索尼、DEC、IBM、意法半导体等企…

    2025年7月18日
    4
  • Linux命令–hexdump(以16进制查看文件内容)[通俗易懂]

    Linux命令–hexdump(以16进制查看文件内容)[通俗易懂]本文介绍Linux的tac命令的用法。hexdump用于以16进制查看文件内容

    2022年9月21日
    3
  • 个人博客网站搭建[通俗易懂]

    个人博客网站搭建[通俗易懂]个人博客网站搭建VuePress介绍本人的个人博客网站,网站地址,是基于VuePress进行搭建。什么是VuePress根据官网:VuePress由两部分组成:第一部分是一个极简静态网站生成

    2022年7月1日
    21

发表回复

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

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