词向量模型
Word embedding 是自然语言处理中的重要环节,它是一种文本表示方法,并不具体指某种算法或模型。Word embedding 的任务是把不可计算的文本转换成可以计算的向量 。
一 One hot编码
本质上,one-hot编码把所有词看作互相独立变量.
缺点
- 无法表达词和词之间的关系 • 相似 • 反义 • 上下位
- 在句子中的地位
- -空间占用大 • 数学计算不友好
- 词典外词的插入会带来麻烦,需要对所有词扩展维度
编码举例:
[“中国”, “美国”, “日本”, “美国”] —> [[1,0,0], [0,1,0], [0,0,1], [0,1,0]]
由于one-hot 维数多,使用降维的方法来优化。
- 1 PCA
- 2 SVD: 压缩的过程, 不一定是方矩阵,可以为m * n 的矩阵。
PCA/SVD后的问题
- 加入新词,需要重新计算
- 计算复杂度仍然很高
- 无法解释多义词
二 Word2vec
什么是好的词表示
- SPACE ECONOMICAL 使用内存空间小,稠密的矩阵表达,维度小一些与one-hot 相比
- ADAPTIVELY UPDATE 新语料,能方便的更新
- SEMANTIC SIMILARITY 可以计算语义相似性 我们希望 漂亮和好看的词近一些。
单词的意思,受到上下文的影响。
- 语料充分, 使用大量数据进行无监督模型训练得到
- 各词有份 每个词都会计算都得向量
- 考虑上下文实现 有当前词和周边词
- 计算周边词在当前词的条件下概率
- 训练优化 调节词向量使概率最大
1.1 目标函数
当前窗口为5个,最大化概率: P(对|计划) * P(未来|计划) * P(的|计划)*P(一|计划)
2.1 主流计算方法
1 Skip gram
Loss 函数的得到: 负号 将最大转化为最小。 原来是4个概率相乘,加log 后变成各项相加。
输入: 假设 输入 X one-hot V 词表大小,结果N 节点,词向量维度维度为N, 再经过V 个节点得到Y。
矩阵的解释输入 (V * V) × (V * N)
(我们需要的词向量) × N * V
最后得到 V * V
有 Wt, 存在映射关系得到 Wt-2 Wt-1 Wt+1 Wt+2,求和最大,求解得到(Wt)
2 CBOW
有 Wt-2 Wt-1 Wt+1 Wt+2 都关于(Wt),求和最大,求解得到(Wt)
通过上下文来预测当前值。相当于一句话中扣掉一个词,让你猜这个词是什么。
2.2 计算方面的优化方法
一个较大语料中的词和词关系非常多,而Softmax非常费时间
1 Tree softmax
Haffman tree 参数都空心的叶子上
将所有词的softmax 求最大,变成多次二分类后得到最大的softmax。
2 Negative Sampling (NEG)
NEG 采集负样本,NEC 对噪声的一个控制。
有负采样与Haffman tree 两个二选一。
当前词是正样本, 不是当前词就是负样本。NEG 随机增大负样本采样。 调节了词频概率。等距划分,带权重的采样。将多分类转换为二分类。
三 Glove 模型
https://nlp.stanford.edu/projects/glove/
最近邻概念
假设 窗口大小为2 两个词在同一窗口出现的次数。词频共现矩阵
相关概率/不相关概率 = 8.9
不相关概率/相关概率 = 0.085
下面公式为思路,非公式推导。让左右两边尽量相等,即差值最小化。
四 句子向量
可以通过词向量来得到 句子向量。