是不是被各种Embedding模型弄得眼花缭乱啊?这篇论文统一了很多类似模型,提供了一个简单框架。论文可下载。
这篇文章来自David Blei的实验室。文章的核心思想非常直观,那就是如何把Word2Vec的思想能够给Generalize到其他应用场景,提供一个比较通用的模型框架。在这个新的框架下,其他的很多类似模型都能够归纳成为这个新框架的特殊形式。
新的框架模型叫做Exponential Family Embedding(EF-EMB)。其中包含三个要素:
A Context Function
A Conditional Exponential Family
An Embedding Structure
首先,Context Function是定义如何把当前的数据点(Data Point)和一个Context里面的其他数据点联系起来。这是一个建模的选择。比如,对于Language Data来说,这个Context可以就是周围的字;而对于Neural Data来说,这个Context则可以是周围的Neuron;对于Shopping Data来说,这个Context则可能就是购物车里的其他商品。
其次,Conditional Exponential Family定义一个合适的Distribution,来解释数据的产生过程。比如,对于Language Modeling来说,这个分布就是Categorical Distribution;而对于Real-Valued数据来说,则就是Gaussian Distribution。另外,在这个Conditional Exponential Family的定义里,每一个Data Point有两种Embeddings:一种叫做Embedding Vector;另一种叫做Context Vector。通俗得讲,也就是每个数据点分解成为了Embedding Vector和一组Context Vector(这个被上面的Context Function所定义)的乘积形式。
第三个要素Embedding Structure定义在建模中,Embeddings是如何被共享(Shared)的。比如,对于Language Data来说,每一个词只有唯一的Embedding Vector和唯一的Context Vector。还有其他的一些Setting里,这两者也可以是相同的。
在定义了之前的这些结构以后,Objective Function则是Log Conditional Probability的加和,外加Log定义的Regularizer。
文章讨论了好几个模型的例子,这里就不复述了。总之,现有的一些Embedding模型都很容易在这个框架下被重现。
模型的Inference则采用了SGD。文章里还讨论了在SGD的情况下,如何得到类似于Negative Sampling的结果。同时,文章后面有详细的模型讨论。
总之,这篇文章很值得细看一下。一方面也是因为这里面统一了很多关于Embedding模型的讨论;另一方面,从软件工程角度来说,也许也能够设计和实现一个类型的模型框架。
文章地址:NIPS 2016