Word2Vec详解(1)
Word2vec
One-hot与Word2Vec
首先要与更早出现的one-hot编码进行对比。
词典大小为N,one-hot编码可以将每个词就表示成一个⻓度为N的向量,只有第i位(i取0到N-1)为1,其他位置为0。
one-hot编码构造简单,但是却很难标示出词与词之间的关系。
以我们所熟悉的余弦相似度举例:
man与woman、man与orange的余弦相似度都为0。
显然,并不具备什么区分度,很难表示出词的相似关系。
针对这个问题,提出了Word2Vec工具。
Word2Vec将每个词表示成定长的向量,并利用这些特征维度标示出词的相似关系。
举例,每个词的维度可能包括:性别、年龄、是否是食物、等等...
word2vec工具包含两个模型
- 跳字模型(skip-gram)
- 连续词袋模型(continuous bag of words,CBOW)
前者假设基于中心词来生成序列位置前后的背景词
后者则假设假设基于前后的背景词来生成中心词
假设文本序列:“Sanqi”“is”“a”“stupid”“student”。以“a”作为中心词,设背景窗口大小为2。
Skip-gram关心的是,给定“a”,生成距离2个词以内的“Sanqi”“is”“stupid”“student”的条件概率,即
P (“Sanqi”“is”“stupid”“student” | “a”).
假设给定中心词,背景词的生成是相互独立的,可改写为
P (“Sanqi” | “a”) · P (“is”| “a”) · P (“stupid” | “a”) · P (“student” | “a”).
而CBOW关心的是,给定“Sanqi”“is”“stupid”“student”生成中心词“a”的条件概率,即P ( “a” | “Sanqi”“is”“stupid”“student”).