神经网络基础

神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的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就是隐藏层上一次的值作为这一次的输入的权重。

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

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

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

RNN时间线展开图

现在看上去就比较清楚了,这个网络在t时刻接收到输入

之后,隐藏层的值是
,输出值是
。关键一点是,
的值不仅仅取决于
,还取决于
。我们可以用下面的公式来表示

循环神经网络的计算方法:

用公式表示如下:

RNN公式

总结

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

最后给出RNN的总括图:

注意:为了简单说明问题,偏置都没有包含在公式里面。

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

循环取矩阵的某行_一文搞懂RNN(循环神经网络)基础篇相关推荐

  1. 一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

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

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

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

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

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

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

  5. android handler的机制和原理_一文搞懂handler:彻底明白Android消息机制的原理及源码

    提起Android消息机制,想必都不陌生.其中包含三个部分:Handler,MessageQueue以及Looper,三者共同协作,完成消息机制的运行.本篇文章将由浅入深解析Android消息机制的运 ...

  6. 二分类最优阈值确定_一文搞懂分类算法中常用的评估指标

    导读 通常我们在解决某个问题的时候,会设计多种分类算法在训练的时候我们还会调节各种超参以及使用各种trick以获取最优的分类模型,那这时候我们应该如何来衡量这个最优呢? 分类算法的评估指标有很多种,选 ...

  7. 循环取矩阵的某行_1.2 震惊! 某大二本科生写的矩阵乘法吊打Mathematica-线性代数库BLAS-矩阵 (上)...

    本文是 1. 线性代数库BLAS​zhuanlan.zhihu.com 系列的第二篇, 将讲述矩阵类的结构和矩阵基础运算的AVX2加速算法. 1. 矩阵类的结构 在讲述矩阵各种算法之前很有必要详解一下 ...

  8. mysql某个表被行锁了_一文搞懂MySQL行锁、表锁、间隙锁详解

    准备工作 创建表 tb_innodb_lock drop table if exists test_innodb_lock; CREATE TABLE test_innodb_lock ( a INT ...

  9. JAVA秒杀mysql层实现_一文搞懂MySQL的Join,聊一聊秒杀架构设计

    正文 MySQL的Join到底能不能用 经常听到2种观点: join性能低,尽量少用 多表join时,变为多个SQL进行多次查询 其实对于上面的观点一定程度上是正确的,但不是完全正确.但之所以流传这么 ...

最新文章

  1. algorand共识协议_【Filecoin】理解预期共识 - 及它的优缺点
  2. 三层神经网络实现手写字母的识别(基于tensorflow)
  3. Redis 持久化(学习笔记五)
  4. Cosmos互联链通信技术规范(上)
  5. Tensorflow精进之路(二):两层卷积神经网络模型训练MNIST
  6. 计算机文档排版软件,WORD排版大师
  7. java分组求和实例_mybatis example group by count 分组求和 - java分组求和
  8. java护眼的颜色_爱护眼睛,从IDEA开始,护眼色设置走起-护眼设置
  9. XP桌面图标阴影的去除
  10. Unity导入图片尺寸大小和压缩格式的问题
  11. 3D游戏建模:女性角色制作
  12. 【ARM学习笔记】ARM Cortex -A7 EPIT定时器
  13. device-mapper: multipath: Failing path recovery
  14. OpenCV基础知识
  15. 一加9pro 鸿蒙系统,想换国产旗舰,一加9 Pro和华为Mate 40 Pro怎么选?
  16. PowerPoint2007无法将Excel图表转换为图形对象
  17. 汇编指令学习(MOV,MOVSX,MOVZX,LEA,XCHG)
  18. 数字电视图像相关的基本概念
  19. composer 设置版本号_Composer 版本约束表达式的使用
  20. Python面向对象编程中的创建类及其实例化对象等方法.....【超级详细】

热门文章

  1. 【网络基础】《TCP/IP详解》学习笔记2
  2. linux 下的动态库制作 以及在python 中如何调用 c 函数库
  3. Redis 缓存过期(maxmemory) 配置/算法 详解
  4. 原创:2016.4.25-2016.5.1 C# informal essay and tittle_tattle
  5. java相对应的键盘输入_Java 实现输入键盘上任意键显示出相对应的ASCII
  6. mysql管理命令 java_Mysql常用命令及操作
  7. 关于计算机工作的诗歌,提高计算机工作及上网效率的方法
  8. pytorch 入门学习 MSE
  9. 安川变频器跳os_变频器常见故障代码及处理实例(经典,建议收藏)
  10. springBoot 2.2.6 项目中html页面样式效果丢失