| 第246行: |
第246行: |
| | ·支持线性类比关系,类似 Word2Vec(如“king - man + woman ≈ queen”) | | ·支持线性类比关系,类似 Word2Vec(如“king - man + woman ≈ queen”) |
| | | | |
| − | ==== FastText ==== | + | ==== 5.2 FastText ==== |
| | + | |
| | + | ===== 背景: ===== |
| | + | FastText 是由 Facebook AI Research 的 Armand Joulin、Tomas Mikolov 等人于 2016 年提出,旨在解决 Word2Vec 模型在处理罕见词、词形变化(如复数、时态)等方面的能力不足。其核心理念是在训练过程中引入子词信息,以增强词向量对形态的建模能力。 |
| | + | |
| | + | ===== 技术原理: ===== |
| | + | FastText 的核心思想是:'''将词视为子词(subword)n-gram 的组合体''',而不是独立的原子单位。这一设计增强了模型对罕见词、形态变化词以及未登录词(OOV)的表示能力。 |
| | + | |
| | + | ====== ·子词建模(Subword Embedding): ====== |
| | + | 每个单词 <math>w</math> 被划分为若干个字符 n-gram,例如设置 n = 3~6 时: |
| | + | |
| | + | 对于词 “where”,首先在其两端添加边界符号(如 < 和 >),构成:<where>,然后提取字符 n-gram 得到: <wh, whe, her, ere, re>,包括完整词本身 "where",最终表示为一个 n-gram 集合 <math>G_w</math>。 |
| | + | |
| | + | 词向量的表示为其所有 n-gram 向量的平均或和: |
| | + | |
| | + | <math>v_w = \sum_{g \in G} w_g z_g |
| | + | </math> |
| | + | |
| | + | 其中: |
| | + | |
| | + | <math>z_g</math> 是 n-gram <math>g</math> 的嵌入向量; |
| | + | |
| | + | <math>G_w</math> 是词 <math>w</math> 的所有子词集合。 |
| | + | |
| | + | 这种表示方式让模型在遇到未登录词时,也可以通过其组成子词获取合理向量。 |
| | + | |
| | + | ====== ·模型结构与训练: ====== |
| | + | FastText 延续了 Word2Vec 的 Skip-gram 架构,但输入词不再是 one-hot 编码的词本身,而是其所有 n-gram 的组合。训练目标为:给定中心词(子词组合向量),预测其上下文词。即最大化如下目标函数: |
| | + | |
| | + | <math>L_{\text{Skip-gram}} = \sum_{(w_t, w_o) \in D} \left[ \log \sigma\left( \mathbf{v}_{w_o}^\top \mathbf{v}_{w_t} \right) + \sum_{i=1}^{k} \mathbb{E}_{w_i' \sim P_n(w)} \log \sigma\left( -\mathbf{v}_{w_i'}^\top \mathbf{v}_{w_t} \right) \right] |
| | + | </math> |
| | + | |
| | + | 其中: |
| | + | |
| | + | <math>w</math> 是由子词构成的中心词向量; |
| | + | |
| | + | <math>v_{wo}</math> 是上下文词向量; |
| | + | |
| | + | 负采样 <math>P_n(w)</math> 用于高效近似 softmax。 |
| | + | |
| | + | FastText 的训练过程本质上是'''端到端地联合优化所有子词的向量表示''',以提升整体语义建模能力。 |
| | + | |
| | + | ===== 总结与对比: ===== |
| | + | '''子词增强表示能力''':FastText 通过引入 n-gram,有效表示未登录词与形态变化词; |
| | + | |
| | + | '''面向多语言与拼写多样化语言'''(如芬兰语、德语)效果显著优于 Word2Vec; |
| | + | |
| | + | '''与 Word2Vec 相比''':Word2Vec 只能对词表中出现过的词进行建模,FastText 可泛化到未出现的新词,具备更强的鲁棒性与泛化能力; |
| | + | |
| | + | '''与 GloVe 相比''':GloVe 基于全局共现信息构建稠密表示,适合静态建模,FastText 基于局部上下文与子词结构,适合细粒度语义与动态扩展; |
| | + | |
| | + | '''应用场景广泛''':在文本分类、命名实体识别、搜索排序、拼写纠错、推荐系统中广泛使用; |
| | | | |
| | ==== BERT 和 Transformer 模型 ==== | | ==== BERT 和 Transformer 模型 ==== |