词向量的功能

要将自然语言交给机器学习中的算法来处理,通常需要首先将语言数学化,词向量就是用来将语言中的词进行数学化的一种方式。
通过将文字转化成向量的形式才有助于计算机对文字的处理。

传统方法的局限

WordNet

WordNet 是一个基于词汇语义关系的词典,它按照意义(而不是字母顺序)组织单词,并建立了同义词、反义词、上位词、下位词等关系。


局限性

  • 不能表示细微的语义差异
  • 不能处理多义词的上下文(一词多义)
  • 词汇覆盖不全,难以扩展
  • 不能表示词的向量关系(无法体现出词与词之间的相似度)

    One-hot 向量

    这个向量的特点是:只有一个位置是1,其他全是0,这就是 One-hot 向量。通过不同位置的$1$来区分词。

局限性

  • 维度太高,高维稀疏,浪费空间(如果词数量过高,会导致超大的内存占用)
  • 无法表示词的相似性(One-hot 向量不能表达词的语义信息。)
  • 无法表示词的组合关系

由于传统方法有各种局限,科学家又想出了新的方法


分布式语义学

分布式语义学是一种用数学方法来表示单词含义的理论,核心思想是:一个单词的含义,由它所处的上下文决定。
我们可以通过统计一个单词周围的单词,来推测它的意思!(类比完形填空)

Word2Vec 模型

核心思想:通过预测词的上下文(周围词)学习词的向量表示。

优化方法:

负采样

负采样通过简化目标函数,将多分类问题转化为二元分类问题:

正样本:中心词与真实上下文词的配对(如“苹果”和“吃”)。

负样本:中心词与随机采样的无关词的配对(如“苹果”和“火箭”)。

模型需要:

  • 最大化正样本的概率(即二者相关)。
  • 最小化负样本的概率(即二者无关)。

负样本的选择不是完全随机的,而是根据词频调整。例如,高频词(如 “的”“在”)被采样的概率会降低,低频词(如 “量子”“宇宙”)被采样的概率会提高。

这样可以避免模型过度关注常见词,更有效地学习低频词的语义。
公式:

$P(w) = \frac{\text{词频}(w)^{3/4}}{\sum \text{词频}(w)^{3/4}}$

优势

简化计算:原本需要计算百万次的概率,现在只需要计算几次(比如 5-20 次),大大减少了计算量。

随机梯度下降

在训练机器学习和深度学习模型时,我们需要找到最优参数,让模型在预测时误差最小。梯度下降就是常用的优化方法。

普通梯度下降需要计算所有数据的平均梯度,计算量太大,速度太慢!
随机梯度下降的核心思想:每次只用一个样本来更新参数!(逐样本更新参数,加速训练)
最大优势是计算量小,更新速度快

模型变体:Skip-gram(中心词→上下文)和 CBOW(上下文→中心词)

Skip-gram —— 用中心词猜测周围的词
CBOW —— 用上下文猜测中心词

词向量的改进

传统共现矩阵:直接统计词共现次数,但维度高、稀疏性强。

优化方法:GloVe 模型

通过对数双线性模型捕捉词间关系(如 “国王 - 男人 + 女人 = 王后”),优化词向量质量。
GloVe 主要是基于共现信息来训练词向量,具体来说,它在数学上做了两件事情:

  • 统计单词的共现概率
  • 用数学公式优化词向量

通过这种方法,我们不仅能衡量单词的相似度,还能理解单词之间的关系。

如何评估词向量的好坏?

  • 内在评估 —— 在词向量本身上进行测试
    如果计算机的判断和人类相似,说明词向量的质量比较高!
  • 外在评估 —— 在真实任务中验证效果
    如果一个词向量能在多个 NLP 任务上表现良好,那它就是真的“好用”!

词义歧义问题

通过聚类或线性组合不同语境下的词向量,分离不同词义。

在自然语言中,一个单词可能有多个意思,比如:在饮食类书籍里,“苹果”更多指水果,但在科技类书籍里,它通常指苹果公司。

  • 方法1:可以把这些不同的语境分成两组(聚类),分别给它们创建不同的词向量
  • 方法2:用「线性组合」调整词向量
    我们可以用加权平均的方法,把不同的语境向量线性组合,得到一个更准确的词向量。

例如:
水果的“苹果” → 0.7 语境1向量 + 0.3 语境2向量
公司的“苹果” → 0.2 语境1向量 + 0.8 语境2向量

这样,即使一个单词出现在不同的场景里,我们也可以通过动态调整它的向量,让计算机理解它当前的意思。

神经网络分类器

逻辑回归:线性分类器,通过概率预测标签。

逻辑回归就是一个最简单的分类器,它用一个线性方程计算分数(即“概率”),然后用Sigmoid函数把结果压缩到 0-1 之间,表示某个类别的可能性。

神经网络

多层结构

通过非线性激活函数学习复杂特征,让神经网络学到非线性关系。

交叉熵损失

衡量预测概率与真实标签的差异,用于训练模型。
优化目标:调整神经网络的参数,使交叉熵损失最小!

神经计算基础

神经元模型

模拟生物神经元,通过加权输入和激活函数输出结果。
计算输入的加权和,并通过激活函数输出。(权衡多个因素后做出判断)

多层网络

通过叠加非线性层实现更强大的特征提取和分类能力。
通过层层提取特征,实现复杂分类。