RNN:Recurrent Neural Network(上)

这篇具有很好参考价值的文章主要介绍了RNN:Recurrent Neural Network(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1  为什么提出 RNN

1.1  什么是 Slot Filling

1.2  为什么 FFN 做不好 Slot Filling

1.3  为什么 RNN 能做好 Slot Filling

2  RNN 的整体结构

3  更高级的 RNN 结构

3.1  Deep RNN

3.2  Elman Network & Jordan Network

3.3  Bidirectional RNN


原视频:李宏毅 2020:Recurrent Neural Network (Part I)

1  为什么提出 RNN

李宏毅老师用了一个槽填充(Slot Filling)问题进行了解释。

1.1  什么是 Slot Filling

考虑以下场景:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

这里有两个坑位(Slot),分别是目的地(Destination)和到达时间(Time of arrival)。槽填充(Slot Filling)要做的事情,就是从原始句子中提取有用信息,把这两个坑位(Slot)填上。

比如:Taipei 填目的地(Destination)这个坑位,November 2nd 填到达时间(Time of arrival)这个坑位。

1.2  为什么 FFN 做不好 Slot Filling

考虑 FFN 处理到 Taipei 时:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

其中,输出(output)是 Taipei 分属于目的地(Destination)和到达时间(Time of arrival)这两个坑位的概率。根据原始句子,当然是 Taipei 属于目的地(Destination)的概率更高。

然而,当存在两个都包含 Taipei 的句子,但是句意完全不同时:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

上图右侧是我按照自己的理解画的,不一定对

在第一句话中,Taipei 属于目的地(Destination);在第二句话中,Taipei 属于出发地(Place of departure)。然而,FFN 在处理 Taipei 时只能看到 Taipei 一词,不能看到前面的 arrive 或者 leave 。又因为模型输入(input)都是一模一样的 Taipei,所以输出结果(output)也会是一样的,即要么永远是目的地(Destination)的概率最高,要么永远是出发地(Place of departure)的概率最高。换句话说,FFN 不能根据句子的不同,灵活地判定 Taipei 是目的地(Destination)还是出发地(Place of departure)。

1.3  为什么 RNN 能做好 Slot Filling

根据上述分析可以看出,FFN 最大的问题就是看不见 Taipei 前面的单词。那我们让模型能够看见前文不就行了吗?这就引出了 RNN 模型以及 “记忆” 的概念。

“记忆” 就是指,让模型记住自己之前的处理结果,这样在处理当前输入时能够进行参考。比如,让模型记住它之前处理的是 arrive 或者 leave,那么在它处理 Taipei 时它就知道这是目的地(Destination)还是出发地(Place of departure)了。

那么 RNN 具体是怎么实现 “记忆” 的呢?如下图所示:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

  • The output of hidden layer are stored in the memory.
  • Memory can be considered as another input.

这是 RNN 的两个特点。第一是,隐层的输出会被存储到 memory 中;第二是,memory 中的内容将会和下一时刻的输入(input)一起被送入到模型中。

我们再来看看 RNN 具体是如何处理输入(input)的:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

上图只画了处理第一个输入 [1, 1] 的过程,后面的处理过程请自行脑补。

从这个例子中我们可以看出,即使第一个输入和第二个输入均为 [1, 1],但是输出结果竟然不同(前者是 [4, 4],后者是 [12, 12])。这是因为 RNN 不仅存储了 “记忆”(memory),还让这个 “记忆”(memory)一起作为输入(input)。

换句话说,实际的输入并不单单是一个 [1, 1],还有 “记忆”(memory)中的内容。不同时刻 “记忆”(memory)中的内容不同,那输出当然就不同了。

也正是因为 RNN 存储了 “记忆”(memory),它就不会认为 arrive 后的 Taipei 和 leave 后的 Taipei 是同一个东西啦!

为了简化例子,李宏毅老师假设每个神经元的激活函数均为线性函数,并且权重均为 1,同时没有偏置项。

2  RNN 的整体结构

事实上,1.3 节的图已经说明了 RNN 的整体结构,我们这里只是把循环给展开了:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

说明:在第一个时间步输入 arrive 和 memory 的内容(初始为 0),隐层的处理结果存入 memory 中;在第二个时间步输入 Taipei 和 memory 的内容,隐层的处理结果存入 memory 中;在第三个时间步输入 on 和 memory 的内容,隐层的处理结果存入 memory 中;以此类推。

每个时间步的输出(output)均为 xxx 词属于各个坑位的概率。

虽然在 1.3 节已经讲了,但我们还是再来看看 RNN 是如何辨析 Taipei 的:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

话说 values 不应该用 are 吗?不过我八百年没学英语了。。。

3  更高级的 RNN 结构

第 2 节讲的是最基础的 RNN,实际上 RNN 还有很多变形。

3.1  Deep RNN

这个名字是我随便取的,意思就是 RNN 的隐藏层可以叠加很多个:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

3.2  Elman Network & Jordan Network

Elman Network 是我们在第 2 节中讲的那种 RNN,Jordan Network 的区别在于,它的 memory 存储的是输出(output)而不是隐层的输出:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

传说 Jordan Network 的表现更好。因为在训练模型的时候,针对输出(output)是有目标(target)的,我们知道它学到的是什么信息;而针对隐层的输出是没有目标(target)的,我们不知道它学到的是什么信息。所以人们认为输出(output)是可知的、可控的,让它作为 memory 的内容,我们就能知道 memory 的内容是什么了。

3.3  Bidirectional RNN

双向 RNN 如下图所示:

RNN:Recurrent Neural Network(上),深度学习,rnn,深度学习,人工智能

若是单向 RNN,则每个时刻的输入只能关注到前面的内容;若是双向 RNN,则正方向让每个时刻的输入关注它前面的内容,反方向让每个时刻的输入关注它后面的内容。

双向 RNN 帮助我们关注上下文的信息。比如,在做完形填空的时候,我们既要关注前文,又要关注后文。


介于篇幅长度以及 LSTM 模型的地位,将在下一篇博客介绍 LSTM 模型。文章来源地址https://www.toymoban.com/news/detail-805611.html

到了这里,关于RNN:Recurrent Neural Network(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习--RNN基础

    ​RNN(Recurrent Neutral Network,循环神经网络),主要应用于自然语言处理NLP。 因为Pytorch中没有String类型数据,需要引入序列表示法(sequence representation)对文本进行表示。 ​表示方法:[seq_len:一句话的单词数,feature_len:每个单词的表示方法] 文本信息的表达方式: one-hot:多少个

    2023年04月25日
    浏览(22)
  • 深度学习——RNN解决回归问题

    2024年02月16日
    浏览(26)
  • 机器学习&&深度学习——循环神经网络RNN

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习—语言模型和数据集 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 在之前介绍了n元语法模型,其中单词xt在时间步t的概率仅取决于前n-1个单词。对于时间步t-(n-1)之前

    2024年02月13日
    浏览(31)
  • 深度学习05-RNN循环神经网络

    循环神经网络(Recurrent Neural Network,RNN)是一种具有循环连接的神经网络结构,被广泛应用于自然语言处理、语音识别、时序数据分析等任务中。相较于传统神经网络,RNN的主要特点在于它可以处理序列数据,能够捕捉到序列中的时序信息。 RNN的基本单元是一个循环单元(

    2024年02月12日
    浏览(33)
  • 深度学习(2)---循环神经网络(RNN)

     1. 在深度学习中,序列数据(Sequence data)是指具有 前后顺序关联 的数据。常见的时间序列数据、文本数据(单词序列或字符序列)、语音数据等。这种数据不仅十分常见,而且往往具有很高的应用价值,比如我们可以通过过去的天气数据来预测未来的天气状况,通过以往

    2024年02月07日
    浏览(33)
  • 机器学习&&深度学习——NLP实战(情感分析模型——RNN实现)

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习——NLP实战(情感分析模型——数据集) 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 与词相似度和类比任务一样,我们也可以将预先训练的词向量应用于情感分析。

    2024年02月11日
    浏览(23)
  • 机器学习&&深度学习——RNN的从零开始实现与简洁实现

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习——循环神经网络RNN 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 我们将在之前所说的《时光机器》数据集上训练,先读取数据集: 回想一下,在train_iter中,每个词

    2024年02月13日
    浏览(31)
  • 深度学习实战——循环神经网络(RNN、LSTM、GRU)

           忆如完整项目/代码详见github: https://github.com/yiru1225 (转载标明出处 勿白嫖 star for projects thanks) 目录 系列文章目录 一、实验综述 1.实验工具及内容 2.实验数据 3.实验目标 4.实验步骤 二、循环神经网络综述 1.循环神经网络简介 1.1 循环神经网络背景 1.2 循环神经网络

    2023年04月24日
    浏览(31)
  • 论文笔记:DCRNN (Diffusion Convolutional Recurrent Neural Network: Data-Driven Traffic Forecasting)

    ICLR 2018 交通预测是一项具有挑战的任务 对道路网络的复杂空间依赖性 随道路条件变化的非线性时间动态 长期预测的固有困难 ——将交通流建模为有向图上的扩散过程 ——引入扩散卷积递归神经网络 (DCRNN) 使用图上的双向随机游走来捕获空间依赖性 使用具有计划采样(sc

    2024年02月01日
    浏览(35)
  • MLP/CNN/RNN/Transformer主流深度学习模型的区别

    1. 多层感知机(MLP) 核心特征 : 结构 :MLP 是一种基本的前馈神经网络,包含一个输入层、一个或多个隐藏层以及一个输出层。每层由全连接的神经元组成。 用途 :适用于简单的分类和回归任务。 限制 :不适用于处理序列数据或图像数据,因为它不具备处理输入之间时间

    2024年04月26日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包