循环神经网络RNN入门

一.什么是RNN?
RNN(Recurrent Neural Network),循环神经网络。网络的输出不仅和当前时刻的输入相关,也和其过去一段时间的输出相关,即需要处理整个序列。RNN就是一种用于处理序列数据的神经网络。

二.应用举例
(1) 判断一个句子的情感倾向,积极用‘+’表示,消极用‘-’表示:

句子的前后有关联,是序列数据,适合用RNN处理。

(2) 给定一张图片,给出相应的图片描述:

(3) 机器翻译:

三. 和CNN(卷积神经网络)的区别
·普通卷积神经网络(CNN)处理的是“静态”数据,样本数据之间相互独立,没有关系。
·循环神经网络(RNN)处理的数据是“序列化”数据。 训练的样本前后是有关联的,即一个序列的当前的输出与前面的输出也有关。比如语音识别,一段语音是有时间序列的,说的话前后是有关系的。

要实现输出的关联,就要用到RNN的特殊结构了。


四. RNN的结构


公式中,g和f都是激活函数。关于激活函数,大家可以移步参考这篇总结的很好的博客
参数说明:
·x:输入层的输入,这里没有用圆圈表示。
·o:一个向量,输出层的值。
·s:隐藏层状态,即隐藏层的值。

每次循环都不变的参数:
·V:隐藏层到输出层的权重矩阵。
·U:输入层到隐藏层的权重矩阵。
·W:隐藏层到隐藏层的权重矩阵。

特点:
隐藏层之间的结点相连接,某时刻的隐藏层状态取决于当前输入和上一时刻的隐藏层状态。

根据输入和输出的个数,RNN可以分为很多种结构:
(1) N VS N结构:

应用举例:计算视频中每一帧的分类标签。(h0一般初始化为0)

(2) N VS 1结构:

应用举例:输入一个句子判断其情感倾向,输入一段视频并判断它的类别。
顺便简要介绍一下图中出现的softmax激活函数:
softmax函数或称指数化归一函数,把一些输入映射为0-1之间的实数,并且归一化保证和为1,常用于隐藏层到输出层。
举一个例子:

输出的向量本应是[3,1,-3],经过softmax函数处理就变成了[0.88,0.12,0]。
事实上,softmax激活函数的功能远远不止归一化和处理负值这么简单。更深入的介绍还有待日后的学习。

(3) 1 VS N结构:


应用举例:从图像生成文字,从类别生成语音或音乐。

(4) N vs M 模型:
·用到两个RNN ,又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。

c:上下文向量(context vector),连通两个RNN。另一个RNN 网络对c进行解码,具体做法就是将c当做之前的初始状态h0输入到Decoder中:

还有一种做法:

应用举例:机器翻译、文本摘要、语音识别(信号->文字)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值