【论文夜读】【随笔】一切皆embedding(向量嵌入)
python中一切皆对象,深度学习里几乎一切皆可embedding。自从word2vec横空出世,似乎一切东西都在被embedding。知识图谱、社交网络可以被embedding,句子、段落可以被embedding,图像的主题或者部分可以被embedding。。。总体地来说,embedding也是构建一个映射 f:X→Y f : X → Y 将一个空间里的实体抛射到一个线性向量空间里去,这样一来可以在向量空间里计算度量它们的距离,亦或者从这个空间寻找到另一个目标空间的映射关系。
下面是几篇例子论文。
DeepWalk: Online Learning of Social Representations
将图节点看做词来模仿word2vec:DeepWalk是KDD 2014的一篇文章,彼时word2vec在文本上的成功应用掀起来一波向量化的浪潮,word2vec是根据词的共现关系,将词映射到低维向量,并保留了语料中丰富的信息。DeepWalk算法思路其实很简单,对图从一个节点开始使用random walk来生成类似文本的序列数据,然后将节点id作为一个个「词」使用skip gram训练得到「词向量」。
Embedding:Network Representation Learning with Rich Text Information
一种利用了文本信息的网络representation方法,TADW。:本文乃HTC和清华的合作论文。为了证明深度游走等同于矩阵分解(MF),该文提出了text-associatedDeep Walk(TADW)。TADW将文本特征的节点在MF的基础上合并进网络表示学习中。将本文的方法和其他方法进行比较,将他们应用于节点多分类的问题中。数据稀疏是研究网络问题最常见的问题。NetworkRepretation Learning(NRL)就是为了解决这个问题,它把每个顶点表示为一个低维空间。它让我们更好的理解顶点间的语义联系和更好的解决了数据稀疏的问题。
TransNet: Translation-Based Network Representation Learning for Social Relation Extraction
将节点的文本信息纳入训练:中科院的一篇论文。这篇paper是2017在IJCAI上发表的,引入了机器翻译的思想,将Translation机制应用到中间,通过一个Autoencode对边上的labels(构成一个向量)(真实世界中的节点和边往往都会含有丰富的信息)进行编码,然后将节点和edge映射到同一个空间作加减。认为在这个空间里 u+l=v′ u + l = v ′ (每个节点有两个向量表示,分别指示在边的「起点」和「终点」时,用 ′ ′ 进行区分)。
A simple but tough-to-beat baseline for sentence embedding
权重+移除机制:这是一篇关于sentence embedding(句向量)的一篇普林斯顿的论文(并未使用神经网络但是取得了更好的效果)。作者将该算法称之为。 W W 表示Weighted,意为使用预估计的参数给句中的每个词向量赋予权重。 表示Removal,意为使用PCA或者SVD方法移除句向量中的无关部分。
Deep Sentence Embedding Using Long Short-Term Memory Networks: Analysis and Application to Information Retrieval
用lstm来做sentence embedding:算是一个比较中规中矩的方法。将文本序列转化为向量,然后利用LSTM-RNN的结构进行抽取转换,得到的最后一层hidden输出就为句向量,再通过句向量进行距离计算操作。文本转化为向量:作者提出了一种tri-gram的方法,简而言之就是通过窗口对词进行截取,将每个词转化为 n n 个3-letter大小的片,再进行向量计算,最后规整为词向量。Sentence Embedding: 从结构上,应该就是经典的LSTM再加上peephole,计算公式如下: