
AI 论文解读系列:Word2Vec - 词向量的革命
“You shall know a word by the company it keeps.” — John Rupert Firth 引言:从符号到语义 想象一下,你正在阅读一篇关于"苹果"的文章。在"乔布斯推出了划时代的苹果产品"这句话中,“苹果"显然指的是一家公司;而在"我喜欢吃新鲜的苹果"中,它则是一种水果。人类能够毫不费力地根据上下文理解这种歧义,但对于计算机而言,这曾是一个巨大的挑战。 在 Word2Vec 出现之前,自然语言处理主要依赖独热编码(One-Hot Encoding):每个词都被表示为一个高维稀疏向量,向量中只有对应位置为 $1$,其余全为 $0$。“苹果"可能是 $[0, 0, 1, 0, \ldots, 0]$,“香蕉"是 $[0, 0, 0, 1, \ldots, 0]$。这种方法的问题显而易见:任意两个词之间的余弦相似度都是 $0$,模型完全无法捕捉"苹果"和"香蕉"都是水果这一语义关系。 2013 年,Tomas Mikolov 等人在 Google 提出了 Word2Vec,这是一种能够从大规模语料库中学习词向量表示的浅层神经网络。其核心思想简单却深刻:语义相近的词,其上下文也相似。这一方法不仅在多项语义和语法任务上取得了当时最先进的性能,更开启了深度学习在自然语言处理领域的广泛应用。 本文将带你深入理解 Word2Vec 的数学原理,从神经概率语言模型出发,完整推导 CBOW 和 Skip-gram 两种架构,并探讨其在现代 NLP 中的深远影响。 第一章:从词袋到神经语言模型 1.1 统计语言模型的演进 语言模型的核心任务是计算一个句子出现的概率。对于包含 $n$ 个词的句子 $$w_1, w_2, \ldots, w_n$$ 其联合概率可以分解为: $$P(w_1, w_2, \ldots, w_n) = \prod_{i=1}^{n} P(w_i \mid w_1, \ldots, w_{i-1})$$ 这个分解基于链式法则,但直接估计这些条件概率面临维度灾难——历史词的组合数是指数级的。 ...