用c语言实现循环神经网络,浅谈LSTM循环神经网络

姓名:程祖晗

学号:19021210938

【嵌牛导读】人工神经网络(ANN)由大量相互连接的神经元或称节点组成,这些节点经过网络中的大量加权连接,将数据进行相互通信,实现了神经网络的记忆特性。在常规的神经网络中,各个层之间的所有神经元彼此连接,但层间神经元不连接,即不能对前后位置具有一定关系的系列化数据进行更有效的分析,无法学习序列数据中前后样本的内在关联。为了优化此问题,多方研究提出了循环神经网络,且为了解决长距离依赖的问题,出现了长短期记忆网络(LSTM)。本篇就LSTM循环神经网络进行简单的讲解。

【嵌牛鼻子】LSTM循环神经网络

【嵌牛正文】LSTM循环神经网络应用了门控算法,即增加了一个状态

math?formula=c来保存长期的状态,此算法在学习时既能掌握长距离依赖又能选择性地遗忘信息防止过载。因此在当前时刻下,LSTM 的单个神经元中共有三个输入,分别是当前时刻网络的输入值

math?formula=x_%7Bt%7D%20、LSTM 隐含层上一时刻的输出值

math?formula=h_%7Bt-1%7D%20以及上一时刻的单元状态

math?formula=c_%7Bt-1%7D%20。现研究其模型的建立过程。

a.初始化各项参数

LSTM是改进的循环神经网络,如图1所示,

math?formula=X%3D%5Bx_%7B1%7D%2Cx_%7B2%7D%2C%E2%80%A6%E2%80%A6%2Cx_%7Bm%7D%5D为输入样本,

math?formula=Y%3D%5By_%7B1%7D%2Cy_%7B2%7D%2C%E2%80%A6%E2%80%A6%2Cy_%7Bn%7D%5D为输出样本,

math?formula=H%3D%5Bh_%7B1%7D%2Ch_%7B2%7D%2C%E2%80%A6%E2%80%A6%2Ch_%7Bs-1%7D%5D为LSTM单元输出。

math?formula=m%2Cn%2Cs分别为样本个数,输出样本个数及神经元个数。即:

b9efee5746ea

模型中需要初始化的参数有

math?formula=W_%7Bf%7D%20%3D%5BW_%7Bfh%7D%20%20%20W_%7Bfx%7D%20%5D%5ET

math?formula=W_%7Bi%7D%20%3D%5BW_%7Bih%7D%20%20%20W_%7Bix%7D%20%5D%5ET

math?formula=W_%7Bc%7D%20%3D%5BW_%7Bch%7D%20%20%20W_%7Bcx%7D%20%5D%5ET

math?formula=W_%7Bo%7D%20%3D%5BW_%7Boh%7D%20%20%20W_%7Box%7D%20%5D%5ET

math?formula=W_%7Bh%7D%20

b.前向计算

遗忘门限

math?formula=f_%7Bt%7D%20决定了当前时刻的神经元状态

math?formula=c_%7Bt%7D%20中保存了多少上一时刻的神经元状态

math?formula=c_%7Bt-1%7D%20

b9efee5746ea

输入门限

math?formula=i_%7Bt%7D%20决定了当前时刻网络的输入

math?formula=x_%7Bt%7D%20有多少保留到当前时刻的神经元状态

math?formula=c_%7Bt%7D%20,同时计算当前输出的神经元状态

math?formula=%5Ctilde%7Bc_%7Bt%7D%7D%20

b9efee5746ea

输出门限

math?formula=o_%7Bt%7D%20限制了神经元状态

math?formula=c_%7Bt%7D%20

math?formula=h_%7Bt%7D%20的作用:

b9efee5746ea

最后输出的预测结果为:

math?formula=y_%7Bt%7D%3D%20h_%7Bt%7D%5Cast%20W_%7Bh%7D%2Bb,其中

math?formula=b为偏移量。

c.反向误差值

与 WNN 不同,RNN 的反向误差值包括两个方面:一个是沿时间的反向传播,即当前时刻开始后的每个时刻的误差;一个是将层间的误差值传递。设 LSTM 单元的输出值为

math?formula=h_%7Bt%7D%20,定义

math?formula=t时刻的误差项为:

b9efee5746ea

(1)误差项沿时间的反向传递

根据上式得到

math?formula=t-1时刻的

math?formula=%5Cdelta%20_%7Bt-1%7D%20,即

b9efee5746ea

因此

math?formula=%5Cdelta%20_%7Bt-1%7D%3D%20%5Cdelta%20_%7Bo%2Ct%7D%5ETW_%7Boh%7D%2B%20%5Cdelta%20_%7Bf%2Ct%7D%5ETW_%7Bfh%7D%2B%20%5Cdelta%20_%7Bi%2Ct%7D%5ETW_%7Bih%7D%2B%20%5Cdelta%20_%7B%5Ctilde%7Bc%7D%20%2Ct%7D%5ETW_%7B%5Ctilde%7Bc%7Dh%7D。且由前向计算可知:

b9efee5746ea

(2)层间传递

假设当前为第

math?formula=l层,定义

math?formula=l-1层的误差项为:

b9efee5746ea

b9efee5746ea

因此

math?formula=%5Cdelta%20_%7Bt%7D%5E%7Bl-1%7D%3D(%5Cdelta%20_%7Bf%2Ct%7D%5ETW_%7Bfx%7D%20%2B%5Cdelta%20_%7Bi%2Ct%7D%5ETW_%7Bix%7D%20%2B%5Cdelta%20_%7Bo%2Ct%7D%5ETW_%7Box%7D%20%2B%5Cdelta%20_%7B%5Ctilde%7Bc%7D%20%2Ct%7D%5ETW_%7B%5Ctilde%7Bc%7Dx%7D%20)%5Codot%20f(net_%7Bt%7D%5E%7Bl-1%7D%20)

d.计算梯度权值

由前可计算出各权值对应的梯度值,如下所示:

b9efee5746ea

e.权值修正

设置学习率

math?formula=%5Ceta%20%3D0.01,则示例如下所示:

b9efee5746ea

模型建立完成,可利用此模型完成对数据的预测,其结果比常规的神经网络更精确。

https://zybuluo.com/hanbingtao/note/541458

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值