更改

添加18字节 、 2025年6月8日 (日) 16:04
第143行: 第143行:  
=='''应用领域'''==
 
=='''应用领域'''==
   −
*自然语言处理(语义分析、机器翻译、文本分类)
+
=== 自然语言处理(语义分析、机器翻译、文本分类) ===
−
*推荐系统
+
 
−
*信息检索
+
=== 推荐系统 ===
−
*其他领域(如生物信息学、社会科学)
+
 
 +
=== 信息检索 ===
 +
 
 +
=== 其他领域(如生物信息学、社会科学) ===
    
=='''优缺点'''==
 
=='''优缺点'''==
第192行: 第195行:  
=='''相关技术与扩展'''==
 
=='''相关技术与扩展'''==
   −
==== '''5.1 GloVe(Global Vectors for Word Representation)''' ====
+
==='''5.1 GloVe(Global Vectors for Word Representation)'''===
   −
===== 背景: =====
+
==== 背景: ====
 
GloVe 是由斯坦福大学的 Jeffrey Pennington、Richard Socher 和 Christopher D. Manning 于 2014 年提出,旨在结合传统基于计数的模型(如 LSA)和 Word2Vec 的优势,提出一种高效的全局词向量训练方法。
 
GloVe 是由斯坦福大学的 Jeffrey Pennington、Richard Socher 和 Christopher D. Manning 于 2014 年提出,旨在结合传统基于计数的模型(如 LSA)和 Word2Vec 的优势,提出一种高效的全局词向量训练方法。
   −
===== 技术原理: =====
+
==== 技术原理: ====
 
GloVe 是一种基于全局共现信息来学习词向量的方法,与 Word2Vec 不同,它不依赖上下文窗口中的预测任务,而是采用词与词之间在整个语料库中共现频率的统计信息来构造词语之间的关系。
 
GloVe 是一种基于全局共现信息来学习词向量的方法,与 Word2Vec 不同,它不依赖上下文窗口中的预测任务,而是采用词与词之间在整个语料库中共现频率的统计信息来构造词语之间的关系。
   第237行: 第240行:  
这个函数可以防止高频词主导模型训练,也避免了低频词对整体模型质量的影响。
 
这个函数可以防止高频词主导模型训练,也避免了低频词对整体模型质量的影响。
   −
===== 总结与对比: =====
+
==== 总结与对比: ====
 
·不同于 Word2Vec:Word2Vec 是基于预测任务(局部上下文窗口);而 GloVe 是基于矩阵分解(全局共现频率);
 
·不同于 Word2Vec:Word2Vec 是基于预测任务(局部上下文窗口);而 GloVe 是基于矩阵分解(全局共现频率);
   第246行: 第249行:  
·支持线性类比关系,类似 Word2Vec(如“king - man + woman ≈ queen”)
 
·支持线性类比关系,类似 Word2Vec(如“king - man + woman ≈ queen”)
   −
==== 5.2 FastText ====
+
=== 5.2 FastText ===
   −
===== 背景: =====
+
==== 背景: ====
 
FastText 是由 Facebook AI Research 的 Armand Joulin、Tomas Mikolov 等人于 2016 年提出,旨在解决 Word2Vec 模型在处理罕见词、词形变化(如复数、时态)等方面的能力不足。其核心理念是在训练过程中引入子词信息,以增强词向量对形态的建模能力。
 
FastText 是由 Facebook AI Research 的 Armand Joulin、Tomas Mikolov 等人于 2016 年提出,旨在解决 Word2Vec 模型在处理罕见词、词形变化(如复数、时态)等方面的能力不足。其核心理念是在训练过程中引入子词信息,以增强词向量对形态的建模能力。
   −
===== 技术原理: =====
+
==== 技术原理: ====
 
FastText 的核心思想是:将词视为子词(subword)n-gram 的组合体,而不是独立的原子单位。这一设计增强了模型对罕见词、形态变化词以及未登录词(OOV)的表示能力。
 
FastText 的核心思想是:将词视为子词(subword)n-gram 的组合体,而不是独立的原子单位。这一设计增强了模型对罕见词、形态变化词以及未登录词(OOV)的表示能力。
   −
====== ·子词建模(Subword Embedding): ======
+
===== ·子词建模(Subword Embedding): =====
 
每个单词 <math>w</math> 被划分为若干个字符 n-gram,例如设置 n = 3~6 时:
 
每个单词 <math>w</math> 被划分为若干个字符 n-gram,例如设置 n = 3~6 时:
   第272行: 第275行:  
这种表示方式让模型在遇到未登录词时,也可以通过其组成子词获取合理向量。
 
这种表示方式让模型在遇到未登录词时,也可以通过其组成子词获取合理向量。
   −
====== ·模型结构与训练: ======
+
===== ·模型结构与训练: =====
 
FastText 延续了 Word2Vec 的 Skip-gram 架构,但输入词不再是 one-hot 编码的词本身,而是其所有 n-gram 的组合。训练目标为:给定中心词(子词组合向量),预测其上下文词。即最大化如下目标函数:
 
FastText 延续了 Word2Vec 的 Skip-gram 架构,但输入词不再是 one-hot 编码的词本身,而是其所有 n-gram 的组合。训练目标为:给定中心词(子词组合向量),预测其上下文词。即最大化如下目标函数:
   第288行: 第291行:  
FastText 的训练过程本质上是端到端地联合优化所有子词的向量表示,以提升整体语义建模能力。
 
FastText 的训练过程本质上是端到端地联合优化所有子词的向量表示,以提升整体语义建模能力。
   −
===== 总结与对比: =====
+
==== 总结与对比: ====
 
子词增强表示能力:FastText 通过引入 n-gram,有效表示未登录词与形态变化词;
 
子词增强表示能力:FastText 通过引入 n-gram,有效表示未登录词与形态变化词;
   第299行: 第302行:  
应用场景广泛:在文本分类、命名实体识别、搜索排序、拼写纠错、推荐系统中广泛使用;
 
应用场景广泛:在文本分类、命名实体识别、搜索排序、拼写纠错、推荐系统中广泛使用;
   −
==== 5.3 BERT 模型 ====
+
=== 5.3 BERT 模型 ===
   −
===== 背景: =====
+
==== 背景: ====
 
BERT 是由 Google AI Language 团队于 2018 年提出的一种预训练语言表示模型,发表在论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中。该模型首次将 深度双向 Transformer 编码器 应用于语言建模任务,并通过大规模语料上的预训练 + 微调机制,在多个自然语言处理任务上取得了 SOTA(state-of-the-art)成绩。
 
BERT 是由 Google AI Language 团队于 2018 年提出的一种预训练语言表示模型,发表在论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》中。该模型首次将 深度双向 Transformer 编码器 应用于语言建模任务,并通过大规模语料上的预训练 + 微调机制,在多个自然语言处理任务上取得了 SOTA(state-of-the-art)成绩。
    
BERT 的设计动机是解决传统语言模型(如 Word2Vec、GloVe)在上下文建模、语义歧义处理和句子级理解方面的不足,特别是在建模“一个词在不同上下文中含义不同”这一关键问题。
 
BERT 的设计动机是解决传统语言模型(如 Word2Vec、GloVe)在上下文建模、语义歧义处理和句子级理解方面的不足,特别是在建模“一个词在不同上下文中含义不同”这一关键问题。
   −
===== 技术原理: =====
+
==== 技术原理: ====
   −
====== ·基础架构:Transformer Encoder: ======
+
===== ·基础架构:Transformer Encoder: =====
 
BERT 构建在 Transformer 架构之上,具体使用了 多层 Transformer 编码器堆叠(通常 BERT-base 为 12 层,BERT-large 为 24 层)。Transformer 由 Vaswani 等人在 2017 年提出,其最大特点是 完全基于注意力机制(Self-Attention),无需使用 RNN 或 CNN,可并行处理任意长度的输入。
 
BERT 构建在 Transformer 架构之上,具体使用了 多层 Transformer 编码器堆叠(通常 BERT-base 为 12 层,BERT-large 为 24 层)。Transformer 由 Vaswani 等人在 2017 年提出,其最大特点是 完全基于注意力机制(Self-Attention),无需使用 RNN 或 CNN,可并行处理任意长度的输入。
   第321行: 第324行:  
Transformer 中每个词的表示会综合考虑所有其他词对它的影响,因此能捕捉复杂的依赖结构。
 
Transformer 中每个词的表示会综合考虑所有其他词对它的影响,因此能捕捉复杂的依赖结构。
   −
====== ·输入方式表示: ======
+
===== ·输入方式表示: =====
 
BERT 的输入不只是单词序列,而是词 + 位置 + 句子类型三重嵌入之和:Input Embedding = Token Embedding + Position Embedding + Segment Embedding
 
BERT 的输入不只是单词序列,而是词 + 位置 + 句子类型三重嵌入之和:Input Embedding = Token Embedding + Position Embedding + Segment Embedding
    
例如用于句子对任务(如问答)时,Segment A 表示第一句话,Segment B 表示第二句话。输入序列结构为:[CLS] 句子A [SEP] 句子B [SEP],其中[CLS] 用于分类任务的特殊标记;[SEP] 是句子分隔符。
 
例如用于句子对任务(如问答)时,Segment A 表示第一句话,Segment B 表示第二句话。输入序列结构为:[CLS] 句子A [SEP] 句子B [SEP],其中[CLS] 用于分类任务的特殊标记;[SEP] 是句子分隔符。
   −
====== ·预训练阶段: ======
+
===== ·预训练阶段: =====
 
BERT 采用两种 自监督学习任务在大规模语料(如 Wikipedia 和 BooksCorpus)上进行训练:
 
BERT 采用两种 自监督学习任务在大规模语料(如 Wikipedia 和 BooksCorpus)上进行训练:
   第340行: 第343行:  
</math>
 
</math>
   −
====== ·微调阶段: ======
+
===== ·微调阶段: =====
 
在预训练后,BERT 可被快速迁移到下游任务,如:文本分类(情感分析)、序列标注(命名实体识别)、问答系统,只需在最后加上一层简单的任务特定结构,并用少量数据进行微调即可。
 
在预训练后,BERT 可被快速迁移到下游任务,如:文本分类(情感分析)、序列标注(命名实体识别)、问答系统,只需在最后加上一层简单的任务特定结构,并用少量数据进行微调即可。
   −
===== 总结与对比: =====
+
==== 总结与对比: ====
 
深度双向建模:BERT 同时利用左上下文与右上下文,解决传统语言模型单向建模的局限;
 
深度双向建模:BERT 同时利用左上下文与右上下文,解决传统语言模型单向建模的局限;
   第354行: 第357行:  
与 Word2Vec/GloVe 对比:Word2Vec/GloVe 生成的是固定词向量、语境无关,BERT 输出的是上下文相关的词表示,能捕捉复杂句法语义关系;
 
与 Word2Vec/GloVe 对比:Word2Vec/GloVe 生成的是固定词向量、语境无关,BERT 输出的是上下文相关的词表示,能捕捉复杂句法语义关系;
   −
==== 5.4 动态词嵌入( ELMo): ====
+
=== 5.4 动态词嵌入( ELMo): ===
   −
===== 背景: =====
+
==== 背景: ====
 
LMo('''Embeddings from Language Models''')是由 Allen Institute for AI(AI2)的 Matthew Peters 等人在 2018 年 NAACL 上提出的预训练词嵌入方法。ELMo 是 NLP 中首个大规模应用上下文动态词向量的模型,突破了 Word2Vec 和 GloVe 中“一个词一个向量”的静态表示限制。其提出背景在于自然语言中存在大量多义词与语义歧义现象(如 "bank" 表示“银行”或“河岸”),传统静态词向量模型无法根据上下文动态调整词的含义表示。而 ELMo 利用双向语言模型(BiLM)捕捉词的上下文依赖关系,为每个词生成可变的、语境敏感的表示。
 
LMo('''Embeddings from Language Models''')是由 Allen Institute for AI(AI2)的 Matthew Peters 等人在 2018 年 NAACL 上提出的预训练词嵌入方法。ELMo 是 NLP 中首个大规模应用上下文动态词向量的模型,突破了 Word2Vec 和 GloVe 中“一个词一个向量”的静态表示限制。其提出背景在于自然语言中存在大量多义词与语义歧义现象(如 "bank" 表示“银行”或“河岸”),传统静态词向量模型无法根据上下文动态调整词的含义表示。而 ELMo 利用双向语言模型(BiLM)捕捉词的上下文依赖关系,为每个词生成可变的、语境敏感的表示。
   −
===== 技术原理: =====
+
==== 技术原理: ====
 
ELMo 基于传统语言模型(Language Model, LM),但引入了以下三个关键技术点:
 
ELMo 基于传统语言模型(Language Model, LM),但引入了以下三个关键技术点:
   −
·双向语言模型(BiLM):
+
===== ·双向语言模型(BiLM): =====
−
 
   
一个正向语言模型(从左到右):<math>P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^{T} P(w_t \mid w_1, \ldots, w_{t-1})
 
一个正向语言模型(从左到右):<math>P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^{T} P(w_t \mid w_1, \ldots, w_{t-1})
 
</math>
 
</math>
第373行: 第375行:  
这两个模型均使用深层 LSTM(Long Short-Term Memory) 网络进行建模,层数通常为两层。
 
这两个模型均使用深层 LSTM(Long Short-Term Memory) 网络进行建模,层数通常为两层。
   −
·多层表示聚合机制:
+
===== ·多层表示聚合机制: =====
−
 
   
ELMo 并不是仅提取 LSTM 的最后一层输出作为词向量,而是将所有层的隐状态按照加权方式聚合,从而获得更加丰富的语义特征。
 
ELMo 并不是仅提取 LSTM 的最后一层输出作为词向量,而是将所有层的隐状态按照加权方式聚合,从而获得更加丰富的语义特征。
   第400行: 第401行:  
</math> 是可学习缩放因子,控制整体表示的幅度。
 
</math> 是可学习缩放因子,控制整体表示的幅度。
   −
·训练与迁移使用:
+
===== ·训练与迁移使用: =====
−
 
   
ELMo 先在大规模语料上训练语言模型(如 1 Billion Word Benchmark),然后将训练好的表示迁移到下游任务中,并在下游任务中联合微调(fine-tune)其权重<math>s_j
 
ELMo 先在大规模语料上训练语言模型(如 1 Billion Word Benchmark),然后将训练好的表示迁移到下游任务中,并在下游任务中联合微调(fine-tune)其权重<math>s_j
   第407行: 第407行:  
</math>。这种机制大幅提高了模型对语境、词义变化的感知能力,适用于情感分类(Sentiment Analysis)、问答系统(QA)和自然语言推理(NLI)。
 
</math>。这种机制大幅提高了模型对语境、词义变化的感知能力,适用于情感分类(Sentiment Analysis)、问答系统(QA)和自然语言推理(NLI)。
   −
===== 总结与对比: =====
+
==== 总结与对比: ====
 
上下文敏感词向量:ELMo 是首个提供每个词在不同上下文中动态表示的预训练词嵌入;
 
上下文敏感词向量:ELMo 是首个提供每个词在不同上下文中动态表示的预训练词嵌入;
  
130

个编辑