最小错误率训练(mert)基本原理学习

在看本博文之前,最好阅读如下三篇文章:

1. Discriminative Training and Maximum Entropy Models for Statistical Machine Translation

2. Minimum Error Rate Training in Statistical Machine Translation

3. Z-MERT: A Fully Configurable Open Source Tool for Minimum Error Rate Training of Machine Translation Systems

mert主要运用于机器翻译的参数调节过程中。由于目前主流的机器翻译模型多为log-linear模型,在log-linear模型中,有很多参数weights,对于每一个特征,都有与之对应的weight。如何调节这些weights,才能获取更好的翻译结果呢?Och提出了mert——最小错误率训练的方法用于调节参数。

其实在Och之前就有参数调节的方法,他们优化的目标多为翻译结果的最大翻译概率,采用的方法多为梯度下降、Powell搜索等,由于目标函数的特性,这些方法都能够搜索到最优的结果。

但是这些方法有一个弱点,优化目标和机器翻译评测的目标不一致,出现了分歧。虽然有的时候能够获取较好的优化目标,但是不一定能取得较好的翻译评测的目标。但通常人们多以翻译评测的目标作为翻译质量的评价。因此,Och直接采用了翻译评价指标作为优化目标函数。

接下来,我们来看看Och的mert基本原理!

假设我们优化如下权重向量,Λ = {λ1, ..., λd, ..., λM}的dth维。此时,我们固定其他维度,只有dth维进行变化。对于每一个外文句子f,都有一个翻译候选集合{e1, ..., eK},

因此,每一个候选的得分如下:

由于此时,我们固定dth维,因此,该公式变换为如下形式:

可以看出,上述公式只有λd是变量,其他都是常量,我们进一步变化该公式:

此时对于一个翻译候选,我们抽象成了一条直线。该直线的y为score得分,x轴为λd.对于每一个外文句子,我们即可构建如下图:

图中加粗的为得分上限。根据不同的λd,我们可以得到不同的得分。可以看出,在两条之间的交点处会发生得分的变化,得分变化,翻译候选随之而变,翻译的评价指标也会跟随变化。因此,我们只考虑所有直线的交点即可。

对于两个外文句子而言,我们可以得到如上图:

首先,我们需要计算所有的直线交点,求完之后。然后根据这些交点进行划分x轴,可以得到很多区间。在每一个区间,我们计算出每一个外文句子对应的最优直线(最优得分)。然后将一个区间内的所有外文句子的最优直线进行合并,即可得到翻译结果,此时可以根据不同的翻译评测目标进行评价该结果译文。然后遍历所有的区间,即可得到在哪一个区间内会取得较好的翻译评测目标。将该区间的λd作为Λ的dth维度的值。

上述讲解了如何优化某一维度(固定其他维度)的方法原理!

接下来我们讲述一下mert优化算法的整体框架!

上述为zmert的算法框架图,我们以此进行讲解,其他mert方法框架基本一样。

算法的1-3行:进行初始化参数向量空间、错误率以及NBest候选集合。

算法的4-35行:进行每一轮的迭代,基本上5-10轮即可收敛。

算法的5-6行:根据此时的参数向量空间,运行翻译解码器生成NBest候选,然后和已有的总NBest候选进行合并。如果合并之后的NBest候选和已有的NBest总候选一样,也就是总的NBest候选不在变化,说明已经收敛,退出。

算法的8-9行:设置不同的起点,当前的参数向量作为第1个起点,同时随机其他的几个起点。这一步是为了防止局部最优,尽量每轮选取不同的起点。

算法的12-33行:对于每一个起点,进行调节参数。

算法的14-27行:进行调节某一个起点的参数。

算法的16-23行:对该起点的每一维度进行调节,选出最优的某一维度。

===============总结==================================

mert调节参数的过程可以抽象成机器学习的问题。运用机器学习的理论进行

求解最优值。Och将翻译候选抽象成了直线,并且利用直线的性质进行调节

参数的方法听巧妙的!

如果有任何疑问,可以email我,[email protected]

最小错误率训练(mert)基本原理学习

时间: 2024-08-29 19:28:19

最小错误率训练(mert)基本原理学习的相关文章

Matlab中常见的神经网络训练函数和学习函数

一.训练函数 1.traingd Name:Gradient descent backpropagation (梯度下降反向传播算法 ) Description:triangd is a network training function that updates weight and bias values  according to gradient descent. 2.traingda Name:Gradient descent  with adaptive learning rate

CIFAR-10数据集图像分类【PCA+基于最小错误率的贝叶斯决策】

CIFAR-10和CIFAR-100均是带有标签的数据集,都出自于规模更大的一个数据集,他有八千万张小图片.而本次实验采用CIFAR-10数据集,该数据集共有60000张彩色图像,这些图像是32*32,分为10个类,每类6000张图.这里面有50000张用于训练,构成了5个训练批,每一批10000张图:另外10000用于测试,单独构成一批.测试批的数据里,取自10类中的每一类,每一类随机取1000张.抽剩下的就随机排列组成了训练批.注意一个训练批中的各类图像并不一定数量相同,总的来看训练批,每一

基于最小错误率的贝叶斯决策

本文主要参考资料 最小错误率是在统计的意义上说的,请注意其含义. 在这里要弄清楚条件概率这个概念.P(*|#)是条件概率的通用符号,在“|”后边出现的#为条件,之前的*为某个事件,即在某条件#下出现某个事件*的概率.P(ωK|X)是表示在X出现条件下,样本为ωK类的概率. 一个事物在某条件下出现的概率P(*|#)与该事件在不带任何条件下出现的概率(写成P(*))是不相同的.例如全世界人口有60亿.因此你见到一个人在不带任何条件下,有20%的可能性是中国人P(*)=0.2,但是如果你在中国,或香港

「日常训练与知识学习」树的分块(王室联邦,HYSBZ-1086)

题意与分析 这题的题意就是树分块,更具体的看题目(中文题). 学习这一题是为了树的分块,为树上莫队做铺垫. 参考1:https://blog.csdn.net/LJH_KOQI/article/details/52326103 参考2:https://blog.csdn.net/popoqqq/article/details/42772237 注意到题目要求某块区域所有的点到根的路径上的点都属于该区域.因此不能够暴力地去dfs,每找到\(B\)个分一块是不可取的,因为无法保证联通性(一颗子树的下

双向数据绑定---AngularJS的基本原理学习

Angular JS (Angular.JS) 是一组用来开发Web页面的框架.模板以及数据绑定和丰富UI组件.它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作. AngularJS非常小,仅仅有60K,兼容主流浏览器.与 jQuery 配合良好.双向数据绑定可能是AngularJS最酷最有用的特性,将MVC的原理展现地淋漓尽致. AngularJS的工作原理是:HTML模板将会被浏览器解析到DOM中, DOM结构成为AngularJS编译器的输入. AngularJS将会遍历D

数组求最大,最小,和,平均 学习笔记

package com.ctgu.java.exer; public class TestArray3 { public static void main(String[] args){ int[] arr = new int[]{12,43,9,0,-65,-99,100,9}; int max = arr[0]; for(int i = 1; i < arr.length;i++ ){ if(max < arr[i]){ max = arr[i]; } } System.out.print

kafka基本原理学习

下载安装地址:http://kafka.apache.org/downloads.html 原文链接 http://www.jasongj.com/2015/01/02/Kafka深度解析 Kafka主要术语直观解释 BrokerKafka集群包含一个或多个服务器,这种服务器被称为broker Topic每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic.(物理上不同topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或多个broker上但用户只需指定消息的top

GC基本原理学习(Garbage Collected)

引言 Java的内存动态分配和垃圾收集的问题,都交给了JVM来处理.注意,将JVM运行数据区(虚拟机栈[栈帧],程序计数器,堆内存)粗略的分为栈和堆(所有线程共享),回收的是堆中的对象实例.不是栈中的引用类型. 那么JVM是如何处理的? 从三个问题来分析: 1. 哪些内存需要回收? 2. 什么时候进行回收? 3. 如何回收? 注:现代收集器基本采用分代收集算法,堆分为:新生代和老年代. 1. 哪些内存需要回收?什么时候回收? 1.1 了解下对象的创建: 通过new 关键字. JVM遇到new指令

tensorFlow-深度学习训练并行模式

1.简介 TensorFlow可以很容易地利用单个GPU加速深度学习模型的训练过程,但要利用更多的GPU或者机器,需要了解如何并行化训练深度学习模型.常用的并行化深度学习模型训练方式有两种,同步模式和异步模式. 2.两种模式的区别 为帮助读者理解这两种训练模式,首先简单回顾一下如何训练深度学习模型.下图展示了深度学习模型的训练流程图.深度学习模型的训练是一个迭代的过程.在每一轮迭代中,前向传播算法会根据当前参数的取值计算出在一小部分训练数据上的预测值,然后反向传播算法再根据损失函数计算参数的梯度