Word2Vec

分类: NLP基础

Word2Vec

定义

Word2Vec 是一种将词映射到低维稠密向量空间的词嵌入方法,通过在大规模语料上训练浅层神经网络,使语义相近的词在向量空间中距离更近,从而捕捉词的分布式语义表示。

数学形式

Skip-gram 目标函数:

J(θ)=1Tt=1Tcjc,j0logP(wt+jwt)J(\theta) = -\frac{1}{T} \sum_{t=1}^{T} \sum_{-c \leq j \leq c, j \neq 0} \log P(w_{t+j} | w_t) P(oc)=exp(uovc)w=1Vexp(uwvc)P(o | c) = \frac{\exp(u_o^\top v_c)}{\sum_{w=1}^{|V|} \exp(u_w^\top v_c)}

vcv_c: 中心词 cc 的嵌入向量(输入矩阵)

uou_o: 上下文词 oo 的嵌入向量(输出矩阵)

cc: 上下文窗口大小

TT: 语料库中的词总数

V|V|: 词表大小

负采样近似(实际训练中使用):

Jneg(θ)=logσ(uovc)+k=1KEwkPn(w)[logσ(uwkvc)]J_{\text{neg}}(\theta) = \log \sigma(u_o^\top v_c) + \sum_{k=1}^{K} \mathbb{E}_{w_k \sim P_n(w)} [\log \sigma(-u_{w_k}^\top v_c)]

KK: 负样本数(通常 5-20)

Pn(w)f(w)3/4P_n(w) \propto f(w)^{3/4}: 负采样分布,对词频取 3/4 次幂

核心要点

两种架构:CBOW(上下文预测中心词)和 Skip-gram(中心词预测上下文),Skip-gram 对低频词效果更好

负采样(Negative Sampling)将 softmax 的 O(V)O(|V|) 计算简化为 O(K)O(K),使大规模训练成为可能

学到的词向量具有线性代数结构,经典例子:vkingvman+vwomanvqueenv_{\text{king}} - v_{\text{man}} + v_{\text{woman}} \approx v_{\text{queen}}

本质上是在隐式分解词-上下文共现矩阵的 PMI(逐点互信息)矩阵(Levy & Goldberg, 2014)

预训练词向量是下游 NLP 任务的标准特征输入,开启了”预训练+微调”范式的先河

缺点:每个词只有一个静态向量,无法处理一词多义(后被 ELMo、BERT 等上下文嵌入取代)

代表工作

Mikolov et al. (2013a): “Efficient Estimation of Word Representations in Vector Space”,提出 Word2Vec

Mikolov et al. (2013b): “Distributed Representations of Words and Phrases and their Compositionality”,引入负采样

Levy & Goldberg (2014): 从矩阵分解角度解释 Word2Vec 与 PMI 的等价关系

相关概念

GloVe

Language Model

BERT

Tokenization