一种新型的优化语言生成模型输出未知字符的方法技术

技术编号:26792125 阅读:16 留言:0更新日期:2020-12-22 17:07
本发明专利技术公开了一种新型的优化语言生成模型输出未知字符的方法,包括以下步骤:(1)向语言生成模型中输入某一或者某些词汇,将当前词汇输入解码器;(2)解码器计算下一个词的概率分布;(3)在得到下一个词概率分布之后,对unk增加一个概率惩罚项;概率惩罚项即在预测下一个词之前先将unk的预测概率改为零;(4)根据步骤(3)调整后的概率分布结果,选择概率最大的词汇作为预测结果进行输出;本发明专利技术的优化方法和模型本身无关,无论是经典的LSTM模型或者是现在比较常用的transformer生成模型,都可以使用这一方法对unk问题进行优化,且都可以达到较好的效果。

【技术实现步骤摘要】
一种新型的优化语言生成模型输出未知字符的方法
本专利技术具体涉及一种新型的优化语言生成模型输出未知字符的方法。
技术介绍
在一般的自然语言生成模型中,由于通常无法在词表中做到训练语料中词汇的全覆盖,因此,需要加入一个特殊的字符(unk字符)来对其进行表示。但是,在实际的业务使用场景中,unk字符的出现往往会极大地影响用户的体验。优化词表是一种比较直观的处理方法。生成结果中unk词汇过多最核心的原因在于词表的覆盖率不高,如果换用覆盖率更高的分词方法(比如sentencepiece分词方法)或者扩大词表的方式都可以一定程度解决这一问题。这种方法的优点是实现简单,缺点在于:由于改变了训练数据的处理方法,因此需要重新对生成模型进行训练,会比较耗时,而且也无法彻底消除unk的问题。以上所述的词表优化是在数据层面进行优化,而后处理则是对模型的输出结果进行优化,通过一些人为定义的规则来处理生成结果中的unk字符或者干脆将包含unk字符的生成结果舍弃。这么做的好处是不需要重新训练模型,但是缺点在于其处理的结果往往会有不尽如人意的地方,而直接舍弃的话则会造成对某些结果生成为空的现象,而且这一方法往往和模型效果相关,针对不同模型的badcase需要调整后处理策略。
技术实现思路
针对上述情况,为克服现有技术的缺陷,本专利技术提供一种新型的优化语言生成模型输出未知字符的方法。为了实现上述目的,本专利技术提供以下技术方案:一种新型的优化语言生成模型输出未知字符的方法,包括以下步骤:(1)向语言生成模型中输入某一或者某些词汇,将当前词汇输入解码器;(2)计算下一个词的概率分布;(3)在得到下一个词概率分布之后,对unk增加一个概率惩罚项;(4)根据步骤(3)调整后的概率分布结果,选择概率最大的词汇作为预测结果进行输出。步骤(3)中,概率修正公式如下:p(word)=softmax(p′(word))(1)P’为加了惩罚项之后的概率,p表示最终输出的概率;公式(2)中,x=P’(word),xi表示词表中第i个词汇的预测概率值。本专利技术的有益效果是:(1)本专利技术的优化方法针对词汇生成过程中下一个词的预测概率分布进行调整,将unk概率调整为0,确保在模型的输出文本中不会出现unk特殊字符,不影响用户的体验。本专利技术的优化方法和模型本身无关,无论是经典的LSTM模型或者是现在比较常用的transformer生成模型,都可以使用这一方法对unk问题进行优化,且都可以达到较好的效果,不需要针对模型进行调整。(2)本专利技术的优化方法与模型训练过程无关,无论在模型训练时还是针对已经训练好的模型都可以使用这种方式优化模型的生成效果。(3)一般的后处理方法往往会破坏生成结果的通顺度或者通过删除不良生成结果的方式导致输出结果总数减少。而本专利技术优化方法作用于结果生成过程中,因此不会产生上述的问题,可以保证生成的合法结果的总量不会减少,且不会破坏生成结果的通顺度。附图说明图1是语言生成模型采用传统的方法生成下一个词的流程图。图2是本专利技术中语言生成模型采用优化的方法生成下一个词的流程图。具体实施方式以下结合附图对本专利技术的技术方案做进一步详细说明,应当指出的是,具体实施方式只是对本专利技术的详细说明,不应视为对本专利技术的限定。语言生成模型采用传统的方法生成下一个词的流程图,如图1所示,本专利技术中,一种新型的优化语言生成模型输出未知字符的方法,如图2所示,包括以下步骤:(1)向语言生成模型中输入某一或者某些词汇,模型将当前词汇输入解码器(Decoder);(2)解码器(Decoder)计算下一个词的概率分布;解码器的输出结果即为下一个词的概率。比如词表大小为vocab_size,输出结果即为一个batch_size*vocab_size的矩阵,取每一行最大元素的index对应的词即为最有可能的下一个词汇。(3)在得到下一个词概率分布之后,对unk增加一个概率惩罚项,即在预测下一个词之前先将unk的预测概率改为零(手动清零);因为unk的预测概率为零,所以模型会在剩余所有词汇中选择概率较高的词汇或者选择最有可能的词汇,进行输出。概率惩罚项是增加在原有模型中的,但是不需要改变原有模型中学习到的参数,重新载入已有的参数即可,不需要对模型重新进行训练。所述的原有模型可以是LSTM模型,也可以是transformer架构的模型。因为模型会平权的对待词表中所有的词汇,给出其概率分布,这就包括了特殊字符unk的概率,在模型生成下一个词汇的概率分布之后,手动将unk的概率变为0,这样就可以避免输出特殊的字符unk。不管unk的概率是高还是低,都将其改为0,不需要比较概率大小。概率修正公式如下:p(word)=softmax(p′(word))(1)P’为加了惩罚项之后的概率,p表示最终输出的概率。比如说,词表为<unk>,apple,banana,cat,原始的概率为[0.4,0.2,0.3,0.1],加了惩罚项之后的概率p’为[0,0.2,0.3,0.1],最终输出的概率p为[0.21,0.26,0.29,0.24]。softmax函数本质上来说是对非归一化的数组进行归一化操作。因此,公式(2)中,x=P’(word),xi表示词表中第i个词汇的预测概率值。(4)根据步骤(3)调整后的概率分布结果,选择概率最大的词汇(即最有可能词汇)作为预测结果进行输出。在一些优选的方式中,概率惩罚项的使用方式根据不同的模型会有些不同,具体地,每一个词的概率P(w)都是0~1之间的数字,针对普通的概率P(w),概率惩罚项的使用方式为:将unk的概率置零(即P(w)=0)。但是有的时候,会使用logP(w)即log型概率,此时,要将<unk>的预测概率修正为0,需要使logP(w)的值为负无穷,但是本质来说还是使P(<unk>)变成0。假设词表为<unk>,apple,banana,cat,预测概率结果为[0.4,0.2,0.3,0.1],按照正常的逻辑,预测结果为<unk>,手动乘上一个惩罚项,对应向量为[0,1,1,1],可以将预测概率修正为:[0,0.2,0.3,0.1],最后通过softmax函数对其进行归一化操作得到:[0.21,0.26,0.29,0.24],此时预测的结果就从<unk>修正为了banana。显然,所描述的实施例仅仅是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。本文档来自技高网...

【技术保护点】
1.一种新型的优化语言生成模型输出未知字符的方法,其特征是,包括以下步骤:/n(1)向语言生成模型中输入某一或者某些词汇,将当前词汇输入解码器;/n(2)解码器计算下一个词的概率分布;/n(3)在得到下一个词概率分布之后,对unk增加一个概率惩罚项;概率惩罚项即在预测下一个词之前先将unk的预测概率改为零,得到调整过的概率分布结果;/n(4)根据步骤(3)调整后的概率分布结果,选择概率最大的词汇作为预测结果进行输出;/n步骤(3)中,概率修正公式如下:/np(word)=softmax(p′(word)) (1)/n

【技术特征摘要】
1.一种新型的优化语言生成模型输出未知字符的方法,其特征是,包括以下步骤:
(1)向语言生成模型中输入某一或者某些词汇,将当前词汇输入解码器;
(2)解码器计算下一个词的概率分布;
(3)在得到下一个词概率分布之后,对unk增加一个概率惩罚项;概率惩罚项即在预测下一个词之前先将unk的预测概率改为零,得到调整过的概率...

【专利技术属性】
技术研发人员:陈一圣罗学优
申请(专利权)人:杭州艾耕科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1