StarSpace: Embed All The Things! 笔记

StarSpace是facebook开源的一个新的embedding工具包,卖点就是Embed All The Things,也就是名字里star (指’*’通配符) 的含义。
官网 https://github.com/facebookresearch/StarSpace

word2vec有一些后续优化的变种,比如fasttext、starspace。fasttext最大的优化还是加入了subword,但对于中文其实没啥卵用。fasttext详细介绍我博客有。 starspace主要的贡献还是把supervised引入embedding过程,而且提供一些实际问题的处理思路和一个傻瓜代码方便快速实现prototype验证想法,下面具体介绍。

之前把StarSpace的论文打印出来,粗略看了一眼,貌似就是word2vec,再看了一眼,好像还是word2vec啊,说明没有看懂。

其实StarSpace的思路很简单,原始的w2v模型只管预测上下文(softmax分类问题),而StarSpace直接学出上下文两个item的embedding距离要相近。

核心全在这里
StarSpace: Embed All The Things! 笔记_第1张图片

然后给出两个很重要的调参结论

sim函数有cosine similarity和inner product。一般用cosine

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

损失函数有margin ranking loss (i.e. max(0, µ − sim(a, b), where µ is the margin parameter), and negative log loss of softmax. 一般用margin ranking loss

All experiments use the former as it performed on par or better.

把不同类别的item id送到sim(a,b)函数去学,就可以达到论文说的比较不同类别item的效果

Importantly, the StarSpace model is free to compare entities of different kinds. For example, a user entity can be compared with an item entity (recommendation), or a document entity with label entities (text classifi- cation), and so on. This is done by learning to embed them in the same space such that comparisons are meaningful – by optimizing with respect to the metric of interest.

算法本身没有很novel。最近看到一篇 最前沿:让神经网络学习比较来实现少样本学习 ,模型的结构类似,但是改成让神经网络来学sim这个函数,所以starspace也有点元学习的味道。

另外有个问题就是没用tf之类的主流框架(要分布式的话,不好改啊),而是一个c++的单机版(看了点代码,模型本身不是很复杂,实现起来还好。用tf之类的框架重新实现一把应该也不难),搞不懂facebook,估计作者是c艹脑残粉并且有个大机器吧。

一定要用starspace么?先word2vec再svm rank一把是我之前的想法(这个是常见的操作),也是starspace论文里一个对比的baseline。后来是弄图像美学看到triple loss,starspace就是把triple loss整合到embedding的训练过程。然后直接端到端训练sim损失,那效果肯定是要比w2v好不少。 unsupervised的embedding看来还是先天不足,送到svm ranking抢救还是不行。所以starspace的最大贡献可能就是提出要supervised的embedding

模型跑完之后有个query_nn工具可以看结果。如果线上用想提前计算i2i数据,可以用nmslib,速度还是比较可以的。
公司里的推荐场景实际应用下来效果还不错。具体内容就不能透露了。

你可能感兴趣的:(机器学习)