基础篇|一文搞懂RNN(循环神经网络)

https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg

神经网络基础

神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的x,就能得到希望的y,结构图如下:

将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特定的y,那么既然有了这么强大的模型,为什么还需要RNN(循环神经网络)呢?

为什么需要RNN(循环神经网络)

他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。

比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列; 当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。

以nlp的一个最简单词性标注任务来说,将我 吃 苹果 三个单词标注词性为 我/nn 吃/v 苹果/nn
那么这个任务的输入就是:
我 吃 苹果 (已经分词好的句子)
这个任务的输出是:
我/nn 吃/v 苹果/nn(词性标注好的句子)
对于这个任务来说,我们当然可以直接用普通的神经网络来做,给网络的训练数据格式了就是我-> 我/nn 这样的多个单独的单词->词性标注好的单词。

但是很明显,一个句子中,前一个单词其实对于当前单词的词性预测是有很大影响的,比如预测苹果的时候,由于前面的吃是一个动词,那么很显然苹果作为名词的概率就会远大于动词的概率,因为动词后面接名词很常见,而动词后面接动词很少见。
所以为了解决一些这样类似的问题,能够更好的处理序列的信息,RNN就诞生了。

RNN结构
首先看一个简单的循环神经网络如,它由输入层、一个隐藏层和一个输出层组成:

不知道初学的同学能够理解这个图吗,反正我刚开始学习的时候是懵逼的,每个结点到底代表的是一个值的输入,还是说一层的向量结点集合,如何隐藏层又可以连接到自己,等等这些疑惑~这个图是一个比较抽象的图。

我们现在这样来理解,如果把上面有W的那个带箭头的圈去掉,它就变成了最普通的全连接神经网络。x是一个向量,它表示输入层的值(这里面没有画出来表示神经元节点的圆圈);s是一个向量,它表示隐藏层的值(这里隐藏层面画了一个节点,你也可以想象这一层其实是多个节点,节点数与向量s的维度相同);
U是输入层到隐藏层的权重矩阵,o也是一个向量,它表示输出层的值;V是隐藏层到输出层的权重矩阵。

那么,现在我们来看看W是什么。循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。

我们给出这个抽象图对应的具体图:


 
我们从上图就能够很清楚的看到,上一时刻的隐藏层是如何影响当前时刻的隐藏层的。

如果我们把上面的图展开,循环神经网络也可以画成下面这个样子:
 

现在看上去就比较清楚了,这个网络在t时刻接收到输入 xt之后,隐藏层的值是 st ,输出值是 ot 。关键一点是, st 的值不仅仅取决于 xt ,还取决于 st-1 。我们可以用下面的公式来表示循环神经网络的计算方法:
用公式表示如下:
 

RNN公式

总结
好了,到这里大概讲解了RNN最基本的几个知识点,能够帮助大家直观的感受RNN和了解为什么需要RNN,后续总结它的反向求导知识点。
最后给出RNN的总括图:

致谢:
夏冲和实验室的小伙伴们
参考:
零基础入门深度学习(5) - 循环神经网络(多谢这么好的资料)

一文搞懂RNN(循环神经网络)相关推荐

  1. rnn按时间展开_一文搞懂RNN(循环神经网络)基础篇

    神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的x,就能得到希望的y,结构图如下: 将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特 ...

  2. 【直观理解】一文搞懂RNN(循环神经网络)基础篇

    推荐阅读时间8min~15min 主要内容简介:神经网络基础.为什么需要RNN.RNN的具体结构.以及RNN应用和一些结论 1神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够 ...

  3. 循环取矩阵的某行_一文搞懂RNN(循环神经网络)基础篇

    神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的x,就能得到希望的y,结构图如下: 将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特 ...

  4. 一文弄懂关于循环神经网络(RNN)的Teacher Forcing训练机制

    文章目录 一 RNN在训练过程中的问题 二 RNN的两种训练模式 三 什么是Teacher Forcing 四 Free-Running vs Teacher Forcing 实例 4.1 Free- ...

  5. 深度学习之RNN(循环神经网络)

    一 RNN概述 前面我们叙述了BP算法, CNN算法, 那么为什么还会有RNN呢?? 什么是RNN, 它到底有什么不同之处? RNN的主要应用领域有哪些呢?这些都是要讨论的问题. 1) BP算法,CN ...

  6. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

  7. 一文搞懂 Java 线程中断

    转载自   一文搞懂 Java 线程中断 在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程 ...

  8. 循环神经网络_小孩都看得懂的循环神经网络

    点击上方"MLNLP",选择"星标"公众号 重磅干货,第一时间送达 全文共 2014 字,28 幅图,预计阅读时间 20 分钟. 本文是「小孩都看得懂」系列的第 ...

  9. rnn 循环神经网络

    rnn 循环神经网络 创建日期 星期四 10 一月 2019 rnn为 recurrent natural network, 递归神经网络 是一种基于序列的神经网络, 序列可以是时间,文本序列等,和普 ...

最新文章

  1. 10 个案例分享几个 Python 可视化小技巧,助你绘制高质量图表
  2. vuepress 2.x 集成 element-plus
  3. 基于arm下的Linux控制,基于ARMuCLinux的网络控制系统设计与实现
  4. Redis持久化(RDB 和 AOF)
  5. 分布式文档存储独角兽MongoDB——系统结构(1)
  6. ugui获取坐标_UGUI源码解析(六)Raycast
  7. html 图片使用scale,CSS scale()用法及代码示例
  8. 【伯猫Java教程】网页游戏开发过程——环境搭建
  9. EditPlus 3.7 中文版已经发布
  10. CASS 10.1.6 安装教程
  11. Prolog 语言入门教程
  12. C1. Skyscrapers (从easy到hard)
  13. c语言窗口画图,C语言实现画图程序
  14. UICollectioView的组头和组尾的高度不同设置
  15. 【sass】Sass教程
  16. 各种Android实现边框
  17. android老人字体变大,适合老年人用的安卓手机软件 一键让Android字体变大
  18. MySQL、PostgreSQL、NoSQL、CynosDB,究竟谁是数据库王者?
  19. C#随机函数Radom问题详解
  20. position常用属性值

热门文章

  1. 做过十几年程序员,作为当今全世界顶级产品经理,出版第二部重磅作品《启示录2》...
  2. 新书上市|鲁智深和镇关西是怎么吵起来的?
  3. 书评 | 圈内大佬怎么看编程日历
  4. 好评如潮的C#实战图书
  5. 如何在TensorFlow中用深度学习修复图像
  6. Ubuntu 14.04 64 bit+ Torch 7 + CUDA7安装配置
  7. 比MAE更强,FAIR新方法MaskFeat用HOG刷新多个SOTA
  8. 招募 | 《大数据实践课》课程实践企业合作项目
  9. 独家 | 为你的数据科学项目提供有力支撑——3个寻找数据集的最佳网站
  10. 刘云鹏:大数据,让我离生活更近 | 优秀毕业生专访