WMD算法原理

WMD(Word Mover’s Distance)算法原理


文章主要是自己在学习过程中摘录做的笔记。
参考连接:WMD算法详解

1. WMD的直观理解

两段文字 D 1 D1 D1 D 2 D2 D2,每段文字中的字都使用word2vec算法映射到embedding空间中。并且我们在 D 1 D1 D1中的每一个词都能找到 D 2 D2 D2中的某一个词,那么我们就可以找到每一对词在embedding空间中的距离,那么所有词对的距离之后就是WMD。那么问题来了,我怎么知道 D 1 , D 2 D1,D2 D1D2其中的词是怎么对应的,这种对应指数级别的组合?这也是WMD主要解决的问题。原理图如下:
在这里插入图片描述

2. WMD计算两文本基础流程:

  1. 首先对两个文本去除停用词
  2. 使用归一化BOW(词袋模型)方法来分别表示D1,D2
  3. 使用word2vec embedding来表示D1,D2中的每个词
  4. 在D1中所有词travel到D2中所有词,对于每一个D1中的词,它与D2中的词语义比较相近的,那么可以全部移动或移动距离多一些(权重值);对于语义差异较大,则移动距离少一点或者不移动。用词向量距离乘以移动距离就是两个词的转移代价。
  5. 求全局的转移代价累加和最小值(D1中所有词全部转移到D2,D2中的所有词也全部转移到D1中)。
  6. 这个全局转移代价累加和的最小值就是D1,D2的相似度。

3. WMD算法的数学描述

假设有一个预训练好的word2vec词向量矩阵 X ∈ R d × n X \in \mathcal{R}^{d\times n} XRd×n n n n表示词典大小, d d d表示词向量维度。
如果词 i i i在文本中出现的次数 c i c_i ci,那么我们定义词 i i i的归一化词频为:
d i = c i ∑ j = 1 n c j d_i = \frac{c_i}{\sum_{j=1}^n c_j} di=j=1ncjci
d i d_i di为单词 i i i在文档中的权重, c i c_i ci为出现的次数。
i i i个词和第 j j j个词的距离表示为:
c ( i , j ) = ∥ x i − x j ∥ 2 c(i,j) = \|x_i-x_j\|_2 c(i,j)=xixj2,其中 x i , x j x_i,x_j xixj为embedding后的词向量。 c ( i , j ) c(i,j) c(i,j)表示 i , j i,j ij之间的travel cost
向量 d , d ′ d,d' dd分别为用nBow表示的两段文本。允许 d d d中任意的词 d i d_i di转化为 d ′ d' d的任意词 d i ′ d_i{'} di,这样得到一个转移矩阵 T ∈ R n × n T \in R^{n\times n} TRn×n,每个元素 T i j ≥ 0 T_{ij} \ge 0 Tij0 表示有多少词 i i i d d d 转移成了 d ′ d' d中的词 j j j 。最终我们需要把 d d d 中的所有词都转为 d ′ d' d 。而两个文档之间的 Travel cost 既可以表达为 [公式] 。 整体表达式如下:
min ⁡ T ≥ 0 ∑ i , j = 1 n T i j c ( i , j ) \min_{T\ge 0} \sum_{i,j=1}^n T_{ij}c(i,j) T0mini,j=1nTijc(i,j)
s . t . s.t. s.t.

∑ j = 1 n T i j = d i   , ∀ i ∈ { 1 , ⋯   , n } , 约 束 1 : d 中 的 第 i 个 词 的 流 出 总 和 需 要 等 于 d i \sum_{j=1}^n T_{ij}=d_i \ , \forall i \in \{1,\cdots,n\} ,约束1:d中的第i个词的流出总和需要等于d_i j=1nTij=di ,i{1,,n},1didi
∑ i = 1 n T i j = d j ′   , ∀ j ∈ { 1 , ⋯   , n } , 约 束 2 : d ′ 中 的 第 j 个 词 所 有 流 入 词 总 量 需 要 等 于 d j ′ \sum_{i=1}^n T_{ij} = d^{'}_j \ , \forall j \in \{1,\cdots,n\},约束2:d'中的第j个词所有流入词总量需要等于d_j{'} i=1nTij=dj ,j{1,,n},2djdj
整优化过程就是最小化目前,找到最合适的 T T T转化矩阵 。这个优化过程可以通过线性规划的求解器求解,最终算法复杂度为 O ( p 3 l o g p ) , p O(p{3}logp), p O(p3logp)p为文档中非重复词的个数整个过程示意图如下:
在这里插入图片描述
以上的线性规划问题是EMD算法中的一种特殊情况,具体求解过程可参考EMD算法。

4. 算法优化加速

4.1 WCD (word Centoid 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 d i x i − ∑ j = 1 n d j ′ x j ′ ∥ 2 = ∥ X d − X d ′ ∥ 2 \begin{aligned} \sum_{i,j=1}^n T_{ij} c(i,j) &= \sum_{i,j=1}^n T_{ij}\|x_i-x_j^{'}\|_2 \\ &= \sum_{i,j=1}^n \|T_{ij}(x_i-x_j^{'})\|_2 \\ &\ge \|\sum_{i,j=1}^n T_{ij}(x_i-x_j^{'})\|_2 \\ &=\|\sum_{i=1}^n(\sum_{j=1}^n T_{ij})x_i-\sum_{j=1}^n(\sum_{i=1}^n T_{ij})x_j^{'}\|_2\\ &= \|\sum_{i=1}^n d_ix_i - \sum_{j=1}^n d_j^{'}x_j^{'}\|_2\\ &= \|X\mathrm{d} - X\mathrm{d}^{'}\|_2 \end{aligned} i,j=1nTijc(i,j)=i,j=1nTijxixj2=i,j=1nTij(xixj)2i,j=1nTij(xixj)2=i=1n(j=1nTij)xij=1n(i=1nTij)xj2=i=1ndixij=1ndjxj2=XdXd2
WCD的式子 ∥ X d − X d ′ ∥ 2 \|X\mathrm{d} - X\mathrm{d}^{'}\|_2 XdXd2 d , d ′ d , d' d,d之间WMD的lower bound。对应时间复杂度为 O ( d p ) O(dp) O(dp) d d d为词向量维度, p p p为两文档非重复词个数。

4.2 RWMD(relaxed word moving distance)

尽管WCD的时间复杂度很低,但是边界过于宽松,无法很好的近似WMD。因此,这里使用更加tight的下界RWMD。RWMD需要计算两次,基于WMD目标函数,分别去掉两个约束条件中的一个,然后求解最小值,使用两个最小值中的最大值作为WMD的近似值。
比如,去掉第二个约束条件,可得:

min ⁡ T ≥ 0 ∑ i , j = 1 n T i j c ( i , j ) \min_{T\ge 0} \sum_{i,j=1}^n T_{ij}c(i,j) T0mini,j=1nTijc(i,j)
s . t . s.t. s.t.
∑ j = 1 n T i j = d i   , ∀ i ∈ { 1 , ⋯   , n } \sum_{j=1}^n T_{ij} = d_i \ , \forall i \in \{1,\cdots,n\} j=1nTij=di ,i{1,,n}
这个问题的最优解是,对于文本D1中的一个词,找到另一个文本D2中与之最相近的一个词,全部转移到这个词。即:
T i j ∗ = { d i   i f   j = arg ⁡ min ⁡ j c ( i , j ) 0   o t h e r w i s e T_{ij}^{*} = \left\{ \begin{aligned}&d_i \ \mathrm{if \ j=\arg\min_jc(i,j)} \\ &0 \ \mathrm{otherwise}\end{aligned} \right . Tij=di if j=argjminc(i,j)0 otherwise
使用 l 1 ( d , d ′ ) l_1(\mathrm{d},\mathrm{d^{'}}) l1(d,d) l 2 ( d , d ′ ) l_2(\mathrm{d},\mathrm{d^{'}}) l2(d,d)分别表示,去掉不同约束条件所计算得到的最小值,RWMD最终的最小值为:
l r ( d , d ′ ) = max ⁡ ( l 1 ( d , d ′ ) , l 2 ( d , d ′ ) ) l_r(\mathrm{d},\mathrm{d^{'}}) = \max(l_1(\mathrm{d},\mathrm{d^{'}}),l_2(\mathrm{d},\mathrm{d^{'}})) lr(d,d)=max(l1(d,d),l2(d,d))
这个的时间复杂度为 O ( p 2 ) O(p^2) O(p2)

5. WMD优缺点

优点

  • 不需要设置超参数
  • 无监督,不依赖标注数据
  • 有全局最优解
  • 可人为干预词的重要性

缺点

  • 词袋模型,没有保留语序信息
  • 不能处理OOV(out of vocabulary)问题
  • 处理否定词能力差
  • 处理领域同义词互斥词的能力偏差
  • 时间复杂度高
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值