首先学习RNN需要一定的基础,即熟悉普通的前馈神经网络,特别是BP神经网络,最好能够手推。

所谓前馈,并不是说信号不能反向传递,而是网络在拓扑结构上不存在回路和环路。

而RNN最大的不同就是存在环路。

为什么需要RNN

1. 特征之间序列性

普通的神经网络的输入,具备样本独立同分布(iid), 特征也是独立的,多数也是同分布的,特征之间谁先谁后无所谓,

而现实中描述一件事情,往往是逻辑性的,有先后顺序的,

比如理解一个句子,只看句子中的词是无法理解整个句子的,再如猜猜下一个字,看到 “天空很”,下面肯定是 “蓝”,

此时普通的神经网络就无能为力了。

2.特征的不确定性

普通的神经网络,每个样本的特征个数必须相同,

而现实中有很多是不同的,比如将一个句子进行分类,看看是消极的还是积极的,每个句子长度肯定不同,此时普通的神经网络也无能为力。

于是,专门处理序列数据的RNN就诞生了。

RNN的结构

首先看一个简单的RNN

x是输入,s o是对应层的输出,u v 是对应层的权重,还有w

可以看到,唯一不同的就是隐藏层多了一个环路。

环路代表s的值不仅取决于x,而且取决于上次隐藏层的输出,即上个s,而w就是这条传播线路上的权重矩阵。

把上图按时间顺序展开

xt是特征,t代表序列(可以理解为时间),t=1,2...n,代表了一个样本

此图可以清晰的看到RNN处理数据的流程,特点就是每个时刻隐藏层的输出s不仅取决于输入x,而且取决于上一时刻的输出,这使得RNN具有记忆功能

由图可以得到如下公式

Ot=g(V*St)

St=f(U*Xt+W*St-1)

将上图扩展为多个神经元

这张图就是比较完整的RNN网络结构

RNN实例图,更容易理解

1. 预测下个单词

2. 预测下个字母

把图扩展为多层- Deep RNN

总结

学习过CNN的朋友可能觉得RNN很容易,其实不然,这里只是入门,RNN 具有很多衍生网络及网络特性

CNN我就不写了,CNN有什么问题可以在此处探讨。

在实际场景中,CNN多用于图像识别,RNN多用于自然语言、语音和视频识别,当然图像其实也是序列性的,空间连续。

循环神经网络-RNN入门的更多相关文章

  1. 循环神经网络(RNN, Recurrent Neural Networks)介绍(转载)

    循环神经网络(RNN, Recurrent Neural Networks)介绍    这篇文章很多内容是参考:http://www.wildml.com/2015/09/recurrent-neur ...

  2. 通过keras例子理解LSTM 循环神经网络(RNN)

    博文的翻译和实践: Understanding Stateful LSTM Recurrent Neural Networks in Python with Keras 正文 一个强大而流行的循环神经 ...

  3. 循环神经网络RNN及LSTM

    一.循环神经网络RNN RNN综述 https://juejin.im/entry/5b97e36cf265da0aa81be239 RNN中为什么要采用tanh而不是ReLu作为激活函数?  htt ...

  4. 深度学习之循环神经网络RNN概述,双向LSTM实现字符识别

    深度学习之循环神经网络RNN概述,双向LSTM实现字符识别 2. RNN概述 Recurrent Neural Network - 循环神经网络,最早出现在20世纪80年代,主要是用于时序数据的预测和 ...

  5. 循环神经网络RNN模型和长短时记忆系统LSTM

    传统DNN或者CNN无法对时间序列上的变化进行建模,即当前的预测只跟当前的输入样本相关,无法建立在时间或者先后顺序上出现在当前样本之前或者之后的样本之间的联系.实际的很多场景中,样本出现的时间顺序非常 ...

  6. 从网络架构方面简析循环神经网络RNN

    一.前言 1.1 诞生原因 在普通的前馈神经网络(如多层感知机MLP,卷积神经网络CNN)中,每次的输入都是独立的,即网络的输出依赖且仅依赖于当前输入,与过去一段时间内网络的输出无关.但是在现实生活中 ...

  7. 循环神经网络(RNN, Recurrent Neural Networks)介绍

    原文地址: http://blog.csdn.net/heyongluoyao8/article/details/48636251# 循环神经网络(RNN, Recurrent Neural Netw ...

  8. 用纯Python实现循环神经网络RNN向前传播过程(吴恩达DeepLearning.ai作业)

    Google TensorFlow程序员点赞的文章!   前言 目录: - 向量表示以及它的维度 - rnn cell - rnn 向前传播 重点关注: - 如何把数据向量化的,它们的维度是怎么来的 ...

  9. 循环神经网络-RNN进阶

    这部分许多内容要类比CNN来进行理解和解释,所以需要对CNN比较熟悉. RNN的特点 1. 权值共享 CNN权值共享,RNN也有权值共享,在入门篇可以看到RNN结构图中,权重使用的是同样的字母 为什么 ...

随机推荐

  1. 老老实实学WCF

    老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...

  2. [LintCode] Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)

    描述 设计一个算法,并编写代码来序列化和反序列化二叉树.将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”. 如何反序列化或序列化二叉树是没有限制的,你只需要确保可以将二叉 ...

  3. 微信小程序 swiper 显示图片计数 当前/总数

    <view class="swiperContainer"> <swiper bindchange="swiperChange" autopl ...

  4. linux中用户和用户组

    一.用户和组原理 一个用户可以属于多个组,一个组有多个用户 在Linux中操作系统必须依赖组和用户进行管理 二.与用户和组相关的配置文件 1.组相关配置文件 1)/etc/group :管理用户组信息 ...

  5. Luffy之前端项目部署搭建

    1. 搭建前端项目 1.1 创建项目目录 cd 项目目录 vue init webpack lufei 根据需要在生成项目时,我们选择对应的选项, 效果: 根据上面的提示,我们已经把vue项目构建好了 ...

  6. Spring Framework启动详解

    之前一直对Spring启动的过程很迷糊,所以这次国庆梳理一下. Spring启动一言以蔽之:创建一个根应用上下文.(因为其他的所有的应用上下文都可以通过各种方式继承它) (一)了解应用上下文 Spri ...

  7. Oracle11g温习-第十九章:审计(audit)

    2013年4月27日 星期六 10:52 1.审计的功能:监控用户在database 的 action (操作) 2.审计分类 1) session :在同一个session,相同的语句只产生一个审计 ...

  8. sku 加减号的增删

    ---恢复内容开始--- //php页面public function test(){ $id="1"; $data=Db::table('week3_goods') ->j ...

  9. C# 3.0 / C# 3.5 自动属性

    自动属性的好处 自动属性简化了我们在做 C# 开发的时候手写一堆私有成员 + 属性的编程方式,我们只需要使用如下方式声明一个属性,编译器就会自动生成所需的成员变量. 传统属性概念 属性的目的一是封装字 ...

  10. Utils--前台调用后台接口工具类

    Utils--前台调用后台接口工具类 package com.taotao.manage.httpclient; import java.io.IOException; import java.net ...