机器学习Basics-第十一期-循环神经网络RNN
https://www.toutiao.com/a6655276573958078987/
2019-02-08 17:34:05
背景
本系列已经经历十期,上一期涵盖了卷积神经网络。从上一期大家也能知道,由于对于高清图片,不能将图片的每一个像素点作为特征,而卷积神经网络最大特点就是通过卷积操作提取出图片的主要特征;并且该特征数量大幅减少并且能够代表图片的原始主要特征。 通俗并不精确的讲,卷积神经网络的操作就是 将 一个高清图片 还原成 一个素描图片的过程。
而本期将开始讲解循环神经网络。而这个神经网络框架尤其注重Sequential “顺序”信息的抓取。而在现实社会中很多场景“顺序”非常重要。例如,音乐、文字等等。我之前写过一篇文章说hi用RNN来生成音乐片片段的,也是非常有意思的实践。https://www.toutiao.com/i6568248442403947022/
对于基础神经网络不太熟悉的朋友可以看下本系列以前的文章或者本系列第八期;
而本期将介绍RNN循环神经网络的结构及特征。另外,需要申明的是本文章图片大部分来自于DENNY BRITZ,并且部分内容也翻译于其文章。
循环神经网络
要了解循环神经网络,最好的方式就是了解其与基础神经网络的差别。下图是一个典型的基础神经网络结构,而大家能看出来,输入层、隐藏层、输出层 每层之间每个神经元都是相互关联的。这也就意味着 X1、X2、X3 的顺序是不重要的,或者不相关的。这种神经网络结构在应对一些简单的Classification问题,是没有问题的。但是对于文字翻译、音乐、声音处理等“顺序”非常重要的场景来说,基础神经网络就不够用了。
那么什么是RNN循环神经网络呢?
循环神经网络最重要的特点就是运用了“顺序Sequential”信息。在传统的神经网络中,我们假设所有的输入值是相互独立的。但是对于很多场景来说,并不是如此的。假设,你需要预测一句话的下一个单词,你可能需要知道它之前的几个单词是什么。一种理解RNN的方式是,RNN有一个“memory”来记忆储存目前已经计算的信息。理论上RNN能够处理任意长的信息,但是实际操作过程中只能处理比较短的信息(原因后续会提到)。
下面是一个RNN神经网络的框架
上图就是展示了一个RNN的基础框架。与基础神经网络不同的是,右边其中一列就是一个单独的基础神经网络了。而RNN所做的是将几个神经网络按照顺序的拼接在一起,而输入值也按照顺序依次输入。然后每个“小神经网络”的一些输出会进入下一个“小神经网络”。 RNN这么操作,依次输入 输入值X,依次输出。就是这样将“Sequential顺序”这个要素加入到了这个神经网络框架中。感觉有点像套娃。哈哈
上图展示来RNN被展开成一个完整的网络。例如,假设有一个五个单词的句子,这个网络就会被展开成5层神经网络。公式中各个参数如下:
- Xt 是在时间t 的输入值,丽日,X1 是对应着第二个单词的 one-hot 向量;
- St 是在时间t的Hidden State(隐藏状态)。它是该神经网络的储存记忆。St是基于上一层的Hidden State和本层的输入值X计算得出的。
- Ot 是在时间t的输出值。例如,我们如果想预测下一个单词,那么就会转化成一个通过softmax计算出来的概率分布
有一些需要特别解释的点:
- 大家可以将St 理解成网络的记忆,它储存了之前所有步骤的信息。输出值Ot 是基于第t步骤的 记忆计算得出。不过,有一点需要值得注意的是,St由于复杂的原因(后面会解释)无法储存太长的信息;
- 上图在每一个步骤中都有输出值,但是基于不同的任务,并不是每个步骤都需要输出值。例如,我们需要计算一句话的情感值(sentiment),我们只需要一个最终输出,而不是每个单词的输出值。另外,RNN的主要特征是储存在 hidden state中;
Vanishing Gradients
Vanishing Gradients 应该翻译成逐渐消失的梯度。 当然名字并不重要,其实质是因为Vanishing Gradients 导致RNN无法有效的应对较长的Sequential 顺序信息。
大家可以看到下面的GIF图,其中绿色的相当于 Hidden State(St),这也是储存信息的地方。而在第二列的绿色圈的数值是基于上一列 和 本列的 红色输入值而得来的。
而每个信息传递到下一层的时候都有一个参数W(在GIF每列之间的位子)。通俗点比喻,这有点像俄罗斯套娃。假设已经套了10层套娃且W小于1,那么最里面那层套娃就特别小,体现在数字上也变得更小。 那么第十层虽然理论上涵盖了 前面10层的信息,但是由于“套娃”导致第一层已经逐渐变小或者逐渐被遗忘。
Vanishing Gradient 其实理解起来比较容易,上面的例子是通过比喻方式使得更好理解,需要说明的是其并不准确。 如果大家对Vanishing Gradient 比较感兴趣可以搜索DENNY BRITZ的文章
Vanishing Gradient 的影响
如果觉得Vanishing Gradient过程比较复杂,可以只关注其影响。 Vanishing Gradient的影响就是最基础的RNN神经网络框架在较长的信息流场景下表现不佳。
当然应对该问题也有其他的RNN优化后的框架,如LSTM 、GRU等等。这些后续也会带来
总结
总结下,本期涵盖了循环神经网络的基础内容。也提到了其中的缺陷。
整体来说,循环神经网络的核心是“循环”,其通过构建一个按照“顺序”的神经网络框架、按照“顺序”输入的输入值,最终形成了一个能够处理“顺序”信息的神经网络框架
机器学习Basics-第十一期-循环神经网络RNN相关推荐
- [Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例
从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇讲解了TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的 ...
- Python手撸机器学习系列(十六):循环神经网络RNN的实现
目录 循环神经网络RNN 1.公式推导 2.代码实现 循环神经网络RNN 1.公式推导 对于该循环神经网络,以中间的RNN单元为例,推导前向传播: 对于Layer-1: z h = w i x + w ...
- 花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN
目录 0. 前言 1. RNN 计算图 2. RNN 前向传播 3. RNN 反向传播 4. 导师驱动过程(teacher forcing) 5. 不同序列长度的 RNN 如果这篇文章对你有一点小小的 ...
- 【李宏毅机器学习笔记】 23、循环神经网络(Recurrent Neural Network,RNN)
[李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...
- 深度学习入门(五十六)循环神经网络——循环神经网络RNN
深度学习入门(五十六)循环神经网络--循环神经网络RNN 前言 循环神经网络--循环神经网络RNN 课件 潜变量自回归模型 循环神经网络 使用循环神经网络的语言模型 困惑度(perplexity) 梯 ...
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
循环神经网络(RNN, Recurrent Neural Networks)介绍 循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural ...
- 使用循环神经网络(RNN)实现影评情感分类
最近由于做论文的补充实验,需要在rnn上做一下算法验证.找了一下这个博客写的挺好的,但是也有一些bug,暂时先记录一下. 使用循环神经网络(RNN)实现影评情感分类 作为对循环神经网络的实践,我用循环 ...
- 【从线性回归到 卷积神经网络CNN 循环神经网络RNN Pytorch 学习笔记 目录整合 源码解读 B站刘二大人 绪论(0/10)】
深度学习 Pytorch 学习笔记 目录整合 数学推导与源码详解 B站刘二大人 目录传送门: 线性模型 Linear-Model 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人( ...
- 深度学习 -- TensorFlow(9)循环神经网络RNN
目录 一.循环神经网络RNN介绍 二.Elman network && Jordan network 三.RNN的多种架构 1.一对一 2.多对一 3.多对多 4. 一对多 5.Seq ...
最新文章
- 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎...
- 使用MFC进行编程,绘制直线椭圆以及样条曲线
- 都是基于.NET平台,WPF能取代Winform吗?
- 意外地调用了方法或属性访问
- Linux Shell脚本_关闭防火墙
- 如果王思聪是产品经理
- java8 内部类_Java8基础知识(五)内部类
- Apache HTTP Server Version 安装简要记录
- 早上起床后喝的第一杯水最好选择白开水
- vue中指令的编译过程
- python生成复合饼图
- 【太经典】如果有人问你数据库的原理,叫他看这篇文章
- 重装系统后有线网上不了网,校园网无法自动获取
- 处理打拼音时触发input事件bug
- 组战队,赢iPhone啦!
- Unity_移动平台触控拖动摄像机
- 一个查询错误:A query was run and no Result Maps were found for the Mapped Statement ‘com.kuang.dao.BookMap
- 光场相机模拟程序解读
- 不同分布所表示的物理含义
- 139邮箱发送邮件(python web自动化)
热门文章
- 国际顶级学术会议SIGIR 2020开幕在即,重量级嘉宾带你窥探信息检索前沿
- 如何破除“唯论文”?详解伯克利“科研重工业模式”的成功经验
- 目标检测 - Tensorflow Object Detection API
- DeepMind发69页长文掀开AlphaZero的黑盒:神经网络学到的知识和人类基本相似!
- 感知和行动的贝叶斯模型
- 沈向、洋周明:神经自然语言处理进展综述:建模,学习,推理
- 《庆余年》里范闲背了个诗,把这个GitHub项目带火了
- 为了研究因果关系,原来科学家在这么多方向上都有尝试(附链接)
- 干货 | 基于贝叶斯推断的分类模型 机器学习你会遇到的“坑”
- 研究生被录取后放导师鸽子,学校要上报教育部失信名单取消其推免资格