博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
循环神经网络RNN
阅读量:4652 次
发布时间:2019-06-09

本文共 895 字,大约阅读时间需要 2 分钟。

循环神经网络(Recurrent Neural Networks)

RNNs 主要处理时序数据,比如一句话,词与词之间都是有顺序的,因此经常用在NLP领域,比如机器翻译,情感分析等。

一般的RNNs有多个FNN横向连接而成,其中中间有个rnn-cell, 存储的是前面序列的隐含状态s。

最基本的形式,如下图 就相当于三层,第一层是输入x到rnn-cell的连接,第二层是rnn-cell,得到的是隐藏状态s,第三层是rnn-cell到输出o的连接层。

 

循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重。

把上面的图展开,可以看作是按时间序列展开, 循环神经网络也可以画成下面这个样子

这个网络在t时刻接收到输入Xt之后,隐藏层的值是St,输出值是ot。关键一点是,st的值不仅仅取决于Xt,还取决于St−1。

使用下面的公式来表示循环神经网络的计算方法:

$o_t=g(Vs_t)$ (1)

$s_t=f(Ux_t+Ws_{t-1})$(2)

式1是输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵,g是激活函数。

式2是隐藏层的计算公式,它是循环层。U是输入x的权重矩阵,W是上一次的值st−1作为这一次的输入的权重矩阵,f是激活函数。

从上面的公式可以看出,循环层和全连接层的区别就是多了一个权重矩阵W。

若反复把式2代入带式1,我们将得到:

$o_t=g(Vs_t)=g(Vf(Ux_t+Ws_{t-1}))$

$=g(Vf(Ux_t+Wf(Ux_{t-1}+Ws_{t-2 })))$

$=g(Vf(Ux_t+Wf(Ux_{t-1}+Wf(Ux_{t-2}+Ws_{t-3 }))))$

从上面可以看出,循环神经网络的输出值ot,是受前面历次输入值xt、xt−1、xt−2…的影响的,这就是为什么循环神经网络可以往前看任意多个输入值的原因。

 

转载于:https://www.cnblogs.com/xmeo/p/7235074.html

你可能感兴趣的文章
oracle, group by, having, where
查看>>
⑥python模块初识、pyc和PyCodeObject
查看>>
nodejs pm2使用
查看>>
CSS选择器总结
查看>>
mysql中sql语句
查看>>
sql语句的各种模糊查询语句
查看>>
Python20-Day05
查看>>
C#操作OFFICE一(EXCEL)
查看>>
【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
查看>>
移动端单屏解决方案
查看>>
web渗透测试基本步骤
查看>>
使用Struts2标签遍历集合
查看>>
angular.isUndefined()
查看>>
第一次软件工程作业(改进版)
查看>>
网络流24题-飞行员配对方案问题
查看>>
Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
查看>>
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>