一文搞懂RNN(循环神经网络)
基础篇|一文搞懂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(循环神经网络)相关推荐
- rnn按时间展开_一文搞懂RNN(循环神经网络)基础篇
神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的x,就能得到希望的y,结构图如下: 将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特 ...
- 【直观理解】一文搞懂RNN(循环神经网络)基础篇
推荐阅读时间8min~15min 主要内容简介:神经网络基础.为什么需要RNN.RNN的具体结构.以及RNN应用和一些结论 1神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够 ...
- 循环取矩阵的某行_一文搞懂RNN(循环神经网络)基础篇
神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的x,就能得到希望的y,结构图如下: 将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特 ...
- 一文弄懂关于循环神经网络(RNN)的Teacher Forcing训练机制
文章目录 一 RNN在训练过程中的问题 二 RNN的两种训练模式 三 什么是Teacher Forcing 四 Free-Running vs Teacher Forcing 实例 4.1 Free- ...
- 深度学习之RNN(循环神经网络)
一 RNN概述 前面我们叙述了BP算法, CNN算法, 那么为什么还会有RNN呢?? 什么是RNN, 它到底有什么不同之处? RNN的主要应用领域有哪些呢?这些都是要讨论的问题. 1) BP算法,CN ...
- python语言语句快的标记是什么_一文搞懂Python程序语句
原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...
- 一文搞懂 Java 线程中断
转载自 一文搞懂 Java 线程中断 在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程 ...
- 循环神经网络_小孩都看得懂的循环神经网络
点击上方"MLNLP",选择"星标"公众号 重磅干货,第一时间送达 全文共 2014 字,28 幅图,预计阅读时间 20 分钟. 本文是「小孩都看得懂」系列的第 ...
- rnn 循环神经网络
rnn 循环神经网络 创建日期 星期四 10 一月 2019 rnn为 recurrent natural network, 递归神经网络 是一种基于序列的神经网络, 序列可以是时间,文本序列等,和普 ...
最新文章
- 10 个案例分享几个 Python 可视化小技巧,助你绘制高质量图表
- vuepress 2.x 集成 element-plus
- 基于arm下的Linux控制,基于ARMuCLinux的网络控制系统设计与实现
- Redis持久化(RDB 和 AOF)
- 分布式文档存储独角兽MongoDB——系统结构(1)
- ugui获取坐标_UGUI源码解析(六)Raycast
- html 图片使用scale,CSS scale()用法及代码示例
- 【伯猫Java教程】网页游戏开发过程——环境搭建
- EditPlus 3.7 中文版已经发布
- CASS 10.1.6 安装教程
- Prolog 语言入门教程
- C1. Skyscrapers (从easy到hard)
- c语言窗口画图,C语言实现画图程序
- UICollectioView的组头和组尾的高度不同设置
- 【sass】Sass教程
- 各种Android实现边框
- android老人字体变大,适合老年人用的安卓手机软件 一键让Android字体变大
- MySQL、PostgreSQL、NoSQL、CynosDB,究竟谁是数据库王者?
- C#随机函数Radom问题详解
- position常用属性值
热门文章
- 做过十几年程序员,作为当今全世界顶级产品经理,出版第二部重磅作品《启示录2》...
- 新书上市|鲁智深和镇关西是怎么吵起来的?
- 书评 | 圈内大佬怎么看编程日历
- 好评如潮的C#实战图书
- 如何在TensorFlow中用深度学习修复图像
- Ubuntu 14.04 64 bit+ Torch 7 + CUDA7安装配置
- 比MAE更强,FAIR新方法MaskFeat用HOG刷新多个SOTA
- 招募 | 《大数据实践课》课程实践企业合作项目
- 独家 | 为你的数据科学项目提供有力支撑——3个寻找数据集的最佳网站
- 刘云鹏:大数据,让我离生活更近 | 优秀毕业生专访