一种基于切分循环神经网络的序列模型建立方法与流程

文档序号:16391751发布日期:2018-12-25 19:22阅读:587来源:国知局
一种基于切分循环神经网络的序列模型建立方法与流程

本发明涉及人工智能领域,具体地涉及一种基于切分循环神经网络的序列模型建立方法。

背景技术

随着人工智能与计算机硬件的发展,循环神经网络由于可以提取序列中的词序等深层信息,被广泛应用于如自然语言处理、语音识别等序列模型中,使性能较传统模型相比得到了大幅度提升。循环神经网络的结构如图1所示,其中图中序列长度为8,其中下方的x代表每一时刻的输入,若是自然语言处理任务,则x代表字或词,若是语音识别任务,则x代表音素。a代表循环单元,可以是simplernn,gru,lstm等。i代表初始状态,通常设为0。h代表每一时刻的隐藏状态,若是输出一个序列,则保留每一时刻的h;若输出一个向量,则通常保留最后一个时刻的h作为序列的特征表示。rnn网络中,每一时刻需要等待上一时刻的输出作为这一时刻的输入,用公式可表示如下;

ht=f(ht-1,xt)

其中f函数可以是简单的tanh函数或是复杂的如gru,lstm等门控单元,若取简单的tanh函数,则a为simplernn。

ht=tanh(wht-1+uxt+b)

若取更复杂的门控单元,则gru运算为:

rt=σ(wrht-1+urxt+br)

zt=σ(wzht-1+uzxt+bz)

lstm运算为:

it=σ(wiht-1+uixt+bi)

ot=σ(woht-1+uoxt+bo)

ft=σ(wfht-1+ufxt+bf)

循环神经网络有多种应用,有多对一,多对多等等。多对一的典型应用是文本分类,即多个单词作为输入,一个最终状态作为输出。取输入的文本作为输入,每一个单词作为输入x,将rnn的最终状态h作为文本的特征表示,在其后加softmax层,即可文本分类。多对多的典型应用是翻译、自动摘要等,可称为sequencetosequence模型。例如英法翻译,取第一个rnn作为编码器,其最终状态h作为英文句子的特征表示,并将其作为第二个rnn解码器的初始状态并进行解码,得到最终的法语句子,如图2所示。

但传统的rnn的弱点是速度很慢。由于每一时刻都需要等待上一时刻的输出作为此刻的输入,当序列长时需要花费大量的时间。同时,lstm,gru等门控单元内部也无法并行,也需要花费大量时间等待。为了解决速度慢的问题,一些学者对门控单元内部进行改进,提升了其并行性,例如qrnn:

本发明的srnn是对rnn的整体结构进行改进,是第一个在整体结构上使rnn并行从而提升速度的创新,因此并未有与本发明十分接近的已有技术方案。一项结构图类似的方案为dilatedrnn,结构如图3所示:即在第一层使用rnn,将其返回的每一时刻的值作为下一层rnn的输入,每一层的步长是上一层的二倍。但这种结构并不能解决rnn速度慢的问题,只是这种层次结构与本发明提出的srnn类似。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种基于切分循环神经网络的序列模型建立方法。本发明能够解决传统rnn速度慢的问题。在自然语言处理等序列任务中,rnn由于可以有效地提取序列中的顺序信息,被广泛应用于情感分析、翻译、文本摘要、问答系统等应用中。但由于每一时刻需要等待上一时刻的输出作为这一时刻的输入,rnn速度非常慢。无论是在工业界或是学术界,训练rnn都是一项很耗时间的工程。

本发明的srnn通过对rnn整体结构改进,使其可以并行训练,srnn的速度相较传统rnn提升了高达135倍,若取更长的序列进行训练,甚至可以提升更多的速度。可以说,srnn完全解决了传统rnn速度慢的问题。同时,与传统rnn相比,srnn可以获取序列高层次的信息。在情感分析数据集上的实验结果表明,srnn的准确率相较rnn有所提升。

本发明是根据以下技术方案实现的:

一种基于切分循环神经网络的序列模型建立方法,其特征在于,包括如下步骤:

步骤s1:输入序列,进行预处理;

将输入序列预处理至长度为t的序列x,长度不足t的序列采用末尾补0的策略,长度超过t的序列取前t个字符,则获得输入序列x为:

x=[x1,x2,...,xt]

其中x通过多维度表示;

步骤s2:选择合适的切分长度与切分次数;

根据长度t选择合适的切分长度和切分次数,若t=nk+1,则取切分长度为n,切分次数为k;

步骤s3:将原序列切分成许多最小子序列;

将序列x切分成n个子序列n,则每个子序列长度为

这时x表示成:

x=[n1,n2,...,nn]

再将每个子序列切分成n个子子序列,重复这个切分步骤k次,直至得到一个合适长度的最小子序列,得到共k+1层;

经过如上切分,最底层的最小子序列的个数为s0=nk,长度为至此,原序列被切分成许多子序列;

步骤s4:将rnn作用于每层的最小子序列;

步骤s5:获得每个最小子序列的最终状态h。

上述技术方案中,步骤s4包括:将共享参数的rnn作用于最底层的每个最小子序列,这个过程是并行的,其中rnn循环单元选择基本的simplernn单元,gru、lstm门控单元或是经过改进的门控单元,循环激活函数选择tanh,sigmoid或是hard_sigmoid激活函数,循环单元间使用循环dropout正则化。

上述技术方案中,步骤s5包括:对最底层的每个最小子序列得到rnn的最终状态h,同时,对h使用tanh,sigmoid,relu激活函数或者dropout正则化技术:

其中,mss表示最小子序列;

步骤s6:将h作为上一层rnn的输入,重复s4与s5步骤,

直至得到最顶层的最终状态f,将其作为序列的特征表示:

与现有技术相比,本发明具有如下的有益效果:

1、本发明可以提高训练速度:与传统rnn相比,srnn速度有巨大提升。在长文本分类任务中,srnn比传统rnn速度快135倍。可以说,解决了传统rnn训练速度慢的难题。

2、本发明可以获取序列的高层次信息:srnn可以获取序列的高层次信息。例如以文本长度为512的情感分析为例,取切分长度为8,切分次数为2的srnn,则最底层的rnn可以获得词汇层次的信息,中间层的rnn可以获得句子层次的信息,最顶层的rnn可以获得段落层次的信息。

3:本发明可以提高保留重要信息的能力:虽然gru、lstm等可以通过遗忘门、输入门、输出门等门控单元控制信息的流入与流出,但对于长序列,它们保留重要信息的能力仍然有限。srnn将每个rnn都限制在最小子序列的长度,有效地提高了保留序列中重要信息的能力。

4、本发明可以提高准确率:在6个大型情感分析数据集上的实验结果表明,srnn相比传统rnn有较大的准确率提升。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为循环神经网络的结构示意图:

图2为sequencetosequence模型示意图;

图3为dilatedrnn结构示意图;

图4为srnn结构示意图;

图5为本发明的步骤示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

本发明对以下技术术语定义:rnn(recurrentneuralnetwork):循环神经网络;cnn(convolutionalneuralnetwork):卷积神经网络;lstm(long-shorttermmemory):长短期记忆网络;gru(gatedrecurrentunit):门控循环单元;srnn(slicedrecurrentneuralnetwork):切分循环神经网络。

图4为srnn结构示意图,本发如图4所示,明将原序列切分成许多最小子序列,并将共享参数的rnn同时应用在最小子序列上,从而达到并行的效果。接着,将最底层的每一个rnn的最终状态h作为其上一层rnn的输入,重复这个步骤直至获得最终的特征表示f。通过这个步骤,srnn在获得序列的顺序信息的同时,可以获得序列的高层次信息,从而更好地保留序列中的重要信息。具体步骤如图5所示,本发明的一种基于切分循环神经网络的序列模型建立方法,其特征在于,包括如下步骤:

步骤s1:输入序列,进行预处理;

将输入序列预处理至长度为t的序列x,长度不足t的序列采用末尾补0的策略,长度超过t的序列取前t个字符。则获得输入序列x为:

x=[x1,x2,...,xt]

其中x是多维度表示;

步骤s2:选择合适的切分长度与切分次数;

根据长度t选择合适的切分长度和切分次数,若t=nk+1,则取切分长度为n,切分次数为k;

步骤s3:将原序列切分成许多最小子序列;

将序列x切分成n个子序列n,则每个子序列长度为

这时x表示成:

x=[n1,n2,...,nn]

再将每个子序列切分成n个子子序列,重复这个切分步骤k次,直至得到一个合适长度的最小子序列,得到共k+1层;

经过如上切分,最底层的最小子序列的个数为s0=nk,长度为至此,原序列被切分成许多子序列;

步骤s4:将rnn作用于每层的最小子序列;

将共享参数的rnn作用于最底层的每个最小子序列,这个过程是并行的,其中rnn循环单元选择基本的simplernn单元,gru、lstm门控单元或是经过改进的门控单元,循环激活函数选择tanh,sigmoid或是hard_sigmoid激活函数,循环单元间使用循环dropout正则化;

步骤s5:获得每个最小子序列的最终状态h;

对最底层的每个最小子序列得到rnn的最终状态h,同时,对h使用tanh,sigmoid,relu激活函数或者dropout正则化技术:

其中,mss表示最小子序列;

步骤s6:将h作为上一层rnn的输入,重复s4与s5步骤,

直至得到最顶层的最终状态f,将其作为序列的特征表示:

若在f后增加softmax层,则可将其应用于文本分类、语音识别等任务中。若将f作为另一个rnn解码器的初始状态,则可将其应用于机器翻译、自动摘要、问答系统等任务中。

本发明的srnn可以有很多层,当k=2时,层数为3,则所述情况成立,分别获得词汇、句子、段落的层次。在具体使用时,若输入序列很长,可以选取更多的层数。例如语音识别,若srnn层数为5,则最底层可获得音素层次的信息,第二层可获得字符层次的信息,第三、四、五层分别获得词语、句子、段落层次的信息。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1