核心思想

FastText的核心思想是利用子词(subword)信息构建词向量。与传统词嵌入模型(如Word2Vec)不同,FastText将每个词表示为其所有子词向量之和,从而更好地处理罕见词、拼写错误和形态丰富的语言。

子词生成方式

  • n-gram子词:对单词生成固定长度(如3-6)的字符级n-gram。

  • 边界符号:在单词前后添加<>符号以区分前缀和后缀。例如,apple变为<apple>,生成3-gram子词:<ap, app, ppl, ple, le>

  • 保留完整词:将整个单词也作为子词之一,确保常见词有独立向量。

  • 随机初始化:每个子词向量都是随机初始化的,并且在训练阶段通过反向传播进行更新,使得相关子词的表示更符合语料中的分布规律。。

  • 合理性

    • 线性可加性:子词向量的和保留了局部特征(词缀、词根)与全局特征(完整词)。
    • 共享表示unhappyhappy会共享happy子词的向量。
    • 降维效果

网络结构

FastText采用与Skip-Gram相似的架构,但输入层使用子词向量之和。

输入层

  • 对于词,其子词集合为,每个子词对应向量

  • 词向量计算方式:

隐藏层

  • 直接使用输入层向量作为隐藏层输出(无激活函数),维度为

输出层

FastText的输出仍然是传统Skip-Gram中的上下文词向量,并不包含子词。

  • 层次Softmax:通过霍夫曼树将计算复杂度从降低到,其中为词汇表。

  • 负采样:对负样本采样近似Softmax,目标函数为:
    其中为上下文向量,为负样本数,为Sigmoid函数。

损失函数

Skip-Gram目标函数:最大化上下文词的条件概率
其中通过子词向量计算:

关键设计细节

  1. 共享子词向量:不同词的相同子词共享相同的词向量,提升数据利用率。

  2. 可变长度n-gram:默认使用3-6 gram,平衡局部特征和计算效率。

  3. 高频词过滤:类似Word2Vec,采用Subsampling技术减少高频词的影响。

优点和缺点

  • 优点

    • 可处理OOV词(未登录词)。
    • 对形态丰富的语言效果更好(比如法语)。
    • 通过子词共享提升小数据集泛化能力。
  • 缺点

    • 存储开销较大(需存储所有子词向量)。
    • 长词的计算成本较高,需要频繁查表。
    • 对短词(n < gram长度)不友好。