自然语言处理中的词嵌入与半监督学习方法
1. 高效词嵌入学习方法
在自然语言处理中,为避免对所有词 $w’$ 进行代价高昂的求和运算,我们可以针对 $w_t$ 对一个较小的负样本词集进行求和。具体公式如下:
$\log p(w) \approx \sum_{t} \left[ u_{c_t}^{\top} v_{w_t} - \sum_{w’ \in neg_t} \log(1 - \sigma(v_{w_t}^{\top} u_{w’})) \right]$
其中,$neg_t$ 是一组随机选择的、未出现在 $w_t$ 上下文窗口中的词。这种方法被称为带负采样的跳字模型(Skip-Gram with Negative Sampling,SGNS),它比标准的跳字模型训练速度快很多。虽然 SGNS 训练速度比连续词袋模型(CBOW)慢,但往往能学习到比 CBOW 更好的词嵌入。
研究表明,SGNS 等价于对点互信息(PMI)矩阵的一个偏移版本应用奇异值分解(SVD),偏移后的 PMI 矩阵定义为:
$shiftedPMI(i, j) \triangleq PMI(i, j) - \log(N^-)$
这里的 $N^-$ 是为每个词 $i$ 采样的负上下文数量。
2. 随机游走词嵌入模型
与使用词的独热编码相比,词嵌入显著提高了各种自然语言处理模型的性能。为了解释词嵌入为何如此有效,我们引入基于随机游走的词嵌入生成模型。
考虑一个词序列 $w_1, \cdots, w_T$,假设每个词由一个潜在上下文或话语向量 $z_t \in \mathbb{R}^D$ 通过以下对数双线性语言模型生成:
超级会员免费看
订阅专栏 解锁全文
1349

被折叠的 条评论
为什么被折叠?



