StarSpace Embed All The Thing!

StarSpace: Embed All The Things!

论文地址:https://arxiv.org/abs/1709.03856

GitHub:https://github.com/facebookresearch/StarSpace

收录于:AAAI 2018


StarSpace Embed All The Thing!

本文是FAIR发表于2018 AAAI上的一篇文章,提出了一种通用性很强的神经嵌入模型,star()star(*) 表示它可以处理多种形式的嵌入,spacespace表示将不同的实体学习到一个空间中。它可以解决一系列不同的复杂问题,比如:

  • 标注任务(labeling task):文本分类、情绪分类……
  • 排序任务(ranking task):信息检索、网络搜索……
  • 基于协同过滤或是基于内容的推荐任务:推荐文档、音乐等
  • 多关系图的嵌入任务:如Freebase
  • 学习词、句子、文档不同层级的嵌入

反正就是感觉厉害到不行~

主要贡献在于:

  • 提出了一种新的嵌入学习算法,可以在不同的问题上进行泛化

  • 可以实现不同类型的嵌入之间的相互比较。例如,可以将用户实体与推荐问题中的商品实体进行比较


StarSpace

StarSpace包含一系列的学习实体(learning entities),每一个实体被一系列的离散特征所描述(在本文所提出的模型中并不能泛化到连续特征的情况,在结论部分作者也提出连续特征的情况是未来的一个研究方向)。在StarSpace中,类似文档、句子这样的实体可以通过bag-of-words或n-grams进行描述,一个像user、movies、items等这样的实体可以通过bag-of-document的方式进行描述。重要的是,StarSpace模型将不同的实体通过学习嵌入到了一个相同的空间中,因此可以自由比较不同类型的实体。最终的目标是习得一个D×dD \times d 的矩阵,其中DD 表示特征的数量,dd表示每一个嵌入向量的维度(或长度)。每一个实体aa 可以表示为iaFi\sum_{i \in a} F_{i} ,其中FiF_{i} 表示得到的嵌入矩阵ithi^{th}dd 维的特征。

训练过程需最小化的损失函数为:
(a,b)E+bELbatch(sim(a,b),sim(a,b1),...,sim(a,bk)) \sum_{(a,b)\in E^+\\b^- \in E^-}{L^{batch}(sim(a,b), sim(a,b_1^-),...,sim(a,b_k^-))}
其中的正实体集(positive entity pairs)E+E^+和负实体集EE^-取决于不同的问题。这里采用的是类似于word2vec中的k-negative sampling来采样得到负实体bib_{i}^-,不同实体之间的相似度度量函数sim(.,.)sim(.,.)这里选择的是常用的余弦相似度(cosine similarity)

Generally, they work similarly well for small numbers of label features (e.g. for classification), while cosine works better for larger numbers, e.g. for sentence or document similarity.

损失函数LbatchL_{batch} 这里选择的是margin ranking loss

We also implement two possibilities: margin ranking loss and negative log loss of softmax. All experiments use the former as it performed on par or better.

在模型的优化过程中,仍然使用的是随机梯度下降(SGD),同时使用嵌入的最大范数(max-norm)来将嵌入向量限制在球半径为rr的空间RdR^d上。

测试时,可以使用学到的函数sim(,)sim(⋅,⋅)来测量实体间的相似度。例如,对于分类,为给定输入a预测一个label,使用maxb^sim(a,b^)max_{\hat{b}} sim(a,\hat{b})来表示可能的labelb^label \hat{b};对于ranking,通过similarity对实体进行排序。另外embedding向量可以直接被下游任务使用。

对于不同的任务如何生成E+E^+EE^- 这里略~


实验

多类别分类问题(Multiclass classification)

在这个实验中,E+E^+EE^-来自文本分类数据集,作者分别在如下的3个不同的数据集上进行了实验:

  • AG news:一个给定标题和描述字段的4类别文本分类任务,包含120 k个训练示例、7600个测试示例、4个类别、大约100 k个词和5 M个符号(token);
  • DBpedia:维基百科文章分类问题,包含560 k训练示例、70 k测试示例、14个类、大约800k单词和32 M tokens;
  • Yelp reviews dataset from 2015 Yelp Dataset Challenge:预测给定评论文本的star的总数,它包含1.2 M训练示例、157 k测试示例、5个类别、约50万单词,1.93 M tokens。

实验结果如下所示:


StarSpace Embed All The Thing!

从中可以看出,StarSpace和fastText效果差别不大,但两者都优于其他的基准模型。特别是当ngram>1n-gram >1时,fastText的速度要更快一些,但是StarSpace的通用性更强。


StarSpace Embed All The Thing!


基于内容的文档推荐(Content-based Document Recommendation)

任务为基于用户的喜欢记录的历史向他们推荐社交媒体上的帖子。一个帖子可以表示为一个bagofwordsbag-of-words的形式。所用的数据集由641385个用户和3119909篇文章组成。问题是根据前(n1)(n - 1)篇文章预测第nthn^{th}篇文章,实验结果如下所示:


StarSpace Embed All The Thing!

其中涉及的基准测试模型有:

  • word2vec model
  • Unsupervised fastText model
  • Linear SVM ranker
  • Tagspace model trained on a hashtag task
  • TFIDF bag-of-words cosine similarity model

在这个任务上,StarSpace的效果也明显优于其他的基准模型。


连接预测:多联系的知识图谱的嵌入任务(Link Prediction: Embedding Multi-relation Knowledge Graphs)

Freebase 15 k数据集由一个triplets(headrelationtypetail)(head、relation_type、tail)组成,例如:(Obama,born-in,Hawaii)。它的任务是在(?relationtype,tail)(?, relation_type, tail)中预测headhead,或$ (head, relation_type, ?)中预测tail$。所用数据集由14951个概念(concepts)和1345个关系类型(relation_type)组成。训练集有483142个triplets,验证集有50000个,测试集有59071个,实验结果如下所示:

结果也是StarSpace的效果更好。同时作者也探究了K=?K=?对于模型效果的影响,结果如下:


StarSpace Embed All The Thing!

证明了kk的最优区间为[1,100],K=50K=50 时效果最好。


StarSpace Embed All The Thing!


维基百科文章搜索和句子匹配(Wikipedia Article Search & Sentence Matching)

任务使用的是Wikipedia 数据集,对于每一篇文章,只提取纯文本,并删除列表和图等所有结构化数据部分。它总共包含5075,182篇文章,其中包含9,008,962种惟一的无大小写token类型。数据集分为5035182个训练示例、10,000个验证示例和10,000个测试示例。

  • 任务1:将文章中的某个句子做为查询,试图找到它出自的文章;
  • 任务2:从文章中随机选择两个句子,使用其中一个作为查询,然后尝试找到来自相同原始文档的另一个句子

实验结果如下所示:


StarSpace Embed All The Thing!

实验证明StarSpace的查询更加精准,效果更好。


学习句子嵌入(Learning Sentence Embeddings

任务使用Facebook research的工具SentEval,比较了句子嵌入模型在14个转换任务上的有效性,这些任务包括二进制分类、多类分类、隐含、检测、释义关联和语义文本相似性,实验结果如下所示:


StarSpace Embed All The Thing!