RNN 怎么用?给初学者的小教程

机器之心 Synced 08月14日 18:06

RNN 深度学习 机器翻译 分类 :互联网

阅读:559
抢沙发

.

什么是循环神经网络(RNN),如何使用它们?本文所讨论的就是关于循环神经网络的基础内容,RNN 是变得日益流行的深度学习模型。本文不打算深入讲解其晦涩的数学原理,而是旨在让读者获得关于RNN 的抽象理解。

一般的循环神经网络信息

循环神经网络出现于20世纪 80年代,最近由于网络设计的推进和图形处理单元上计算能力的提升,循环神经网络变得越来越流行。这种网络尤其是对序列数据非常有用,因为每个神经元或者单元能用它的内部存储来保存之前输入的相关信息。在语言的案例中,「I had washed my house」这句话的意思与「I had my house washed」大不相同。这就能让网络获取对该表达更深的理解。

注意到这点很重要,因为当阅读一个句子甚至是一个人时,你就是要从它之前的单词中提出每个词的语境。

一个卷起的循环神经网络

一个循环神经网络里有很多个环,这些环能允许带着信息通过神经元,同时在输入中读取它们。

一个展开的循环神经网络

在这些图表中, xt是某些输入,A 是这个循环神经网络的一部分,而 ht 是输出。基本上,你能输入句子中的词或者甚至是像 xt 这样的字符串中的字符,然后通过该循环神经网络它会得出一个 ht。

目标是用 ht 作为输出,并将它与你的测试数据(通常是原始数据的一个小子集)比较。然后你会得出你的误差率。比较完之后,有了误差率,你就能使用一种叫随时间反向传播(BPTT)的技术。BPTT 返回检查这个网络,并基于误差率调整权重。这样也调整了这个网络,并让它学习去做得更好。

理论上说,循环神经网络能从句子开头处理语境,它允许对一个句子末尾的词进行更精确的预测。在实践中,对于 vanilla RNN 来说,这并不是真正需要的。这就是为什么 RNN 在出现之后淡出研究圈一段时间直到使用神经网络中的长短期记忆(LSTM)单元取得了一些不错的结果后又重新火起来的主要原因。加上 LATM 后的网络就像是加了一个记忆单元,能记住输入的最初内容的语境。

这些少量记忆单元能让 RNN 更加精确,而且是这种模型流行的最新原因。这些记忆单元允许跨输入以便记住上下文语境。这些单元中,LSTM 与 门控循环单元(GRU)是当下使用比较广泛的两个,后者的计算效率更高,因为它们占用的计算机内存比较少。

循环神经网络的应用

RNN 有很多应用。一个不错的应用是与自然语言处理(NLP)的合作。网上已经有很多人证明了 RNN,他们创造出了令人惊讶的模型,这些模型能表示一种语言模型。这些语言模型能采纳像莎士比亚的诗歌这样的大量输入,并在训练这些模型后生成它们自己的莎士比亚式的诗歌,而且这些诗歌很难与原作区分开来。

下面是莎士比亚式诗歌。

PANDARUS:

Alas, I think he shall be come approached and the day

When little srain would be attain'd into being never fed,

And who is but a chain and subjects of his death,

I should not sleep.

Second Senator:

They are away this miseries, produced upon my soul,

Breaking and strongly should be buried, when I perish

The earth and thoughts of many states.

DUKE VINCENTIO:

Well, your wit is in the care of side and that.

Second Lord:

They would be ruled after this chamber, and

my fair nues begun out of the fact, to be conveyed,

Whose noble souls I'll have the heart of the wars.

Clown:

Come, sir, I will make did behold your worship.

VIOLA:

I'll drink it.

这首诗完全是一个 RNN 写出来的。这里有一篇好文章更深入地介绍了 Char RNNs 。

这种特殊类型的 RNN 是在一个文本数据集中喂养的,它要逐字读取输入。与一次投喂一个词相比,这种方式让人惊讶的地方是这个网络能创造出它自己独特的词,这些词是用于训练的词汇中没有的。

一个 char RNN 的例子

这张从以上参考文章中摘取的图表展示了这个模型将会如何预测「Hello」这个词。这张图很好地将网络如何逐字采纳每个词并预测下一个字符的可能性可视化了。

另一个让人惊喜的 RNN 应用是机器翻译。这种方法很有趣,因为它需要同时训练两个 RNN。在这些网络中,输入的是成对的不同语言的句子。例如,你能给这个网络输入意思相同的一对英法两种语言的句子,其中英语是源语言,法语作为翻译语言。有了足够的训练后,你给这个网络一个英语句子,它就能把它翻译成法语!这个模型被称为序列到序列模型(Sequence to Sequences model )或者编码-解码模型(Encoder- Decoder model)。

英法翻译的例子

这张图表展示了信息流是如何通过编码-解码模型的,它用了一个词嵌入层( word embedding layer )来获取更好的词表征。一个词嵌入层通常是 GloVe 或者 Word 2 Vec 算法,能批量采纳词,并创建一个权重矩阵,让相似的词相互连接起来。用一个嵌入层通常会让你的 RNN 更加精确,因为它能更好的表征相似的词是什么样的,以便减少网络的推断。

结论

RNN 现在很流行。它们是自然语言处理中最有效的模型之一。这些模型会一直出现新的应用。

什么是循环神经网络(RNN),如何使用它们?本文所讨论的就是关于循环神经网络的基础内容,RNN 是变得日益流行的深度学习模型。本文不打算深入讲解其晦涩的数学原理,而是旨在让读者获得关于RNN 的抽象理解。

一般的循环神经网络信息

循环神经网络出现于20世纪 80年代,最近由于网络设计的推进和图形处理单元上计算能力的提升,循环神经网络变得越来越流行。这种网络尤其是对序列数据非常有用,因为每个神经元或者单元能用它的内部存储来保存之前输入的相关信息。在语言的案例中,「I had washed my house」这句话的意思与「I had my house washed」大不相同。这就能让网络获取对该表达更深的理解。

注意到这点很重要,因为当阅读一个句子甚至是一个人时,你就是要从它之前的单词中提出每个词的语境。

一个卷起的循环神经网络

一个循环神经网络里有很多个环,这些环能允许带着信息通过神经元,同时在输入中读取它们。

一个展开的循环神经网络

在这些图表中, xt是某些输入,A 是这个循环神经网络的一部分,而 ht 是输出。基本上,你能输入句子中的词或者甚至是像 xt 这样的字符串中的字符,然后通过该循环神经网络它会得出一个 ht。

目标是用 ht 作为输出,并将它与你的测试数据(通常是原始数据的一个小子集)比较。然后你会得出你的误差率。比较完之后,有了误差率,你就能使用一种叫随时间反向传播(BPTT)的技术。BPTT 返回检查这个网络,并基于误差率调整权重。这样也调整了这个网络,并让它学习去做得更好。

理论上说,循环神经网络能从句子开头处理语境,它允许对一个句子末尾的词进行更精确的预测。在实践中,对于 vanilla RNN 来说,这并不是真正需要的。这就是为什么 RNN 在出现之后淡出研究圈一段时间直到使用神经网络中的长短期记忆(LSTM)单元取得了一些不错的结果后又重新火起来的主要原因。加上 LATM 后的网络就像是加了一个记忆单元,能记住输入的最初内容的语境。

这些少量记忆单元能让 RNN 更加精确,而且是这种模型流行的最新原因。这些记忆单元允许跨输入以便记住上下文语境。这些单元中,LSTM 与 门控循环单元(GRU)是当下使用比较广泛的两个,后者的计算效率更高,因为它们占用的计算机内存比较少。

循环神经网络的应用

RNN 有很多应用。一个不错的应用是与自然语言处理(NLP)的合作。网上已经有很多人证明了 RNN,他们创造出了令人惊讶的模型,这些模型能表示一种语言模型。这些语言模型能采纳像莎士比亚的诗歌这样的大量输入,并在训练这些模型后生成它们自己的莎士比亚式的诗歌,而且这些诗歌很难与原作区分开来。

下面是莎士比亚式诗歌。

PANDARUS:

Alas, I think he shall be come approached and the day

When little srain would be attain'd into being never fed,

And who is but a chain and subjects of his death,

I should not sleep.

Second Senator:

They are away this miseries, produced upon my soul,

Breaking and strongly should be buried, when I perish

The earth and thoughts of many states.

DUKE VINCENTIO:

Well, your wit is in the care of side and that.

Second Lord:

They would be ruled after this chamber, and

my fair nues begun out of the fact, to be conveyed,

Whose noble souls I'll have the heart of the wars.

Clown:

Come, sir, I will make did behold your worship.

VIOLA:

I'll drink it.

这首诗完全是一个 RNN 写出来的。这里有一篇好文章更深入地介绍了 Char RNNs 。

这种特殊类型的 RNN 是在一个文本数据集中喂养的,它要逐字读取输入。与一次投喂一个词相比,这种方式让人惊讶的地方是这个网络能创造出它自己独特的词,这些词是用于训练的词汇中没有的。

一个 char RNN 的例子

这张从以上参考文章中摘取的图表展示了这个模型将会如何预测「Hello」这个词。这张图很好地将网络如何逐字采纳每个词并预测下一个字符的可能性可视化了。

另一个让人惊喜的 RNN 应用是机器翻译。这种方法很有趣,因为它需要同时训练两个 RNN。在这些网络中,输入的是成对的不同语言的句子。例如,你能给这个网络输入意思相同的一对英法两种语言的句子,其中英语是源语言,法语作为翻译语言。有了足够的训练后,你给这个网络一个英语句子,它就能把它翻译成法语!这个模型被称为序列到序列模型(Sequence to Sequences model )或者编码-解码模型(Encoder- Decoder model)。

英法翻译的例子

这张图表展示了信息流是如何通过编码-解码模型的,它用了一个词嵌入层( word embedding layer )来获取更好的词表征。一个词嵌入层通常是 GloVe 或者 Word 2 Vec 算法,能批量采纳词,并创建一个权重矩阵,让相似的词相互连接起来。用一个嵌入层通常会让你的 RNN 更加精确,因为它能更好的表征相似的词是什么样的,以便减少网络的推断。

结论

RNN 现在很流行。它们是自然语言处理中最有效的模型之一。这些模型会一直出现新的应用。

RNN 怎么用?给初学者的小教程相关推荐

  1. matlab初学者教程_初学者的Hibernate教程

    matlab初学者教程 Welcome to the Hibernate tutorial for Beginners. Hibernate is one of the most widely use ...

  2. 用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言

    用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言 用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言 用c语言手搓一个60 ...

  3. 动漫人物手部姿势怎么画,动漫初学者手部绘画教程图

    动漫人物手部姿势怎么画?初学者怎样才能人物手部姿势?动漫初学者手部绘画教程图有哪些?想必这些问题都是初学者比较伤脑筋的问题,那么初学者到底怎样才能画好人物手部姿势呢? 今天小编就在网络上收集整理了关于 ...

  4. Angular 初学者快速上手教程

    课程介绍 本课程是一个系列基础教程,目标是带领读者上手实战,课程以新版本 Angular 的 3 个核心概念作为主线:组件.路由.模块,加上业务开发过程中必须用到的特性:工具.指令.表单.RxJS.i ...

  5. Unity3D小功能 小技巧 小教程 小原理(持续更新...)

    Unity3D小功能 小技巧 小教程 小原理(持续更新...) 1.Unity的.NET版本是2.0 按道理来说,C#能用的功能Unity也能用,但是Unity的.NET却不是最新版 要是用一些别的D ...

  6. python项目实例初学者-经典Python案例,初学者的小帮手,立马学会Python!

    原标题:经典Python案例,初学者的小帮手,立马学会Python! 对于刚开始学习Python的人来说,会通过Python的一些经典案例练手,这样既可以加深对Python的理解,也可以增进自己的技术 ...

  7. excel计算机不准确,Excel小教程四十一:关于Excel计算不准确,我们应该这样解决!...

    原标题:Excel小教程四十一:关于Excel计算不准确,我们应该这样解决! 我们有时候在用excel进行计算的时候,会遇到Excel计算不准确的的时候! 别怕,先听小雅为您一一道来! 5.1-5.2 ...

  8. linux z是什么文件夹,Linux znew初学者命令实例教程

    原标题:Linux znew初学者命令实例教程 您是否知道Linux提供了一种将.Z文件重新压缩为.gz文件的方法? 是的,znew命令可以让你这样做. 在本教程中,我们将使用一些易于理解的示例讨论此 ...

  9. python爬取b站排行榜_实时爬取B站排行榜并保存为表格——每周一个爬虫小教程系列...

    从这周开始,每周来一个爬虫小教程,希望对你们有所帮助,这次的目标是B站排行榜至于爬取什么内容,目前感觉就把序号,名称以及评分爬取下来吧(因为我是边写教程边写代码的) 这次需要用到的知识:Request ...

最新文章

  1. 从源码深处体验Spring核心技术--面试中IOC那些鲜为人知的细节
  2. 创建variant二维数组
  3. 自动驾驶——多目标跟踪模块的学习笔记
  4. Python学习笔记-数据类型(元组 tuple)
  5. 机器人与matlab——Robotics Toolbox—02建立机器人模型
  6. 如何使用计算机对文件修改密码,如何给文件夹设置一个密码?(电脑怎么给文件夹设置密码?)...
  7. 有氧运动存在哪些误区
  8. 最完美的“婚”鞋? NMD_R2“囍”(台灣愛迪達)
  9. 下面哪个linux内核是稳定版本,哪个 Linux 内核版本是 “稳定的”?
  10. MT7686芯片资料手册
  11. 硕士一般最高延期几年
  12. 贷款计算公式——java实现
  13. Elasticsearch+logstash+kibana
  14. 线性代数基础10--特征值与特征向量,行列式的空间关系
  15. java:编写10个线程,第一个线程从1加到10,第二个线程从11加到20……第十个线程从91加到100, 最后再,10个线程结果相加
  16. 2055013-56-2,Ald-Ph-PEG2-amine TFA salt,CHO-Ph-PEG2-amine TFA
  17. 能完成么?马斯克推特宣称特斯拉今年将生产约50万辆电动汽车
  18. 『2021语言与智能技术竞赛』-机器阅读理解任务基线系统详解
  19. MySQL之悲观锁场景举例
  20. AI比赛经验分享 - 总目录

热门文章

  1. linux系统硬盘坏道,如何在 Linux 系统下检测硬盘上的坏道和坏块
  2. 中法计算机专业,计算机专业中法对照词汇
  3. php中调用脚本,PHP中如何调用RScript脚本(附代码)
  4. mpvue 微信小程序api_第三方框架与原生微信小程序开发框架性能之比较 | Q荐读...
  5. Leetcode 46.全排列 (每日一题 20210621)
  6. 在单链表和双链表中删除倒数第K个节点
  7. MATLAB实战系列(三十六)-MATLAB 离散Hopfield神经网络的分类——高校科研能力评价
  8. tensorflow从入门到精通100讲(一)-如何申明一个tensor,Tensorflow中最重要的基本操作
  9. 主成分分析 PCA算法
  10. MATLAB实现批量处理图像图片的两种方法