首先学习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. Jenkins与Gitlab集成

    一.安装jenkinshttps://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/     #清华yum源 yum -y install java-1.8. ...

  2. MapReduce处理气象数据

    老师:MissDu 提交作业 1. 用Python编写WordCount程序并提交任务 程序 WordCount 输入 一个包含大量单词的文本文件 输出 文件中每个单词及其出现次数(频数),并按照单 ...

  3. js时间字符串转为标准时间

    //将字符串转换为时间格式,适用各种浏览器,格式如2016-09-09T17:02:37.227"function GetTimeByTimeStr(dateString) { var ti ...

  4. linux网络配置命令(二)——ip

    ip命令 查看/设置路由.设备.路由策略和渠道信息 格式 ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | addr ...

  5. JS onclick事件获取空间value

    1. HTML onclick = btnAction(this.value) 2. JS btnAction(v){ alert(v) }

  6. 廖雪峰网站:学习python基础知识—循环(四)

    一.循环 1.for names = ['Michal', 'Bob', 'tracy'] for name in names: print(name) sum = 0 for x in [1, 2, ...

  7. SQLServer2012数据库降级至SQLServer2008R2的方法

      一.  背景 因为对方的客户的服务器安装的数据版本2012,公司开发同事需要客户数据库的备份数据,但是公司数据版本是2008R2的,无法还原. 由于2012备份无法直接还原至2008R2(MSSQ ...

  8. 【其他】【PL/SQL Developer】【1】解决PL/SQL Developer过期的情况

    正文: 1,开始菜单,搜索regedit,回车打开(即日常搜索电脑安装的软件的地方,regedit就是注册表) 2,按HKEY_CURRENT_USER\Software\Allround Autom ...

  9. NOIP2012国王游戏(60分题解)

    题目描述 恰逢 H国国庆,国王邀请n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排成一排,国王站在队伍的最前面 ...

  10. 牛客网 PAT 算法历年真题 1002 :数字分类 (20)

    1002 :数字分类 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定一系列正整数,请按要求对数字 ...