双向 和 多重 RNN
前面已经对 RNN (递归神经网络) 的变体 (主要为解决 梯度消失和梯度爆炸) 接触了两个比较流行的 LSTM 和 GRU, 其核心思想呢, 是通过其所谓 **"gate" **向量存储 (store) RNN 更早期状态的 RNN, 通常就可以先用 LSTM 来试试看, 然后等结构稍微稳定写, 就可用 GRU 来训练参数 (gate 只有2 个) .
普遍来看, 神经网络都会有梯度消失 和梯度爆炸的问题, 其根源在于现在的神经网络在训练的时候, 大多都是 基于 BP 算法, 这种误差向后传递的方式, 之前咱也推导过数学公式, 多元函数求偏导, 注意链式法则, 会产生 vanishing. 而 RNN 产生梯度消失的根源是 权值矩阵复用.
反正是个难点哦, 不扯了, 这里主要是想在补充两种 RNN 的变体, 双向和多层RNN.
Bidirectional RNN
双向的 RNN , 典型的栗子是, 情感分析这块. (假设是通过一个评价, 来判断情感是 positive 还是 negative.)

然后看这个评价: the movie was terribly exciting. 我们人可以轻松来判断, 结合整句话, 就是觉得电影很棒呀. 然而, 机器可就不一定了哦, 因为这里有个词 terribly 意味非常糟糕. 当咱从左往右看的时候, 如果不看最后一个单词, 直接到 "The movie was terribly" 就是消极的评价呀. 因而可以发现, 在这个栗子中, 最后一个词 exciting 相当于把前面的句子给 "反转" 了.
为了解决这个问题, 就引入了所谓 反转 RNN 跟双向链表似的, 正面来一遍输入, 反向也来一遍输入.

这样分别从 左边和右边 都来作一个输入, 就能够将 每个词, 作用于 上下文了呀 (context)
用符号化的方式来描述, 是这样的:
\(Forward \ RNN \ \rightarrow h^{(t)} = RNN_{FW} (h^{\rightarrow (t-1)}, x ^{(t)})\)
这种从左往右的, This is general notation to mean "compute one forward step of the RNN", - it could be a vanilla, LSTM or GRu computation.
然后就是这种从右到左的.
\(Backward \ RNN \ \leftarrow h^{(t)} = RNN_{FW} (h^{\leftarrow (t-1)}, x ^{(t)})\)
Generally, these two RNNs have separate weights, 就是从左到右, 从右到左, 各有一个权值矩阵 W
连接的隐含状态: \(h^{(t)} = [h^{\rightarrow (t)}; h^{\leftarrow(t)}]\) We regard this as "the hidden state" of a bidirectional RNN (双向RNN)
This is what we pass on to the next parts of the network.
应用场景
Note: bidirectional RNNs are only applicable (适用于) if you have access to the entire input sequence 应用在已经知道全部句子的前提下.
They are not applicable to Language Modeling, because in LM you only have left context available. 用来做情感分析是可以的, 都知道嘛, 但语言模型就不行了, 它不是用来做预测下一个单词的.
If you do have entire input sequence, 那单向, 或者双向, 你开心就好的呀.
For example, BERT (Bidirectional Encoder Representations Transformers) 这个bert 还不知咱翻译, 上次在B站看到大佬在讲bert 感觉非常厉害的样子. is a powerful pretrained contextual (处理上下文) representation system built on bidrectionality.
Multi - layer RNNs
RNNs are already "deep" on one dimension (they unroll over many timesteps) 在时间轴上, 让网络深度增加.
We can also make them "deep" in another dimension by applying multiple RNNs - this is a multi-layer RNN. 就是, (隐含层) 上层的特征, 又作为下一层的输入, 这样的, 感觉好像也不太好理解哦.
This allows the network to compute more complex representations.
The lower RNNs should compute lower-lever features and the higher RNNs should compute highter-lever features.
Multi-layer RNN are also called stacked RNNs.

The hidden states from RNN layer i are the inputs to RNN layer i+1.
特点
High-performing RNNs are often multi-layer 通常预测效果很好的 RNN 都是多层的结构. 但这个深度呢, 也不会像普通的全连接层网络 (feed-forward network), 和 卷积神经网络 (convolutional) 那样深哦.
在 2017年, 有些老铁做实验, 说在机器翻译这块, 2-4层 is best for the encoder RNN, and 4 layers is best for the decoder RNN. 这也是 我一直不是很关注神经网络这块的原因, 很多都是经验性, 试验性的东西. 总是会少了一点 理论的美感, 比如回看一下 SVM, XGboost ... 这些理论就特别完美.
还有说像 Transformer - based network 比如 BERT, can be up to 24 layer. 当然这种在训练的时候, 需要大量地使用 skipping-like connectiions.
小结
主要是熟悉下一些常见的 RNN 变体和其中心思想和应用场景
- LSTM 应用非常广泛, GRU 会更快一些, "gate" 比 LSTM 要少呀,至少
- 梯度消失, 梯度爆炸的常用解决办法, 比如梯度爆炸, 可以用 clip 的方式来缓解
- 双向 (Bidirectional ) 的RNN, 可用在情感分析这块, 因为是知道上下文的嘛.
- 多层 (Multi-layer) RNN 效果很好,但可能会常用到 skip connections 的方式哦.
RNN 就到这了, 后面我在去学下 tensorflow 或 pytorch 这类的框架, 来调参搞些案例玩一玩.
双向 和 多重 RNN的更多相关文章
- 转:使用RNN解决NLP中序列标注问题的通用优化思路
http://blog.csdn.net/malefactor/article/details/50725480 /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author ...
- UML系列03之 UML类图(二)
概要 在"UML系列02之 UML类图(一) "中介绍了类图的基本构成--类的UML表示方法.本文是接着前文,继续对"UML的类图"中几种关系进行介绍.介绍的主 ...
- UML系列02之 UML类图(2)
UML类图的几种关系 在UML类图中,关系可以分为4种: 泛化, 实现, 关联 和 依赖.1. 泛化 -- 表示"类与类之间的继承关系".2. 实现 -- 表示"类与接口 ...
- 智能机器人chatbot论文集合
机器不学习 jqbxx.com-专注机器学习,深度学习,自然语言处理,大数据,个性化推荐,搜索算法,知识图谱 今年开始接触chatbot,跟着各种专栏学习了一段时间,也读了一些论文,在这里汇总一下.感 ...
- [DeeplearningAI笔记]序列模型1.10-1.12LSTM/BRNN/DeepRNN
5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.10长短期记忆网络(Long short term memory)LSTM Hochreiter S, Schmidhu ...
- UML类图介绍以及PlantUML使用方法
类的UML表示方法 UML介绍 类图,是UML(统一建模语言)中用于描述"类"以及"类与类"之间的示意图.它形象的描述出了系统的结构,帮助人们理解系统. 类图是 ...
- [论文理解] Connectionist Text Proposal Network
Connectionist Text Proposal Network 简介 CTPN是通过VGG16后在特征图上采用3*3窗口进行滑窗,采用与RPN类似的anchor机制,固定width而只预测an ...
- [Design Patterns] 01. Creational Patterns - Abstract Factory
设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式的目的是提高代码的可重用性,让代码更容易被他人理解,并保证代码可靠性.它是代码编制真正实现工程化. 四个关键元素 ...
- 【UML】基本介绍与类图(依赖、泛化、实现、关联、聚合、组合关系)
文章目录 UML基本介绍 UML图 UML类图 类图-依赖关系(Dependence) 类图-泛化关系(generalization) 类图-实现关系(Implementation) 类图-关联关系( ...
- 学习笔记TF020:序列标注、手写小写字母OCR数据集、双向RNN
序列标注(sequence labelling),输入序列每一帧预测一个类别.OCR(Optical Character Recognition 光学字符识别). MIT口语系统研究组Rob Kass ...
随机推荐
- [POI2014] HOT-Hotels 加强版题解
好好好,太好了这题,太好了. 首先有一点是很明显的: 对于一个合法的答案 \((i,j,k)\),必有一点 \(p\),使 \(dis(i,p)=dis(j,p)=dis(k,p)\) 且三点到 \( ...
- 淘宝 NPM 镜像站
应该有不少开发者已经发现,访问淘宝 NPM 已经会自动 301 跳转到 npmmirror.com 新域名,这是我们独立注册和备案的域名. Web 站点:https://npmmirror.com R ...
- 目标检测 | Farthest Point Sampling 及其 CUDA 实现
Farthest Point Sampling 及其 CUDA 实现 目录 Farthest Point Sampling 及其 CUDA 实现 概述 均匀随机采样 Farthest Point Sa ...
- 机器学习 | 强化学习(4) | 无模型控制(Model-Free Control)
无模型控制(Model-Free Control) 无模型预测概论 上一节课: 无模型预测 用于估计一个未知马尔科夫决策过程的价值函数 这节课 无模型控制 最优化一个未知马尔科夫决策过程的价值函数 一 ...
- Vue3状态管理终极指南:Pinia保姆级教程
一.为什么选择Pinia?(Vuex对比分析) 1.1 核心优势解析 Composition API优先 :天然支持Vue3新特性,代码组织更灵活 TypeScript友好 :内置类型推导,无需额外类 ...
- browser-use 对 playwright 做了哪些事情
browser-use 是基于 Playwright 的增强工具,专注于将 AI 代理与浏览器自动化结合,通过简化操作和扩展功能提升了开发效率. 以下是它对 Playwright 的主要增强点: AI ...
- 一文速通Python并行计算:00 并行计算的基本概念
一文速通 Python 并行计算:00 并行计算的基本概念 摘要: 该文介绍了 Python 并行计算的核心概念.编程模型及其应用,并介绍了了并行程序的性能分析与优化方法,如并行效率.加速比及 Amd ...
- PVE常用命令
1.查看集群下的节点信息 root@pve63-node172:~# pvecm nodes Membership information ---------------------- Nodeid ...
- webpack3使用additionalData和prependData都不管用
10.css相关配置 utils.js sass: generateLoaders('sass', { indentedSyntax: true, implementation: require('n ...
- .NET Core & ConsoleApp & appsettings.json
准备 Visual Studio 2017 .NET Core 2.1 新建控制台应用(.NET Core) 默认的 Program.cs // Program.cs using System; na ...