案例来源:@微软研究院AI头条
案例地址:https://www.jiqizhixin.com/articles/2018-07-22-10
1. 目标:实现对英文作文的自动改错(见:https://mp.weixin.qq.com/s/6vPhyKnh4U4JYu-okDUX6Q,并从拼写、语法准确性、行文流畅性、内容丰富性、词汇句式使用程度等多个维度进行打分)
2. 难点:
1)当前主流的seq2seq模型,基本训练数据未一个原始句子和一个正确句子的改错句对。但目前受限于改错句对的数据量,模型效果与泛化能力有限
2)当一个句子有多个错误点,单次的seq2seq推断往往不能全部改正,需要多伦seq2seq
3. 解决方案:流畅度提升学习与推断(fluency boost learning and inference)
1)流畅度提升学习:训练过程中,seq2seq模型产生的结果中流畅度不如正确句子的,组成改错句对,作为下一轮训练的训练数据
2)流畅度提升推断:利用seq2seq对句子进行多轮改错,直到流畅度不再提升
4. 流畅度提升学习:
1)定义流畅度:P(xi|x<i)为给定上文x<i,P(xi)的语言模型概率。H(x)实质上为句子x的交叉熵,其取值范围为[0,+∞),因此f(x)取值范围为(0,1]
2)核心是数据增强:
a. back-boost:反转原句和正确句子,训练一个专门用来生成错误句子的模型
b. self-boost:对于seq2seq生成的n-best句子,加入一些错误,生成错误句子
c. dual-boost:结合上述两者,让back-boost和self-boost各自生成了流畅提升句对
5. 流畅度提升推断
1)依然采用多轮推断的方式,反复进行句子改错
2)提出了一种更加有效的方法——往返修改,利用一个反向(右到左)解码器和一个正向(左到右)解码器交替地对一个句子进行修改
3)用反向模型能够很容易地把冠词错误改正,这是因为冠词错误的修正更加依赖于冠词位置右边的上下文
4)主谓一致错误的改正往往需要依赖位于谓语动词左边的主语的人称和单复数。而这一类型的错误又可以被正向模型发现并改正