Vintage NLP for Work
本文投到 ICLR2016 上但是没有中,作者没有继续改投了,但特意为这篇文章写了一篇 blog(他的博客也许比本人更出名): http://www.inference.vc/how-to-train-your-generative-models-why-generative-adversarial-networks-work-so-well-2/ 之前介绍的一篇同样是 ICLR2016 的经典工作《Sequence Level Training with Recurrent Neural Networ…
SS 的优化目标如上,当 epsilon 趋于0,最佳 Q=P_x1 P_x2。这说明 SS 让模型简单按位置记忆分布,而不是我们想要的用前面的序列推测后面。
狗管理并没有推得上面的式子,有人推出来的话可以来群里讨论(
狗管理并没有推得上面的式子,有人推出来的话可以来群里讨论(
Vintage NLP for Work
SS 的优化目标如上,当 epsilon 趋于0,最佳 Q=P_x1 P_x2。这说明 SS 让模型简单按位置记忆分布,而不是我们想要的用前面的序列推测后面。 狗管理并没有推得上面的式子,有人推出来的话可以来群里讨论(
SS 想解决的这种 exposure bias 问题,其根源是把最大似然用于训练目标,而评价不是。因此作者导出一个更好的目标如上。
这个式子与似然正好相反,是用模型的分布,去计算真实分布的对数概率。
这个式子与似然正好相反,是用模型的分布,去计算真实分布的对数概率。
Vintage NLP for Work
SS 想解决的这种 exposure bias 问题,其根源是把最大似然用于训练目标,而评价不是。因此作者导出一个更好的目标如上。 这个式子与似然正好相反,是用模型的分布,去计算真实分布的对数概率。
然而真实分布是没法验证的,我们只能从真实世界抽取样本而已。考虑 JS 散度就是这两种 KL 散度的一个折中,因此作者提出了上式一种广义的 JS 散度。这可以用 GAN 的方法训练。
互怼的艺术:从零直达WGAN-GP
http://spaces.ac.cn/archives/4439/
苏剑林
一个适合零基础看 GAN 的入门,简单叙述了从基本形式到 WGAN-GP 改良的思路,通俗易懂。作者来自中山大学。
http://spaces.ac.cn/archives/4439/
苏剑林
一个适合零基础看 GAN 的入门,简单叙述了从基本形式到 WGAN-GP 改良的思路,通俗易懂。作者来自中山大学。
spaces.ac.cn
互怼的艺术:从零直达WGAN-GP - 科学空间|Scientific Spaces
前言GAN,全称Generative Adversarial Nets,中文名是生成对抗式网络。对于GAN来说,最通俗的解释就是“伪造者-鉴别者”的解释,如艺术画的伪造者和鉴别者。一开始伪造者和...
Adversarial Learning for Neural Dialogue Generation
https://arxiv.org/abs/1701.06547
Jiwei Li, Will Monroe, Tianlin Shi, Sébastien Jean, Alan Ritter, Dan Jurafsky
本文放在 arXiv 上,来自 Stanford 的高产作者 Jiwei Li。本文今年一月发出,是比较早的一篇将对抗网络引入对话系统方面的工作。
思路大体上是比较直接的,以前用 MLE 方式训练的模型由于其目标函数简单,生成的对话大都会有一些毛病:又呆又泛、结巴而短视。
作者认为,如果无法判断对话由人生成还是由机器生成,那这个对话系统质量就高,而以前的缺陷就能自然地解决。
https://arxiv.org/abs/1701.06547
Jiwei Li, Will Monroe, Tianlin Shi, Sébastien Jean, Alan Ritter, Dan Jurafsky
本文放在 arXiv 上,来自 Stanford 的高产作者 Jiwei Li。本文今年一月发出,是比较早的一篇将对抗网络引入对话系统方面的工作。
思路大体上是比较直接的,以前用 MLE 方式训练的模型由于其目标函数简单,生成的对话大都会有一些毛病:又呆又泛、结巴而短视。
作者认为,如果无法判断对话由人生成还是由机器生成,那这个对话系统质量就高,而以前的缺陷就能自然地解决。
Vintage NLP for Work
Adversarial Learning for Neural Dialogue Generation https://arxiv.org/abs/1701.06547 Jiwei Li, Will Monroe, Tianlin Shi, Sébastien Jean, Alan Ritter, Dan Jurafsky 本文放在 arXiv 上,来自 Stanford 的高产作者 Jiwei Li。本文今年一月发出,是比较早的一篇将对抗网络引入对话系统方面的工作。 思路大体上是比较直接的,以前用 MLE…
首先引入了强化学习作为训练生成器的梯度,但这就需要对整个句子才能得到奖励。
Vintage NLP for Work
首先引入了强化学习作为训练生成器的梯度,但这就需要对整个句子才能得到奖励。
若中间生成步骤也需要奖励值,除了用蒙特卡洛搜索方法之外,作者还提出了将所有子序列都拆开,这样训练的判别器就能为中间步骤给出奖励了。
Vintage NLP for Work
若中间生成步骤也需要奖励值,除了用蒙特卡洛搜索方法之外,作者还提出了将所有子序列都拆开,这样训练的判别器就能为中间步骤给出奖励了。
训练时作者提出了四条策略可以改进质量:
- 把过短的样本去掉(<5个词),实验中这大幅提升了效果
- 考虑让学习率与 TF-IDF 挂钩,这样降低了呆板和宽泛的句子的影响
- beam search 时加入对同兄弟的排序惩罚,尽量生成多样的句子
- 除停用词外,惩罚已经生成的词类(lemma),这样减少了结巴了前后矛盾
本文的另一贡献是对抗评价。这部分的参数和训练与前面无关。作者又训练了一个模型来区分机器生成和人工生成的对话,如果无法区分,那模型应该给出50%的测试准确率。
作者提出,有可能因为判别器模型的能力不足而产生比较好的评价结果,因此设定了一组基准测试,加权以后得到了评价器的可靠性指标(evaluator reliability error, ERE):
- 用人工对话同时作为正负例,评价器的准确性应该为50%
- 用机器对话同时作为正负例,评价器也应给出50%的性能
- 用人工对话作正例,随机采样的人工回复拼凑出负例,评价器应做到100%
- 用人工对话作正例,正确回复的后一句话拼凑出负例,评价器也应做到100%
- 把过短的样本去掉(<5个词),实验中这大幅提升了效果
- 考虑让学习率与 TF-IDF 挂钩,这样降低了呆板和宽泛的句子的影响
- beam search 时加入对同兄弟的排序惩罚,尽量生成多样的句子
- 除停用词外,惩罚已经生成的词类(lemma),这样减少了结巴了前后矛盾
本文的另一贡献是对抗评价。这部分的参数和训练与前面无关。作者又训练了一个模型来区分机器生成和人工生成的对话,如果无法区分,那模型应该给出50%的测试准确率。
作者提出,有可能因为判别器模型的能力不足而产生比较好的评价结果,因此设定了一组基准测试,加权以后得到了评价器的可靠性指标(evaluator reliability error, ERE):
- 用人工对话同时作为正负例,评价器的准确性应该为50%
- 用机器对话同时作为正负例,评价器也应给出50%的性能
- 用人工对话作正例,随机采样的人工回复拼凑出负例,评价器应做到100%
- 用人工对话作正例,正确回复的后一句话拼凑出负例,评价器也应做到100%
Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders
https://arxiv.org/abs/1703.10960
Tiancheng Zhao, Ran Zhao, Maxine Eskenazi
https://arxiv.org/abs/1703.10960
Tiancheng Zhao, Ran Zhao, Maxine Eskenazi
Vintage NLP for Work
Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders https://arxiv.org/abs/1703.10960 Tiancheng Zhao, Ran Zhao, Maxine Eskenazi
本文发表在 ACL2017 上,来自 CMU。现有对话系统经常会给出一些呆板宽泛的回复,比如“我不知道”、“哦”等等。作者认为这是由于现有模型都采用最大似然目标去优化导致的,这些万能回复虽无用,但却可以达到很高的似然值,模型就会给出很高的概率。
为了解决这个问题,作者从对话本身的角度提出改进,本来对话系统就应是一对多的,一个问题的回复应该是个分布。因此他们使用条件变分自编码器,对隐变量 z 引入高斯分布假设,从而保证回复多样性。
此外,他们还设计了一个引入先验知识的模型变种,可以使用先验知识提升性能。针对 VAE 的训练中 KL 项权重为0、模型退化为 MLE 的问题,他们还设计了一个损失项,保证训练成功。
为了解决这个问题,作者从对话本身的角度提出改进,本来对话系统就应是一对多的,一个问题的回复应该是个分布。因此他们使用条件变分自编码器,对隐变量 z 引入高斯分布假设,从而保证回复多样性。
此外,他们还设计了一个引入先验知识的模型变种,可以使用先验知识提升性能。针对 VAE 的训练中 KL 项权重为0、模型退化为 MLE 的问题,他们还设计了一个损失项,保证训练成功。
Vintage NLP for Work
本文发表在 ACL2017 上,来自 CMU。现有对话系统经常会给出一些呆板宽泛的回复,比如“我不知道”、“哦”等等。作者认为这是由于现有模型都采用最大似然目标去优化导致的,这些万能回复虽无用,但却可以达到很高的似然值,模型就会给出很高的概率。 为了解决这个问题,作者从对话本身的角度提出改进,本来对话系统就应是一对多的,一个问题的回复应该是个分布。因此他们使用条件变分自编码器,对隐变量 z 引入高斯分布假设,从而保证回复多样性。 此外,他们还设计了一个引入先验知识的模型变种,可以使用先验知识提升性能。针对…
模型图中,先验网络指 p(z|c),解码器为 p(x|z, c),recog.网络是q(z|x,c)用于逼近真实后验p(z|x,c)。图中的 KL 是推导出的项,不用纠结其物理意义。(b)中的先验 y 是用训练好的 MLP_y 预测出来的。
Vintage NLP for Work
模型图中,先验网络指 p(z|c),解码器为 p(x|z, c),recog.网络是q(z|x,c)用于逼近真实后验p(z|x,c)。图中的 KL 是推导出的项,不用纠结其物理意义。(b)中的先验 y 是用训练好的 MLP_y 预测出来的。
而另一个 MLP_b 就是他们用来优化 VAE 训练的损失项。假设 x_bow 是不包含词序的,固定z的情况下它应该与 x 相独立,于是通过预测出词袋概率,可以强制 z 中包含足够的词项信息。
Vintage NLP for Work
而另一个 MLP_b 就是他们用来优化 VAE 训练的损失项。假设 x_bow 是不包含词序的,固定z的情况下它应该与 x 相独立,于是通过预测出词袋概率,可以强制 z 中包含足够的词项信息。
在自动化指标下,性能都有提高就不贴图了,把隐变量可视化以后能看到,它们的分布相对不同的对话类型和对话长度都较为一致(排列比较整齐),在不用 VAE 之前不容易做到。
Vintage NLP for Work
在自动化指标下,性能都有提高就不贴图了,把隐变量可视化以后能看到,它们的分布相对不同的对话类型和对话长度都较为一致(排列比较整齐),在不用 VAE 之前不容易做到。
通过结合本文提出的 BOW 和 KL 退火,在 PTB 上也得到了最低的困惑度。然而标准的训练方法困惑度明明还很高,KL项却已学不动了,说明发生了所谓隐变量消失现象(vanishing latent variable problem, Bowman et al. 2015)。
Learning Structured Natural Language Representations for Semantic Parsing
https://arxiv.org/abs/1704.08387
Jianpeng Cheng, Siva Reddy, Vijay Saraswat, Mirella Lapata
https://arxiv.org/abs/1704.08387
Jianpeng Cheng, Siva Reddy, Vijay Saraswat, Mirella Lapata
Vintage NLP for Work
Learning Structured Natural Language Representations for Semantic Parsing https://arxiv.org/abs/1704.08387 Jianpeng Cheng, Siva Reddy, Vijay Saraswat, Mirella Lapata
本文来自 Semantic Parsing 的名门,伦敦爱丁堡,发表在 ACL2017 上,代码暂时还没公开。
这类任务是从一个自然语言句子生成一个逻辑表达式,比如 λ-表达式、SQL 语句等等。
最近一年开始流行用神经网络做 SP,本文与其他基于 chart-parser 的方法不同,是基于 transition 模型的,即设计一系列 action 然后逐渐生成需要的结构。经典的 shift reduce 就可以看作一种 transition 模型。这种方法比较容易加入新特征,而不需要像 chart parser 那样要求特征可以按结构拆分,以方便动态规划的计算。
传统SP有两种途径,一个是直接生成需要的逻辑表达式。另一种是生成一个和具体任务无关的中间形式(ungrounded),然后再转换为具体任务需要的形式。例如,原句"Alice is Bob's fiend"有 friend 这个谓词,ungrounded 形式中可能会写成 "friend(A, B)",但在最终具体的任务中这个谓词可能是用别的 token 如 "is_friend" 来表示。
本文属于第二种。这条路有个好处就是前一步可以先用跨领域的更多语料来训练。
还要解释一点的是 "logical forms" 一般指代任何需要转换成的目标形式,无论是λ表达式还是SQL语句或者其他。而 "denotation" 指某个具体的逻辑表达式执行以后得到的那个结果(某个 token 或者列表或者其他)。
这类任务是从一个自然语言句子生成一个逻辑表达式,比如 λ-表达式、SQL 语句等等。
最近一年开始流行用神经网络做 SP,本文与其他基于 chart-parser 的方法不同,是基于 transition 模型的,即设计一系列 action 然后逐渐生成需要的结构。经典的 shift reduce 就可以看作一种 transition 模型。这种方法比较容易加入新特征,而不需要像 chart parser 那样要求特征可以按结构拆分,以方便动态规划的计算。
传统SP有两种途径,一个是直接生成需要的逻辑表达式。另一种是生成一个和具体任务无关的中间形式(ungrounded),然后再转换为具体任务需要的形式。例如,原句"Alice is Bob's fiend"有 friend 这个谓词,ungrounded 形式中可能会写成 "friend(A, B)",但在最终具体的任务中这个谓词可能是用别的 token 如 "is_friend" 来表示。
本文属于第二种。这条路有个好处就是前一步可以先用跨领域的更多语料来训练。
还要解释一点的是 "logical forms" 一般指代任何需要转换成的目标形式,无论是λ表达式还是SQL语句或者其他。而 "denotation" 指某个具体的逻辑表达式执行以后得到的那个结果(某个 token 或者列表或者其他)。
Vintage NLP for Work
本文来自 Semantic Parsing 的名门,伦敦爱丁堡,发表在 ACL2017 上,代码暂时还没公开。 这类任务是从一个自然语言句子生成一个逻辑表达式,比如 λ-表达式、SQL 语句等等。 最近一年开始流行用神经网络做 SP,本文与其他基于 chart-parser 的方法不同,是基于 transition 模型的,即设计一系列 action 然后逐渐生成需要的结构。经典的 shift reduce 就可以看作一种 transition 模型。这种方法比较容易加入新特征,而不需要像 chart parser…
经典的几个数据集上,他们提出的基于神经网络的 SCANNER 系统已经达到了比较好的水平,但是目前还没超过其他基于符号的方法。
Embed, encode, attend, predict: The new deep learning formula for state-of-the-art NLP models
https://explosion.ai/blog/deep-learning-formula-nlp
Matthew Honnibal
作者 Matthew Honnibal 曾主要做 parsing 方向,现在主要开发 python 上的 NLP 工具 SpaCy。
这是他一篇最近的 blog,介绍了现在 NLP 中文本蕴含 & 文本分类的一个简要套路:
获取 embedding -> 编码 -> 关注机制(attention) -> 预测
这类套路虽然有很多槽点,甚至数据集(如SNLI)也不尽人意,但有助于入门理解当前最新的一些工作。
相关代码使用 SpaCy + Keras 实现。
https://github.com/explosion/spaCy/tree/master/examples/keras_parikh_entailment
https://explosion.ai/blog/deep-learning-formula-nlp
Matthew Honnibal
作者 Matthew Honnibal 曾主要做 parsing 方向,现在主要开发 python 上的 NLP 工具 SpaCy。
这是他一篇最近的 blog,介绍了现在 NLP 中文本蕴含 & 文本分类的一个简要套路:
获取 embedding -> 编码 -> 关注机制(attention) -> 预测
这类套路虽然有很多槽点,甚至数据集(如SNLI)也不尽人意,但有助于入门理解当前最新的一些工作。
相关代码使用 SpaCy + Keras 实现。
https://github.com/explosion/spaCy/tree/master/examples/keras_parikh_entailment
explosion.ai
Embed, encode, attend, predict: The new deep learning formula for state-of-the-art NLP models · Explosion
Over the last six months, a powerful new neural network playbook has come together for Natural Language Processing. The new approach can be summarised as a simple four-step formula: embed, encode, attend, predict. This post explains the components of this…
Vintage NLP for Work
沈家煊-语法六讲.pdf
http://open.leancloud.cn/improve-chinese.html
今天因为乒乓球事件和几个朋友讨论起“你国”“赵国”一类的词来,虽然可以理解说话人的心情,但管理狗个人还是觉得这种说法过于阴阳怪气,于是又翻了一下余光中的这篇文章。
如今五四运动已经快一百年了,中文也变得更西化,很多时候我们已经觉得抽象名词用在中文句中也非常自然,余光中的观点放在今天难免有点过于原教旨主义,但我们不妨仍然参考一下。另一方面,之前这本书也有很多中文和西文不同之处的例子。
怎么样说话比较自然每个人都心里有数,实际操作的时候我的方法一般是试试多种说法,取最简洁的(哪怕在正式的书面语中)。
一般说来,语言受外来语影响(language attrition,语言磨蚀)的难易顺序,从容易到困难依次是词汇、句法、语音。英文的主要影响目前也常见于句法和词汇(我明天有个 assignment 要 due),对在美生活数十年的老教授可能会有口音的变化。对语言磨蚀感兴趣的同学可以看看最近语言学午餐公众号发的介绍 https://mp.weixin.qq.com/s/EPoHrZQbUm2g0f20bcDRpA
今天因为乒乓球事件和几个朋友讨论起“你国”“赵国”一类的词来,虽然可以理解说话人的心情,但管理狗个人还是觉得这种说法过于阴阳怪气,于是又翻了一下余光中的这篇文章。
如今五四运动已经快一百年了,中文也变得更西化,很多时候我们已经觉得抽象名词用在中文句中也非常自然,余光中的观点放在今天难免有点过于原教旨主义,但我们不妨仍然参考一下。另一方面,之前这本书也有很多中文和西文不同之处的例子。
怎么样说话比较自然每个人都心里有数,实际操作的时候我的方法一般是试试多种说法,取最简洁的(哪怕在正式的书面语中)。
一般说来,语言受外来语影响(language attrition,语言磨蚀)的难易顺序,从容易到困难依次是词汇、句法、语音。英文的主要影响目前也常见于句法和词汇(我明天有个 assignment 要 due),对在美生活数十年的老教授可能会有口音的变化。对语言磨蚀感兴趣的同学可以看看最近语言学午餐公众号发的介绍 https://mp.weixin.qq.com/s/EPoHrZQbUm2g0f20bcDRpA
Jointly Learning Word Embeddings and Latent Topics
https://arxiv.org/abs/1706.07276
Bei Shi, Wai Lam, Shoaib Jameel, Steven Schockaert, Kwun Ping Lai
本文关注的是词向量的任务,词向量最著名的特性就是做一些 word analogy 的任务了。但是一个词往往是多义词,词义可能相近,也可能八竿子打不着,这种情况用一个相同的词向量放到类似 "man - woman + queen = king" 的任务里就不一定好了。
因此基础的 skip-gram word embedding 有各种各样的多表征改良,都试图解决这个问题。
本文的主要想法是把主题和词向量一起建模,可以为每个主题下每个词都训练一个词向量,称为 Skip-gram Topical word Embedding (STE)。
原文的式子比较清楚,这里不贴算法和其他了,主要放一个核心公式。
https://arxiv.org/abs/1706.07276
Bei Shi, Wai Lam, Shoaib Jameel, Steven Schockaert, Kwun Ping Lai
本文关注的是词向量的任务,词向量最著名的特性就是做一些 word analogy 的任务了。但是一个词往往是多义词,词义可能相近,也可能八竿子打不着,这种情况用一个相同的词向量放到类似 "man - woman + queen = king" 的任务里就不一定好了。
因此基础的 skip-gram word embedding 有各种各样的多表征改良,都试图解决这个问题。
本文的主要想法是把主题和词向量一起建模,可以为每个主题下每个词都训练一个词向量,称为 Skip-gram Topical word Embedding (STE)。
原文的式子比较清楚,这里不贴算法和其他了,主要放一个核心公式。