放牧代码和思想
专注自然语言处理、机器学习算法
    博主不用扣扣,公事请博客留言,私事请微博私信。开源项目一律GitHub见,发错地方恕不回复,谢谢。

CS224n研究热点1 一个简单但很难超越的Sentence Embedding基线方法

目录

这门课会不定期地让TA介绍一些课程相关的最前沿研究,与课程进度并非流畅衔接,所以单独做笔记。这次是第二节课中场休息时,由Danqi Chen带来的五分钟小讲座:

hankcs.com 2017-06-07 下午4.07.18.png

句子Embedding动机

虽然这节课一直在讲词向量可以编码词的意思,但自然语言处理真正关心的是整个句子的意思。

hankcs.com 2017-06-07 下午4.07.53.png

如果我们能够拿到句子的向量表示,则可以方便地用内积计算相似度:

hankcs.com 2017-06-07 下午4.08.24.png

还可以在这些句子向量之上构建分类器做情感分析:

hankcs.com 2017-06-07 下午4.08.42.png

已有方法

具体怎么由词向量到句向量呢?有很多种方法,比如词袋模型中简单地线性运算:

hankcs.com 2017-06-07 下午4.09.14.png

在后面的课程中,将会用recurrent neural network、recursive neural network,CNN来做同样的事情。

hankcs.com 2017-06-07 下午4.09.29.png

新方法

但今天要介绍的这篇普林斯顿大学的论文却剑走偏锋,采用了一种简单的无监督方法。这种方法简单到只有两步:

hankcs.com 2017-06-07 下午4.09.53.png

第一步,对句子中的每个词向量,乘以一个独特的权值。这个权值是一个常数$\alpha$除以$\alpha$与该词语频率的和,也就是说高频词的权值会相对下降。求和后得到暂时的句向量。

然后计算语料库所有句向量构成的矩阵的第一个主成分的L2 norm $uu^T$,让每个句向量缩小到$1-uu^T$倍。就这么简单。

概率论解释

其原理是,给定上下文向量,一个词的出现概率由两项决定:作为平滑项的词频,以及上下文:

hankcs.com 2017-06-07 下午4.10.26.png

其中第二项的意思是,有一个平滑变动的上下文随机地发射单词。

效果

hankcs.com 2017-06-07 下午4.13.14.png

在句子相似度任务上超过平均水平,甚至超过部分复杂的模型。在句子分类上效果也很明显,甚至是最好成绩。

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » CS224n研究热点1 一个简单但很难超越的Sentence Embedding基线方法

分享到:更多 ()

评论 2

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

    我刚刚写完 CS224n(2017 winter) 的三个大作业(最近期末考试留了一个 project 准备一周以后再搞)。讲义中提到了很多 NMT 的模型,严重的勾起了我的好奇心,但是又没有相关的大作业,所以我想要六月底开始看些论文尝试利用 TensorFlow 实现,不知道您有没有兴趣组队。

    小鱼5个月前 (06-07)回复
    • 好的呀,不过NMT是第九课,我上完可能有点晚了。无论如何,欢迎联系我。

      hankcs5个月前 (06-07)回复

我的开源项目

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