目录
实现stack
由于反向传播要用,所以每个时刻的stack都要备份,这消耗了大量内存。朴素实现就是用个固定大小的多维数组存放,还需要移动大量内存。高效实现是每个句子一个stack,在每个时刻改动stack的head,记录head的指针。
A thinner stack
backpointer从右到左记录栈顶的元素。最重要的是,在reduce的时候,不删除array中的任何元素,而是将合并后的成分新增进去,同时更新backpointer。
应用了这种编程技巧之后,效率提升非常显著,直追线性模型:
由于parse是个hard decision,这会导致损失函数不可导。所以训练的时候直接在已经做了句法分析的句子上训练,这样结构是固定的,就不需要做hard decision了。否则就需要用强化学习等复杂手段去work around。
Stanford Natural Language Inference Corpus
根据文本描述的事实,推断与另一句话的关系(补充说明,中立,矛盾)。
NLI with Tree-RNN sentence rep’ns
讲两句话送入SPINN组合,最终交给分类器:
SNLI结果
线性模型和树形模型得分差不多,但结合了两者的SPINN得分显著提高。很遗憾最高分是由word level的attention model拿下的。
SPINN比LSTM更擅长否定和长句子:
感谢感谢博主!!
英文还是不好,看这课的video看得很懵很懵
多亏您的博文