【Pytorch神经网络理论篇】 18 循环神经网络结构:LSTM结构+双向RNN结构
1 深层循环神经网络的构建
在深层网络结构中,会将简单的RNN模型从两个角度进行改造,具体如下。
- 使用更复杂的结构作为RNN模型的基本单元,使其在单层网络上提取更好的记忆特征。
- 将多个基本单元结合起来,组成不同的结构(多层RNN、双向RNN等)。有时还会配合全连接网络、卷积网络等多种模型结构,一起组成拟合能力更强的网络模型。其中,RNN模型的基本单元称为Cell,它是整个RNN的基础。
2 常见的cell结构:LSTM
长短记忆(Long Short Term Memory,LSTM)单元是一种使用了类似搭桥术结构的RNN单元。它可以学习长期序列信息,是RNN网络中最常使用的Cell之一。
2.1 了解LSTM结构
2.1.1 循环神经网络(RNNs)
通过不断将信息循环操作,保证信息持续存在,从而解决不能结合经验来理解当前问题的问题。
从图中可看出A允许将信息不断的在内部循环,这可以使其保证每一步的计算都能保存以前的信息。
2.1.1 循环神经网络(RNNs)在长序列上的弊端
把RNNs自循环结构展开,可以看成是同一个网络复制多次并连成一条线,把自身信息传递给下一时刻的自己。
这种链式的结构揭示了RNNs与序列和列表类型的数据密切相关。好像他们生来就是为了处理序列类型数据的。
但是在处理长依赖问题时,RNNs虽然在理论上可行,但实践发现RNNs无法实现。
2.1.3 循环神经网络中cell的LSTM结构
RNNs中有一个特殊的网络结构,叫LSTMs,全称为Long Short Term Memory networks,可翻译为长短时记忆神经网络,这个网络的设计初衷就是为了解决长依赖问题。
所有循环神经网络都具有神经网络的重复模块链的形式。
LSTMs的结构如下:
它内部有四个网络层,这不同于标准RNN网络里只有一个网络层的单元。
- Neural Network Layer:激活函数操作
- Pointwise Operation:点操作
- Vector Transfer:数据流向
- Concatenate:表示向量的合并(concat)操作
- Copy:向量的拷贝
LSTMs核心是细胞状态,用贯穿细胞的水平线表示。细胞状态像传送带一样,它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个RNNs,细胞状态如下图所示:
2.3 LSTM结构的门结构
LSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息。
门能够有选择性的决定让哪些信息通过。门的结构为一个sigmoid层和一个点乘操作的组合:
2.3.1 忘记门
忘记门决定模型会从细胞状态中丢弃什么信息。忘记门会读取前一序列模型的输出,和当前模型的输入,来控制细胞状态中的每个数字是否保留。
例如,在一个语言模型的例子中,假设细胞状态会包会当前主语的性别,于是根据这个状便可以选择正确的代词。当我们看到新的主语时,应该把新的主语在记忆中更新。忘记]的功能就是先去记忆中找到以前的那个旧的主语,并没有真正执行忘掉操作,只是找到而己。
在图中,代表忘记门的输出结果,σ代表激活函数,代表忘记门的权重,代表当前模型的输入,代表前一个序列模型的输出,代表忘记门的偏置。
2.3.2 输入门
输入门其实可以分成两部分功能,一部分是找到那些需要更新的细胞状态,另一部分是把需要更新的信息更新到细胞状态里。
1、在下图1中,代表要更新的细胞状态,σ代表激活函数,代表当前模型的输入,代表前一个序列模型的输出,所代表计算的权重,代表计算it的偏置,代表使用tanh所创建的新细胞状态,代表计算的权重,代表计算的偏置。
忘记门找到了需要忘掉的信息ft后,再将它与旧状态相乘,丢弃确定需要丢弃的信息。然后将结果加上×使细胞状态获得新的信息。这样就完成了细胞状态的更新,如图所示。
2、输入门更新在下图中,代表更新后的细胞状态,代表忘记门的输出结果,代表前一个序列模型的细胞状态,代表要更新的细胞状态,代表使用tanh所创建的新细胞状态。
2.3.4 输出门
如图7-34所示,在输出中,通过一个激活函数层(实际使用的是Sigmoid激活函数)来确定哪个部分的信息将输出,接着把细胞状态通过tah进行处理(得到一个在-1~1的值),并将它和Sigmoid门的输出相乘,得出最终想要输出的那个部分,例如,在语言模型中,假设已经输入了一个代词,便会计算出需要输出一个与该代词相关的信息。
如图上,输出门在图7-34中,代表要输出的信息,σ代表激活函数,代表计算的权重,代表计算的偏置,代表更新后的细胞状态,代表当前序列模型的输出结果。
2.3 门控循环单元(GRU)
门控循环单元(Gated Recurrent Unit,GRU)是与LSTM功能几乎一样的另一个常用的网络结构,它将忘记门和输入门合成了一个单一的更新门,同时又将细胞状态和隐藏状态进行混合,以及一些其他的改动。最终的模型比标准的LSTM模型要简单。
当然,基于LSTM的变体不止GRU一个,经过测试发现,这些搭桥术类的Cell在性能和准确度上几乎没有什么差别,只是在具体的某些业务上会有略微不同。
由于GRU比LSTM少一个状态输出,但效果几乎与LSTM一样,因此在编码时使用GRU可以让代码更为简单一些。
2.4 只有忘记门的LSTM(JANET)单元
JANET(Just Another NETwork)单元也是LSTM单元的个变种,发布于2018年,实验表明,只有忘记门的网络的性能居然优于标准LSTM单元。同样,该优化方式他以被用在GRU中。
3 独立循环单元
独立循环单元是一种新的循环神经网络单元结构,其效果和速度均优于LSTM单元
IndRNN单元不但可以有效解决传统RNN模型存在的梯度消失和梯度“爆炸”问题,而且能够更好地学习样本中的长期依赖关系。
在搭建模型时:
- 可以用堆叠、残差、全连接的方式使用IndRNN单元,搭建更深的网络结构:
- 将IndRNN单元配合RLU等非饱和激活函数一起使用,会使模型表现出更好的鲁棒性。
3.1 原始的RNN模型结构
3.2 indRNN单元的结构
4 双向RNN结构
双向RNN又称Bi-RNN,是采用了两个方向的RNN模型。
RNN模型擅长的是对连续数据的处理,既然是连续的数据,那么模型不但可以学习它的正向特征,而且可以学习它的反向特征。这种将正向和反向结合的结构,会比单向的循环网络更高的拟合度。例如,预测一个语句中缺失的词语,则需要根据上下文来进行预测。
双向RNN的处理过程就是在正向传播的基础上再进行一次反向传播。正向传播和反向传播都连接着一个输出层。这个结构提供给输出层输入序列中每二个点的完整的过去和未来的上下文信息。图所示是一个沿着时间展开的双向循环神经网络。
双向RNN会比单向RNN多一个隐藏层,6个独特的权值在每一个时步被重复利用,6个权值分别对应:输入到向前和向后隐含层,隐含层到隐含层自身,向前和向后隐含层到输出层。
双向RNN在神经网络里的时序如图7-37所示。
在按照时间序列正向运算之后,网络又从时间的最后一项反向地运算一遍,即把时刻的输入与默认值0一起生戒反向的0u3,把反向ou3当成2时刻的输入与原来的时刻输人一起生成反向Qu2,依此类推,直到第一个时序数据
双向循环神经网络有两个输出:一个是正向输出,另一个是反向输出。最终会把输出结果通过concat并联在一起,然后交给后面的层来处理。
假设单向的循环神经网络输出的形状为[seq,batch,nhidden],则双向循环神经网络输出的形状就会交成[seq,batch,nhidden×2]
在大多数应用中,基于时间序列与上下文有关的类似NLP中自动回答类的问题,一般使用双向LSTM配合LSTM或RNN横向扩展来实现,效果非常好。
【Pytorch神经网络理论篇】 18 循环神经网络结构:LSTM结构+双向RNN结构相关推荐
- 【Pytorch神经网络理论篇】 09 神经网络模块中的损失函数
1 训练模型的步骤与方法 将样本书记输入到模型中计算出正向的结果 计算模型结果与样本目标数值之间的差值(也称为损失值loss) 根据损失值,使用链式反向求导的方法,依次计算出模型中每个参数/权重的梯度 ...
- 【Pytorch神经网络理论篇】 17 循环神经网络结构:概述+BP算法+BPTT算法
1 循环神经网络结构概述 循环神经网络(Recurrent Neural Network,RNN)是一个具有记忆功能的网络模型.它可以发现样本彼此之间的相互关系.它多用于处理带有序列特征的样本数据. ...
- 【Pytorch神经网络理论篇】 19 循环神经网络训练语言模型:语言模型概述+NLP多项式概述
1 语言模型 循环神经网络模型可以对序列片段进行学习,找到样本间的顺序特征.这个特性非常适合运用在语言处理方向. 1.1 语言模型简介 语言模型包括文法语言模型和统计语言模型,一般指统计语言模型. 1 ...
- 【Pytorch神经网络理论篇】 20 神经网络中的注意力机制
注意力机制可以使神经网络忽略不重要的特征向量,而重点计算有用的特征向量.在抛去无用特征对拟合结果于扰的同时,又提升了运算速度. 1 注意力机制 所谓Attention机制,便是聚焦于局部信息的机制,比 ...
- 【Pytorch神经网络理论篇】 32 PNASNet模型:深层可分离卷积+组卷积+空洞卷积
1 PNASNet模型简介 PNASNet模型是Google公司的AutoML架构自动搜索所产生的模型,它使用渐进式网络架构搜索技术,并通过迭代自学习的方式,来寻找最优网络结构.即用机器来设计机器学习 ...
- 【Pytorch神经网络理论篇】 13 深层卷积神经网络介绍+池化操作+深层卷积神经网络实战
1 深层卷积神经网络概述 1.1 深层卷积神经网络模型结构图 1.1.1 深层卷积神经网络的正向结构构成剖析 输入层,将每个像素作为一个特征节点输入网络. 卷积层:由多个滤波器组合而成. 池化层:将卷 ...
- 【Pytorch神经网络理论篇】 06 神经元+神经网络模型+全连接网络模型
1 神经元 1.1 概述 1.1.1 神经网络 神经网络:一种人工模仿动物中枢系统的数学模型,用于对函数进行近似估计 1.1.2 神经元 神经网络的基本单位是神经元. 神经元是一种处理单元,是对人脑组 ...
- 【Pytorch神经网络理论篇】 27 图神经网络DGL库:简介+安装+卸载+数据集+PYG库+NetWorkx库
DGL库是由纽约大学和亚马逊联手推出的图神经网络框架,支持对异构图的处理,开源相关异构图神经网络的代码,在GCMC.RGCN等业内知名的模型实现上也取得了很好的效果. 1 DGL库 1.1 DGL库的 ...
- 【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型
1 ResNet模型 在深度学习领域中,模型越深意味着拟合能力越强,出现过拟合问题是正常的,训练误差越来越大却是不正常的. 1.1 训练误差越来越大的原因 在反向传播中,每一层的梯度都是在上一层的基础 ...
最新文章
- 服务器宽带性能如何?----internet性能测试站点汇集
- mysql min函数 结果全为null_MySQL ----- 聚集函数(AVG,SUM,COUNT,MIN,MAX) (十一)
- Person Re-Identification by Multi-Channel Parts-Based CNN with Improved Triplet Loss Function
- Harbor API整理:获取项目下的所有镜像
- 在共享dll中使用mfc_在SpringBoot中使用Spring Session解决分布式会话共享问题
- wxpython图形_wxPython(Python的GUI图形库)v3.0.2.0免费版-独木成林
- 论文浅尝 | 通过文本到文本神经问题生成的机器理解
- 目标检测: Anchor-Free 时代
- Java实训项目6:GUI学生信息管理系统 - 实现步骤 - 创建项目
- 吴恩达机器学习作业Python实现(六):SVM支持向量机
- git stash 和还原某个文件版本
- java虚拟机:虚拟机栈
- 模电设计学习笔记(一)跟随器
- 引用 USB启动盘,将DOS工具集成到WinPE的grub - Windows
- Brat中文标注工具的使用
- 抖音3d相册html代码,抖音3D立体相册表白代码.doc
- HA RabbitMQ on K8s helm部署实战
- 如何安装Tomcat
- 欧暇·地中海酒店深圳再布局 深圳国际会展中心和平店进入试营业
- 2018最牛java初级笔试面试题,offer拿到手软