放牧代码和思想
专注自然语言处理、机器学习算法
    Why join the Navy if you can be a pirate?

CS224n笔记17 NLP存在的问题与未来的架构

目录

实现stack

由于反向传播要用,所以每个时刻的stack都要备份,这消耗了大量内存。朴素实现就是用个固定大小的多维数组存放,还需要移动大量内存。高效实现是每个句子一个stack,在每个时刻改动stack的head,记录head的指针。

A thinner stack

hankcs.com 2017-07-13 下午12.40.23.png

backpointer从右到左记录栈顶的元素。最重要的是,在reduce的时候,不删除array中的任何元素,而是将合并后的成分新增进去,同时更新backpointer。

应用了这种编程技巧之后,效率提升非常显著,直追线性模型:

2017-07-13_12-50-00.png

由于parse是个hard decision,这会导致损失函数不可导。所以训练的时候直接在已经做了句法分析的句子上训练,这样结构是固定的,就不需要做hard decision了。否则就需要用强化学习等复杂手段去work around。

Stanford Natural Language Inference Corpus

hankcs.com 2017-07-13 下午4.19.29.png

根据文本描述的事实,推断与另一句话的关系(补充说明,中立,矛盾)。

NLI with Tree-RNN sentence rep’ns

讲两句话送入SPINN组合,最终交给分类器:

hankcs.com 2017-07-13 下午4.22.13.png

hankcs.com 2017-07-13 下午4.22.30.png

SNLI结果

hankcs.com 2017-07-13 下午4.26.14.png

线性模型和树形模型得分差不多,但结合了两者的SPINN得分显著提高。很遗憾最高分是由word level的attention model拿下的。

SPINN比LSTM更擅长否定和长句子:

hankcs.com 2017-07-13 下午4.27.47.png

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » CS224n笔记17 NLP存在的问题与未来的架构

分享到:更多 ()

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    感谢感谢博主!!
    英文还是不好,看这课的video看得很懵很懵
    多亏您的博文

    zy1年前 (2017-08-27)回复

我的开源项目

HanLP自然语言处理包基于DoubleArrayTrie的Aho Corasick自动机