标签:11 输出 RNN2 RNN sigmoid 神经网络 LSTM 输入
循环神经网络RNN
-
循环神经网络的介绍
为什么有了神经网络还需要有循环神经网络?
在普通的神经网络中,信息的传递是单向的,这种限制虽然是的网络变得更容易学习,但在一定程度上也减弱了神经网络模型的能力,特别是在很多限时任务重,网络的输出不仅和当前时刻的输入相关,也和过去一段时间的输出相关,此外,普通网络难以处理时序数据,比如视频、语音、文本等,时序数据的长度一般是不固定的,而前馈神经网络要求输入和输出的位数都是固定的,不能任意改变。因此,当处理这一类和时许相关的问题时,就需要一种能力更强的模型。
循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络,再循环神经网络中,神经元不但可以接受其他神经元的信息,也可以接受自身的信息,形成具有环路的网络结构,换句话说:神经元的输出可以再下一个时间步直接作用到自身(作为输入)
通过简化图,我们看到RNN比传统的神经网络多了一个循环圈,这个循环表示的就是在下一个时间步(Time Step)上会返回作为输入的一部分,我们把RNN在时间点上展开,得到的图形如下:
时间步:不同时刻(把输入展开,每个输入是一个不同时间步上的)
循环:下一个时间步上,输入不仅有当前时间步的输入,还有上一个时间步的输出
RNN:具有短期记忆的网络结果,把之前的输出作为下一个时间步的输入
在不同的时间步,RNN的输入都将与之前的时间状态有关,t_n时刻网络的输出结果是该时刻的输入和所有历史共同作用的结果,这就达到了对时间序列建模的目的 -
RNN的类型
RNN的不同表示和功能可以通过下图看出:
图1:固定长度的输入和输出(比如:图像分类)
图2:序列输出(比如:图像转文字)
图3:数列输入(比如:文本分类)
图4:异步的序列输入和输出(比如:文本翻译)
图5:同步的序列输入和输出(比如:根据视频的每一帧来对视频进行分类) -
LSTM
(1)LSTM的基础介绍
假如现在有这样一个需求,根据现有文本预测下一个词语,比如:天上的云朵漂浮在__,通过间隔不远的位置就可以预测出来词语是天上,但是对于其它一些句子,可能需要被预测的词语在前100个词语之前,那么此时由于间隔非常大,随着间隔的增加可能会导致真实的预测值对结果的影响变得非常小,而无法非常好的进行预测(RNN中的长期以来问题(Long-Term Dependencies))
那么为了解决这个问题需要LSTM(Long Short-Term Memory网络)
LSTM是一种特殊的RNN类型,可以学习长期依赖信息。
一个LSTM的单元就是下图中的一个绿色方框中的内容:
(2)LSTM的核心LSTM的核心在于单元(细胞)中的状态,也就是上图中最上面的那根线。
但是如果只有上面那一根线,那么没有办法实现信息的增加或者删除,所以在LSTM是通过一个叫做门的结构实现,们可以选择让信息通过或者不通过这个门主要是通过sigmoid和点乘(pointwise multiplication)实现的
sigmoid的取值范围是在(0,1)之间,如果接近0表示不让任何信息通过,如果接近1表示所有的信息都会通过(3)逐步理解LSTM
1)遗忘门
遗忘门通过sigmoid函数来决定哪些信息会被遗忘
在下图就是h_t-1和x_t进行合并(concat)之后呈上权重和偏置,通过sigmoid函数,输出0-1之间的下一个值,这个值会和前一次的细胞状态(C_t-1)进行点乘,从而决定遗忘或者保留
2)输入门下一步就是决定那些新的信息会被保留,这个过程有两步:
a.一个被称为输入门的sigmoid层决定哪些信息会被更新
b.tanh会创造一个新的候选向量C ̅_t,后序可能会被添加到细胞状态中c.sigmoid:决定输入多少比例信息
d.tanh:决定输入什么信息
现在就可以更新旧的细胞状态C_t-1为新的C_t了更新的构成很简单就是:
a.旧的细胞状态和遗忘门的结果相乘
b.然后加上输入门和tanh相乘的结果
3)输出门最后,我们需要决定什么信息会被输出,也是一样,这个输出经过变换之后会通过sigmoid函数的结果来决定哪些细胞状态会被输出
步骤如下:a.前一次的输出和当前时间步的输入的组合结果通过sigmiod函数进行处理得到O_t
b.更新后的细胞状态C_t会经过tanh层的处理,把数据转化到(-1,1)的区间
c.tanh处理后的结果和O_t进行相乘,把结果输出同时传到下一个LSTM的单元 -
GRU
GRU(Gated Recurrent Unit),是一种LSTM的变形版本,他将遗忘和输入门组合成一个“更新门”。他还合并了单元状态和隐藏状态,并进行一些其他更改,由于他的模型比标准LSTM模型简单,所以越来越受欢迎
a.两个门:更新门和输出门
b.输入输出:i. 两个输出:hidden_state_t,hidden_state_t ii. 两个输入:x_t,hidden_state_t-1
-
双向LSTM
单向的RNN,是根据前面的信息推出后面的,但有时候只看前面是不够的,可能需要预测的词语和后面的内容也相关,那么此时需要一种机制,能过够让模型不仅能够从前往后的具有记忆,还需要从后往前具有记忆,此时双向LSTM就可以帮助我们解决这个问题。
由于是双向LSTM,所以每个方向的LSTM都会有一个输出,最终的输出会有两部分,所以往往需要concat的操作
标签:11,输出,RNN2,RNN,sigmoid,神经网络,LSTM,输入 来源: https://blog.csdn.net/Dajian1040556534/article/details/120216575
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。