[机器学习-从入门到入土] 词嵌入
个人导航
知乎:https://www.zhihu.com/people/byzh_rc
CSDN:https://blog.csdn.net/qq_54636039
注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码
参考文章:各方资料
文章目录
- [机器学习-从入门到入土] 词嵌入
- 个人导航
- 词嵌入Word Embedding
- 词袋模型(bag-of-words)(BOW)
- Word2Vec
词嵌入Word Embedding
神经网络只能处理数值向量,因此必须先把词映射为向量
具有相同含义的词语会获得相似的表示
大多数神经网络难以有效处理非常高维且稀疏的向量
-> 使用低维且稠密的向量
词袋模型(bag-of-words)(BOW)
计每个单词出现的次数,将任意文本转换为固定长度向量的表示方法
- 词表大小 =V VV
- 每个文本 → 一个V VV维向量
- 每一维表示某个词出现的次数
问题 1:极度稀疏
- 一个句子只包含极少数词
- 向量中几乎全是 0
问题 2:没有语义结构
- “king” 与 “queen” 在向量空间中正交
- “king” 和 “apple” 距离一样远
Word Embedding 的目标:用低维、稠密的连续向量表示词,并让“语义相近的词在向量空间中距离更近”
Word2Vec
词的含义来自它的上下文
-> 语义相似的词会出现在相似的上下文中
Skip-gram:
给定语料:“the king loves the queen”
以窗口大小c = 2 c=2c=2为例:当中心词是king, 要预测the,loves
于是训练样本变成:
( king → the ) , ( king → loves ) (\text{king} \rightarrow \text{the}),\quad (\text{king} \rightarrow \text{loves})(king→the),(king→loves)
Skip-gram 的目标函数(最大化):
1 T ∑ t = 1 T ∑ − c ≤ j ≤ c , j ≠ 0 log p ( w t + j ∣ w t ) \frac{1}{T}\sum_{t=1}^{T}\sum_{-c\leq j\leq c,j\neq 0}\log p\left(w_{t+j}\mid w_{t}\right)T1t=1∑T−c≤j≤c,j=0∑logp(wt+j∣wt)
- T TT:语料中词的总数
- w t w_twt:中心词
- w t + j w_{t+j}wt+j:上下文词
- 目标:给定中心词w t w_twt,最大化真实上下文词出现的概率
Skip-gram 的概率模型:(Softmax)
p ( w O ∣ w I ) = exp ( v w O ′ ⊤ v w I ) ∑ w = 1 W exp ( v w ′ ⊤ v w I ) p\left(w_{O}\mid w_{I}\right) =\frac{\exp\left(v_{w_{O}}^{\prime\top} v_{w_{I}}\right)} {\sum_{w=1}^{W}\exp\left(v_{w}^{\prime\top} v_{w_{I}}\right)}p(wO∣wI)=∑w=1Wexp(vw′⊤vwI)exp(vwO′⊤vwI)
v w I v_{w_I}vwI:输入词向量(中心词)
v w O ′ v'_{w_O}vwO′:输出词向量(上下文词)
训练结束后:通常只保留v w v_wvw作为词嵌入
也有: King - man +woman -> Queen
说明能学到单词之间的逻辑关系
| 维度 | BOW | Word2Vec |
|---|---|---|
| 向量维度 | 词表大小(上万) | 低维(50–300) |
| 稀疏性 | 极稀疏 | 稠密 |
| 是否学习 | ❌ 固定编码 | ✅ 从数据中学 |
| 语义相似性 | ❌ 无 | ✅ 有 |
| 词间关系 | ❌ | ✅(向量运算) |