首页 > 编程知识 正文

双向循环神经网络,手动实现循环神经网络

时间:2023-05-06 16:44:17 阅读:245186 作者:3725

一、循环神经网络(Recurrent neural network,RNN )

循环神经网络的来源是为了刻画一个序列当前的输出与之前信息的关系。从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面结点的输出。即:循环神经网络的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出。

循环神经网络对于每一个时刻的输入结合当前模型的状态给出一个输出。循环神经网络可以看做同一神经网络被无限复制的结果,出于优化考虑,现实生活中无法做到真正的无限循环。


循环神经网络中的参数在不同时刻是共享的。

为了将当前时刻的状态转换成最终的输出,循环神经网络需要另一个全连接神经网络完成此过程。不同时刻用于输出的全连接神经网络中的参数也是一致的

循环神经网络的总损失:所有时刻(或部分时刻)上损失函数的总和。

循环神经网络可以更好地利用传统神经网络结构所不能建模的信息,但同时,带来更大的技术挑战——长期依赖(long-term dependencies)问题

二、长短时记忆网络(Long Short Term Memory,LSTM)

解决长期依赖、有用信息的间隔有大有小、长短不一的问题。

LSTM是一种拥有三个“门”结构的特殊网络结构。

LSTM靠一些“门”的结构让信息有选择性地影响神经网络中每个时刻的状态。“门”结构就是一个使用sigmoid神经网络和一个按位做乘法结合在一起的操作。

叫做“门”是因为使用sigmoid作为激活函数的全连接神经网络层会输出一个0到1之间的数值描述当前输入有多少信息量可以通过这个结构。这个结构的功能类似一扇门,当门打开时(sigmoid神经网络层输出为1),全部信息都可以通过;当门关上时(sigmoid神经网络层输出为0),任何信息无法通过


“遗忘门”和“输入门”至关重要。通过**”遗忘门“和”输入门“,LSTM结构可以更加有效的决定哪些信息应该被遗忘,哪些信息应该被保留**。

遗忘门的作用:让循环神经网络”忘记“之前没有用的信息。遗忘门会根据当前的输入Xt、上一时刻状态Ct-1、上一时刻的输出Ht-1共同决定哪一部分记忆需要被遗忘。

输入门:在循环神经网络"忘记"了部分之前的状态后,它还需要从当前的输入补充最新的记忆,这个过程需要”输入门“完成。输入门会根据Xt、Ct-1、Ht-1决定哪些部分将进入当前时刻的状态Ct。

输出门:LSTM结构在计算得到新的状态Ct后需要产生当前时刻的输出,这个过程是由”输出门“完成。输出门根据最新的状态Ct、上一时刻的输出Ht-1和当前的输入Xt来决定该时刻的输出Ht。

三、双向循环神经网络(Bidirectional RNN):

在经典的循环神经网络中,状态的传输时从前往后单向传的,然而有些问题中,当前时刻的输出不仅和之前的状态有关,也与之后的状态有关,这就需要使用双向循环神经网络(Bidirectional RNN)解决此问题。

双向循环神经网络是由两个单向循环神经网络上下叠加在一起组成的,输出由这两个循环神经网络的状态共同决定

在每一个时刻t,输入会同时提供给这两个方向相反的循环神经网络,而输出则是由两个单向循环神经网络共同决定。

四、深层循环神经网络(deepRNN)

为了增强模型的表达能力,可以将每一时刻上的循环体重复多次。深层循环神经网络在每一时刻上将循环体结构复制了多次。每一层循环体中参数是一致的,而不同层中的参数可以不同


五、循环神经网络的Dropout:

通过dropout可以让卷积神经网络更加健壮。类似,再循环神经网络中使用dropout也有同样的功能。

如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。Dropout可以有效的缓解过拟合的发生,在一定程度上达到正则化的效果。

Dropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少隐层结点间的相互作用隐层节点相互作用是指某些隐层结点依赖其他隐层结点才能发挥作用

Dropout通俗讲,即:在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征,

类似卷积神经网络只在全连接层中使用dropout,循环神经网络一般只在不同层循环体结构之间使用dropout不在同一层循环结构之间使用。即:从时刻t-1传递到时刻t,循环神经网络不会进行状态的dropout;而在同一时刻t中,不同层循环体之间会使用dropout

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。