深度循环神经网络

循环神经网络只有一个单向的隐藏层,在深度学习应用里,我们通常会用到含有多个隐藏层的循环神经网络,也称作深度循环神经网络。

下图演示了一个有LLL个隐藏层的深度循环神经网络,每个隐藏状态不断传递至当前层的下一时间步和当前时间步的下一层。

具体来说

  • 在时间步ttt里,设小批量输入Xt∈Rn×d\boldsymbol{X}_t \in \mathbb{R}^{n \times d}Xt​∈Rn×d(样本数为nnn,输入个数为ddd)
  • 第ℓ\ellℓ隐藏层(ℓ=1,…,L\ell=1,\ldots,Lℓ=1,…,L)的隐藏状态为Ht(ℓ)∈Rn×h\boldsymbol{H}_t^{(\ell)} \in \mathbb{R}^{n \times h}Ht(ℓ)​∈Rn×h(隐藏单元个数为hhh)
  • 输出层变量为Ot∈Rn×q\boldsymbol{O}_t \in \mathbb{R}^{n \times q}Ot​∈Rn×q(输出个数为qqq),且隐藏层的激活函数为ϕ\phiϕ。

第1隐藏层的隐藏状态和之前的计算一样:
Ht(1)=ϕ(XtWxh(1)+Ht−1(1)Whh(1)+bh(1)),\boldsymbol{H}_t^{(1)} = \phi(\boldsymbol{X}_t \boldsymbol{W}_{xh}^{(1)} + \boldsymbol{H}_{t-1}^{(1)} \boldsymbol{W}_{hh}^{(1)} + \boldsymbol{b}_h^{(1)}),Ht(1)​=ϕ(Xt​Wxh(1)​+Ht−1(1)​Whh(1)​+bh(1)​),

其中权重Wxh(1)∈Rd×h\boldsymbol{W}_{xh}^{(1)} \in \mathbb{R}^{d \times h}Wxh(1)​∈Rd×h、Whh(1)∈Rh×h\boldsymbol{W}_{hh}^{(1)} \in \mathbb{R}^{h \times h}Whh(1)​∈Rh×h和偏差 bh(1)∈R1×h\boldsymbol{b}_h^{(1)} \in \mathbb{R}^{1 \times h}bh(1)​∈R1×h分别为第1隐藏层的模型参数。

当1<ℓ≤L1 < \ell \leq L1<ℓ≤L时,第ℓ\ellℓ隐藏层的隐藏状态的表达式为

Ht(ℓ)=ϕ(Ht(ℓ−1)Wxh(ℓ)+Ht−1(ℓ)Whh(ℓ)+bh(ℓ)),\boldsymbol{H}_t^{(\ell)} = \phi(\boldsymbol{H}_t^{(\ell-1)} \boldsymbol{W}_{xh}^{(\ell)} + \boldsymbol{H}_{t-1}^{(\ell)} \boldsymbol{W}_{hh}^{(\ell)} + \boldsymbol{b}_h^{(\ell)}),Ht(ℓ)​=ϕ(Ht(ℓ−1)​Wxh(ℓ)​+Ht−1(ℓ)​Whh(ℓ)​+bh(ℓ)​),

其中权重Wxh(ℓ)∈Rh×h\boldsymbol{W}_{xh}^{(\ell)} \in \mathbb{R}^{h \times h}Wxh(ℓ)​∈Rh×h、Whh(ℓ)∈Rh×h\boldsymbol{W}_{hh}^{(\ell)} \in \mathbb{R}^{h \times h}Whh(ℓ)​∈Rh×h和偏差 bh(ℓ)∈R1×h\boldsymbol{b}_h^{(\ell)} \in \mathbb{R}^{1 \times h}bh(ℓ)​∈R1×h分别为第ℓ\ellℓ隐藏层的模型参数。

最终,输出层的输出只需基于第LLL隐藏层的隐藏状态:

Ot=Ht(L)Whq+bq,\boldsymbol{O}_t = \boldsymbol{H}_t^{(L)} \boldsymbol{W}_{hq} + \boldsymbol{b}_q,Ot​=Ht(L)​Whq​+bq​,

其中权重Whq∈Rh×q\boldsymbol{W}_{hq} \in \mathbb{R}^{h \times q}Whq​∈Rh×q和偏差bq∈R1×q\boldsymbol{b}_q \in \mathbb{R}^{1 \times q}bq​∈R1×q为输出层的模型参数。

同多层感知机一样,隐藏层个数LLL和隐藏单元个数hhh都是超参数。此外,如果将隐藏状态的计算换成门控循环单元或者长短期记忆的计算,就可以得到深度门控循环神经网络。

(pytorch-深度学习)深度循环神经网络相关推荐

  1. 水很深的深度学习-Task05循环神经网络RNN

    循环神经网络 Recurrent Neural Network 参考资料: Unusual-Deep-Learning 零基础入门深度学习(5) - 循环神经网络 史上最小白之RNN详解_Tink19 ...

  2. 深度学习之循环神经网络(12)预训练的词向量

    深度学习之循环神经网络(12)预训练的词向量  在情感分类任务时,Embedding层是从零开始训练的.实际上,对于文本处理任务来说,领域知识大部分是共享的,因此我们能够利用在其它任务上训练好的词向量 ...

  3. 深度学习之循环神经网络(11-b)GRU情感分类问题代码

    深度学习之循环神经网络(11-b)GRU情感分类问题代码 1. Cell方式 代码 运行结果 2. 层方式 代码 运行结果 1. Cell方式 代码 import os import tensorfl ...

  4. 深度学习之循环神经网络(11-a)LSTM情感分类问题代码

    深度学习之循环神经网络(11-a)LSTM情感分类问题代码 1. Cell方式 代码 运行结果 2. 层方式 代码 运行结果 1. Cell方式 代码 import os import tensorf ...

  5. 深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战

    深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战 1. LSTM模型 2. GRU模型  前面我们介绍了情感分类问题,并利用SimpleRNN模型完成了情感分类问题的实战,在介绍完更为强 ...

  6. 深度学习之循环神经网络(10)GRU简介

    深度学习之循环神经网络(10)GRU简介 1. 复位门 2. 更新门 3. GRU使用方法  LSTM具有更长的记忆能力,在大部分序列任务上面都取得了比基础RNN模型更好的性能表现,更重要的是,LST ...

  7. 深度学习之循环神经网络(9)LSTM层使用方法

    深度学习之循环神经网络(9)LSTM层使用方法 1. LSTMCell 2. LSTM层  在TensorFlow中,同样有两种方式实现LSTM网络.既可以使用LSTMCell来手动完成时间戳上面的循 ...

  8. 深度学习之循环神经网络(8)长短时记忆网络(LSTM)

    深度学习之循环神经网络(8)长短时记忆网络(LSTM) 0. LSTM原理 1. 遗忘门 2. 输入门 3. 刷新Memory 4. 输出门 5. 小结  循环神经网络除了训练困难,还有一个更严重的问 ...

  9. 深度学习之循环神经网络(7)梯度裁剪

    深度学习之循环神经网络(7)梯度裁剪 1. 张量限幅 2. 限制范数 3. 全局范数裁剪 梯度弥散  梯度爆炸可以通过 梯度裁剪(Gradient Clipping)的方式在一定程度上的解决.梯度裁剪 ...

  10. 深度学习之循环神经网络(6)梯度弥散和梯度爆炸

    深度学习之循环神经网络(6)梯度弥散和梯度爆炸  循环神经网络的训练并不稳定,网络的善妒也不能任意加深.那么,为什么循环神经网络会出现训练困难的问题呢?简单回顾梯度推导中的关键表达式: ∂ht∂hi= ...

最新文章

  1. 【算法笔记】哈密顿问题
  2. 软件隐喻的本质与模式
  3. 在C#中,如何连接已加密的Sqlite数据库
  4. HDU 2157 How many ways?? 临接矩阵+快速幂
  5. nor flash 基础篇
  6. 性能测试如何定位瓶颈?偶发超时?看高手如何快速排查问题
  7. api怎么写_使用Node.js原生API写一个web服务器
  8. 二极管的结构、特性、参数、稳压管的特性和参数
  9. 电脑故障扫描修复软件_非常时期不出门,自己在家修电脑,三例常见电脑故障排除方法。...
  10. 数据预处理—4.为什么要趋近于正态分布?详解
  11. SG90舵机驱动,有代码
  12. PS学习总结一:入门版必备的基础功能
  13. 10102 循环输入字符串
  14. 小米笔记本Ruby默认开启fn键如何解决方法步骤
  15. sscanf小技巧-洛谷P7911 网络连接
  16. 安卓手机如何防盗_安卓手机如何打开.exe文件 安卓手机exe文件怎么打开
  17. anaconda is not fount
  18. 银行可视化大屏后端计算案例
  19. POI之Word转化为Markdown-yellowcong
  20. 大型企业局域网安全解决方案

热门文章

  1. 现代软件工程 第六章 【敏捷流程】练习与讨论
  2. ionic 支持float吗_机器人协会 | 一起拼机器人吗?
  3. IOC操作Bean管理注解方式(注入属性@Autowired和Qualifier)
  4. android手机可以设置屏幕锁定,安卓手机屏幕锁设置方法(九个点图案)
  5. oracle erp 报表开发手册,处置OracleERP导出的报表文件
  6. python struct pack一个数组_Python中struct.pack的一个疑问
  7. 你觉得外观模式和代理模式的联系和区别是什么?_GoF23种设计模式
  8. 【LeetCode笔记】剑指 Offer 06. 从尾到头打印链表(Java、翻转链表)
  9. java scipt 对象 函数_java script 基本函数
  10. 同比 数据模型 环比_历史数据模型解决方案-历史数据模型解决方案