先这样答
结论是,word2vec 通过预测上下文学习 token 的向量表示。训练结束后,输入矩阵就是词向量。向量空间中距离近的 token,通常拥有相似的语义。
它有两种结构。CBOW 用上下文预测中心词。Skip-gram 用中心词预测上下文。两种结构的训练目标不同,但都在利用词语的共现关系学习表示。
为什么距离近的 token 语义相近?因为共现相似的词,会被要求预测相似的上下文分布。训练过程中,梯度会把它们推向向量空间中相近的区域。这里使用了分布假设:语义相似的词,上下文分布也相似。模型没有直接读取词的定义,而是从上下文关系中得到这种相似性。这个思路也构成了 embedding 检索的理论地基。
面试官会怎么追问
-
「CBOW 和 Skip-gram 分别在预测什么?」 CBOW 根据上下文预测中心词。Skip-gram 根据中心词预测上下文。两者都通过词语共现关系学习向量。
-
「为什么训练后要取输入矩阵作为词向量?」 word2vec 训练时会学习输入矩阵中的表示。训练结束后,这个输入矩阵就提供了每个 token 的向量。后续可以用这些向量表示 token 之间的关系。
-
「向量距离近为什么能表示语义相近?」 共现相似的词会面对相似的预测任务。梯度会把它们调整到相近区域。这个结论建立在分布假设上,也就是语义相似意味着上下文分布相似。
回答的坑
-
不要把 CBOW 说成用中心词预测上下文,那是 Skip-gram 的方向。
-
不要说模型直接理解了词义,距离接近来自相似的共现上下文和训练梯度。
同系列的题
这家公司的面经实录
—— 本题完 ——