RNN

RNN

循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN就能够很好地解决这类问题。

为什么需要RNN

普通的神经网络都只能处理一个个的输入,不能提取前后输入之间的关系,而在有些情况下,前后两次输入之间的关系是有用的,如在NLP中。

当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列;当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。

为了更好地处理序列上下文的关系,所以诞生了RNN。

RNN的结构

简单的循环网络

由输入层、隐藏层、输出层构成

img
图源:知乎-一文搞懂RNN(循环神经网络)基础篇

这个循环网络相当于在普通的全连接网络上添加了一层循环。

其中:

  • x是一个向量,它表示输入层的值;

  • s是一个向量,它表示隐藏层的值;

  • U是输入层到隐藏层的权重矩阵

  • o也是一个向量,它表示输出层的值;

  • V是隐藏层到输出层的权重矩阵

  • W是隐藏层上一次的值作为这一次的输入的权重矩阵;

img

图源:知乎-一文搞懂RNN(循环神经网络)基础篇

img

按照时间线展开

$h^t = $

每一时间步的损失用交叉熵:
J ( n ) ( θ ) = C E ( y ( 1 ) , y ^ ( t ) ) = − ∑ w ∈ V y b ( 1 ) log ⁡ y ˙ y ( t ) = − log ⁡ y ^ z i + 1 ( i ) J^{(n)}(\theta)=C E\left(y^{(1)}, \hat{y}^{(t)}\right)=-\sum_{w \in V} y_{b}^{(1)} \log \dot{y}_{y}^{(t)}=-\log \hat{y}_{z_{i}+1}^{(i)} J(n)(θ)=CE(y(1),y^(t))=wVyb(1)logy˙y(t)=logy^zi+1(i)
在整个数据集平均:
J ( θ ) = 1 T ∑ t = 1 T J ( 1 ) ( θ ) = 1 T ∑ i = 1 T − log ⁡ y ˙ x i + 1 ( θ ) J(\theta)=\frac{1}{T} \sum_{t=1}^{T} J^{(1)}(\theta)=\frac{1}{T} \sum_{i=1}^{T}-\log \dot{y}_{x_{i}+1}^{(\theta)} J(θ)=T1t=1TJ(1)(θ)=T1i=1Tlogy˙xi+1(θ)

参考资料

  1. 人人都能看懂的LSTM

  2. 一文搞懂RNN(循环神经网络)基础篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值