李宏毅 机器学习(8)- 非监督学习-word_embedding, neighbor embedding

深度学习

Posted by renjie on June 6, 2020


李宏毅 机器学习(8)- 非监督学习-word embedding ,neighbor embedding

Word Embedding

Machine learns the meaning of words from reading a lot of documents without supervision

1、什么是word embedding?

把每一个word project 到一个high dimension的空间里

2、word embedding 怎么做

不能用auto-encoder来解: 因为1 of n encoding是independent的

我们应该用上下文来做这件事

Count Based

Prediction Based

Given前一个word,predict 后一个word是什么

同时呢,要保证类似词汇的output相同,就需要shared parameters

Training

就是把大量的文本信息输入,来无监督地训练模型

CBOW 和 skip-gram

cbow:前后词predict中间

skip-gram:中间词predict前后词

只有一个hidden layer

3、word embedding 应用

中文、英文做出来的vector没有任何关系

想做multi-lingual embedding,就需要做两个vector,再做一个model,联系起来

影像应用

好处是遇到trainning set里没有的东西,也能有一个不错的预测

document embedding

bag-of-word: 来训练document的正负

但是光用bag-of-word会失去很多重要信息,有其他先进的方法来做。

第一个unsupervised 其他 supervised

Neighbor Embedding

t-SNE 的NE就是neighbor embedding

其实做的就是非线性的降维

Manifold learning 就是展开高纬的空间,然后就可以用欧氏几何距离来判断相似性

LLE

Wij就是线性组合的weight

然后进行降维,降维后,wij不变,也就是说她们之间的关系不变

要选取数值合适的k值,也就是neighbor的数量

Laplacian Eigenmaps

如果你想要比较两点之间的距离,光用欧氏几何距离是不够的,而要看她们在high density的region之间的distance

Spectral clustering: clustering on z:就是说先用Laplacian Eigenmaps降维后,再用k-means

而z就是graph laplacian的 eigenvector(对应到比较小的eigenvalue)

t-SNE

前面的方法只假设相近的点要接近,没有假设不接近的点要分开

右边的圈圈是旋转图片

找到一个z让 xi对其他point的分布和zi对其他point的分布的kl divergence 越小越好

实际上还是gradient descent来做

计算量非常大,通常用快的降维方法例如pca先来做降到比方说50维度,再用tsne降到2维

由于新data会导致重新跑model,所以tsne一般不用在training testing这种base上,而是用在visualization,高纬降到2维度上展示

similarity measure

不同的距离function的好处,就是用t分布,原来距离近的点降维后还是很近,原来距离远的点降维后会更远