CS224d-Day 5: RNN快速入门


CS224d-Day 5: 什么是RNN

本文结构:

  • 1.什么是 RNN?和NN的区别?
  • 2.RNN 能做什么?为什么要用 RNN?
  • 3.RNN 怎么工作的?
  • 4.RNN 基本模型存在某些问题?
  • 5.GRU 和 LSTM 是什么?

1.什么是 RNN?和NN的区别?

RNN-(Recurrent Neural Networks):循环神经网络

传统的神经网络模型,它是有向无环的,就是在隐藏层中各个神经元之间是没有联系的,而实际上我们的大脑并不是这样运作的,所以有了RNN模型,它在隐藏层的各个神经元之间是有相互作用的,能够处理那些输入之间前后有关联的问题。

2.RNN 能做什么?为什么要用 RNN?

RNN 在 NLP 中有广泛的应用,语言模型与文本生成(Language Modeling and Generating Text),机器翻译(Machine Translation),语音识别(Speech Recognition),图像描述生成 (Generating Image Descriptions) 等。

3.RNN 怎么工作的?

参考:深入浅出讲解 SRN

用 SRN-(Simple RNNs) 这个最简单的 RNN 模型来举例说明一下它是怎样工作的:

SRN 做的事情就是,在一个时间序列中寻找这个时间序列具有的结构。例如,给一句话,这句话是把所有词串在一起没有空格,然后 SRN 要自动学习最小单元是什么,也就是它要学习哪些是单词,怎样的切割才可以被识别成是一个单词。

具体做法就是,在每个时间点时,预测下一个时间点是什么字母,SRN 的结果就是随着时间预测结果的误差,比如说,t=0时字母是F,t=1时预测是i,那误差就会减小,直到d,误差都是一直减小,但是下一刻预测结果是S,误差就会重新升高。就这样通过 SRN 这个模型就可以得到这个时间序列是由哪些词组成的。

模型结构就是有3层,输入层隐藏层和输出层,另外还有一个语义层,语义层的内容是直接复制上一时刻隐藏层的内容,然后它会返回一个权重矩阵,t 时刻的输入层和由 t-1 隐藏层复制过来的语义层一同作用到 t 时刻的输出层。

再具体点,把这个模型的环拆成线型来理解,在 t=0 的时候,就是普通的神经网络模型,有3层,两个权重矩阵和 bias,到输出层,预测结果和目标结果计算误差,接着用 BP 去更新 W1 和 W2,但是在 t=1 的时候,就有一个语义层,是从上一个时刻的隐藏层复制过来的,然后和此刻的输入层一起作用到隐藏层,再继续得到结果,再通过 BP 去更新 W1 和 W2。一直这样下去不断地迭代 W1,W2,theta,不断地跑这个时间序列,如果串的长度不到迭代次数,就首尾相连,直到收敛停止迭代。

SRN 是由 ELMAN 提出的,他用 N 个词,造了几百个句子,然后首尾相连,放进网络进行学习,最终结果就是学到了里面的基本构成单元-单词。

用数学表达出这个模型:

4.RNN 基本模型存在某些问题?

不过这个模型有个问题,就是当想要记忆的越多时,比如想要记忆 t-1,t-2,t-3 时刻的,就需要更多的层,伴随着层数的增加,就会出现 梯度消失(vanishing gradients) 的问题,

梯度消失就是一定深度的梯度对模型更新没有帮助。

原因简述:更新模型参数的方法是反向求导,越往前梯度越小。而激活函数是 sigmoid 和 tanh 的时候,这两个函数的导数又是在两端都是无限趋近于0的,会使得之前的梯度也朝向0,最终的结果是到达一定”深度“后,梯度就对模型的更新没有任何贡献。

这篇博客中有详细的解释为何会出现这样的问题。

可以用 gradient clipping 来改善这个问题:

5.GRU 和 LSTM 是什么?

GRU:

为了解决上面的问题,让 RNN 有更好的表现,它有一些改良版模型。

GRU(Gated Recurrent Unit Recurrent Neural Networks)

GRU 对两个方面进行了改进:1. 序列中不同的位置的单词对当前的隐藏层的状态的影响不同,越前面的影响越小。2. 误差可能是由某一个或者几个单词引起的,更新权值时应该只针对相应的单词。

LSTM:

LSTM (Long Short-Term Memory,长短时记忆模型) 是目前使用最广泛的模型,它能够更好地对长短时依赖进行表达。

LSTM 与 GRU 类似,只是在隐藏层使用了不同的函数。这里有一篇非常好的文章来讲解 LSTM。 简书上也有一篇译文。

[cs224d]

Day 1. 深度学习与自然语言处理 主要概念一览 Day 2. TensorFlow 入门 Day 3. word2vec 模型思想和代码实现 Day 4. 怎样做情感分析 Day 5. CS224d-Day 5: RNN快速入门 Day 6. 一文学会用 Tensorflow 搭建神经网络 Day 7. 用深度神经网络处理NER命名实体识别问题 Day 8. 用 RNN 训练语言模型生成文本 Day 9. RNN与机器翻译 Day 10. 用 Recursive Neural Networks 得到分析树 Day 11. RNN的高级应用

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

如何使用 Keras 实现无监督聚类

由于深度学习算法在表达非线性表征上的卓越能力,它非常适合完成输入到有标签的数据集输出的映射。这种任务叫做分类。它需要有人对数据进行标注。无论是对 X 光图像还是...

73920
来自专栏marsggbo

DeepLearning.ai学习笔记(四)卷积神经网络 -- week2深度卷积神经网络 实例探究

一、为什么要进行实例探究? 通过他人的实例可以更好的理解如何构建卷积神经网络,本周课程主要会介绍如下网络 LeNet-5 AlexNet VGG ResNet ...

25580
来自专栏机器之心

专栏 | 云脑科技-实习僧文本匹配模型及基于百度PaddlePaddle的应用

23140
来自专栏数据科学与人工智能

【Python环境】Python分类现实世界的数据

引入 一个机器可以根据照片来辨别鲜花的品种吗?在机器学习角度,这其实是一个分类问题,即机器根据不同品种鲜花的数据进行学习,使其可以对未标记的测试图片数据进行分类...

33060
来自专栏AI科技大本营的专栏

从零开始学习 PyTorch:多层全连接神经网络

本文引自博文视点新书《深度学习入门之PyTorch》第3 章——多层全连接神经网络 内容提要:深度学习如今已经成为科技领域最炙手可热的技术,在《深度学习入门之...

1.7K120
来自专栏云时之间

聚类分析的简单理解(1)

各位小伙伴们大家好,这几天我在学习聚类分析这个统计方法,所以希望通过这个文章来概括下自己所学的知识,并且希望大家可以指出不足 1:什么是聚类分析? 聚类分析(...

38160
来自专栏企鹅号快讯

详解各种随机算法

转自:JarvisChu 之前将的算法都是确定的,即对于相同的输入总对应着相同的输出。但实际中也常常用到不确定的算法,比如随机数生成算法,算法的结果是不确定的,...

73190
来自专栏阮一峰的网络日志

理解矩阵乘法

大多数人在高中,或者大学低年级,都上过一门课《线性代数》。这门课其实是教矩阵。 ? 刚学的时候,还蛮简单的,矩阵加法就是相同位置的数字加一下。 ? 矩阵减法也类...

37570
来自专栏技术随笔

[译] Deep Residual Learning for Image Recognition (ResNet)

39580
来自专栏专知

【论文推荐】最新7篇条件随机场(CRF)相关论文—图像标注、对抗学习、端到端、注意力机制、三维人体姿态、图像分割、行为分割和识别

【导读】专知内容组整理了最近七篇条件随机场(Conditional Random Field )相关文章,为大家进行介绍,欢迎查看! 1. Deep Neura...

45470

扫码关注云+社区

领取腾讯云代金券