0%

Word Embedding Note

idea

  • 将所有word都project到一个high dimensional space(但是这个“high”也远比1-of-N的维度低的多)上
  • Embedding中的每一个dimension都有自己的含义

Word Embedding是一种无监督式学习,只需要让模型阅读大量的文本资料,模型就能学习怎么将如何用vector表示所有单词学习出来。

那怎么找到这样的function去训练模型 exploit the context?
有以下两种思路:(1)count based;(2)prediction based;

Count Based

让Word w_i和w_j的向量乘积能够近似于w_i和w_j共同出现的document数量。

Prediction Based

  1. given a word, predict 下一个word是什么

    input: 词汇的 1-of-N encoding

    output: 概率分布vector,dim=N

    完成训练后,模型是中间的hidden layer-z。因为不同的w_i作为input放进模型的时候,对应的z_i不同,可以用z_i表示w_i.

    prediction-based为什么可以学习到context信息?

    下面的例子(抛开政治含义)是说:如果training data中,两个人名后面跟着的word一致,那么模型需要让两个人名作为input的时候,输出的probability distribution vector应该要差不多,才能保证预测的下一个词是一样的。

    那么,为了实现这一点,中间的hidden layer就会倾向于将两个人名project到一个比较接近的空间,这样就能实现context的捕捉

  2. given 2 words, predict 下一个词是什么

  • Prediction-based-Sharing Parameters

    idea:只用一个词去预测下一个词可能不可靠,应该用多个词一起去预测下一个词

    • 在上图中,为了保证w_i, w_j保持一致(共享权重),需要:
      1. 初始化一致
      2. 在更新参数w_i时,不仅更新w_i本身的偏微分,还会更新w_j的偏微分,更新w_j时同理

Prediction Based Training methods

1. Basic

Input:两个相邻词的1-of-n encoding

Output: 概率分布vector,dim=N

Loss:概率分布vector与下一个词的1-of-n encoding的cross entrophy

2. CBOW-Continuous bag of word model

思路:用w_i-1, w_i+1去预测w_i

3. Skip-gram

思路:给一个词w_i,去预测上下文w_i-1, w_i+1

Word Embedding一些有趣的特性

  1. 左图:国家和其首都的vector之间的联系很相像,所以可以做有趣的计算,如:(China-Japan)+ tokyo=Beijing,或者像下图一样,计算Berlin是哪个国家的首都

  2. 右图:一个单词的不同时态的vector构成的三角形很相似