HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    循环神经网络应用举例(循环神经网络应用举例分析)

    发布时间:2023-04-08 06:47:03     稿源: 创意岭    阅读: 53        

    大家好!今天让创意岭的小编来大家介绍下关于循环神经网络应用举例的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    循环神经网络应用举例(循环神经网络应用举例分析)

    一、循环神经网络(RNN)简介

    循环神经网络英文名称为 ( Recurrent Neural Network, RNN ),其通过使用带自反馈的神经元,能够处理任意长度的 时序 数据。

    给定输入时序序列

    式中, 表示一段时序数据, 为时间长度

    以一段英文段落为例,其时序数据可以表示为:

    若是一段视频,将其每一帧通过CNN网络处理得到相应的编码向量

    循环神经网络通过以下公式更新隐藏层的活性值

    循环神经网络图示

    RNN的基本模型如下图所示,为便于理解,图中将RNN的模型展开,按照时序方向对其前向传播流程进行介绍

    RNN的基本模型

    利用数学表达式整个过程可以变得更加清晰,RNN的前向传播公式如下:

    将上述过程整合到一个RNN cell中,可以表示为如下图所示的过程:

    RNN的前向传播示意图

    缺陷:

    没有利用到模型后续的信息,可以通过双向RNN网络进行优化

    RNN主要有两种计算梯度的方式:随时间反向传播(BPTT)和实时循环学习法(RTRL)算法

    本文中主要介绍随时间反向传播的方法 ( BackPropagation Through Time

    RNN的损失函数与任务有关,对于同步的序列对序列任务,其loss可以用交叉熵公式表示

    然后通过BPTT算法便可以进行梯度的反向传播计算

    梯度爆炸的解决方法:梯度修剪

    梯度消失的解决方法:增加长程依赖 LSTM,GRU

    GRU的基本思路:增加相关门(Relate Gate)和更新门(Update Gate),进而使得RNN单元具有记忆能力

    首先从数学角度对GRU的前向传播过程进行介绍,具体公式如下:

    公式中各变量的含义:

    将上述数学公式转化为图像,可得

    GRU Cell的前向传播流程

    LSTM意为长短时记忆网络 (Long Short-Term Memory Network,LSTM) ,可以有效地解决简单神经网络的梯度消失和爆炸问题

    在LSTM中,与GRU主要有两点不同

    同样,先从数学公式入手,对LSTM的前向传播过程进行了解

    基于数学公式的过程,可将LSTM CELL的前向传播过程总结为(图片借用于nndl):

    LSTM Cell的前向传播示意图

    从上图中可以看出,LSTM在前向传播的过程中传输了两个状态:内部状态 以及外部状态 ,在整个传播过程中 外部状态(隐状态) 每个时刻都会被重写,因此可以看作一种 短时记忆 ,而 内部状态 可以在某个时刻捕捉一些关键信息,并将此信息保存一段时间间隔,可以看作一种 长时记忆 (长的短时记忆)

    此外,在LSTM网络初始化训练的时候,需要手动将遗忘门的数值设置的大一些,否则在参数初始化的时候,遗忘门的数据会被初始化为一个很小的值,前一时刻的内部状态 大部分都会丢失,这样网络很难获取到长距离的依赖信息,并且相邻时间间隔的梯度会非常小,导致 梯度弥散 问题,因此遗忘门的 偏置变量 的初始值 一般很大,取 1或2

    将 设置为1即可,但是长度非常的大的时候会造成记忆单元的饱和,降低性能

    三个门不仅依赖于 和 ,也依赖于

    将两者合并为一个门,即:

    首先,我们要理解什么是深层的RNN,对于单个的RNN cell,若将其在时间维度上展开,其深度与时间维度的长度成正比,但若将一个RNN cell看作为单个从 的映射函数,则单个cell实际上是很浅显的一层,因此深层循环神经网络要做的就是把多个RNN cell组合起来,换句话说,就是增加从输入 到输出 的路径,使得网络的深度更深。

    如何增加从输入 到输出 的路径呢?两种途径:

    堆叠循环神经网络示意图

    将网络带入到实际应用场景中:假如我们要翻译一段句子

    在这里,is和are实际上是由后面的Lucy和they所决定的,而这种单向的按照时序进行传播的方式没有利用到后面的信息。因此诞生了双向循环网络

    双向循环神经网络示意图

    双向循环神经网络实际上就是简单的双层循环神经网络,只不过第二层网络的传播方式为按时序的逆向传播,其传播公式为:

    二、145自然语言处理进阶手册--循环神经网络

    循环神经网络是一个有向循环的过程,“有向”是因为朝着序列方依次输入各序列成分以及上一步的输出成分,“循环”是因为每个序列成分进行运算的参数是一致的,因为它对数据的每个输入执行相同的功能,而当前输入的输出取决于上一步的计算。

    与前馈神经网络不同, 循环神经网络可以使用其内部状态(隐状态)来处理输入序列。这使它们适用于诸如语音、文本等序列数据。而在其他神经网络中,所有输入都是彼此独立的。但是在循环神经网络中,所有输入都是相互关联的,如下图所示为基本的循环神经网络模型结构: Vanilla RNN。

    循环神经网络每一步的输出都包含了前面步骤的信息,因此具备记忆功能,而记忆功能是解读语境的关键。比如,对于“小梅很喜欢吃桔子,她不喜欢吃苹果”这句话,如果逐词输入输出但是缺少记忆性,我们只能解析出一个个独立词所表达的意思,反之,在具备记忆的情况下,当看到桔子时,可知其不仅仅指“水果的概念”,而是“一个人喜欢的食物对象”。因此循环神经网络很适合处理序列间存在联系的场景。

    上图中展示了一个最基本最简单的单向循环神经网络,实际上根据需求可以在此基础上有所改进。如可以将单向序列行进的网络改为双向循环神经网络,因为很多时候,对于一个序列,元素之间的影响可以是双向的,即从前往后以及从后往前。还是以“小梅很喜欢吃桔子,她不喜欢吃苹果”为例,如果从后往前看,先看过“她不喜欢吃苹果”,再看到“桔子”,也能大概知道“桔子”可能和“一个人的喜好”相关。所以,双向循环神经网络能够提供更丰富的信息。

    而在事实应用中,Vanilla RNN 并不常用,这是因为其在梯度下降过程中,存在累乘项及激活函数的值域导致的梯度消失和爆炸问题,也就是说,训练 Vanilla RNN 是一项非常困难的任务,无法处理很长的序列,获取不到远距离的信息。

    长短期记忆(LSTM)网络是 Vanilla RNN 的修改版,该网络由 Hochreiter & Schmidhuber (1997) 引入,并有许多人对其进行了改进和普及,可以更轻松地记住序列中的更长距离的过去数据,通过特制的门控结构改变了梯度更新的表达式,从而缓解了梯度消失问题(梯度爆炸可通过梯度裁剪解决)。LSTM 非常适合对序列数据进行分类,标注和预测。 LSTM 基本结构如下:

    LSTM 的核心是细胞状态,用贯穿细胞的水平线表示。细胞状态像传送带一样,贯穿整个细胞却只有很少的分支,这样能保证信息稳定地流过整个网络,就好比人的记忆状态能够贯穿人的一生。

    以上便是 LSTM 的内部结构,通过门控状态来控制传输状态,记住对任务关键的信息,忘记不重要的信息;而不像普通的 RNN 那样只仅有一种记忆叠加的简单方式,可针对更长的文本。但同时也因为引入了很多内容,导致参数变多,也使得训练难度加大了很多。因此很多时候我们往往会使用效果和 LSTM 相当,但参数更少的 GRU 来构建大训练量的模型。

    在 PyTorch 中直接调用 nn.LSTM() 便能获取已构建好的 LSTM 层结构,首先介绍其参数。

    input_size: 表示的是输入的数据维数。

    hidden_size: 表示的是输出维数。

    num_layers: 表示堆叠几层的 LSTM,默认是 1。

    bias: True 或者 False,决定是否使用 bias,默认为 True。

    batch_first: 如果为 True, 接受的数据输入是 (batch_size,seq_len,input_size),如果为 False,则为 (seq_len,batch_size,input_size),默认为 False。

    dropout: 表示除了最后一层之外都引入一个 dropout。

    bidirectional: 表示双向 LSTM,默认为 False。

    接下来介绍 LSTM 的输入与输出。

    输入包括:

    input: 表示输入数据,其维度为 (seq_len,batch_size,input_size)。

    h_0: 初始隐状态,维度为 (num_layers*num_directions,batch_size,hidden_size),num_layers 表示 LSTM 的层数,num_directions 在 LSTM 为单向时为 1,双向时为 2,非必须输入,网络会提供默认初始状态。

    c_0: 初始的细胞状态,维度与 h_0 相同,非必须,网络会提供默认初始状态。

    输出包括:

    output: 最后输出,维度为 (seq_len, batch_size, num_directions * hidden_size)。

    h_n: 最后时刻的输出隐藏状态,维度为 (num_layers * num_directions, batch_size, hidden_size)。

    c_n: 最后时刻的输出单元状态,维度与 h_n 相同。

    定义 LSTM 层:

    接下来定义输入,输入数据大小应为 (seq_len,batch_size,input_size):

    在 LSTM 层中输入 x,观察输出:

    由于 num_layers 和 num_directions 均为 1,因此 h, c 的第一维度为 num_layers*num_directions = 1。

    在处理文本数据进行诸如文本分类等任务时,一般在循环神经网络的基础上加词向量层以及最后的输出层作为整体的神经网络模型,典型构架如下:

    初始化 LSTM 模型:

    定义输入,查看输出:

    输出大小为 2*3,即 batch_size * output_size。

    三、神经网络简述

    机器学习中谈论的神经网络是指“神经网络学习”,或者说,是机器学习和神经网络这两个学科领域的交叉部分[1]。

    在这里,神经网络更多的是指计算机科学家模拟人类大脑结构和智能行为,发明的一类算法的统称。

    神经网络是众多优秀仿生算法中的一种,读书时曾接触过蚁群优化算法,曾惊讶于其强大之处,但神经网络的强大,显然蚁群优化还不能望其项背。

    A、起源与第一次高潮。有人认为,神经网络的最早讨论,源于现代计算机科学的先驱——阿兰.图灵在1948年的论文中描述的“B型组织机器”[2]。二十世纪50年代出现了以感知机、Adaling为代表的一系列成功,这是神经网络发展的第一个高潮[1]。

    B、第一次低谷。1969年,马文.明斯基出版《感知机》一书,书中论断直接将神经网络打入冷宫,导致神经网络十多年的“冰河期”。值得一提的是,在这期间的1974年,哈佛大学Paul Webos发明BP算法,但当时未受到应有的重视[1]。

    C、第二次高潮。1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商问题上获得当时最好结果,引起轰动;Rumelhart等人重新发明了BP算法,BP算法迅速走红,掀起神经网络第二次高潮[1]。

    D、第二次低谷。二十世纪90年代中期,统计学习理论和支持向量机兴起,较之于这些算法,神经网络的理论基础不清晰等缺点更加凸显,神经网络研究进入第二次低谷[1]。

    E、深度学习的崛起。2010年前后,随着计算能力的提升和大数据的涌现,以神经网络为基础的“深度学习”崛起,科技巨头公司谷歌、Facebook、百度投入巨资研发,神经网络迎来第三次高潮[1]。2016年3月9日至15日,Google人工智能程序AlphaGo对阵韩国围棋世界冠军李世乭,以4:1大比分获胜,比众多专家预言早了十年。这次比赛,迅速在全世界经济、科研、计算机产业各领域掀起人工智能和深度学习的热烈讨论。

    F、展望。从几个方面讨论一下。

    1)、近期在Google AlphaGo掀起的热潮中,民众的热情与期待最大,甚至有少许恐慌情绪;计算机产业和互联网产业热情也非常巨大,对未来充满期待,各大巨头公司对其投入大量资源;学术界的反应倒是比较冷静的。学术界的冷静,是因为神经网络和深度神经网络的理论基础还没有出现长足的进步,其缺点还没有根本改善。这也从另一个角度说明了深度神经网络理论进步的空间很大。

    2)、"当代神经网络是基于我们上世纪六十年代掌握的脑知识。"关于人类大脑的科学与知识正在爆炸式增长。[3]世界上很多学术团队正在基于大脑机制新的认知建立新的模型[3]。我个人对此报乐观态度,从以往的仿生算法来看,经过亿万年进化的自然界对科技发展的促进从来没有停止过。

    3)、还说AlphaGo,它并不是理论和算法的突破,而是基于已有算法的工程精品。AlhphaGo的工作,为深度学习的应用提供了非常广阔的想象空间。分布式技术提供了巨大而廉价的计算能力,巨量数据的积累提供了丰富的训练样本,深度学习开始腾飞,这才刚刚开始。

    一直沿用至今的,是McChlloch和Pitts在1943年依据脑神经信号传输结构抽象出的简单模型,所以也被称作”M-P神经元模型“。

    其中,

    f函数像一般形如下图的函数,既考虑阶跃性,又考虑光滑可导性。

    实际常用如下公式,因形如S,故被称作sigmoid函数。

    把很多个这样的神经元按一定层次连接起来,就得到了神经网络。

    两层神经元组成,输入层接收外界输入信号,输出层是M-P神经元(只有输出层是)。

    感知机的数学模型和单个M-P神经元的数学模型是一样的,如因为输入层只需接收输入信号,不是M-P神经元。

    感知机只有输出层神经元是B-P神经元,学习能力非常有限。对于现行可分问题,可以证明学习过程一定会收敛。而对于非线性问题,感知机是无能为力的。

    BP神经网络全称叫作误差逆传播(Error Propagation)神经网络,一般是指基于误差逆传播算法的多层前馈神经网络。这里为了不占篇幅,BP神经网络将起篇另述。

    BP算法是迄今最为成功的神经网络学习算法,也是最有代表性的神经网络学习算法。BP算法不仅用于多层前馈神经网络,还用于其他类型神经网络的训练。

    RBF网络全程径向基函数(Radial Basis Function)网络,是一种单隐层前馈神经网络,其与BP网络最大的不同是采用径向基函数作为隐层神经元激活函数。

    卷积神经网络(Convolutional neural networks,简称CNNs)是一种深度学习的前馈神经网络,在大型图片处理中取得巨大成功。卷积神经网络将起篇另述。

    循环神经网络(Recurrent Neural Networks,RNNs)与传统的FNNs不同,RNNs引入定向循环,能够处理那些输入之间前后关联的问题。RNNs已经在众多自然语言处理(Natural Language Processing, NLP)中取得了巨大成功以及广泛应用[5]。RNNs将起篇另述。[5]

    [1]、《机器学习》,周志华著

    [2]、《模式识别(第二版)》,Richard O.Duda等著,李宏东等译

    [3]、《揭秘IARPA项目:解码大脑算法或将彻底改变机器学习》,Emily Singerz著,机器之心编译出品

    [4]、图片来源于互联网

    [5]、 循环神经网络(RNN, Recurrent Neural Networks)介绍

    四、循环神经网络模型,seq2seq模型理解

    循环神经网络与一般神经网络的区别:

    1、样本数据区别

          循环神经网络的训练数据的基本单位是num_steps,num_steps个样本作为一组,num_steps个样本有先后顺序。

          数据的shape: batch_size,num_step,num_features

         训练数据的生成方式有:随机采样和相邻采样

    2、网络结构的区别

    在一个num_steps为一组的数据中,上一个样本的输出(历史信息),作为下一输入的一部分。

    第一个的输入是历史信息是state,人工初始化

    RNN与LSTM的区别 :

    RNN之将上一个输出(H)作为下一个样本的输入信息,一个训练单元有两个输入Xt和Ht-1

    LSTM在RNN的基础上增加了state变量(C),一个训练单元有三个输入Xt,Ct-1,Ht-1

    RNN图示:

    LSTM图示:

    seq2seq模型理解:

    seq2seq是encoder-decoder结构的实例

    encoder的作用是从输入序列提取出context信息,也就是lstm网络的最后一个state(h,c)

    decoder的作用是以encoder得到的context信息作为initial-state,以<start>作为X1,预测序列,直到输出<end>

    以上就是关于循环神经网络应用举例相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    周围循环是指什么(周围循环是指什么循环)

    杭州补贴等待兑付什么意思(杭州补贴一直在等待兑付和兑付循环)

    水循环景观设计策略有哪些(水循环景观设计策略有哪些方面)

    空间游戏排行榜(空间游戏排行榜最新)

    龙类小说排行榜(十大巅峰异兽流小说)