目标:通过word的context来理解word的关系。
难点:怎样挖掘word的context?
1. Count based算法
原理:Wi和Wj经常co-occor,则V(Wi)和V(Wj)接近。
1.1. Glove Vector
Ag也有讲这个算法link
2. Predition Based算法
2.1. 基本算法
- 训练一个NN,输入,预测是每个单词的概率。
- 把NN中的第1个hidden layer拿出来,即z
- 用z代表单词wi
原文中NN部分只有1个hidden layer。因此1个hidden layer的计算量,因此可以跑大量的Data。
2.2. 算法拓展
基于 拓展为 基于wi的几N个单词,
同时结合参数共享的思想。
参数共享的原理:同一个单词放在wi之前的不同位置,效果应该相同。
2.3. 算法变形
(1)基于wi前后的单词预测wi
(2)基于wi预测wi前后的单词
3. Embedding算法的应用
3.1. Word Embedding
- 相同关系的两个词的向量的相对位置类似
图中左边为国家与首都的向量关系,右边为动词三次的向量关系。 - 相同关系的两个词的向量相减,结果落在同一区域。
3.2. 多语言 Embedding
- 对两种语言分别做embedding,此时两种embedding没有任何关系。
- 基于一些确定的中英词对,将两种embedding映射到同一空间。图如图中绿底中文和绿框英文。
- 此时出现新的中文embedding与英文embedding,经过相同的映射后,会出现在附近的位置。例如图中绿底中文和黄底英文。
3.3. 多领域 Embedding
- 同一类别的图像出现在Embedding空间的同一位置
- 一张新图,通过Embedding向量周边向量的类别来确定这张新图的类别。
参考上文提到的Zero-Shot问题。
3.4. 文件Embedding
不同长度的文件 --> 相同长度的vector
静态Embedding法
缺点:Bag of word没有考虑到内容中单词的顺序
改进:没讲
3.5. 领域 Neighbor Embedding
Manifold Learning,相当于非线性的降维
经典例子:地球表面
引入原因:由于低维空间的点在高维空间扭曲,导致原本的“距离”可能没有意义。
解决方法:把点在低维空间拉平
3.5.1. 方法一:LLE
- 任意选择一个点xi
- 任意选择点xi的Neighbour,即点xj
- 定义xi与xj的关系为
最小化以下公式:
降维,把xi, xj转成zi,zj,降维后不变。
优点:
不需要知道原xi, xj,只要知道,就可以求出降维后的zi, zj。
3.5.2. 方法二:Laplacian Eigenmaps
两个点的距离不是欧氏距离,而是两个点间的high density path
代表遍历所有的数据对,但只有大的情况下,才会考虑对(z^i - z^j)^2影响。
大的情况下,(x^i - x^j)^2肯定小,按照以上公式,这种情况也必须小。
另外,为了防止训练结果为所有的z都为0,还需要再加一个要求:
3.5.3. 方法三:t-SNE
T-distributed Stochastic Neighbour Embedding
https://blog.csdn.net/scott198510/article/details/76099700
方法一、二存在的问题:
只要求相似的点靠近,没有要求不同的点分开,所以最后所有的点都挤到一起。
T-SNE可以解决这样的问题。
训练步骤:
- 计算所有点对的相似度: S(xi, xj),两个点之间距离越近,相似度越大。
Normalization
在低维空间随机生成同样多的点z,假设zi, zj就是xi, xj对应的转换结果,计算S'(zi, zj)
- Normalization
假设上图中左图为高维空间的点x1计算出来的归一化之后的相似度。右图是低维空间点z1计算出来的归一化之后的相似度。
每一组相似度都可以看作是一个Multinomial分布。 计算分布P与分布Q的相似度,使用的指示是KL divergence(KL散度)
对每个点“在高维空间的相似度分布P”和“低维空间的相似度分布Q”之间的相似度(KL散度)。
所有点计算出的KL散度之和就是这个模型的Loss Function。通过不断迭代调整z的位置降低Loss。
缺点:
(1)计算量大
解决方法:先使用PCA降维,例如:50维 --PCA--> 10维 --t-SNE--> 2维
(2)如果来一个新的x,要求x对应的z,需要把算法重新跑一遍。
解决方法:该算法不用于训练模型,而是主要用于数据的可视化
t-SNE的一个关键的创新点:
x的相似度计算公式S和z的相似度计算公式S'不同。
S与S'的关系如图所示:
图中蓝线是高维空间数据的S公式。绿线为低维空间数据的S'公式。
当xi与xj接近时,zi与zj之间的距离更近。
当xi与xj比较远时,zi与zj的间隔更远(强化gap)。
效果: