本发明涉及机器视觉图像处理与自然语言处理交叉领域,尤其是涉及一种基于手绘图的故事性文本生成方法。
背景技术:
图像生成描述是一个涉及计算机视觉、自然语言处理、机器学习的基础问题。可以看作将一幅图像翻译成一段合适的句子。句子必须要足够流畅而且能传递足够复杂的图像信息。对于计算机而言,它需要一个模型来理解图像的内容,然后将图像所包含的主体以及主体之间的联系转换成自然语言。
文本生成是自然语言处理中的一个重要研究领域。其中故事生成任务能够成为儿童益智机器人重要的一部分,具有广阔的应用前景。然而,目前市场上的儿童益智机器人还不成熟,其问题主要归结为机器人提供的功能容易使儿童感到厌倦,以及机器人和儿童的交互性不强。现有的文本生成模型都是采用端到端的编码-解码结构,端对端的优势是把数据预处理以及对输出结果的处理都交给模型,给模型较大的自由调整空间。经典的seq2seq模型进行文本生成的思路是通过深度神经网络模型将输入的序列映射为输出的序列。而目前文本生成任务也面临着训练数据有限的问题,现有技术还无法从无标注的数据中挖掘文本信息和规律,进而无法获取故事的主体要和手绘图的内容的关联性。通常编码器-解码器选用的模型是gru或者lstm,当需要翻译的句子变得越来越长,模型需要理解的信息量越来越大,编码器编译的定长的向量想要存储有效信息的难度越来越大。于是,传统的rnn模型就会出现长程梯度消失的问题,长序列到定长向量的转化会损失一定的信息。而对于大量的存储信息,如何加速模型的训练过程也是继续解决的问题。
目前基于神经网络的文本生成模型主要以靠数据驱动,容易生成丰富又流畅的文字描述,但是使用者不能直接操控内容的生成,难以控制生成内容的未来走向。
技术实现要素:
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于手绘图的故事性文本生成方法。
本发明的目的可以通过以下技术方案来实现:
一种基于手绘图的故事性文本生成方法,包括如下步骤:
s1、获取手绘图图像特征。
优选地,采用深度卷积神经网络模型,基于谷歌quickdraw数据集和rocstories语料库匹配数据集作为训练数据,将手绘图x映射到向量z,获取手绘图图像特征,手绘图图像特征的表达式为:
z=cnn(x)={z0,z1,…,zl}
式中,l为图像特征的维度。
将向量z经过单层线性层用作分类任务,利用深度卷积神经网络模型对手绘图进行分类,各个类别的概率表达式为:
s=softmax(waz ba)
式中,wa和ba为深度卷积神经网络中softmax层的参数。
然后获取用以衡量模型捕捉手绘图主体的精度分类任务的交叉熵损失,其表达式为:
式中,
s2、基于transformer结构级联,根据手绘图图像特征捕获手绘图主体,并根据捕获的手绘图主体生成图像描述。具体内容为:
21)对于一幅手绘图,获取其相关描述生成句子,并将开始符号添加到句子开头,将句子长度扩充,随后将句子映射到词向量空间并且结合词的位置信息,获取输入向量;
22)采用六层的transfomer结构级联,设定每一层transfomer单元中多头注意力机制参数,利用训练数据对深度卷积神经网络模型进行训练,即利用多头注意力机制学习每一个位置的词与其上文每一个词之间的依赖关系,获取包括学习残差信息来提升神经网络的性能后的上下文信息在内的上下文信息。
学习残差信息来提升神经网络的性能后的上下文信息在内的上下文信息的表达式为:
ot=layernorm(ct ht)
式中,ct为对已经产生的句子进行编码生成的向量,ht为采用多头注意力机制捕捉到的多组当前词与之前词的上下文信息,layernorm表示将文本在通道方向上进行归一化。
优选地,每层transfomer单元中多头注意力机制头数设置为8,注意力机制中查询、键和值的维度大小设置为32,在深度卷积神经网络模型训练过程中,将dropout值设置为0.2,并采用beta1为0.9,beta2为0.98,epsilon为10-9的adam优化器对模型进行优化。
23)采用步骤s1提取的图像特征z,将其做线性变换映射到多个词向量空间,获取一系列和图像主体相关的词,随后利用步骤22)的上下文信息,计算词的权重,利用多头的注意力机制学习多个权重,并将这些信息与上下文信息结合,获取深度卷积神经网络中feedforward层的输入;feedforward层的输入的表达式为:
cθ=fθ(z)
hθ=multihead(ot,cθ,cθ)
oθ=layernorm(ot hθ)
式中,fθ为将图像特征映射到词向量空间的线性变换,cθ表示词向量空间和图像主体相关的词,hθ表示当前位置的残差信息和主体相关词的依赖关系,oθ表示将所述依赖关系整合到残差信息上。
24)利用feedforward层对模型中每个位置的输入进行通道重组,获取手绘图对应描述中每一个位置的词的概率分布p,其表达式为:
ffn(x)=max(0,xw1 b1)w2 b2
p=f(layernorm(oθ ffn(oθ)))
式中,w1、w2、b1和b2分别为feedforward层的参数。
25)利用词的概率分布与手绘图的匹配描述计算交叉熵损失,结合步骤s1中的分类损失函数,获取最终损失函数,对模型进行优化;最终损失函数的表达式为:
l=lt αla
式中,la为步骤s1中的分类损失函数,α为用以平衡两个部分的损失函数超参数,lt为每个位置词的交叉熵损失函数,其表达式为:
式中,pi表示当前位置的词的概率分布,
26)当上一步的最终损失函数收敛不再减小,利用词的概率分布生成手绘图的描述。
s3、利用图像描述生成叙事性故事。具体地:
针对rocstories语料库的故事集,利用学习率为6.25e-5的adam优化器对openai团队的gpt预训练模型进行微调,获取一个强泛化能力的解码器,将步骤s2中得到的手绘图描述输入该解码器,模型获取补全后的叙事性故事。
与现有技术相比,本发明具有以下优点:
1)传统的递归神经网络存在长程梯度消失的问题,长序列到定长向量的转化会损失一定的信息,本发明基于transformer结构级联,transformer结构使用自注意力机制,对输入输出的依赖项进行建模,无需考虑不同词在序列中的距离,可以充分挖掘词与词之间的依赖关系。
2)针对目前文本生成任务面临着训练数据有限的问题,现有技术还无法从无标注的数据中挖掘文本信息和规律,进而无法获取故事的主体要和手绘图的内容的关联性的缺陷,本发明方法采用rocstories语料库的故事集,通过使用adam优化器来微调openai团队的gpt预训练模型,最终得到一个强泛化能力的解码器,可避免长程梯度消失导致信息损失的问题,且对于大量的存储信息,可加速模型的训练过程,进而有利于将手绘图描述输入该解码器获取开放式补全故事。
3)针对目前市场上的儿童益智机器人还不成熟,机器人提供的功能容易使儿童感到厌倦,以及机器人和儿童的交互性不强的问题,本发明提出的基于手绘图的故事性文本生成方法,能够根据儿童输入的手绘图,即时生成相关的叙事性小故事与儿童完成交互,可以充分抓住孩子的兴趣,让孩子在玩耍的同时,思维逻辑和创新能力得到锻炼。
附图说明
图1为本发明方法使用的quickdraw数据集示意图;
图2为本发明方法使用的rocstories语料库示意图;
图3为本发明方法的流程示意图;
图4为本发明方法的原理框图;
图5为本发明方法中描述生成模型的结构示意图;
图6为本发明方法中故事生成模型的结构示意图;
图7为本发明方法中基于手绘图的故事性文本生成效果示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
实施例
本发明涉及一种基于手绘图的故事性文本生成方法,在图像描述生成的阶段,本发明使用谷歌的quickdraw数据集和rocstories语料库作为训练数据。如图1所示,quickdraw数据集是一个包含5000w张图画的集合,分成345个类别。如图2所示,rocstories语料库含有52665个短故事作为训练数据,1817个短故事作为测试数据,每个故事由5个短句构成,描述日常的生活。本发明将rocstories语料库中的每个句子提取出来成为一个新的集合。为了将手绘图和语料库中的句子对应起来,搜索所有的句子,如果句子中含有手绘图的类别,就可以认为句子和手绘图相关联。为了保证数据的平衡性,只保留了134个关联了50个句子以上的标签。本发明对每个标签速记选择手绘图和标签关联的句子进行随机匹配。对每个标签随机选择了1000组匹配对作为训练集,100组匹配对作为验证集,100组匹配对作为测试集。对于故事生成的阶段,本发明实施例使用rocstories语料库中所有的训练数据进行训练,所有的测试数据进行测试。
本发明方法的实现过程具体包括以下步骤:
步骤一、采用深度卷积神经网络,从谷歌quickdraw数据集和rocstories语料库匹配数据集中自动学习手绘图的有效表示。将手绘图x映射到向量z,将向量z经过单层线性层用作分类任务,计算出分类任务的交叉熵损失来衡量模型捕捉手绘图主体的精度,如下式:
z=cnn(x)={z0,z1,…,zl}
s=softmax(waz ba)
式中,z代表手绘图的图像特征,s代表图像属于各个类别的概率,wa和ba为softmax层的参数。l代表图像特征的维度,si代表模型对手绘图给出的分类结果,
步骤二、基于transformer结构级联,捕获手绘图主体,并根据捕获的手绘图主体生成图像描述。
如图3所示,采用六层的transfomer结构级联,每层transfomer单元中多头注意力机制头数设置为8,注意力机制中查询(query)、键(key)和值(value)的维度大小设置为32。在模型训练过程中dropout值设置为0.2,采用beta1为0.9,beta2为0.98,epsilon为10-9的adam优化器对模型进行优化。在此参数模型基础上,设计方法如下:
(a)对于一幅手绘图,可以获取它的相关描述
(b)模型使用多头注意力机制学习每一个位置的词与其上文每一个词之间的依赖关系:
ct=wordemb(xt) posemb(xt)
multihead(q,k,v)=concat(head1,…)w
ht=multihead(ct,ct,ct)
ot=layernorm(ct ht)
其中,ct代表对已经产生的句子进行编码生成的向量,wordemb表示词向量映射,posemb表示位置信息映射,attention表示注意力机制,headi表示一组注意力机制学习到的上文依赖关系,multihead表示将多组注意力机制学习到的信息进行整合,ht表示用多头注意力机制捕捉到的多组当前词与之前词的上下文信息,ot表示学习残差信息来提升神经网络的性能后的上下文信息,layernorm表示将文本在通道方向上进行归一化。
(c)采用步骤一所提取的图像特征z,将其做线性变换映射到多个词向量空间,得到一系列和图像主体相关的词。然后使用之前的上下文信息ot,计算这些词的权重,使用多头的注意力机制学习多个权重,并将这些信息和ot结合起来作为feedforward层的输入:
cθ=fθ(z)
hθ=multihead(ot,cθ,cθ)
oθ=layernorm(ot hθ)
式中,fθ是简单的线性变换,将图像特征映射到词向量空间,cθ表示词向量空间和图像主体相关的一系列词,hθ表示当前位置的残差信息和主体相关词的依赖关系,oθ表示将这些依赖关系整合到残差信息上。
(d)令ffn表示feedforward层的运算,w1、w2、b1和b2是feedforward层的参数,feedforward层不考虑当前位置的单词和其他位置之间的关系。本步骤利用ffn对每个位置的输入进行通道的重组并为模型添加了非线性的能力,得到手绘图对应描述中每一个位置的词的概率分布p:
ffn(x)=max(0,xw1 b1)w2 b2
p=f(layernorm(oθ ffn(oθ)))
(e)利用词的概率分布p与手绘图的匹配描述计算交叉熵损失,结合步骤一中的分类损失函数la,作为最终损失函数对模型进行优化:
l=lt αla
式中,pi表示当前位置的词的概率分布,
(f)当模型训练到一定阶段,当上述步骤得到的最终损失函数收敛不再减小,则利用词的概率分布p生成手绘图的描述。
步骤三、生成叙事性小故事。
如图4所示,针对rocstories语料库的故事集,使用学习率为6.25e-5的adam优化器来微调openai团队的gpt预训练模型,最终得到一个强泛化能力的解码器。输入步骤二中得到的手绘图描述,模型能够开放式补全故事。
如图5所示,本发明实施例提供的基于手绘图的故事性文本生成方法,模型可以接受儿童输入的手绘图,识别手绘图中的主体并且进行描绘,最后根据描述生成具有叙事性的小故事。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
1.一种基于手绘图的故事性文本生成方法,其特征在于,包括下列步骤:
1)获取手绘图图像特征;
2)基于transformer结构级联,根据手绘图图像特征捕获手绘图主体,并根据捕获的手绘图主体生成图像描述;
3)利用图像描述生成叙事性故事。
2.根据权利要求1所述的一种基于手绘图的故事性文本生成方法,其特征在于,步骤1)的具体内容为:
采用深度卷积神经网络模型,基于谷歌quickdraw数据集和rocstories语料库匹配数据集作为训练数据,将手绘图x映射到向量z,获取手绘图图像特征,并将向量z经过单层线性层用作分类任务,获取用以衡量模型捕捉手绘图主体的精度分类任务的交叉熵损失。
3.根据权利要求2所述的一种基于手绘图的故事性文本生成方法,其特征在于,手绘图图像特征的表达式为:
z=cnn(x)={zo,z1,...,zl}
式中,l为图像特征的维度;
将向量z经过单层线性层用作分类任务的主要内容为:
利用深度卷积神经网络模型对手绘图进行分类,各个类别的概率的表达式为:
s=softmax(waz ba)
式中,wa和ba为深度卷积神经网络中softmax层的参数;
则分类任务的交叉熵损失函数的表达式为:
式中,
4.根据权利要求2所述的一种基于手绘图的故事性文本生成方法,其特征在于,步骤2)具体包括以下步骤:
21)对于一幅手绘图,获取其相关描述生成句子,并将开始符号添加到句子开头,将句子长度扩充,随后将句子映射到词向量空间并且结合词的位置信息,获取输入向量;
22)采用六层的transfomer结构级联,设定每一层transfomer单元中多头注意力机制参数,利用训练数据对深度卷积神经网络模型进行训练,即利用多头注意力机制学习每一个位置的词与其上文每一个词之间的依赖关系,获取包括学习残差信息来提升神经网络的性能后的上下文信息在内的上下文信息;
23)采用步骤1)提取的图像特征z,将其做线性变换映射到多个词向量空间,获取一系列和图像主体相关的词,随后利用步骤22)的上下文信息,计算词的权重,利用多头的注意力机制学习多个权重,并将这些信息与上下文信息结合,获取深度卷积神经网络中feedforward层的输入;
24)利用feedforward层对模型中每个位置的输入进行通道重组,获取手绘图对应描述中每一个位置的词的概率分布;
25)利用词的概率分布与手绘图的匹配描述计算交叉熵损失,结合步骤1)中的分类损失函数,获取最终损失函数,对模型进行优化;
26)当步骤25)的最终损失函数收敛不再减小,利用词的概率分布生成手绘图的描述。
5.根据权利要求4所述的一种基于手绘图的故事性文本生成方法,其特征在于,步骤22)中,将每层transfomer单元中多头注意力机制头数设置为8,注意力机制中查询、键和值的维度大小设置为32,在深度卷积神经网络模型训练过程中,将dropout值设置为0.2,并采用beta1为0.9,beta2为0.98,epsilon为10-9的adam优化器对模型进行优化。
6.根据权利要求4所述的一种基于手绘图的故事性文本生成方法,其特征在于,步骤22)中,学习残差信息来提升神经网络的性能后的上下文信息在内的上下文信息的表达式为:
ot=layernorm(ct ht)
式中,ct为对已经产生的句子进行编码生成的向量,ht为采用多头注意力机制捕捉到的多组当前词与之前词的上下文信息,layernorm表示将文本在通道方向上进行归一化。
7.根据权利要求6所述的一种基于手绘图的故事性文本生成方法,其特征在于,步骤23)中,feedforward层的输入的表达式为:
cθ=fθ(z)
hθ=multihead(ot,cθ,cθ)
oθ=layernorm(ot hθ)
式中,fθ为将图像特征映射到词向量空间的线性变换,cθ表示词向量空间和图像主体相关的词,hθ表示当前位置的残差信息和主体相关词的依赖关系,oθ表示将所述依赖关系整合到残差信息上。
8.根据权利要求7所述的一种基于手绘图的故事性文本生成方法,其特征在于,步骤24)中,获取手绘图对应描述中每一个位置的词的概率分布p的表达式为:
ffn(x)=max(0,xw1 b1)w2 b2
p=f(layernorm(oθ ffn(oθ)))
式中,w1、w2、b1和b2分别为feedforward层的参数。
9.根据权利要求4所述的一种基于手绘图的故事性文本生成方法,其特征在于,步骤25)中,最终损失函数的表达式为:
l=lt αla
式中,la为步骤1)中的分类损失函数,α为用以平衡两个部分的损失函数超参数,lt为每个位置词的交叉熵损失函数,其表达式为:
式中,pi表示当前位置的词的概率分布,
10.根据权利要求1所述的一种基于手绘图的故事性文本生成方法,其特征在于,步骤3)的具体内容为:
针对rocstories语料库的故事集,利用学习率为6.25e-5的adam优化器对openai团队的gpt预训练模型进行微调,获取一个强泛化能力的解码器,将步骤2)中得到的手绘图描述输入该解码器,模型获取补全后的叙事性故事。
技术总结