【RNN基础】——一文搞明白RNN

1、一对多(vector-to-sequence )

2、多对一(sequence-to-vector )

3、多对多(Encoder-Decoder )

7、CNN和RNN的异同点

8、RNN中为什么会出现梯度消失?如何解决?

9、如何理解RNN的注意力机制


1、定义

====

循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network) 。

对循环神经网络的研究始于二十世纪80-90年代,并在二十一世纪初发展为深度学习(deep learning)算法之一  ,其中双向循环神经网络(Bidirectional RNN, Bi-RNN)和长短期记忆网络(Long Short-Term Memory networks,LSTM)是常见的循环神经网络  。

2、有了CNN,为什么需要RNN?

=================

在CNN网络中的训练样本的数据为IID数据(独立同分布数据),所解决的问题也是分类问题或者回归问题或者是特征表达问题。但更多的数据是不满足IID的,如语言翻译,自动文本生成。它们是一个序列问题,包括时间序列和空间序列。比如时间序列数据,这类数据是在不同时间点上收集到的数据,反映了某一事物、现象等随时间的变化状态或程度。一般的神经网络,在训练数据足够、算法模型优越的情况下,给定特定的x,就能得到期望y。其一般处理单个的输入,前一个输入和后一个输入完全无关,但实际应用中,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。 这时就要用到RNN网络,RNN的结构图如下所示:

序列样本一般分为:一对多(生成图片描述),多对一(视频解说,文本归类),多对多(语言翻译)。RNN不仅能够处理序列输入,也能够得到序列输出,这里的序列指的是向量的序列。RNN学习来的是一个程序,也可以说是一个状态机,不是一个函数。

3、RNN的主要应用领域有哪些呢?

=====================

RNN的应用领域有很多, 可以说只要考虑时间先后顺序的问题都可以使用RNN来解决.这里主要说一下几个常见的应用领域:

① 自然语言处理(NLP): 主要有视频处理, 文本生成, 语言模型, 图像处理

② 机器翻译, 机器写文章

③ 语音识别

④ 图像描述生成

⑤ 文本相似度计算

⑥ 推荐系统。例如:音乐推荐、网易考拉商品推荐、Youtube视频推荐等新的应用领域。

4、RNN的计算过程

==========

在进一步了解RNN之前,先给出最基本的单层网络结构,输入是x,经过变换Wx+b和激活函数f得到输出y

在实际应用中,我们还会遇到很多序列形的数据,如:

  • 自然语言处理问题。x1可以看做是第一个单词,x2可以看做是第二个单词,依次类推。

  • 语音处理。此时,x1、x2、x3……是每帧的声音信号。

  • 时间序列问题。例如每天的股票价格等等。

其单个序列如下图所示:

前面介绍了诸如此类的序列数据用原始的神经网络难以建模,基于此,RNN引入了隐状态h(hidden state),h​可对序列数据提取特征,接着再转换为输出。

为了便于理解,先计算h_1​:

注:图中的圆圈表示向量,箭头表示对向量做变换。

RNN中,每个步骤使用的参数U,W,b​相同,h_2的计算方式和h_1​类似,其计算结果如下:

计算h_3,h_4​也相似,可得:

接下来,计算RNN的输出y_1,采用Softmax作为激活函数,根据y_n=f(Wx+b),得y_1​:

使用和y_1​相同的参数V,c​,得到y_1,y_2,y_3,y_4​的输出结构:

以上即为最经典的RNN结构,其输入为x_1,x_2,x_3,x_4,输出为y_1,y_2,y_3,y_4,当然实际中最大值为y_n,这里为了便于理解和展示,只计算4个输入和输出。从以上结构可看出,RNN结构的输入和输出等长。

5、标准RNN前向输出流程

=============

以x表示输入,h是隐层单元,o是输出,L为损失函数,y为训练集标签。t表示t时刻的状态,V,U,W是权值,同一类型的连接权值相同。以下图为例进行说明标准RNN的前向传播算法:

对于t时刻:

h{(t)}=\phi(Ux{(t)}+Wh^{(t-1)}+b)

其中\phi())为激活函数,一般会选择tanh函数,b为偏置。

t时刻的输出为:

o{(t)}=Vh{(t)}+c

模型的预测输出为:

\widehat{y}{(t)}=\sigma(o{(t)}))

其中\sigma)​为激活函数,通常RNN用于分类,故这里一般用softmax函数。

6、RNN的建模方式

==========

序列样本一般分为:一对多(生成图片描述),多对一(视频解说,文本归类),多对多(语言翻译),针对不同的序列建模方式也不一样。

1、一对多(vector-to-sequence )


输入是一个单独的值,输出是一个序列。此时,有两种主要建模方式:

方式一:可只在其中的某一个序列进行计算,比如序列第一个进行输入计算,其建模方式如下:

方式二:把输入信息X作为每个阶段的输入,其建模方式如下:

应用场景:

1、从图像生成文字,输入为图像的特征,输出为一段句子 2、根据图像生成语音或音乐,输入为图像特征,输出为一段语音或音乐

2、多对一(sequence-to-vector )


输入是一个序列,输出是一个单独的值,此时通常在最后的一个序列上进行输出变换,其建模如下所示:

应用场景:

1、输出一段文字,判断其所属类别 2、输入一个句子,判断其情感倾向 3、输入一段视频,判断其所属类别

3、多对多(Encoder-Decoder )


建模步骤如下:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 28
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值