什么是RNN?RNN可以做什么?

RNN的思想是利用序列化的信息。在传统的神经网络中,我们假设所有输入和输出彼此独立。但对于许多任务而言,这个假设有问题。例如你想预测句子中的下一个单词,就需要知道它前面有哪些单词。RNN被称为循环,因为它对序列列的每个元素执行相同的任务,并且基于先前的计算进行输出。 Python技术文章2020-07-09 |程序圆 |什么是RNN?

什么是RNN?

RNN的思想是利用序列化的信息。在传统的神经网络中,我们假设所有输入和输出彼此独立。但对于许多任务而言,这个假设有问题。例如你想预测句子中的下一个单词,就需要知道它前面有哪些单词。

RNN被称为循环,因为它对序列列的每个元素执行相同的任务,并且基于先前的计算进行输出。RNN的另一个优点是它具有“记忆”,它可以收集到目前为止已经计算的信息。理论上,RNN可以在任意长的序列中使用信息,但实际使用中仅仅往回记录几步。这是典型的RNN的样子:

什么是RNN?RNN可以做什么?

什么是RNN?RNN可以做什么?

RNN可以做什么?

RNN在许多NLP任务中取得了巨大成功。 在这个领域最常用的RNN类型是LSTM,它在捕获长期依赖方面要比普通的RNN好得多。但不要担心,LSTM和RNN基本相同,它们只是采用不同的方式来计算隐藏状态。以下是RNP在NLP中的一些示例应用。

什么是RNN?RNN可以做什么?

机器翻译

机器翻译类似于语言模型,因为我们的输入是源语言中的一系列单词(例如德语)。我们希望输出目标语言的一系列单词(例如英语)。关键的区别是只有输入完整之后才会进行输出,因为我们翻译的句子的第一个单词可能需要从完整的输入序列中获取信息。

什么是RNN?RNN可以做什么?

语音识别
给定来自声波的声学信号作为输入序列,我们可以预测一系列语音片段及其概率。

生成图像描述
RNN作为模型的一部分与卷积神经网络一起生成未标记图像的描述。这个组合模型非常令人惊讶的,结果很不不错。 组合模型甚至可以把生成的单词与图像中找到的特征对应起来。

什么是RNN?RNN可以做什么?

训练RNN

训练RNN类似于训练传统的神经网络。我们也使用反向传播算法,但有点调整。由于参数由⽹络中的所有步骤共享,因此每个输出的梯度不仅取决于当前时刻的计算结果,还取决于先前的步骤的计算结果。例如,为了计算t=4处的梯度,我们需要反向传播3步并把梯度相加,这种被称为基于时间的反向传播算法(BPTT)。由于存在梯度消失/梯度爆炸的问题,用BPTT训练的普通RNN难以学习期依赖(例如相距很远的步骤之间的依赖性)。但是存在一些处理这些问题的方法,并且某些类型的RNN(如 LSTM)是专门为解决这些问题而设计的。

RNN扩展

多年来,研究人员开发了更复杂的RNN来解决普通RNN模型的一些缺点。这里会简要概述,以便您熟悉模型的分类。

双向RNN基于以下思想:时间t处的输出可能不仅取决于序列中的先前元素,还取决于未来元素。 例如,要预测序列中缺少的单词,您需要查看左侧和右侧上下文。双向RNN非常简单。它们只是两个堆叠在一起的RNN。然后基于两个RNN的隐藏状态计算输出。

什么是RNN?RNN可以做什么?

深度(双向)RNN类似于双向RNN,只是我们现在每个时间步有多个层。在实践中,这为我们提供了更高的学习能力(但需要大量的训练数据)。

什么是RNN?RNN可以做什么?

什么是RNN?RNN可以做什么?

猜你喜欢:

人工智能+python” target=”_blank”>Python培训课程

Python教程

HTTPS使用什么加密方式?对称加密还是非对称加密?

2021-5-8 20:38:10

Python教程

Python教程1:Python的诞生【认识Python】

2021-5-8 20:41:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索