深入浅出RNN

作者&投稿:戊初 (若有异议请与网页底部的电邮联系)
~

RNN是深度学习在自然语言处理领域中的元老级神经网络,它奠定了神经网络技术在NLP领域的发展方向,其名声仅此于CNN,虽然近年来它已经鲜少露面,但江湖地位不减,就连当红明星GRU和LSTM都是它的变种。

RNN(Recurrent Neural Networks),循环神经网络,指的是模型循环处理每个input,每次循环迭代称为time(在公式中简称“t”)。Figure 1中,等号右侧部分就是RNN的展开图:input, ( ~ )经过隐藏层循环处理,每个time会生成一个output, ( ~ ),此外还会生成一个hidden state, ,它是隐藏层对input的学习成果,hidden state会和下一个input一起作为参数传入隐藏层(红色箭头)。

我在 深入浅出全连接层 中提过,RNN是由全连接层(Linear layer)组成的,准确地说,RNN中的input layer、hidden layer、output layer,就是Figure 1中的那些箭头,它们都是全连接层。

本文将会以重写RNN的方式来由浅入深剖析RNN,点击【 这里 】可以查看完整源码。

除了使用 Fastai Library 外,还会用它的轻量级NLP数据集: http://files.fast.ai/data/examples/human_numbers.tgz 。数据集是从0到9999的英文数字:“one, two, three, four, five, ......, nine thousand nine hundred ninety eight, nine thousand nine hundred ninety nine”。

我们的任务就是创建一个RNN N-gram语言模型来学习数数,比如说,看到“one, two, three, four, five, ”这10个连续token(","也是一个token),就能预测出第11个token是"six"。关于token、N-gram、语言模型、embedding以及nlp mini-batch等内容,可以回看以前的文章 自己动手开发AI影评写作机器人 ,这里不再赘述。

如Figure 1所示,Model1通过一个for循环来(递归)处理每个input(token),并将hidden state传递到下一个循环,等到N个(x.shape[1])token都学习完之后,用第N个hidden state来生成一个output。这就是RNN根据前面N个token来预测第N+1个token的过程。

之所以RNN可以预测第N+1个token,是因为hidden state包含了前面N个token的信息。 h = h + F.relu(self.input(self.emb(x[:, i]))) ,为RNN预测提供了前文的信息。

Learner是Fastai提供用于模型训练的library,“acc_f”这栏显示的是模型的预测准确率:45.9%。

Model1的hidden state只保留了同一个mini-batch内的token信息,一旦开始学习新的mini-batch,hidden state就会清零: h = torch.zeros(x.shape[0], nh).to(device=x.device)

因此,Model3会保留前一个mini-batch训练得到的hidden state,换句话说,此时的hidden state保留了整个dataset的信息。不仅如此,Model3不只是预测第N+1个token,它会预测所有token的下一个token。

Model3实现了RNN的基本功能,它的预测准确率达到72.2%。除此之外,用tanh替代relu,准确率会提升到75.4%,标准RNN的默认激活函数就是tanh。

Model4是Model3的对标模型,用Pytorch官方提供的RNN实现,从训练结果来看,它准确率比Model3要低不少,因此,这里温馨提醒,不要把官方code当作圣旨。实践表明,relu+batchnorm的组合应用到RNN中卓有成效,可惜,它无法作用于nn.RNN。

虽然nn.RNN的表现不如自己手撸的好,但并不是鼓励大家自己造轮子,而且本人也很反对像自己造轮子这种几乎不输出价值的工作方式。事实上,当我们使用2层RNN之后,Model4的表现就优于Model3了。

2层RNN的结构如下图所示,2个隐藏层虽然比1个隐藏层效果更好,但计算量也翻倍了,由于全连接层的参数数量比卷积层的要多得多,深层RNN的训练时间要远远长于相同深度的CNN,因此,RNN层数不宜过多。

RNN虽然通过hidden state来保留各token的信息,但它并不能有效地处理和使用这些信息,它会将所有训练得来的信息都一股脑地塞进hidden state,并用它来影响后续每个token的学习,而且这种影响不管是好是坏都会随着训练的深入,像滚雪球一样有增无减地将越多越多的信息裹胁进来。

显然RNN缺乏对新老信息(hidden state和token)的调控,这样一来,当要学习的token较多时,起始部分的token信息在hidden state中的占比就会越来越小,换句话说,文本起始部分的内容很容易会被忘记。

GPU和LSTM就是专门为了应对长文本训练而设计的,它们为RNN中增加了input gate、output gate、forget gate、update gate等机制,对进出信息进行筛选,丢弃过时的、无用的信息,调控输入信息对模型训练的影响力等。

Model5用GRU替代了RNN后,在相同情况下,模型准确率又有了提升,达到了83.8%。关于GRU的分析留待下一篇博文,这里不作展开。

本文通过重构RNN的方式详解了RNN模型的构成,通过分析它的缺陷,进一步介绍了GRU和LSTM的工作原理。




七步诗作者曹植是曹操的儿子吗?
回答者: ddrrnn123 - 举人 四级 5-20 20:55是,曹植是三儿子,曹胚是大儿子 回答者: pppengjunhaopp - 试用期 一级 5-20 20:58典出南朝刘义庆的《世说新语-文学》:文帝尝令东阿王七步作诗,不成者行大法。应声便为诗曰:“煮豆持作羹,漉菽以为汁。萁在釜下燃,豆在釜中泣;本自同根生,相煎何太急?

口袋妖怪白金树果表
No.27 紫黍果 モコシのみ Cornn Berry 7.5cm -20 +10 +10 30 硬约 6 小时 10 颗 70 道具效果: 面包制作材料 钻石\/珍珠部分获得方法: ヨスガシティ(绿缘市\/Hearthome City)散步公园。 心金\/魂银部分获得方法: セキチクシティ(浅红市)绿发红头巾NPC处,用あおいかけら(蓝色碎片\/Blue Shard)交换...

怎么学习人工智能?
第一步:复习线性代数。(学渣的线代忘了好多-_-||)懒得看书就直接用了著名的——麻省理工公开课:线性代数,深入浅出效果拔群,以后会用到的SVD、希尔伯特空间等都有介绍;广告:边看边总结了一套笔记 GitHub - zlotus\/notes-linear-algebra: 线性代数笔记。第二步:入门机器学习算法。还是因为比较...

如何自学人工智能
学习AI的大致步骤:(1)了解人工智能的一些背景知识;(2)补充数学或编程知识;(3)熟悉机器学习工具库;(4)系统的学习AI知识;(5)动手去做一些AI应用;1 了解人工智能的背景知识 人工智能里面的概念很多,比如机器学习、深度学习、神经网络等等,使得初学者觉得人工智能很神秘,难以理解。刚开始...

疏勒县17624312545: 什么叫深入浅出?
底俊丽扶: 深入浅出 〖拼音〗shēn rù qiǎn chū 〖成语〗深入浅出由深居简出或深入显出演化而来. 〖简拼〗srqc 〖近义词〗 深入显出 〖反义词〗深文奥义、隐晦曲折 〖用法〗联合式;作谓语、定语、状语;含褒义 指讲话或文章 〖解释〗指讲话或文章的内容深刻,语言文字却浅显易懂. 〖出处一〗 宋·秦观《谢王学士书》:自摈弃以来,尤自刻励,深居简出,几不与世人相通. 〖出处二〗明·朱之喻《朱舜水集》:“鸿论深入显出,切中事机,据理辩驳,虽有利口,无所复置其喙.” 〖示例〗这篇文章写得深入浅出,使人爱看、易懂. 〖谜语〗暗礁;古文译注

疏勒县17624312545: 有没有 深入浅出 这个成语 -
底俊丽扶: 【解释】:指讲话或文章的内容深刻,语言文字却浅显易懂. 【拼音】:shēn rù qiǎn chū 【拼音码】:srqc 【近义词】:深入显出 【反义词】:深文奥义、隐晦曲折 【歇后语】:潜水艇下水 【灯迷会】:暗礁;古文译注 【用法】:联合式;作谓语、定语、状语;含褒义 【英语】:explain the profound in simple terms

疏勒县17624312545: 深入浅出这个成语是什么意思 -
底俊丽扶: 深入浅出 shēn rù qiǎn chū [释义] 指讲话或文章的内容深刻;语言文字却浅显易懂.[语出] 明·朱之喻《朱舜水集》:“鸿论深入显出;切中事机;据理辩驳;虽有利口;无所复置其喙.” [正音] 出;不能读作“cū”.[辨形] 入;不能写作“人”.[近义] 深入显出 [反义] 深文奥义 隐晦曲折 [用法] 用作褒义.一般作谓语、定语、状语.[结构] 联合式.

疏勒县17624312545: 反义词成语大全什么入什么出 -
底俊丽扶: 深入浅出 (shēn rù qiǎn chū) 指讲话或文章的内容深刻,语言文字却浅显易懂.入不敷出 (rù bù fū chū) 敷:够,足.收入不够支出.悖入悖出 (bèi rù bèi chū) 悖:违背、胡乱.用不正当的手段得来的财物,也会被别人用不正当的手段拿去...

疏勒县17624312545: “深入浅出”是什么意思? -
底俊丽扶: 指文章或言论的内容很深刻,措辞却浅显易懂.

疏勒县17624312545: 深入浅出近义词 -
底俊丽扶: 深入浅出的近义词——深入显出、浅显易懂 深入浅出:【拼音】:[shēn rù qiǎn chū] 【释义】:指讲话或文章的内容深刻,语言文字却浅显易懂.

疏勒县17624312545: 成语什么浅出 -
底俊丽扶: 深入浅出 拼音:shēn rù qiǎn chū 解释:指讲话或文章的内容深刻,语言文字却浅显易懂.同义词:深入显出 反义词:深文奥义隐晦曲折

疏勒县17624312545: 深入浅出的词语. -
底俊丽扶: 深入浅出 【拼 音】:shēn rù qiǎn chū 【解 释】:指讲话或文章的内容深刻;语言文字却浅显易懂. 【出 处】:《朱舜水集》:“鸿论深入显出;切中事机;据理辩驳;虽有利口;无所复置其喙.” 【示 例】:这篇文章立论新颖;行文却~;明白易懂.

疏勒县17624312545: 深入浅出什么意思? -
底俊丽扶:[答案] 深入浅出shēn rù qiǎn chū 指讲话或文章的内容深刻,语言文字却浅显易懂. 【示例】:这篇文章写得深入浅出,使人爱看、易懂. 【近义词】:深入显出 【反义词】:深文奥义、隐晦曲折 【语法】:联合式;作谓语、定语、状语;含褒义

疏勒县17624312545: 深入浅出四个字在新华字典中的先后顺序 -
底俊丽扶:[答案] 如果你说的是主字而不是解释的话应该是按照每个字的拼音来排序.第一个是出(chu),第二个入(ru),第三个浅(qian)第四个深(sheng).

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网