《深度学习》循环神经网络RNN 结构及原理解析

目录

一、关于RNN

1、传统神经网络存在的问题

2、什么是循环神经网络

3、RNN特点

二、RNN基本结构

1、RNN基本结构

2、推导方式

注意:

3、循环的由来

4、RNN的局限性


一、关于RNN

1、传统神经网络存在的问题

        无法训练出具有顺序的数据,模型搭建时没有考虑数据上下之间的关系。

2、什么是循环神经网络

        RNN(Recurrent Neural Network,循环神经网络)是一种用于处理序列数据的神经网络架构。其在处理序列输入时具有记忆性,可以保留之前输入的信息并继续作为后续输入的一部分进行计算。

        与传统的前馈神经网络不同,RNN能够在处理序列数据时捕捉序列中的时间依赖关系,即当前时刻的输出不仅依赖于当前时刻的输入,还依赖于过去时刻的输入(或称为状态)。

        如下图所示,例如有一句话,“我要去打球”,将其分词成“我”、“要”、“去”、“打球”,第一个词的词向量表示x1,第二个单词的词向量表示为x2,依次表示所有x,然后首先第一个词向量x1传入h1,然后偏置项h0也同步传入,得到一个结果再传入h2,h2再得到传入的x2传入h3.....,继续像上述流程一样,以此保存了所有的信息并得到最终结果。

3、RNN特点

        引入了隐状态h(hidden state)的概念,隐状态h可以对序列形的数据(如文本、语音、股票、时间序列等数据,当前数据内容与前面的数据有关。)提取特征,接着再转换为输出。

二、RNN基本结构

1、RNN基本结构

        RNN的核心是一个循环连接的隐藏层,这个隐藏层在序列的每个时间步都会接收输入并产生输出。每个时间步的隐藏状态不仅取决于当前时间步的输入,还取决于前一个时间步的隐藏状态。这样,RNN能够保持对之前输入的记忆,并在处理后续输入时利用这些记忆。

2、推导方式

        如下图所示,隐状态h相当于一个函数,f为一个激活函数,其有中的参数U、W、b在每一步都是一样的,也就是说每个步骤的参数都是共享的。

        h0乘以一个参数矩阵W加上x1乘以一个参数矩阵U,再加一个偏置b,得到一个结果,将这个结果传入激活函数f,激活函数一般是Relu函数或者Tanh函数,进行特征提取,然后得到的结果再乘以参数矩阵W加上x2乘以参数矩阵U,加上偏置b传入激活函数进行特征提取得到结果,以此类推得到最终结果,此处不一定只达到x4,一段话中可以有很多很多的词,每个词都有其对应的词向量,这些词向量都可以传入这个结构进行训练。

        对于结果y也会乘以一个矩阵V,加上偏置c后传入一个Softmax交叉熵损失函数,一般情况下y1的用处不大,最重要的是最后一个,例如下图的y4,因为y4涵盖了前面所有的词的特征。

        注意:

                RNN结构中输入是x1, x2, .....xn,输出为y1, y2, ...yn,也就是说,输入和输出序列必须要是等长的

3、循环的由来

4、RNN的局限性

        当出现“我的职业是程序员,…,我最擅长的是电脑”。当需要预测最后的词“电脑”。当前的信息建议下一个词可能是一种技能,但是如果我们需要弄清楚是什么技能,需要先前提到的离当前位置很远的“职业是程序员”的上下文。这说明相关信息和当前预测位置之间的间隔就变得相当的大。

        在理论上,RNN绝对可以处理这样的长期依赖问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN则没法太好的学习到这些知识。

        原因:梯度会随着时间的推移不断下降减少,而当梯度值变得非常小时,就不会继续学习。​例如下图的传声筒游戏

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜就多练_0828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值