Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >递归神经网络(RNN)

递归神经网络(RNN)

原创
作者头像
用户9881348
发布于 2022-07-20 02:05:35
发布于 2022-07-20 02:05:35
5301
举报
文章被收录于专栏:智能人工智能人工

RNN是最强大的模型之一,它使我们能够开发如分类、序列数据标注、生成文本序列(例如预测下一输入词的SwiftKey keyboard应用程序),以及将一个序列转换为另一个序列(比如从法语翻译成英语的语言翻译)等应用程序。大多数模型架构(如前馈神经网络)都没有利用数据的序列特性。例如,我们需要数据呈现出向量中每个样例的特征,如表示句子、段落或文档的所有token。前馈网络的设计只是为了一次性地查看所有特征并将它们映射到输出。让我们看一个文本示例,它显示了为什么顺序或序列特性对文本很重要。I had cleaned my car和I had my car cleaned两个英文句子,用同样的单词,但只有考虑单词的顺序时,它们才意味着不同的含义。

人类通过从左到右阅读词序列来理解文本,并构建了可以理解文本数据中所有不同内容的强大模型。RNN的工作方式有些许类似,每次只查看文本中的一个词。RNN也是一种包含某特殊层的神经网络,它并不是一次处理所有数据而是通过循环来处理数据。由于RNN可以按顺序处理数据,因此可以使用不同长度的向量并生成不同长度的输出。图6.3提供了一些不同的表示形式。

图6.3

图6.3来自关于RNN一个著名博客(http://karpathy.github.io/2015/05/21/rnn-effectiveness),其中作者Andrej Karpathy写明了如何使用Python从头开始构建RNN并将其用作序列生成器。

6.4.1 通过示例了解RNN如何使用

假设我们已经构建了一个RNN模型,并且尝试了解它提供的功能。当了解了RNN的作用后,就可以来探讨一下RNN内部发生了什么。

让我们用Thor的评论作为RNN模型的输入。我们正在看的示例文本是the action scenes were top notch in this movie... .首先将第一个单词the传递给模型;该模型生成了状态向量和输出向量两种不同的向量。状态向量在处理评论中的下一个单词时传递给模型,并生成新的状态向量。我们只考虑在最后一个序列中生成的模型的输出。图6.4概括了这个过程。

图6.4

图6.4演示了以下内容:

· RNN如何通过展开和图像来工作;

· 状态如何以递归方式传递给同一模型。

到现在为止,我们只是了解了RNN的功能,但并不知道它是如何工作的。在了解其工作原理之前来看一些代码片段,它会更详细地展示我们学到的东西。仍然将RNN视为黑盒:

在上述代码中,hidden变量表示状态向量,有时也称为隐藏状态。到现在为止,我们应该知道了如何使用RNN。现在来看一下实现RNN的代码,并了解RNN内部发生的情况。以下代码包含RNN类:

除了上述代码中的单词RNN之外,其他一切听起来与在前面章节中使用的非常类似,因为PyTorch隐藏了很多反向传播的复杂度。让我们通过init函数和forward函数来了解发生了什么。

__init__函数初始化了两个线性层,一个用于计算输出,另一个用于计算状态或隐藏向量。

forward函数将input向量和hidden向量组合在一起,并将其传入两个线性层,从而生成输出向量和隐藏状态。对于output层,我们应用log_softmax函数。

initHidden函数有助于创建隐藏向量,而无需在第一次时声明调用RNN。让我们通过图6.5了解RNN类的作用。

图6.5

图6.5说明了RNN的工作原理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
了解更多资讯可关注公众号“人工智能技术与咨询”
了解更多资讯可关注公众号“人工智能技术与咨询”
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
递归神经网络不可思议的有效性
递归神经网络(RNNs)有一些不可思议的地方。我仍然记得我训练的第一个用于图片字幕的递归网络。从花几十分钟训练我的第一个婴儿模型(相当随意挑选的超参数)开始,到训练出能够针对图像给出有意义描述的模型。有些时候,模型对于输出结果质量的简单程度的比例,会与你的期望相差甚远,而这还仅仅是其中一点。有如此令人震惊结果,许多人认为是因为RNNs非常难训练(事实上,通过多次试验,我得出了相反的结论)。一年前:我一直在训练RNNs,我多次见证了它们的强大的功能和鲁棒性,而且它们的输出结果同样让我感到有趣。这篇文章将会给你
CSDN技术头条
2018/02/09
7680
递归神经网络不可思议的有效性
递归神经网络不可思议的有效性(上)
原文作者:Andrej Karpathy 递归神经网络(RNNs)有一些不可思议的地方。我仍然记得我训练的第一个用于 图片字幕的递归网络。从花几十分钟训练我的第一个婴儿模型(相当随意挑选的超参数)开始,到训练出能够针对图像给出有意义描述的模型。有些时候,模型对于输出结果质量的简单程度的比例,会与你的期望相差甚远,而这还仅仅是其中一点。有如此令人震惊结果,许多人认为是因为RNNs非常难训练(事实上,通过多次试验,我得出了相反的结论)。一年前:我一直在训练RNNs,我多次见证了它们的强大的功能和鲁棒性,而且它们
用户1737318
2018/06/05
8010
神经网络结构——CNN、RNN、LSTM、Transformer !!
本文将从什么是CNN?什么是RNN?什么是LSTM?什么是Transformer?四个问题,简单介绍神经网络结构。
JOYCE_Leo16
2024/03/19
29.1K0
神经网络结构——CNN、RNN、LSTM、Transformer !!
【算法】循环神经网络RNN
小编邀请您,先思考: 1 RNN和LSTM有什么异同? 2 RNN的输入和输出分别是什么? 3 如何用Python实现RNN? 传统的机器学习方法,如SVM、logistics回归和前馈神经网络都没有将时间进行显式模型化,用这些方法来建模都是基于输入数据独立性假设的前提。但是,对于很多任务而言,这非常局限。举个例子,假如你想根据一句没说完的话,预测下一个单词,最好的办法就是联系上下文的信息。下面有两种解决方案 1.一种思路是记忆之前的分类器的状态,在这个基础上训练新的分类器,从而结合历史影响,但是这样需要大
陆勤_数据人网
2018/04/18
1.3K0
【算法】循环神经网络RNN
详解循环神经网络RNN(理论篇)
让我们从一个问题开始,你能理解下面这句英文的意思吗?“working love learning we on deep”,答案显然是无法理解。那么下面这个句子呢?“We love working on deep learning”,整个句子的意思通顺了!我想说的是,一些简单的词序混乱就可以使整个句子不通顺。那么,我们能期待传统神经网络使语句变得通顺吗?不能!如果人类的大脑都感到困惑,我认为传统神经网络很难解决这类问题。
zenRRan
2018/07/25
5960
详解循环神经网络RNN(理论篇)
深度学习500问——Chapter06: 循环神经网络(RNN)(1)
时间序列数据是指在不同时间点上收集到的数据,这类数据反映了某一事物、现象等随时间的变化状态或程度。一般的神经网络,在训练数据足够、算法模型优越的情况下,给定特定的x,就能得到期望y。其一般处理单个的输入,前一个输入和后一个输入完全无关,但实际应用中,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。比如:
JOYCE_Leo16
2024/04/04
1400
深度学习500问——Chapter06: 循环神经网络(RNN)(1)
干货|全面理解卷积神经网络及其不同架构
在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如时序问题,比如你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。这个时候,我们怎么办呢?下面有两种解决方案
abs_zero
2020/11/11
6190
干货|全面理解卷积神经网络及其不同架构
递归神经网络不可思议的有效性(下)
代数几何(Latex) 以上结果表明,该模型在学习复杂句法结构方面表现得相当不错。这些结果令人印象深刻,我的实验伙伴( Justin Johnson )和我打算在结构上再深入研究,我们使用这本关于代数
用户1737318
2018/06/05
5260
能模仿韩寒小四写作的神奇递归神经网络(附代码)
引言 在离人工智能越来越近的今天,研究界和工业界对神经网络和深度学习的兴趣也越来越浓,期待也越来越高。 我们在深度学习与计算机视觉专栏中看过计算机通过卷积神经网络学会了识别图片的内容——模仿人类的看,而工业界大量的应用也证明了神经网络能让计算机学会听(比如百度的语音识别),于是大量的精力开始投向NLP领域,让计算机学会写也一定是非常有意思的事情,试想一下,如果计算机通过读韩寒和小四的小说,就能写出有一样的调调的文字,这是多带劲的一件事啊。 你还别说,还真有这么一类神经网络,能够在NLP上发挥巨大的
大数据文摘
2018/05/24
1.5K0
解密:OpenAI和DeepMind都用的Transformer是如何工作的
Transformer 是为解决序列转换或问题而设计的架构,该任务将一个输入序列转化为一个输出序列。 语音识别、文本转语音等问题都属于这类任务。
机器之心
2019/04/29
1K0
解密:OpenAI和DeepMind都用的Transformer是如何工作的
为什么说Transformer就是图神经网络?
有些工程师朋友经常问我这样一个问题:“图深度学习听起来很棒,但是现在是否有非常成功的商业案例?是否已经在实际应用中部署?”
AI科技大本营
2020/03/06
1.5K0
最全的DNN概述论文:详解前馈、卷积和循环神经网络技术
本论文技术性地介绍了三种最常见的神经网络:前馈神经网络、卷积神经网络和循环神经网络。且该文详细介绍了每一种网络的基本构建块,其包括了基本架构、传播方式、连接方式、激活函数、反向传播的应用和各种优化算法
IT派
2018/03/28
1.6K0
最全的DNN概述论文:详解前馈、卷积和循环神经网络技术
入门 | 一文简述循环神经网络
什么是循环神经网络(RNN)?它们如何运行?可以用在哪里呢?本文试图回答上述这些问题,还展示了一个 RNN 实现 demo,你可以根据自己的需要进行扩展。
CDA数据分析师
2018/07/30
4450
入门 | 一文简述循环神经网络
循环神经网络(RNN, Recurrent Neural Networks)介绍
  循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用。但是,目前网上与RNNs有关的学习资料很少,因此该系列便是介绍RNNs的原理以及如何实现。主要分成以下几个部分对RNNs进行介绍: 1. RNNs的基本介绍以及一些常见的RNNs(本文内容); 2. 详细介绍RNNs中一些经常使用的训练算法,如Back Propagation Through Time(BPTT)、Real-time Recurrent Learning(RTRL)、Extended Kalman Filter(EKF)等学习算法,以及梯度消失问题(vanishing gradient problem) 3. 详细介绍Long Short-Term Memory(LSTM,长短时记忆网络); 4. 详细介绍Clockwork RNNs(CW-RNNs,时钟频率驱动循环神经网络); 5. 基于Python和Theano对RNNs进行实现,包括一些常见的RNNs模型。
MachineLP
2019/05/26
9890
是时候放弃递归神经网络了!
NLP 领域的机器学习工程师 Riccardo Di Sipio 日前提出了一个观点:使用卷积网络要比使用循环神经网络来做 NLP 研究,要幸福得多——是时候放弃循环神经网络了!
AI科技评论
2020/02/21
7150
是时候放弃递归神经网络了!
利用神经网络进行序列到序列转换的学习
深度神经网络是在困难的学习任务中取得卓越性能的强大模型。尽管拥有大量的标记训练集,DNN就能很好地工作,但是它们并不能用于将序列映射到序列。在本文中,我们提出了一种通用的端到端序列学习方法,它对序列结构作出最小的假设。我们的方法使用多层长短期记忆网络(LSTM)将输入序列映射到一个固定维度的向量,然后使用另一个深层LSTM从向量中解码目标序列。我们的主要结果是,在WMT 14数据集的英法翻译任务中,LSTM的翻译在整个测试集中获得了34.8分的BLEU分数,而LSTM的BLEU分数在词汇外的单词上被扣分。此外,LSTM人在长句上没有困难。相比之下,基于短语的SMT在同一数据集上的BLEU得分为33.3。当我们使用LSTM对上述系统产生的1000个假设进行重新排序时,它的BLEU分数增加到36.5,这接近于之前在这项任务中的最佳结果。LSTM还学会了对词序敏感、并且对主动语态和被动语态相对不变的有意义的短语和句子表达。最后,我们发现颠倒所有源句(而不是目标句)中单词的顺序显著提高了LSTM的表现,因为这样做在源句和目标句之间引入了许多短期依赖性,使得优化问题变得更容易。
AI研习社
2019/05/13
1.6K0
利用神经网络进行序列到序列转换的学习
NLP神经网络技术发展方向
导读: 这篇文章中作者尝试将 15 年的自然语言处理技术发展史浓缩为 8 个高度相关的里程碑事件,不过它有些偏向于选择与当前比较流行的神经网络技术相关的方向。我们需要关注的是,本文中介绍的许多神经网络模型都建立在同时代的非神经网络技术之上。在文章的最后,作者强调了这些有影响力的技术成果,它们为以后的 NLP 方法发展奠定了基础。
商业新知
2019/07/22
6270
NLP神经网络技术发展方向
《Scikit-Learn与TensorFlow机器学习实用指南》 第14章 循环神经网络
击球手击出垒球,你会开始预测球的轨迹并立即开始奔跑。你追踪着它,不断调整你的移动步伐,最终在观众的掌声中抓到它。无论是在听完朋友的话语还是早餐时预测咖啡的味道,你时刻在做的事就是在预测未来。在本章中,我们将讨论循环神经网络 -- 一类预测未来的网络(当然,是到目前为止)。它们可以分析时间序列数据,诸如股票价格,并告诉你什么时候买入和卖出。在自动驾驶系统中,他们可以预测行车轨迹,避免发生交通意外。更一般地说,它们可在任意长度的序列上工作,而不是截止目前我们讨论的只能在固定长度的输入上工作的网络。举个例子,它们可以把语句,文件,以及语音范本作为输入,使得它们在诸如自动翻译,语音到文本或者情感分析(例如,读取电影评论并提取评论者关于该电影的感觉)的自然语言处理系统中极为有用。
SeanCheney
2018/12/14
7750
《Scikit-Learn与TensorFlow机器学习实用指南》 第14章 循环神经网络
CS231n第九节:循环神经网络RNN
本章我们将介绍 循环神经网络 Recurrent Neural Networks (RNNs),RNN的一大优点是为网络结构的搭建提供了很大的灵活性。通常情况下,我们提及的神经网络一般有一个固定的输入,然后经过一些隐藏层的处理,得到一个固定大小的输出向量(如下图左所示,其中红色表示输入,绿色表示隐藏层,蓝色表示输出,下同)。这种“原始”的神经网络接受一个输入,并产生一个输出,但是有些任务需要产生多个输出,即一对多的模型(如下图 one-to-many标签所示)。循环神经网络使得我们可以输入一个序列,或者输出一个序列,或者同时输入和输出一个序列。下面按照输入输出是否为一个序列对RNN进行划分,并给出每种模型的一个应用场景:
Here_SDUT
2022/08/08
7170
CS231n第九节:循环神经网络RNN
深度学习基础入门篇-序列模型[11]:循环神经网络 RNN、长短时记忆网络LSTM、门控循环单元GRU原理和应用详解
生活中,我们经常会遇到或者使用一些时序信号,比如自然语言语音,自然语言文本。以自然语言文本为例,完整的一句话中各个字符之间是有时序关系的,各个字符顺序的调换有可能变成语义完全不同的两句话,就像下面这个句子:
汀丶人工智能
2023/05/24
1.3K0
深度学习基础入门篇-序列模型[11]:循环神经网络 RNN、长短时记忆网络LSTM、门控循环单元GRU原理和应用详解
推荐阅读
相关推荐
递归神经网络不可思议的有效性
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档