网站首页 > 科技论文> 文章内容

一周论文 2016年最值得读的NLP论文解读(3篇)+在线Chat实录

※发布时间:2017-9-15 0:33:04   ※发布作者:habao   ※出自何处: 

  本期Chat是PaperWeekly第一次尝试与读者进行互动交流,一共分享和解读3篇,均选自2016年最值得读的自然语言处理领域,分别是:

  一个任务驱动的对话系统,一般通过自然语言与用户进行多轮交流,帮助用户解决一些特定问题,例如订机票或检索数据库等。一般由下面四部分组成:

  Language Understanding Module(LU): 理解用户意图并提取相关slots。例如用户想找一部电影,那么就需要提取出电影名称,演员,上映时间等相关slots信息。

  在Dialogue Policy这一步,传统方法一般是生成一个类似SQL的查询语句,从数据库中检索答案,但是这会使模型不可微从而只能分开训练。本文使用了基于概率的框架,因此是可微的,从而实现了端到端的训练过程。

  论文中用到的数据库,是来自IMDB的电影数据库。每一行代表一部电影,每一列是一个slot,信息有可能存在缺失。

  这里针对每一列的slot,分别有一个belief tracker。每个belief tracker的输入是从feature extractor得到的向量,用GRU处理以后,得到一个状态向量。根据这个状态向量,分别计算得到两个输出:pj和qj。

  因为在和用户交互的过程中,应当尽可能询问用户知道的信息,询问用户不知道的信息对后面的查询没有任何意义。

  由Belief Trackers和Soft-KB Lookup,可以得到当前的对话状态向量st。st向量包含了数据库中所有值的概率分布户是否知识等信息,实在是太大了,直接送给Policy Network会导致其参数过多,难以训练。因此这一步把slot-values成了加权的熵统计信息。

  这里使用策略网络,根据Beliefs Summary的输入状态向量,来输出各个action的概率分布π。具体结构是GRU+全连接层+softmax的方式。

  这里从策略分布π采样,得到下一步的action。如果action是inform(),说明到了对话的最后一步,需要给用户返回Top k的查询结果。这里按照Soft-KB Lookup步骤中得到的每一行电影的概率,进行采样来返回Top K候选。

  这里的NLG部分和是的,使用了sequence-to-sequence模型,输入action,输出包含slot的对话模板,然后进行填充,得到自然语言文本。

  这里用的基于策略梯度的强化学习模型进行训练,目标是最大化reward的期望。最后一轮inform部分的reward是由正确答案在Top K候选中的排序决定,排序越靠前,reward越高。如果候选没有包含正确答案,那么reward是-1。

  深度强化学习在对话系统的应用越来越多,本文最大的贡献,是提出了一个可微的基于概率的框架,从而使End-to-End训练成为可能,相比传统方法各部分分别训练,联合训练可以有效的减少错递。而基于深度强化学习的训练方式,相比传统基于规则的方式,在高噪音输入的情况下,有着更好的表现。

  问:我对“因此这一步把slot-values成了加权的熵统计信息”的合和物理意义有些不明,我在最近的论文中很少看到这样的做法,请问是因为效果的原因吗?

  答: 这个熵指的是信息熵,不是物理中的热力学熵。信息熵把一个系统的不确定性,按照其可能出现结果的概率分布,进行定量化计算,得到的是可以获取的信息量大小。信息熵越大,不确定性就越大,我们可以获取的信息量也就越大。任务驱动的问题系统,在得到最终查询结果前,希望尽可能多的从用户那里获取信息,减少系统本身的不确定性,因此我们在知道一个slot中各种实体概率的情况下,用信息熵来度量一个slot的不确定性,还是挺合理挺自然的。

  熵的用法在深度学习网络中还是挺多的,例如我们经常用交叉熵做损失函数。同时文本分类任务中,经常用TFIDF值作为特征,而TFIDF值是可以由信息熵推导出来的。

  答: 这里的relation,指的是slots,也就是表格的各个列属性,例如year,actor等。 和entities的数目相比,一个slot对应的属性值数目要小很多。entity概率计算的时候,是把各个属性的概率相乘得到的。而一个属性的概率,取决于这个属性有多少值,假设我们有3个属性,每个属性的值的数目分别是k1,k2,k3,那么entities可能的计算量就是k1 * k2 * k3。现在作者假设每个属性之间是相互的,因此实际计算量可以理解成k1+k2+k3,所以slots的属性分布和entities分布相比,是smaller distributions。

  监督学习当前研究比较多的,是以seq2seq为代表的生成模型。 它目前一个比较大的问题,是生成结果缺乏多样性,倾向于生成比较安全比较常见的回答,例如“谢谢”,“不知道”。 这个主要是因为,训练目标是用最大似然拟合训练数据,而经常在训练数据中出现的回答,会占一些优势,因此后续有很多工作试图改进这个问题,例如用互信息作为目标函数,在解码搜索过程中,对常见结果进行惩罚,提高生成结果的多样性等等。

  监督学习的另外一个问题,是训练过程和预测过程不一致。训练的时候,当我们解码生成一个句子的下一个词的时候,是基于训练语料中的正确结果,而预测的时候,我们并不知道标准答案是什么,因此解码下一个词的时候,是基于我们预测的结果。这种不一致会影响最终结果,就像考试我们遇到之前没有见过的题型,我们的考试成绩可能会变差一样。增强学习,有希望解决这两个问题的。

  针对第一个问题,我们借助增强学习的reward,引入一些明确的的励目标,用来指导对话的生成。例如,如果我们想训练一个淘宝客服的对话系统,我们可以用商品最终是否购买,来作为励目标,这样可以引导对话向着商品成功购买的方向发展,因此可以产生更好的对话结果。目前还有一个最新的工作,是将生成对抗网络,引入对话系统,因为当前对话系统一个很大的问题,是缺乏可靠的自动化评价指标,而对抗生成网络中,我们有一个生成模型,也就是我们的对话生成系统,还有一个判别模型,这个判别模型的目标,是判断这个对话,是机器生成的,还是人写的,这样就引入了一个比较明确的励目标,也更接近图灵测试,而连接生成网络和判别网络的桥梁,就是强化学习。因为NLP的词,相比图像,是离散的,我们可以借助类似AlphaGo中的蒙特卡洛搜索,来采样得到训练样本,送给判别模型。针对第二个问题,强化学习在训练的过程中,生成模型是通过采样产生样本,这个过程和预测是一致的,因此也避免了不一致带来的问题。

  和监督学习相比,强化学习的训练是比较困难的,因为训练的过程很不稳定。而且具体的对话系统中,reward的励一般是基于一个完整的句子,而如何把reward励分配到具体的词,是一个很大的挑战。而在多轮对话中,reward一般只出现在最后一轮,如何对前面的几轮对话分配reward,也同样是一个问题。同时为了稳定强化学习的训练过程,我们不能完全离开监督学习,一般还需要借助监督学习的方法,来做初始化训练,甚至在训练过程中,需要穿插监督学习过程,起到稳定网络的作用。

  问:论文中的pr(Gj=i|j=0)为什么等于1/N呢?也就是在用户不知道第值时,目标是i的概率为什么等于1/N?

  答: 用户不知道第j个属性,也就是说,在第j个属性上,用户不能提供有效信息。那么我们从属性j的角度,看各个实体的时候,实际上是没有什么区别的。因此最保险的方式,就是假设各个实体的概率相等,因此概率是1/N。

  问:增强学习在chatbot中的reward函数是否都是根据相应的需求来手动给出,而非学习得来?

  答: 有些是可以手动给出的,例如Bengio的An Actor-Critic Algorithm for Sequence Prediction这篇论文,就把BLEU作为reward,用于机器翻译模型的训练。reward也可以学习得来,例如GAN应用到对话系统的时候,生成模型的reward就是由判别模型给出的,而在对偶学习中,一个模型的reward由它对应的对偶模型给出。

  agent1读入语言A的单语句子, 通过A到B的NMT模型转换成语言B的句子,并且发送给agent2。

  agent2接收到agent1发送的语言B的句子,通过语言B的语言模型LM_B,给出一个reward r_1。再通过B到A的NMT模型,将句子转换成语言A并且发送给agent1。

  agent1接收到agent2发送的语言A的句子,和最初的单语句子做比较,给出另一个reward r_2。

  每一个minibatch里面一部分单语语料,一部分双语语料,对双语语料用MLE作为目标函数,单语语料用的公式作为目标函数;随着training的进行,减少双语语料的比例。训练交替地从语言A或者语言B开始。

  这篇文章从reinforcement learning的角度,将单语语料很好地融入到双向NMT的训练中,在使用10%双语语料的情况下也能取得较好的翻译结果。整体上来说非常有意思,也可以推广到更多的tasks in dual form。

  问:论文中的相关工作部分提到了另外两篇neural machine translation的相关工作,请问作者可否简单介绍一下那两个模型的主要方法呢?以及它们和dual learning的最大区别。

  dual learning:在少量平行语料,大量单语语料的情况下,如何利用双向NMT提高NMT的性能。

  dual learning: 10%的双语语料,大量单语语料。并且用了预先用单语语料训练好的语言模型。

  都是用双向NMT来提高普通MLE训练的单向NMT的性能。reconstruction一篇相当于在原来的目标函数上加了reconstruction error,由于只用了双语语料,所以目标句子y是已知的。而semi-supervised和dual learning都会处理单语语料。在处理源端单语句子时,目标端的y是未知的。这二者都可以看成是一种句子级别的模型,通过正向的NMT产生一些句子来近似整个目标端输出空间,然后通过反向NMT给出句子的feedback(dual learning同时用了LM给出的feedback)。

  问:Dual Learning 中语言模型 LM 没看到在那里有详细的说明?刚才说的 Autoencoder,是在哪里提到的呢

  问:论文中的算法提到了一个参数alpha,它的意义是什么呢?是需要手动调参还是一个机器学习优化得到的参数呢?

  问:reconstruction error 以前常见于投影 project 重建 rebuild,或者是编码重建 encode/decode。图像上,一般常用 residual 来表示,例如子空间算法,KSVD 分解等等。这种对偶重建的方法,有没有可能发展成一种泛化的投影重建?

  答: 我觉得你可以尝试一下,图像上的东西不太懂。如果可以做成这种对偶tasks的形式,一个task take 某个action的reward可以由另外一个task给出,应该就可以试试。

  下一步我们将这些paragraphs都放到Amazon Mechanical Turk上让用户创建问题以及回答问题。这样我们便得到了一个新的QA数据集。

  答: 这篇相对于前面两篇内容简单一些,主要就是介绍了一个新构建的QA数据集。所以我和大家交流分享一下我比较熟悉的最近一些比较popular的QA Dataset吧。

  MCTest: 数据集本身质量不错,像普通的阅读理解,是根据一篇文章提出问题,然后在给定的四个选项中选出一个。但是数据集太小,现在比较主流的RC model都是基于deep learning的,数据量太小很难让model学习到有用的信息。所以个人认为小数据集上的Model多少会给人一种强凑答案的感觉。

  至于本文构建的squad dataset主要的特点就是答案可能比较长,而且不给候选答案,所以难度应该会大一些 数据集的质量也比较高,因为都是人工出的问题和标准答案,数据量也很大,容易训练处有用的模型。

  个人认为构建大的,有意义的数据集对于QA的工作是很关键的。现在还是比较缺乏能够推广到实际生活中的问题的QA模型。

  下一期Paper Note+Chat活动将会继续分享和解读3篇2016年最值得读的自然语言处理领域,分别是:

  PaperWeekly是一个分享知识和交流学问的学术组织,关注的领域是NLP的各个方向。如果你也经常读,也喜欢分享知识,也喜欢和大家一起讨论和学习的话,请速速来加入我们吧。

  微信交流群:微信+ zhangjun168305(请备注:加流或参与写 note)返回搜狐,查看更多

  推荐: