UNION An Unreferenced Metric for Evaluating Open-ended Story Generation精读
UNION An Unreferenced Metric for Evaluating Open-ended Story Generation精读
UNION: 一种评估开放故事生成无参考文本依赖metric模型,这是一篇EMNLP 2020的论文 (Empirical Methods in Natural Language Processing 2020)
1 背景
常见的文本生成评价指标有BLEU 和MoverScore,但BLEU 和MoverScore又一个巨大的缺陷。在NLG任务中,对于相同的输入,NLG模型可以生成各种各样的文本,这些各种各样的输出在字符层面和语义层面上经常和参考文本不一致,但是这些不一致的文本也可以是合理的文本;在另一方面NLG模型生成的一些文本和参考文本字符层面上比较一致,但这些比较一致的文本又不一定是合理文本。
如表中所示, Sample2是NLG生成文本,和Reference在字符层面和语义层面上不一致,但smaple也是一个符合人类逻辑的文本。Sample3也是NLG生成文本,和Reference在字符层面和语义层面较为一致,但不是一个符合人类逻辑的文本。因为句子”Jack started drinking“是在 “The bartender told him it was already time to leave.”的后面,但从逻辑上讲是先有喝酒,才有后面的酒吧员工劝Jack下班了该撤了。
表中B表示BLEU, M表示MoverScore, U表示Union,分数越接近1.0说明文本越接近人类写作文本。 BLEU 和MoverScore对Sample2都是很低的分数,但作者提出的Union网络有最高分数1.0;BLEU 和MoverScore对Sample3都有一定的分数,但作者提出的Union网络有最低分数0.0。显然对于Sampl2和Sample3的在是否符合人类逻辑性的人物上,Union模型是最好的。
2 UNION网络的结构
UNION网络结构如图所示
UNION的训练样本正样本是人类写的故事,负样本是通过Repetition(重复), Substitution(替代), Reordering(乱排), Negation Alteration(否定改写)等几种负样本生成方法创造。最后训练输入代入一个基于Bert的二分类模型中对文本进行判断,判断是否为人类写的故事还是负样本。
3 四种NLG错误
为什么作者认为Repetition(重复), Substitution(替代), Reordering(乱排), Negation Alteration(否定改写)可以生成与人类写的故事对应的负样本了?是因为作者统计过NLG生成故事中常见的错误有四种,而且对应上面四种负样本生成策略。
作者分析381篇根据Plan&Write和微调GTP-2生成文本,总结下述NLG错误
第一种错误是Repeated plots,即相同文本被重复,占总体错误的44.1%;第二种错误是Poor coherence,即生成故事和主干内容无关的关键词和事件,占总体错误的56.2%;第三种错误是Conflicting logic,即生成故事有错误的因果关系和时间顺序,占总体错误的67.5%;第四种错误是Chaotic scenes,即生成故事有很难理解的文本和前文矛盾的错误,占总体错误的50.4%。而且每两种错误类型之间Spearman相关性均小于0.15(p值> 0.01),因此作者采用这四种错误来生成负样本。
3.1 Repetition
Repetition针对Repeated plots错误,有两种具体的负样本产生策略,分别是句子级的重复和词语N-gram级的重复。
句子级的重复是随机选择n个非首句子,然后重复其中一个句子,比如一篇文章句子 有6个,比如一篇文章是[1 2 3 4 5 6],选择3个非首句子是2 3 6,这里假设重复第二句,则第3句和第6句会被第2句内容覆盖,即1 2 3 4 5 6 ==> 1 2 2 4 5 2
词语N-gram级的重复是随机选择n个非首句子, 然后每个句子中挑选一个token的n-gram重复一遍。比如句子Rome was not bulit in one day. 挑选其中一个token为was,选定2-gram重复,即选定了was not bulit重复一遍,则得到负样本为Rome was not bulit was not bulit in one day.
3.2 Substitution
Substitution针对Poor coherence错误,有两种具体的负样本产生策略,分别是句子级的替换和词语级替换。 句子级替换是随机选择n个非开头句,用语料库中其他作文的某一句进行替换。假设一篇作文是I love cat. I love dog. Beacause i love animale. 选择1个非开头句即第2句进行替换,此时从作文语料库其他作文那随便抽了一个句子Rome was not bulit in one day来替换,得到负样本为I love cat. Rome was not bulit in one day. Beacause i love animale. 词语级替换是随机选择n个非开头句,句子中15%关键词替换成反义词,否则替换成同一词性的关键词。其中关键词和反义词会使用一个叫知识图谱ConceptNet,它是一个三元组知识图谱(h, r, t), 第1个元素是头部实体,第2个元素是关系,第3个元素是尾部实体。全体h和t构造的集合就是关键词集合,如果h和t的关系是反义关系,即认为h和t互为反义词。作者采用NLTK来对英文进行词性标注。假设输入的文章是I like playing computer game.则经过本策略,可得到的一个负样本可能为I hate playing computer game.
3.3 Reordering
Reordering针对Conflicting logic错误,即打乱非开头的句子的排序。比如一篇文章是[1 2 3 4 5 6],则需要随机打乱2 3 4 5 6的顺序,即1 2 3 4 5 6 ==>1 2 3 5 6 4
3.4 Negation Alteration
Negation Alteration针对Chaotic scenes错误,即随机选择n个非首句子,否定句变成肯定句,肯定句变否定句。通过动词前加don’t, doesn’t等形式,否定词去掉not实现
假设输入的文章是Bill love Alice .则经过本策略,可得到的一个负样本为Bill don’t love Alice.
3.5 负样本样例
正样本生成负样本有四种策略,一个正样本可以采用多个策略来生成,比如下面的负样本采用了Repetition、Reordering、Negation Alteration三种策略来生成。
4 网络结构
首先是Bert得到Hidden State,接着作者设计来两个任务来训练完了过,第一个是主任务,即预测一篇文章是否接近人类,预测输出是一个0到1的浮点数,数值越接近1说明文章越接近人类;第二个任务是还原任务,即模型要预测当前词语是否是正样本对应词语。
第一个任务是[CLS]这个token的hidden state进入一个线性层+Sigmoid函数,采用交叉熵损失
第一个任务每一个real token的hidden state进入一个线性层+Softmax函数,采用广义交叉熵损失,但只针对预测正确的token。
两个任务的损失函数采用权重相加来构造总体损失函数,其中lambda是一个可设置的超参数,作者在论文中取0.1
5 BaseLine
作者采用了三类BaseLine,一类是基于参考文章的Referenced metrics,一类是不基于参考文章的Unreferenced metrics,还有一类是混合度量Hybrid metrics.
Referenced metrics采用的模型有基于n-gram重合度的BLEU,和基于embeding空间中推土机距离计算和Ref的相似程度MoverScore
Unreferenced metrics采用的模型有困惑度Perplexity,和基于Bert的度量,容易对特定数据集overfit的DisScore
Hybrid metrics采用的BLEURT和RUBER-BERT,其中RUBER-BERT有无参考的RUBER-BERT和有参考的RUBER-BERT
BLEURT
无参考的RUBER-BERT
有参考的RUBER-BERT
6 数据集
作者采用了2个数据集,ROC和WP。
ROC 是一个98,161五句文本构成的故事数据集, 平均每个故事有49.4词, 使用[MALE] [FEMALE] [NEUTRAL]对名字进行mask处理。 WP 是一个有303,358篇文章的故事数据集, 平均每个故事有734.5词语, 因为这个数据集中故事太长作者对每个故事截断取200词语.
作者采用90% ,5%,5%的比例划分训练集、验证集和测试集。
但作者针对BLEURT这个metric模型,采用seq2seq ,plan&write, 微调 GPT-2 ,基于知识库 GPT-2来创造负样本, 然后进行人工标注。所有模型使用同一个测试集,测试集是专门在外包平台让人标注的数据。
7. UNION效果
表中的相关系数计算的是模型标注分数和人类标注分数,显然这个相关系数越来高说明模型越接近人类。从上表中明显看出,UNION模型三个相关系数指标均远远高于其他度量模型,从而证明了UNION模型的优秀。
上表是验证UNION鲁棒性,看看UNION对于Dataset Drift是否也有良好的表现,实验证明在鲁棒性上UNION也是优于其他度量模型的。
UNION An Unreferenced Metric for Evaluating Open-ended Story Generation精读的更多相关文章
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
- Networked Graphics: Building Networked Games and Virtual Environments (Anthony Steed / Manuel Fradinho Oliveira 著)
PART I GROUNDWORK CHAPTER 1 Introduction CHAPTER 2 One on One (101) CHAPTER 3 Overview of the Intern ...
- 学习笔记之Machine Learning Crash Course | Google Developers
Machine Learning Crash Course | Google Developers https://developers.google.com/machine-learning/c ...
- 论文阅读笔记四十七:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression(CVPR2019)
论文原址:https://arxiv.org/pdf/1902.09630.pdf github:https://github.com/generalized-iou 摘要 在目标检测的评测体系中,I ...
- Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression 2019-05-20 19:3 ...
- 『计算机视觉』Generalized Intersection over Union: A Metric and A Loss for Bounding BoxRegression
论文地址:Generalized Intersection over Union 一.相关工作 目标检测精度标准 度量检测优劣基本基于 IOU,mAP 是典型的基于 IOU 的标准,但是 mAP 仅有 ...
- union 类型(即sum types)在golang语言中的实现
http://www.jerf.org/iri/post/2917 Sum Types in Go posted Jun 02, 2013 in Programming, Golang, Haskel ...
- SQL Server-聚焦UNIOL ALL/UNION查询(二十三)
前言 本节我们来看看有关查询中UNION和UNION ALL的问题,简短的内容,深入的理解,Always to review the basics. 初探UNION和UNION ALL 首先我们过一遍 ...
- SQL 提示介绍 hash/merge/concat union
查询提示一直是个很有争议的东西,因为他影响了sql server 自己选择执行计划.很多人在问是否应该使用查询提示的时候一般会被告知慎用或不要使用...但是个人认为善用提示在不修改语句的条件下,是常用 ...
随机推荐
- python批量definition query
import arcpy mxd = arcpy.mapping.MapDocument("current") for lyr in arcpy.mapping.ListLayer ...
- CAD插件
CAD插件使用: 1.首先得有插件,插件解压,放那个盘都可以,只要自己觉得放得下,注:(每次打开CAD想要用插件都要的步骤)打开CAD---AP回车----找到插件所在文件夹-------Ctrl+A ...
- Moviepy音视频开发:视频转gif动画或jpg图片exe图形化工具开发案例
☞ ░ 前往老猿Python博文目录 ░ 一.引言 老猿之所以学习和研究Moviepy的使用,是因为需要一个将视频转成动画的工具,当时在网上到处搜索查找免费使用工具,结果找了很多自称免费的工具,但转完 ...
- 第2.2节 Python的语句
上节已经介绍了极简的Python代码编写,已经用到了赋值语句,本节对Python的程序语句进行介绍. 一. 常用命令 在介绍Python语句之前,先介绍一下几个有用的Python命令. dir(模块名 ...
- hugegraph 数据存取数据解析
hugegraph 是百度开源的图数据库,支持hbase,mysql,rocksdb等作为存储后端.本文以EDGE 存储,hbase为存储后端,来探索是如何hugegraph是如何存取数据的. 存数据 ...
- jQuery插件的2种类型
1.封装方法插件 封装方法插件在本质上来说,是一个对象级别的插件,这类插件首先通过jQuery选择器获取对象,并为对象添加方法,然后,将方法进行打包,封闭成一个插件,这种类型的插件编写简单,极易调用 ...
- springboot中使用h2数据库(内存模式)
使用H2的优点,不需要装有服务端和客户端,在项目中包含一个jar即可,加上初始化的SQL就可以使用数据库了 在springboot中引入,我的版本是2.1.4,里面就包含有h2的版本控制 <!- ...
- STL——容器(List)List 的数据元素插入和删除操作
push_back(elem); //在容器尾部加入一个元素 1 #include <iostream> 2 #include <list> 3 4 using namespa ...
- HTTP/2做错了什么?刚刚辉煌2年就要被弃用了!?
GitHub 19k Star 的Java工程师成神之路,不来了解一下吗! GitHub 19k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 19k Star 的Java工 ...
- 容器服务 TKE 存储插件与云硬盘 CBS 最佳实践应用
引言 随着自研上云的深入,越来越多的有状态服务对于在 TKE 集群中使用云上存储能力的需求也越来越强烈. 目前腾讯云容器服务 TKE(Tencent Kubernetes Engine已支持在 TKE ...