Vintage NLP for Work
1.09K subscribers
266 photos
28 files
343 links
Natural Language Processing for Work

频道历史内容的网页归档:
https://www.notion.so/NLP-for-Work-af812710c3a543c2adc7acbdb3990036

For Work 系列频道
梗频道: @JISFW
图频道: @GfWR16
反馈投稿吹水群: @FishingFW

更多精彩:
https://t.me/JISFW/13392
Download Telegram
Vintage NLP for Work
在实验效果上反而是第三种最简单的最好,但是这种就使序列变得大概原句的三倍长,训练时间多了26%。
其他分析结果表就不贴了。

- 在长句子(多于50词)上,基于统计机器翻译的方法(cdec)依然最好
- 加入了句法信息的混合 RNN 在词对齐上也有提升(即验证源语言中的词在目标语言中的结果)
- 混合 RNN 也明显减少了原本中文是一个短语、翻译后被切开的情况
- 混合 RNN 还减少了被 过翻译(over-translated)的词的比例,即一个词只应翻译一次
- 同时在一些常见的如专有名词等 tag 的翻译上(大多词表之外的词(OOV)都属于这种情况),RNN 也能降低输出 UNK 的比例(即 unknown word)
Automatic Rule Extraction from Long Short Term Memory Networks
https://openreview.net/forum?id=SJvYgH9xe
W. James Murdoch, Arthur Szlam
Vintage NLP for Work
Automatic Rule Extraction from Long Short Term Memory Networks https://openreview.net/forum?id=SJvYgH9xe W. James Murdoch, Arthur Szlam
顾名思义,本文期望从训练好的 LSTM 中自动地抽出一些短语规则,发表在 ICLR2017 上。
例如在情感分析数据集上,自动抽出一些表示积极或消极情感的短语,然后又将它们用到分类中。
因此,这其实算是一个在神经网络的理解方面的工作,通过抽取的短语,人就能直观地判断 LSTM 有没有真的学到东西。
Vintage NLP for Work
本文从 LSTM 做分类的基本方法出发,如上图,用 LSTM 跑一遍句子以后拿最后的隐状态通过 softmax 做分类。
他们提出了两种主要的分解方法,其实这个都需要实际手推一下,其中一种如图(注意初始的 c_0 = h_0 = 0)
这个式子可以从直观上理解,即分解出的 beta 值可以看作:输入了一个新的词 x_j 之后,LSTM 的 cell 有怎样的改变。
Vintage NLP for Work
他们提出了两种主要的分解方法,其实这个都需要实际手推一下,其中一种如图(注意初始的 c_0 = h_0 = 0) 这个式子可以从直观上理解,即分解出的 beta 值可以看作:输入了一个新的词 x_j 之后,LSTM 的 cell 有怎样的改变。
再通过预定义的一个打分函数,就能把上面分解得到的 beta 值纳入考量,beta 值有区分度的子串就能作为抽取短语的标准,从而抽出一些积极情感或者消极情感的短语来(在情感分析的任务下)。
实验结果可以看到,最下面的几种分解方法虽然没有获得最佳的效果(实际上短语规则系统效果也并不是本文的目标),但是也实现了相当的精度,说明抽取出的短语确实有效。
管理狗其实没看懂下面三种方法与作者提出的分解方法究竟哪个对应哪个,感觉正文里对这点也是说的不明不白的,只看个热闹。
帮打个广告,鹅厂的广告算法比赛,有在校生可以考虑参加
http://algo.tpai.qq.com/
基本本月初赛,下月决赛
计算广告论文、学习资料、业界分享
https://github.com/wzhe06/Ad-papers

一个挺不错的计算广告相关资源集合,可以挑着自己需要的补补。涵盖经典问题如定价策略、CTR预估,以及一些工程实践。
来自湾区日报的推荐,SQLite 官方的使用指南
https://sqlite.org/whentouse.html

一些感觉眼前一亮的 SQLite 使用场景:

- 文件操作替代
- 自定义文件格式
- File Archive
- Single-writer DB
- In-memory DB 用 JOIN 操作替代手写
- 小数据分析,sql 不够用时可以对接 py/R
不明觉厉的 md + latex 编辑器
https://www.madoko.net/
Simple Statistical Gradient-Following Algorithms for Connectionist Reinforcement Learning (1992)
http://incompleteideas.net/sutton/williams-92.pdf
Ronald J. Williams

Reinforcement Learning Neural Turing Machine (ICLR-2016)
https://arxiv.org/abs/1505.00521
Wojciech Zaremba, Ilya Sutskever
Vintage NLP for Work
Simple Statistical Gradient-Following Algorithms for Connectionist Reinforcement Learning (1992) http://incompleteideas.net/sutton/williams-92.pdf Ronald J. Williams Reinforcement Learning Neural Turing Machine (ICLR-2016) https://arxiv.org/abs/1505.00521…
在 [Williams, 1992] 中第一次提出 REINFORCE 后,现在越来越多的工作都用了这个简洁的学习算法。
本周的几篇推荐都是跟 REINFORCE 相关的,先拿这两篇来预热一下。

首先来说一下 REINFORCE 的基本定义。REINFORCE 基本的优化目标是 reward 的期望,就是让它的奖赏值最大。Williams 对此有过一些解释,优化的目标是期望值是为了抵消三种随机性,即环境输入的随机性、模型输出的随机性、环境给予特定输入输出样本的增强值(reinforcement value)的随机性(同样的输入输出在不同环境可能有不同的增强值)。

当然对一些具体的网络我们还能用反向传播算法,但是增强学习是另一套理论体系内的内容,二者现在有所结合。
Vintage NLP for Work
上式为目标函数和所求梯度更新,但相比直接求得梯度更新项中有些别的东西:alpha 是学习率,b 是任意加上的一个 baseline 常数(可以减小 variance),e 是概率分布的偏导。
REINFOCE 因此无厘头地得名:

- REward Increment 即所求梯度更新
- Nonnegative Factor 即学习率非负
- Offset Reinforcement 即减去 baseline 以后的 reward(模型增强值)
- Characteristic Eligibility 即对应模型的分布偏导数 e

[Williams, 92] 中有证明,在给出上面的梯度情形下,梯度更新值的期望与目标函数的梯度的内积是非负的,即按这个方法更新梯度以后,可以沿着目标函数的梯度方向移动,从而达到优化的目的。这是为什么上面的梯度形式有效的原因。

前面这种情况仅对 reward 能每步立刻得到的情况有效,而有时候 reward 是连续做了一系列预测以后才能知道的,这一系列预测叫做一个 episode,这种算法也对应地叫做 Episodic REINFORCE。

具体形式其实就是把上面的梯度中的 e 改成了一个 episode 里面的所有 e 求和。
这篇文章虽然很长,但需要关注的要点应该就这些。
Vintage NLP for Work
对于这种 episodic 情况,第二篇文章的推导更加清晰。此文的一个亮点如图,考虑到当前的预测不会影响以前的 reward,所以上面最后一行的右边全为0,仅剩左边。这样反传的时候就不用传整个序列的 reward,只用传当前时间的了。
第二篇文章的想法就是用强化学习来改进神经图灵机,主要就是想用强化学习来找到 memory 上的位置,然后用反向传播计算要写入 memory 的具体值。有兴趣的可以看看。
另外虽然任务已经过时了,这篇文章对 REINFORCE 算法的讲解还是不错的,可以对照着不同文章的介绍比对学习。
Sequence Level Training with Recurrent Neural Networks
https://arxiv.org/abs/1511.06732
Marc'Aurelio Ranzato, Sumit Chopra, Michael Auli, Wojciech Zaremba