Keras学习:05.RNN和双向RNN讲解及实践

本文介绍了循环神经网络(RNN)、双向RNN(BRNN)和深层RNN(DRNN)的概念、原理及Keras中的实现。RNN用于处理序列数据,通过记忆单元保留信息。BRNN考虑前后文信息,DRNN增加网络深度以保存更多信息。Keras提供SimpleRNN、LSTM、GRU等RNN层,并支持双向RNN包装器Bidirectional。通过Keras搭建RNN模型进行情感分析实践,展示了模型的搭建、训练和早停策略,验证了模型在不同结构下的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

通过对前面文章的学习,对深度神经网络(DNN)和卷积神经网络(CNN)有了一定的了解,也感受到了这些神经网络在各方面的应用都有不错的效果。然而这些网络都有一个共同的特点:每一层的神经元之间是相互独立的,如输入层的神经元彼此之间是独立的。然而,现实世界中很多元素之间都是有相互联系的。比如一部连续剧的内容,上一集和这一集的内容会有一定的联系;同样的,一句话,如“天空很蓝”,我们通过“天空”和“很”会认为接下来的词为“蓝”的概率会较高。正如这种时序数据问题,使用之前所学的模型(除了text-CNN)可能很难做到准确的推断,因此我们引入今天所讲的循环神经网络(recurrent neural network),其主要的用处就是处理和预测序列数据

一、RNN网络结构及原理讲解

RNN的网络结构如下图:

图中左侧是未展开RNN模型,在模型中间有个大圆圈表示循环,正是这个循环允许信息的持久化。但这个看起来可能不太好理解,因此将其展开为右侧的模型,并做进一步详细介绍如何实现信息的持久化。

右图中圆圈可以看作一个单元。定义Xi为第i时刻的输入,hi为第i时刻的记忆,yi为第i时刻的输出。

举个例子说明RNN实现过程:假设有一个句子的输入是”今天天空很”,要预测下个词是什么。通过分词后可能得到三个词作为输入:“今天”,“天空”,“很”,对应的就是上图的Xi-1,Xi,Xi+1,那么输出yi-1应该是“天空”,yi应该是“很”,预测下个词yi+1是什么,根据这句话,“蓝”的概率比较大。因此预测下个词应该是“蓝”。

通过上述浅显易懂的例子读者应该对RNN实现过程有个大概的了解,接下来将具体讲解RNN实现的详细过程。

输入层到隐藏层

从上图的箭头指示,读者或许发现第i时刻的输出是由上一时刻的记忆和当前时刻共同决定的。这个思想很符合对时序数据处理的思路。正如我们在看连续剧的时候如果直接看中间某一集,可能会对部分剧情不能理解,但是,当我们看过前几集后会对剧情有所记忆,再加上该集剧情内容,我们就能更好的理解接下来剧情内容。因此用公式表示RNN当前时刻的记忆为:

 

其中f()函数为激活函数。在此处要加上激活函数也很好理解,因为得到的信息并不是所有的都是重要的信息,而我们只需要记住重要的信息即可。这个时候就可以使用激活函数,如tanh,去对一些不重要的信息进行过滤,保留重要的信息即可。

隐藏层到输出层

同样使用电视剧的例子进行通俗解释,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值