文章目录
背景
在阅读其他论文时看到有引用这篇文章的LOLS-NLG模型,所以来看看这是个什么玩意儿。
原文及项目代码(Java版)
首先说一下LOLS,是Locally Optimal Learning to Search的缩写,是模仿学习中对Structure Prediction的一种算法,其他的算法还有数据聚合(DAgger)、基于搜索的结构预测(SEARN)等。
如果对模仿学习不甚了解,可以先通过这篇综述预热一下。
再说一下NLG。从机器学习角度(ML_based)来看,文本生成就是一个结构化输出预测的过程,可按照训练集分为基于aligned
训练集和unaligned
训练集两类。这里的align是指要指定好MR数据集的每一个词和相关语法模板,所以需要很多先验知识。
这篇论文就是使用模仿学习在unaligned
数据上进行文本生成的研究。示例如下:
1 NLG
这里我们的NLG的输入是属性集合
C
C
C和属性值词典
D
c
D_c
Dc,词典中的词是和该属性共现的所有词。输出是一个动作序列
A
=
(
A
c
,
A
w
)
A=(A_c, A_w)
A=(Ac,Aw),
a
c
a_c
ac是属性选择动作,
a
w
a_w
aw是属性值选择动作。
整个过程非常简单,先选择属性,再选择这个属性的一个属性值。但是选择方式是通过一个分类器进行选择的。这个分类器是怎么来的呢?就要说我们的LOLS了
2 LOLS-NLG
回顾一下模仿学习,首先提供专家决策数据,每个决策包含状态和动作序列,然后构建新的【状态-动作对】集合,然后把状态作为feature,动作作为label,进行分类(离散动作)或回归(连续动作)学习,目的是找到最优策略使得输出的状态-动作轨迹分布和输入的相似。
套着来看LOLS-NLG过程,
输入部分介绍一下CSCL是cost-sensitive learning algorithm
,对不同的分类错误赋予不同的代价,CSC模型以最小的代价为目标。
输出的是学到的最优策略,包含两个分类器,一个用于预测属性,一个用于预测既定属性的值。
挖坑后续补这个过程。反正两个训练器都是通过CSC进行训练的。