【不自然处理自然语言 - 论文笔记 - 1】From Word Embeddings To Document Distances
【From Word Embeddings To Document Distances】笔记
【1】简单介绍
这篇文章讲的是一种度量文本的距离的新方法,其大概的思路是用Word2Vec对于词语建模之中,对于不同的词语赋权以表达该文档,只是在赋权这一步用了一些Trick使得可以使用矩阵运算的技巧优化运算。
文章首先是吹一下他研究的问题是一个很重要的问题,对于文本的检索,新闻的分类都是一个重要的支撑性的方法。
常见表达词语的方式有两种,第一种是Bag of Words的方法,或者是TFIDF的方法(这篇文章是2015年的,所以站在2015年确实是这样的,现在似乎有所改观)。但是这两种方法还是存在问题的,比如说不能够获得两个的词语之间的距离。所以改进的方法也有很多,比如说LSI和LDA都将类似的词语丢进了一个小Group之中,或者还有其他的方法,比如对于BOW的其他改进,但是都没有显著的提升在计算词语的相似度的时候的性能。(言下之意就是,别人做的都不行,不是针对某一个人的论文,而是在Arvix上的各位,都是垃圾。)
所以就提出了自己的方法,使用了Mikolov的Word2Vec的方法使得词语有了一定的实际的意义,然后使用Word Mover’s Distance(WMD)来度量词语之间的距离。再基于WMD修改了之中的一些细节,使得可以更快的计算,而这些在后面都会看见。
【2】细节
着重介绍WMD,假设已经通过词嵌入的过程获得了词向量,词嵌入的维度是 d d d的话,有 n n n个词语就可以获得一个 X ∈ R d × n X\in R^{d\times n} X∈Rd×n的矩阵,这个矩阵的 i t h i^{th} ith列,也就是 x i x_i xi。假设文档是通过Normalized-BOW表达的,所谓的nBOW就很直接,假设有一个文章有四个单词。计算四个单词出现的频率 f i f_i fi,文章向量 D D D的每一个维度 i i i的值都是频率 f i f_i fi.
D D D可以看成是在一个维度为 n − 1 n-1 n−1的单纯型上的点,所谓的单纯型就简单的认为是一个凸函数就可以了,二维的Simplex就是一个凸的二维图形,比如三角形呀。发挥你的想象力,在一个空间之中,一些点落在一个凸多面体上,那就是 D D D,虽然这些文档可能会落在不同的区域里面,但是在如果他们的句意越接近他们在这个单纯型上越是接近。
我们的目标是将词语之间的相似性融入文章之间的距离的度量之中。一种很直观的方式就是通过计算词语之间欧几里得距离
C
(
i
,
j
)
=
∣
∣
x
i
−
x
j
∣
∣
2
C(i,j) = ||x_i - x_j||_2
C(i,j)=∣∣xi−xj∣∣2.而这个距离为了避免混淆,换一个名字,称之为 Cost。也就是词语
i
i
iTravel到词语
j
j
j所要花费的成本。
而文档之间的距离就通过这个Travel的过程来实现,假设文档
D
D
D之中的第
i
i
i个词语有
λ
\lambda
λ个到了文档
D
′
D'
D′的第
j
j
j个词语上面,我们就将
λ
\lambda
λ记作是
T
i
j
T_{ij}
Tij,在
D
D
D之中比如第
i
i
i个单词的出现的频率是
f
i
f_i
fi,由于要全部Travel到另外的文档
D
′
D'
D′之中,所以将
∑
i
T
i
j
=
f
i
\sum_{i} T_{ij} = f_i
∑iTij=fi,同理
∑
j
T
i
j
=
f
j
\sum_{j} T_{ij} = f_j
∑jTij=fj.\par
而由于文档之间的距离可以看成是每一个单词对之间的距离的加和,所以由于单词
i
i
i从
D
D
D到
D
′
D'
D′的
j
j
j之中需要花费Cost
C
(
i
,
j
)
C(i,j)
C(i,j),而这样的花费需要
λ
=
T
i
,
j
\lambda = T_{i,j}
λ=Ti,j个,那么
i
→
j
i\to j
i→j的总花费就是
T
i
,
j
×
C
(
i
,
j
)
T_{i,j}\times C(i,j)
Ti,j×C(i,j),对于两个文档之中的所有的单词对加起来就是
∑
i
,
j
=
1
n
T
i
,
j
C
(
i
,
j
)
\sum_{i,j = 1}^{n} T_{i,j}C(i,j)
i,j=1∑nTi,jC(i,j)
我们的目标是使得这个数字尽量的小
min
∑
i
,
j
=
1
n
T
i
,
j
C
(
i
,
j
)
\min\sum_{i,j = 1}^{n} T_{i,j}C(i,j)
mini,j=1∑nTi,jC(i,j)
限制条件也就是上面的两个很直接的推论
∑
j
T
i
j
=
f
i
,
∑
i
T
i
j
=
f
j
\sum_{j} T_{ij} = f_i ,\quad \sum_{i} T_{ij} = f_j
j∑Tij=fi,i∑Tij=fj
而上面的这个优化的问题就是一个传统的问题叫做是Earth Mover’s Distance .作者把Earth 改成了Word称之为Word Mover’s Distance,实在是我辈拿来主义之楷模。
【3】作者的改进
但是WMD也是有不少的问题的,就是他的时间的复杂度太高了,因为要把数据集给遍历一遍,所以他的复杂度是 O ( p 3 log p ) O(p^3\log p) O(p3logp)(这个具体我也没算,也贯彻一下拿来主义)。所以为了降低复杂度,作者就开始大刀阔斧的进行改进了。
首先是找到上面的WMD的下界表示,可以理解成硬的柿子捏不动我们把柿子泡软了再捏。这个软柿子就是Centroid Distance
∑
i
,
j
=
1
n
T
i
,
j
C
(
i
,
j
)
=
∑
i
,
j
=
1
n
T
i
,
j
∣
∣
x
i
−
x
j
′
∣
∣
2
=
∑
i
,
j
=
1
n
∣
∣
T
i
,
j
(
x
i
−
x
j
′
)
∣
∣
2
≥
∣
∣
∑
i
,
j
=
1
n
T
i
,
j
(
x
i
−
x
j
′
)
∣
∣
2
=
∣
∣
∑
i
=
1
n
(
∑
j
=
1
n
T
i
,
j
)
x
i
−
∑
j
=
1
n
(
∑
i
=
1
n
T
i
,
j
)
x
j
′
∣
∣
2
=
∣
∣
∑
i
=
1
n
f
i
x
i
−
∑
j
=
1
n
f
j
′
x
j
′
∣
∣
2
=
∣
∣
X
D
−
X
D
′
∣
∣
2
\sum_{i,j = 1}^{n} T_{i,j}C(i,j) = \sum_{i,j = 1}^{n} T_{i,j}||x_i-x_j'||_2 = \sum_{i,j = 1}^{n} ||T_{i,j}(x_i-x_j')||_2\geq ||\sum_{i,j = 1}^{n}T_{i,j}(x_i-x_j')||_2\\ = ||\sum_{i = 1}^{n}(\sum_{j = 1}^{n}T_{i,j})x_i- \sum_{j = 1}^{n}(\sum_{i = 1}^{n}T_{i,j})x_j' ||_2 = ||\sum_{i = 1}^{n} f_i x_i- \sum_{j = 1}^{n}f'_j x_j' ||_2 = ||XD - XD'||_2
i,j=1∑nTi,jC(i,j)=i,j=1∑nTi,j∣∣xi−xj′∣∣2=i,j=1∑n∣∣Ti,j(xi−xj′)∣∣2≥∣∣i,j=1∑nTi,j(xi−xj′)∣∣2=∣∣i=1∑n(j=1∑nTi,j)xi−j=1∑n(i=1∑nTi,j)xj′∣∣2=∣∣i=1∑nfixi−j=1∑nfj′xj′∣∣2=∣∣XD−XD′∣∣2
上面的结果假定了这样的一个事实, **也就是说每一篇文章可以表示成为文章之中的词向量的加和的形式,而不同的词向量之间的权重就是词语在文章之中的出现的频率,这样的一个假设确实是一个非常直接的假设哈.**通过这样的假设就可以找到较为接近的文档了,比如说用KNN一找就可以找到与其接近的文档。
举个简单的例子哈,比如说微信的看一看,就需要对于每一个用户和每一篇文章都聚类,再把这一类用户大多数都看过的文章,但是你没看过的文章推送给你。而网络之中出现的文章如银河沙数,实时的给你推送最接近的文章如果是要精确的推送话,就是一个很大的计算量,所以可以先通过诸如WCD这种方法,寻找到那些Candidate Set,再从这些Candidate之中寻找到最适合你的那篇文章推送给你,这样子就可以节省掉很多的无用的运算。这也是WCD存在的意义。
但是WCD虽然快,但是快不一定好呀,所以作者又开始大刀阔斧的改了,作者这次决定去除一个约束的条件,由于这两个条件是对称的,所以去除哪个都是一样的,这时候的约束条件就变成了
min
∑
i
,
j
=
1
n
T
i
,
j
C
(
i
,
j
)
\min\sum_{i,j = 1}^{n} T_{i,j}C(i,j)
mini,j=1∑nTi,jC(i,j)
假设去除了第二个约束条件
∑
j
T
i
j
=
f
i
\sum_{j} T_{ij} = f_i
j∑Tij=fi
而最后的解的形式是,每一个在
D
D
D之中的单词,都是找到与之最接近的单词,而不是一一匹配了。好比是相亲的话,一开始是一个一个的在大街上拉着人都要来测一下生辰八字看看合不合适,现在就是国家给你安排媳妇,寻找的是那个和你最搭配的,即
C
(
i
,
j
)
C(i,j)
C(i,j)最小的。那么我们将这个国家安排的媳妇呢称之为
j
∗
j^*
j∗, 那么这时候将
T
i
j
∗
T_{ij^*}
Tij∗设置为
f
i
f_i
fi,其余的
T
i
,
j
T_{i,j}
Ti,j都设置为0. 也就记作是
T
i
,
j
∗
=
f
i
T^*_{i,j} = f_i
Ti,j∗=fi . 这个也很容易理解哈,国家都给你分了老婆了,当然是全部的精力
f
i
f_i
fi都给她了,还对别的
j
j
j留有什么非分之想呢?所以全部设置为0.有了这个假设之后:
∑
j
T
i
j
C
(
i
,
j
)
≥
∑
j
T
i
j
C
(
i
,
j
∗
)
=
C
(
i
,
j
∗
)
∑
j
T
i
j
=
C
(
i
,
j
∗
)
f
i
=
∑
j
T
i
,
j
∗
C
(
i
,
j
)
\sum_{j} T_{ij} C(i,j)\geq \sum_{j} T_{ij} C(i,j^*) = C(i,j^*)\sum_{j} T_{ij} = C(i,j^*)f_i = \sum_{j}T^*_{i,j}C(i,j)
j∑TijC(i,j)≥j∑TijC(i,j∗)=C(i,j∗)j∑Tij=C(i,j∗)fi=j∑Ti,j∗C(i,j)
但是去除了第一个约束和去除了第二个约束的产生的结果是不同的,所以分别计算去除1和去除2之后的结果,再取二者之中较大者。好比你喜欢的女孩不一定喜欢你,喜欢你的女孩你也不一定喜欢,所以呢,找一下你最喜欢的女孩,评估一下你多喜欢她,再找到最喜欢你的女孩,评估一下她多喜欢你,然后比较一下,看看哪个值最大就决定是分给你你最喜欢的还是分给你最喜欢你的,这就叫舔狗舔到最后应有尽有。
数学表达就是,
L
(
D
,
D
′
)
=
max
(
l
1
(
D
,
D
′
)
,
l
2
(
D
,
D
′
)
)
L(D,D') = \max(l_1(D,D'),l_2(D,D'))
L(D,D′)=max(l1(D,D′),l2(D,D′)),将其称为Relaxed WMD
这个结果就比上面的WCD好多了,具体的结果可以看实验部分哈,这里也不多加介绍了。
【4】简单评价
这篇文章的改进的思路还是比较直观的,就是里面的数学公式还是有一些绕,各种记号感觉也不是很清晰,所以在这里我概率一些记号,比如说 f i f_i fi就是原文之中的 d i d_i di,用 f f f表示frequency比在文中多次混用的d还是要更清晰一些吧。