一种神经机器翻译系统的动态大小训练批形成方法和系统

文档序号:28806401发布日期:2022-02-09 02:29阅读:58来源:国知局
一种神经机器翻译系统的动态大小训练批形成方法和系统

1.本发明属于基于深度学习的神经机器翻译领域,更具体地,涉及一种神经机器翻译系统的动态大小训练批形成方法和系统。


背景技术:

2.神经机器翻译现在已经成为机器翻译的事实标准,并取得目前最好的机器翻译效果。神经机器翻译系统的翻译效果高度依赖在大规模平行语料上的训练。通过将平行语料分成多个迷你批mini-batch并进行反向传播和梯度下降是目前各种神经机器翻译系统训练普遍采用的技术。
3.目前,神经机器翻译系统的基本训练方法是,在迷你批或训练批上先正向推理计算系统在训练批上的损失,接着反向计算损失对模型参数的梯度,最后根据梯度更新模型参数。通常,一个平行语料划分为多个训练批,神经机器翻译系统在语料的训练批上进行迭代训练。这是一种近似训练方法,它用训练批上的损失近似训练数据上损失的期望。在这个过程中,训练批的大小对训练效果和训练效率影响极大。训练批越大,模型越可以充分利用gpu的并行性,训练速度越快,而训练批上计算的损失对参数的梯度估计也越准确,模型收敛也越快,训练更容易找到最优结果的接近点。因此,只要硬件允许,各种神经机器翻译系统都会使用尽可能大的训练批。另外,为了保证训练效果,训练语料都需要先混洗再分成训练批,因此常常同一训练批中句子长度不一,而一般神经机器翻译系统需要训练批中数据长度一致,这通常通过对训练批中句子进行填充到统一长度来实现。因此,具有相同句子数且句子长度填充一致的训练批是目前神经机器翻译系统的训练批的基本做法。
4.采用相同句子数且句子长度填充一致的训练批虽然使得神经机器翻译系统的训练数据准备较简单,实现也比较容易。但是,这种训练批形成方法存在以下几个方面的问题:首先,经过混洗的句子原始长度不一,且可能长度差别较大,使用填充达到一致长度意味着神经机器翻译系统对每批中很多数据的处理是无意义的(因为有较多的无意义内容填充),这降低了gpu训练的实际有效吞吐量,也会降低训练的训练速度;其次,相同句子数且句子长度填充一致的训练批的长度由最长句子的长度决定,即使很多句子长度远远小于最长句子长度,也必须填充一致,这会影响最终的训练批的大小,即,最长句子越长,训练批会越小或包含的句子数越小,而过小的训练批会让更新权重的梯度估计不准确,神经机器翻译模型收敛也更慢,从而要么需要更长的训练时间才能达到可以接受的性能,要么更难接近全局最优。


技术实现要素:

5.针对现有神经机器翻译系统中具有相同句子数训练批带来的机器翻译模型训练效率和训练效果较差的缺陷和改进需求,本发明提供了一种神经机器翻译系统的动态大小训练批形成方法和系统,其目的在于根据句子词条数动态调整训练批大小,训练批平均可以包括更多的句对,也就是平均批大小更大,这可以降低神经机器翻译系统的训练收敛时
间,提高训练效率。
6.为实现上述目的,按照本发明的第一方面,提供了一种神经机器翻译系统的动态大小训练批形成方法,该方法包括:
7.s1.解析平行语料,对语料进行切分和向量化,得到向量化句对;
8.s2.对向量化句对进行分块,按照词条数对向量化句对块中的句对进行升序排序;
9.s3.按照批大小对句对块中排序后句对进行分组和填充,所述批大小为一批中所有句对的长度之和,形成训练批。
10.优选地,步骤s1包括:
11.s11.对平行语料进行解析,得到源语言和目标语言句对流;
12.s12.对句对流中的句子进行切分,生成源语言和目标语言字典并保存;
13.s13.利用生成的源语言和目标语言字典,向量化平行语料。
14.有益效果:针对现有语料的格式和语言对的多样性,本发明通过动态配置字典,通过维护语料格式到解析器以及语言到切分器的映射,实现灵活支持多格式和多语料的向量化处理。
15.优选地,步骤s11中,不同格式的平行语料使用不同解析器,语料格式和解析器的对应关系存放在配置文件中。
16.有益效果:针对现在存在多种不同平行语料格式的问题,本发明通过动态配置的方式,由平行语料格式映射到语料解析器,实现灵活支持多种平行语料解析。
17.优选地,步骤s12中,不同文本语言使用不同的切分器,文本语言和切分器的对应关系存放在配置文件中。
18.有益效果:针对现在数以百计的语言对的切分问题,本发明通过配置字典维护语言和切分器间的映射,并通过内置缺省切分器实现灵活支持多种语言对平行语料的切分。
19.优选地,步骤s13中,若指定生成的字典大小,维护词条和它在文本中出现次数的计数结构,扫描文本的过程中更新出现次数,扫描结束后根据出现次数对计数结构进行降序排序,将排序后的计数结构中前面指定字典大小的词条作为字典内容。
20.有益效果:固定词典大小难以适应不同语料大小和不同工作站计算能力,本发明通过对切分词条进行出现频率计数和排序,根据指定的词典大小选择出现较频繁作为词典项,从而允许方便灵活选择合适的词典对句对进行向量化。
21.优选地,步骤s2中,对向量化句对进行成块缓存,每次取一个向量化句对块,并对向量化句对块中的句对根据两个数字序列的总长进行升序排序。
22.有益效果:随着平行语料越来越大,全部在内存中对向量化句对进行分批会消耗越来越大的内存,甚至会变得不可能。本发明根据机器资源配置,对向量化句对进行分块成批处理,块的大小可以灵活指定,这可以充分利用内存能力,并灵活调整每块的批数。
23.优选地,步骤s3中,根据每个批的词条总数对排序后的句对块进行分组;对分组后的每组中的句对按照该组中最大句对长度进行句末补零填充,得到长度一致的句对组;将句对组进一步转换成训练程序需要的批张量,形成动态大小训练批。
24.有益效果:对缓冲块中的句对在内存中按照句对长度进行升序排序,这可以节约大量内存,排序后相邻的句对的长度接近,从而同一批中的句对长度接近,这样需要填充的部分就少,在批的总大小一定的情况下可以使得批中的句对平均越多,并且批的平均填充
也越小。最终可以形成更大的动态批,从而提高机器翻译的训练效率(单位时间内可以训练更多的句对)和训练效果(大的批可以让梯度估计更加准确,梯度更新更加有效和迅速)。
25.为实现上述目的,按照本发明的第二方面,提供了一种神经机器翻译系统的动态大小训练批形成系统,该系统包括:计算机可读存储介质和处理器;
26.所述计算机可读存储介质用于存储可执行指令;
27.所述处理器用于读取所述计算机可读存储介质中存储的可执行指令,执行第一方面所述的神经机器翻译系统的动态大小训练批形成方法。
28.优选地,所述处理器包括配置模块,用于维护平行语料类型和解析器对应关系、文本语言和切分器对应关系、字典大小、句对块大小和批大小。
29.总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
30.本发明在神经机器翻译系统训练中根据句子词条数动态调整训练批大小,经过排序后,句对块中的短的句对居前,并且长度接近的句对相邻,由于词条数接近的句对排序后在块中位置相邻,分组后的每组中的句对在词条数上比较接近,需要填充的句对和填充的长度较少。这样在相同显存下可以形成平均长度更大的训练批,提高训练的效率和效果。
附图说明
31.图1为本发明实施例提供的一种神经机器翻译系统的动态大小训练批形成方法流程图;
32.图2为本发明实施例提供的神经机器翻译系统的动态大小训练批形成装置的结构示意图;
33.图3为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
34.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
35.如图1所示,本发明提供了一种神经机器翻译系统的动态大小训练批形成方法,包括:
36.步骤100:从平行语料获得句对流。
37.具体地,从平行语料中逐条读取数据,并进行解析,屏蔽平行语料格式差异(不同平行语料格式对应不同的特定的子类化句对生成器),流式地获得平行语料中的源语言句子和目标语言句子对。
38.例如,不管平行语料是什么样的格式和结构,通过解析后,本步骤都产生(源语言句子,目标语言句子)迭代流。
39.步骤101:从句对流产生和保存源语言和目标词典。
40.具体地,对句对流进行迭代,获得句对,从配置中获得源语言和目标语言切分器,利用切分器对句对中的源语言句子和目标语言句子进行切分,得到源语言句子和目标语言句子的词条列表。通过词条列表更新源语言和目标语言词典中维护的唯一词条。对源语言
和目标语言词典的唯一词条进行编号,并保存词典供文本向量化使用。
41.例如,英中句对(i am a teacher,我是老师)经过英文(按词切分)和中文切分器(按字切分)切分后分别得到词条列表i,am,a,teacher和我,是,老,师。源语言词典和目标语言词典开始为空,这个句对处理完后,它们的唯一词条集合分别为{i,am,a,teacher}和{我,是,老,师}。最后,经过编号的词典内部是一个词典映射结构:{a:1,the:2,

},{是:1,的:2,

}。
42.步骤102:对平行语料中源语言和目标语言句子进行向量化。
43.具体地,按照步骤100生成平行语料的句对流,加载源语言和目标语言词典,对句对流进行迭代,从配置中获得源语言和目标语言切分器,利用切分器对源语言句子和目标语言句子进行切分,查找字典将切分的词条转换成编号id,从而文本句子向量化为数字id序列。
44.例如,句对(i am a teacher,我是老师)经过切分和转换后,生成数字序列列表的元组:([81,9,1,135],[11,1,99,189])。
[0045]
步骤103:按照句子词条数对向量化句对块中的句对进行升序排序。
[0046]
具体地,对向量化句对进行成块缓冲,每次取一个向量化句对块,并对向量化句对(两个数字序列的元组)块中的句对根据两个数字序列的总长进行升序排序。缓存句对块的大小可以根据配置指定,但一个缓存句对块中的句对应该能形成多个批。
[0047]
经过排序后,句对块中的短的句对居前,并且长度接近的句对相邻。
[0048]
步骤104:对排序后的句对块进行分组和填充,产生动态大小训练批。
[0049]
具体地,根据配置中指定的每个批的词条总数对排序后的句对块进行分组,除最后一组外,其他组都具有相同的词条总数。对分组后的每组中的句对按照该组中最长(词条数最多)进行补0填充,得到具有相同词条总数但不同句对数的动态大小训练批。
[0050]
由于词条数接近的句对排序后在快中位置相邻,分组后的每组中的句对在词条数上比较接近,需要填充的句对和填充的长度较少。另外,前面的训练批拥有更多的句对,后面的训练批句对较少。
[0051]
如图2所示,为本发明实施例提供的神经机器翻译系统的动态批生成装置的结构示意图,包括:句对生成模块200、预处理模块201、词典模块202、向量化模块203、缓存模块204、排序分组模块205、批生成模块206和配置模块207,其中:
[0052]
句对生成模块,读入和解析平行语料,产生句对流。
[0053]
具体地,句对生成模块从平行语料中逐条读取数据,并进行解析,屏蔽平行语料格式差异(不同平行语料格式对应不同的特定的子类化句对生成器),流式地获得平行语料中的源语言句子和目标语言句子对。句对生成模块也是平行语料上的源语言句子和目标语言句子元组迭代器和生成器。
[0054]
预处理模块,扫描平行语料,生成和保存源语言和目标语言词典。
[0055]
具体地,预处理模块从句对生成模块获得句对,使用配置的源语言和目标语言切分器得到源语言文本和目标语言文本的词条列表,并构造源语言和目标语言词典,即源语言和目标语言词条到id的映射,并保存词典供文本向量化使用。
[0056]
词典模块,保存、加载词典,完成词条和id间的映射。
[0057]
具体地,词典模块序列化和反序列化词典结构,根据词条查询对应id,以及根据id
查询文本词条。
[0058]
向量化模块,对句对向量化,得到向量化句对。
[0059]
具体地,向量化模块从句对生成模块获得句对,使用配置的源语言和目标语言切分器对源语言句子和目标语言句子进行词条化,并利用预处理模块生成的词典将词条映射为标识id,最终生成供深度学习模型训练的列表数组或不规则张量。
[0060]
缓存模块,对向量化句对进行缓存。
[0061]
具体地,缓存模块缓存向量化模块生成的向量化句对,以块的方式提供对向量化句对的读取,块的大小可以根据可用内存进行配置。
[0062]
排序分组模块,对向量化句对块进行排序和分组。
[0063]
具体地,排序分组模块根据向量化句对的长度(句对的长度为源语言句子词条数和目标语言句子词条数之和),对从缓存模块获得的每个向量化句对块进行升序排序,并根据设置的批大小(批大小为一批中所有句对的长度之和)对块进行分组,除最后一组外,每组长度等于设置的批大小。
[0064]
批生成模块,从排序分组生成动态大小的训练批。
[0065]
具体地,批生成模块对排序分组模块生成的一组数据中长度不一的句对按照该批中最大句对长度进行句末0填充,得到长度一致的句对组,并将句对组进一步转换成训练程序需要的批张量。
[0066]
配置模块,用于维护运行过程中可以定制的配置信息。
[0067]
具体地,配置模块维护平行语料类型和语料解析器对应关系、文本语言和切分器对应关系、词典大小、句对块大小、全局批大小等配置信息,并通过属性存取的方式实现对配置信息的访问。
[0068]
本发明提供的神经机器翻译系统的动态大小训练批形成方法及装置所产生的训练批平均可以包括更多的句对,也就是平均批大小更大,这可以降低神经机器翻译系统的训练收敛时间,提高训练效率,更好逼近全局最优点,获得更好训练效果;另外,按照本发明产生的训练批有更小的填充,可以更充分利用gpu的计算和存储能力,降低整个语料的训练时间,提高训练速度。
[0069]
图3为本发明实施例提供的电子设备的实体结构示意图,如图3所示,所述电子设备可以包括:处理器(processor)310、通信接口(communications interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储在存储器330上并可在处理器310上运行的计算机程序,以执行上述各方法实施例所提供的神经机器翻译的动态训练批形成方法。
[0070]
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者所述技术方案的部分可以软件产品的形式体现出来,所述计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0071]
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述各方法实施例提供的神经机器翻译的动态训练批形成方法。
[0072]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0073]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,所述计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0074]
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1