StarSpace(embed all the things嵌入表示)编译和测试

  StarSpace是Facebook开源的一个嵌入式表示的库,号称可以embed all things,可以学习任何实体的向量表示。其对应的文章为https://arxiv.org/pdf/1709.03856.pdf,对应的开源代码库为:https://github.com/facebookresearch/Starspace。

  如其主页上所介绍的,StarSpace可以学习到任何实体(单词、句子、文档、用户-网页(推荐类)、关系图、知识图谱、图片)的向量表示,特别是图片,是论文中所没有介绍的。

  论文中提到的向量学习模型,首先将实体定义为bag-of-features,即类似于词袋模型一样。将实体离散化为特征袋,而特征袋相对而言是在一定的词典范围内的,从而实体的向量表示学习有个损失函数,即使得两两实体之间的距离最小。(相似)

StarSpace

StarSpace is a general-purpose neural model for efficient learning of entity embeddings for solving a wide variety of problems:

  • Learning word, sentence or document level embeddings.
  • Information retrieval: ranking of sets of entities/documents or objects, e.g. ranking web documents.
  • Text classification, or any other labeling task.
  • Metric/similarity learning, e.g. learning sentence or document similarity.
  • Content-based or Collaborative filtering-based Recommendation, e.g. recommending music or videos.
  • Embedding graphs, e.g. multi-relational graphs such as Freebase.
  •  Image classification, ranking or retrieval (e.g. by using existing ResNet features).

下面主要是对源码进行编译,具体过程如下:

(1)make,编译可以直接通过,在此之前需要安装boost_1_63_0版本的C++,编译效果如下图所示:

StarSpace(embed all the things嵌入表示)编译和测试_第1张图片


(2) 例子 examples/classification_ag_news.sh,实现对新闻的分类

StarSpace(embed all the things嵌入表示)编译和测试_第2张图片

学习到的向量如图所示:

StarSpace(embed all the things嵌入表示)编译和测试_第3张图片


(3) 对句子的嵌入

examples/wikipedia_sentence_matching_full.sh

StarSpace(embed all the things嵌入表示)编译和测试_第4张图片

由于采用了1 ngrams,其表示结果如下所示:


StarSpace(embed all the things嵌入表示)编译和测试_第5张图片

表示的向量后,可以进行向量的查找,即querypredict

./query_predict  k [basedocs]

StarSpace(embed all the things嵌入表示)编译和测试_第6张图片


(4) 对多关系图的向量表示(知识表示),测试数据为freebase

examples/multi_relation_example.sh

StarSpace(embed all the things嵌入表示)编译和测试_第7张图片


(5) 对文档的嵌入和查找,可以合用embed_doc进行文档的向量表示及时生成

StarSpace(embed all the things嵌入表示)编译和测试_第8张图片


(6)可以实现对图片的向量表示

StarSpace(embed all the things嵌入表示)编译和测试_第9张图片


表示结果如下所示

StarSpace(embed all the things嵌入表示)编译和测试_第10张图片


向量表示之后,将实体转化为向量,可以方便地实现实体的分类等相关操作,如进行可视化可以看出哪些实体比较相似,类似于word2vec的功能。如对cifar10向量表示后采用TSNE进行可视化后,其效果如下:

StarSpace(embed all the things嵌入表示)编译和测试_第11张图片

你可能感兴趣的:(表示学习,StarSpace,向量表示学习)