欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-25 15:03:57
...

  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.
  • StarSpace(embed all the things嵌入表示)编译和测试 Image classification, ranking or retrieval (e.g. by using existing ResNet features).

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

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

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


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

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

学习到的向量如图所示:

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


(3) 对句子的嵌入

examples/wikipedia_sentence_matching_full.sh

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

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


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

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

./query_predict <model> k [basedocs]

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


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

examples/multi_relation_example.sh

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


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

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


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

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


表示结果如下所示

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


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

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