4. Iteration Based Methods - Word2vec
这里我们尝试一个新的方法。我们可以尝试创建一个模型,该模
型能够一次学习一个迭代,并最终能够对给定上下文的单词的概
率进行编码,而不是计算和存储一些大型数据集(可能是数十亿
个句子)的全局信息。
这个想法是设计一个模型,该模型的参数就是词向量。然后根据
一个目标函数训练模型,在每次模型的迭代计算误差,并遵循一
些更新规则,该规则具有惩罚造成错误的模型参数的作用,从而
可以学习到词向量。这个方法可以追溯到 1986 年,我们称这
个方法为“反向传播”,模型和任务越简单,训练它的速度就越
快。
已经很多人按照这个思路测试了不同的方法。[Collobert et al.,
2011] 设计的模型首先将每个单词转换为向量。对每个特定的任
务(命名实体识别、词性标注等等),他们不仅训练模型的参
数,同时也训练单词向量,计算出了非常好的词向量的同时取得
了很好的性能。
在这里 , 我们介绍一 个 非 常有效 的 概 率模型 :Word2vec。
Word2vec 是一个软件包实际上包含:
•
两 个 算 法 : continuous bag-of-words ( CBOW ) 和
skip-gram。CBOW 是根据中心词周围的上下文单词来预
测该词的词向量。skip-gram 则相反,是根据中心词预测
周围上下文的词的概率分布。
•
两 个 训 练 方 法 : negative sampling 和 hierarchical
softmax。Negative sampling 通过抽取负样本来定义目
标,hierarchical softmax 通过使用一个有效的树结构来计
算所有词的概率来定义目标。
4.1 Language Models (Unigrams, Bigrams, etc.)
首先,需要创建一个模型来为一系列的单词分配概率。从例子开
始:
“The cat jumped over the puddle”
一个好的语言模型会给这个句子很高的概率,因为在句法和语义
上这是一个完全有效的句子。相似地,句子“stock boil fish is
toy”会得到一个很低的概率,因为这是一个无意义的句子。在
数学上,我们可以称为对给定 n 个词的序列的概率是: