根据Survey of Data-Selection Methods in Statistical Machine Translation的总结,MT中的数据选择分类图如下:

使用场景 数据使用的场景决定了选择什么样的数据,及该方法要解决什么问题。

  • Improve Quality:Domain Improvement、Unhelpful Data Reduction、Noise Reduction
  • Limited Resources:Training Resources、Deployment Resources、Human Labeling Resources

评估方法

特征结合

问题定义

句子打分函数

  • 上下文无关(depend on nothing but the candidate sentences in question):语言模型、对齐模型、其他
  • 依赖上下文(depend on the selected pool):语言模型、短语表、解码器、n元统计信息

选择算法

  • 依据阈值过滤
  • 贪心搜索
  • 子模块最优化
  • 主动学习
  • Batch Model Learning

  

下面是一些经典的论文的总结,供个人学习用,写的不当的地方请轻喷~


Dynamic Data Selection for Neural Machine Translation 2017

静态数据选择

最初源自Moore-Lewis 2010的数据选择方法——交叉熵之差CED:用in domain\general domain 源端语料分别训练语言模型,再计算候选句子的in domain和general domain交叉熵之差,越低表示离in domain越近离general越远。(其中的语言模型可以是n gram语言模型或者LSTM等等)

上面方法的source、target双语变种 Axelrod 2011:源端的CED+目标端的CED

文章中用的双语的变种,语言模型是LSTM

动态数据选择

sampling

  1. 按照上述静态数据选择的方法给训练集中的句子对打分,排序;
  2. 把上述CED分数标准化到0-1之间,生成新的分数CED‘,离in domain越近的,CED‘分数越高(1 - 最大最小归一化的结果);
  3. 再把CED‘的分数归一化为权重;
  4. 每个epoch按照权重采样,不重复采样,分数高的句子会被多次采样

gradual fine-tuning

依照fine tune的灵感,先在general 数据集G上训,再在in domain数据上微调:本文逐步减小训练集G的大小,比如每两个epoch换一次数据,选的数据是上一轮排名靠前的60%——1、2个epoch在整个G上训练;3、4epoch选择在G中静态数据分数排名靠前的60%,总量是0.6*|G|;第5、6epoch选择3、4个epoch中静态数据分数排名靠前的60%,总量是0.6*0.6*|G|。。。

结果是LSTM 好于n gram、gradual fine-tuning好于sampling

Boost neural machine translation 2017

翻译PPL高的句子结构复杂,更难翻译,NMT应该花时间关注更难的句子。句子按翻译的ppl排序。

实验策略:

  • boost——在original基础上加入10%高ppl的句子;
  • reduce——去掉20%低ppl排名的句子,即保留80%高ppl的翻译句子。依次保留整个训练集中高ppl的100%-80%-64%-100%-80%-64%-100%-...。(此方法结果最好)
  • bootstrap——random resampling 100%,从original中再次sampling,所以有些低ppl的或者高的会消失/重复出现

Dynamic Sentence Sampling for Efficient Training of Neural Machine Translation 2018

zhang 17(即上篇)的文章用sentence-level training cost作为衡量句子翻译质量的手段,训练损失越小代表模型把句子学的好,缺点有两个:训练损失小的句子继续训练可能还可以提升;如果训练数据不断变小,但是这些被移除句子中包含的知识可能在NMT的训练过程中逐渐被丢弃掉。

这篇文章用句子两次迭代的训练损失之差(the differences between the training costs of two iterations)作为句子翻译质量能否被提升的衡量标准。越小表示这句话的损失不太可能变化,所以这句话继续训练对NMT没有帮助:

  (上一次的训练损失 - 该次训练损失)/ 上一次的训练损失 = 该次的dif

  dif(差异度)可能是正值,也可能是负值。所以要最大最小归一化到【0,1】之间 = criterion

实验方法:

  • weighted sampling WS——上述criterion值转换为归一化的概率分布,按照权重子采样整个训练集的80%(不重复采样)作为下一iteration的训练集,训练目标函数也会更新为在选的的子训练集上。一个句子可能在一个子采样的过程中没有被选择,但是在下一个子采样的过程中,由于被选择句子的criterion都发生了变化,未被选择的句子的criterion不变,因此weight也会发生变化,所以该句子仍有可能被选择到。
  • review mechanisim RM——选择的80% top-ranked数据组成了 ,未被选择的20%数据组成了  ,中的数据在训练中也就无法被选择了。而且会随着训练过程越来越大,因此可能导致一些信息丢失。为了避免这个问题,论文引入了一个参数  ,比如为10%,则表示采样  中10%的数据进行复习。损失函数中会由两部分组成。(该方法效果更好)

在极大数据集的训练中还提到可以采用小部分已经训练的和未训练过的句子相似度作为采样句子的一个标准。

Feature Decay Algorithms for Neural Machine Translation 2018

是一种transductive data selection method ,最初用在SMT中有很好的效果,现在把它用在NMT中。

FDA:用test set的源端来选择句子,让选择的样本能与该set最相关。一旦n gram被选上,就减小它们的值,FDA通过这样来最大化所选择训练集中relevant n-grams的方差。具体方法要看下面。

方法:

  1. 首先从test集抽取n-grams作为特征,这些特征有初始值,该值表明被选择的相关性;每个候选句也有总得分。
  2. 迭代的选择分数高的句子加入set L,选择一句话后,计算set L中已选择的数据的某个特征出现的次数,该特征的分值会随出现的次数增加而衰减。这样使得下一次选择之前没被选择的特征。

特征分值衰减公式:

  L is the set of selected sentences,CL(f) is the count of the feature f in L

句子得分的计算:sentences are scored as the normalized sum of values of contained features.

  ,Fs是句子s中的特征集

文章中的是3元特征,还用了第一篇文章中gradual fine-tuning的设置,训练集测试集都是WMT2015的实验结果中,在用FDA选择少量数据(100k 200k)时,先训练base model、到最后一轮再用FDA选择的数据微调比较好;当FDA选择的数据到500k时,只用FDA选择的数据从头训NMT模型效果更高。

Adaptation of Machine Translation Models with Back-translated Data using Transductive Data Selection Methods 2019

上篇的同一作者

Transductive Algorithm(TA)是利用test集的信息获取句子:

  • Infrequent n-gram Recovery(INR)-选择包含不频繁n-gram的句子

  

  t是阈值:超过代表该n-gram频繁,小于代表ngr不频繁。
  如果选择池中的ngr超过阈值t,则对句子分数没贡献=0

  • FDA

  (前面有提到)

原本是用test集(源端)作为种子,现在用通用NMT模型把test翻译为目标端,也作为种子,对源端和目标端种子都用TA方法选择数据,把两者选的数据combine

a和1-a,分别代表从TAsrcTAtrg中选的数据比例

方法比较见下图:

TA还包括TF-IDF距离

词频逆文档频率

稀有词比常见词对句子相似度的指示性更强

下面两篇论文均有利用该指标

Extracting In-domain Training Corpora for Neural Machine Translation Using Data Selection Methods 2018

Dynamic Data Selection and Weighting for Iterative Back-Translation 2020

tf是term在文档中出现的频率;df是多少个文档中包含term(idf is the inverse document frequency),N是文档数

该文中(we apply tokenization, remove punctuation and common stopwords in the texts, and finally truecase the sentences)把数据集中的每个句子当文档,词当作term。

计算词(term)对句子(文档)的tf-idf值,把句子中所有词的tf-idf向量平均作为整个句子的词向量表示,再计算in和general中句子词向量的cosine相似度,按cos相似度给general domain的句子排序,相似度越大离in domain越近。

   

Dynamic Data Selection and Weighting for Iterative Back-Translation 2020

相对于静态选择数据,对迭代反向翻译,提出一个新的课程学习策略。

该论文中提到句子由代表性和简单性两种指标进行评分,注意评分都分别最大最小归一化到[0,1]

  • 代表性指标:

  In-Domain Language Model Cross-Entropy(LM-in)、TF-IDF Scores (TF-IDF)、BERT Representation Similarities (BERT).

  • 简单性指标:

  General-Domain Language Model Cross-Entropy (LM-gen)、Round-Trip BLEU (R-BLEU)

说一下BERT Representation Similarities (BERT).

把句子送入multilingual bert,把除了[CLS] [SEP] 之外输入tokens在第8层的隐藏状态平均,得到句子的表示,根据句子表示可以计算单语中某个句子和in domain所有句子的cosine相似度。

两种评分标准由一个参数​lambda​​​​控制,该参数的来源是19的一篇CL的论文,代表了模型能力随epoch的变化曲线(按sqrt增加)。最初选的数据是简单性为主,随时间推移后期是选代表性的句子。

选择出的伪句子还会赋有权重,让翻译质量低的句子权重更小。提出两种当前质量估计方法:一种是计算伪平行句对分别用两个方向NMT模型的encoder的最后一层表示、再平均,算cosine相似度;另一种是计算伪平行句对在两个方向模型中的翻译概率、再计算条件概率之差绝对值、取负指数,值越大,句子质量越差。

还有计算句子质量进步的指标,该指标与当前质量结合了:

EMBEDDING-BASED METRICS

Improving Neural Machine Translation by Filtering Synthetic Parallel Data 2019

学习一个线性映射,把两种语言词向量映射到同一词向量空间,通过双语词向量分别得到句子词向量(词向量累加再平均),计算双语句子向量的cosine相似度,设定阈值,去掉小于threshold的句子。

1.在维基百科语料上用fastext训练韩语,英语词向量;

2.选排名靠前的4500个常用英语单词创建英语词表(不含功能词和停用词)

3.会用双语的人把英语词表翻译为韩语;

4.利用已有双语的词向量X,Z和双语词典,用现有的方法学习线性映射W。

【论文集合】机器翻译NMT中数据打分和数据选择的经典方法的更多相关文章

  1. python基础一 -------如何在列表字典集合中根据条件筛选数据

    如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) fi ...

  2. python数据结构-如何在列表、字典、集合中根据条件筛选数据

    如何在列表.字典.集合中根据条件筛选数据 问题举例: 过滤列表[1, 2, 5, -1, 9, 10]中的负数 筛选字典{“zhangsan”:97, "lisi":80, &qu ...

  3. 我们知道写入过程比ZooKeeper集合中的读取过程要贵,因为所有节点都需要在数据库中写入相同的数据。因此,对于平衡的环境拥有较少数量(例如3,5,7)的节点比拥有大量的节点要好。

    我们知道写入过程比ZooKeeper集合中的读取过程要贵,因为所有节点都需要在数据库中写入相同的数据.因此,对于平衡的环境拥有较少数量(例如3,5,7)的节点比拥有大量的节点要好. 组件 描述 写入( ...

  4. C# 从集合A中取出集合B中不包含的数据(根据ID判断),并添加到集合B中

    从一个集合A中取出另一个集合B中不包含的数据,并添加到集合B中 private void button2_Click(object sender, EventArgs e) { var ListA = ...

  5. Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据

    Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...

  6. 智能机器人chatbot论文集合

    机器不学习 jqbxx.com-专注机器学习,深度学习,自然语言处理,大数据,个性化推荐,搜索算法,知识图谱 今年开始接触chatbot,跟着各种专栏学习了一段时间,也读了一些论文,在这里汇总一下.感 ...

  7. 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):生物信息学中的图表示学习:趋势、方法和应用

    4.(2021.6.24)Briefings-生物信息学中的图表示学习:趋势.方法和应用 论文标题: Graph representation learning in bioinformatics: ...

  8. WPF中Grid绑定DataTable数据。

    1.首先引用DocumentFormat.OpenXml.dll 2.然后新建一个OpenExcelHelper类,将Excel转化为Datatable. /// <summary>    ...

  9. 使用jQuery解析JSON数据(由ajax发送请求到php文件处理数据返回json数据,然后解析json写入html中呈现)

    在上一篇的Struts2之ajax初析中,我们得到了comments对象的JSON数据,在本篇中,我们将使用jQuery进行数据解析. 我们先以解析上例中的comments对象的JSON数据为例,然后 ...

随机推荐

  1. 从菜鸟到大神:Java高并发核心编程(连载视频)

    任何事情是有套路的,学习是如此, Java的学习,更是如此. 本文,为大家揭示 Java学习的套路 背景 Java高并发.分布式的中间件非常多,网上也有很多组件的源码视频.原理视频,汗牛塞屋了. 作为 ...

  2. hash表及带注释插头dp

    struct hash_map { node s[SZ+10];int e,adj[SZ+10]; inline void init(){e=0;memset(adj,0,sizeof(adj));} ...

  3. NOIP模拟测试3「序列·熟练剖分·建造游乐园(play)」

    ---恢复内容开始--- 序列 刚调出来样例就A了,假装是水题. 因为是乱序,我们要求出来每两项之间最小公比,而不是直接比 求出来每两项之间最小公比,然后扫一遍就完了.(还要注意重复情况) 那么问题就 ...

  4. WPF添加外边框,添加外边框虚线

    <Border Background="LightBlue" BorderBrush="Black"  BorderThickness="2&q ...

  5. VBS脚本编程(1)——数据类型、变量和常量

    数据类型 VBS只有一种数据类型,称为Variant.而该类型是可变的,以下是Variant的子类型: 子类型 描述 Empty 未初始化的Variant.对于数值变量,值为0:对于字符串变量,值为零 ...

  6. ffmpeg-入门介绍(笔记)

    一.FFmpeg的基本组成 目前,ffmpeg有7大库,分别为AVFormat, AVCodec, AVFilteer, AVDecoder, AVUtil,Swresample, Swscale,A ...

  7. 有趣的开源项目集结完毕,HelloGitHub 月刊第 63 期发布啦!

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这里有实战项目.入门教程.黑科技.开源书籍.大厂开源项目等,涵盖多种编程语言 Pyt ...

  8. 生产环境部署Django项目

    生产环境部署Django项目 1.  部署架构 IP地址 安装服务 172.16.1.251 nginx uwsgi(sock方式) docker mysql5.7 redis5 Nginx 前端We ...

  9. Zabbix5.0Yum安装

    1.1.操作系统配置: 1.操作系统属性(虚拟机下环境): (1)操作系统版本: [root@localhost ~]# cat /etc/redhat-release CentOS Linux re ...

  10. Linux云计算-02_CentOS Linux 7.X系统管理

    Linux系统安装完毕,需要对Linux系统进行管理和维护,让Linux服务器能真正应用于企业中. 本章介绍Linux系统32位与64位区别.内核命名规则.引导原理.启动流程.TCP/IP协议概述.I ...