目录
[1. 静态词向量的局限性](#1. 静态词向量的局限性)
[2. 动态上下文嵌入的核心思想](#2. 动态上下文嵌入的核心思想)
[3. 层次化特征提取](#3. 层次化特征提取)
[1. 双向语言模型(BiLM)](#1. 双向语言模型(BiLM))
[2. 多层LSTM的层次化表示](#2. 多层LSTM的层次化表示)
[1. 预训练阶段](#1. 预训练阶段)
[2. 下游任务微调](#2. 下游任务微调)
[1. 技术突破](#1. 技术突破)
[2. 局限性](#2. 局限性)
[1. 对上下文建模的彻底革新](#1. 对上下文建模的彻底革新)
[2. 预训练-微调范式(Pre-training + Fine-tuning)](#2. 预训练-微调范式(Pre-training + Fine-tuning))
[3. 任务驱动的预训练目标](#3. 任务驱动的预训练目标)
[1. 基于Transformer的编码器堆叠](#1. 基于Transformer的编码器堆叠)
[2. 输入表示设计](#2. 输入表示设计)
[3. 预训练任务详解](#3. 预训练任务详解)
[1. 预训练阶段](#1. 预训练阶段)
[2. 微调阶段](#2. 微调阶段)
[1. 革命性贡献](#1. 革命性贡献)
[2. 局限性](#2. 局限性)
[1. NLP范式转变](#1. NLP范式转变)
[2. 关键衍生模型](#2. 关键衍生模型)
前言:
ELMO
一、ELMo的核心设计理念
1. 静态词向量的局限性
- 问题根源 :传统词向量(如Word2Vec、GloVe)为每个词赋予固定表示,无法处理一词多义(Polysemy)。
- 例证 :单词"bank"在"river bank"和"bank account"中含义不同,但静态词向量无法区分。
2. 动态上下文嵌入的核心思想
- 核心理念 :词义应由其所在上下文动态生成,而非静态编码。
- 技术路径 :通过双向语言模型(BiLM)捕捉上下文信息,生成层次化的词表示。
3. 层次化特征提取
- 语言学假设 :不同神经网络层可捕捉不同粒度的语言特征(如词性、句法、语义)。
- 创新点 :将LSTM不同层的输出线性组合,构建最终的词表示。
二、ELMo的模型结构与技术逻辑
1. 双向语言模型(BiLM)
- 前向LSTM :建模从左到右的序列概率
- 后向LSTM :建模从右到左的序列概率
- 联合优化目标 :最大化双向对数似然:
2. 多层LSTM的层次化表示
- 底层特征 :LSTM底层输出捕捉局部语法特征(如词性、形态)。
- 高层特征 :LSTM顶层输出捕捉全局语义特征(如句间关系、指代消解)。
- 特征融合 :通过可学习的权重 组合各层表示:
三、ELMo的运行过程
1. 预训练阶段
- 输入 :大规模语料(如1B Word Benchmark)
- 任务目标 :通过双向语言模型预测下一个词(前向)和上一个词(后向)
- 参数保存 :保留LSTM各层的权重及字符卷积网络的参数。
2. 下游任务微调
- 特征注入方式 :
- 静态模式 :固定ELMo权重,将词向量拼接至任务模型的输入层。
- 动态模式 :允许ELMo参数在任务训练中微调(需权衡计算成本)。
- 多任务适配 :适用于分类、问答、NER等多种任务,通过调整权重 优化特征组合。
四、ELMo的突破与局限性
1. 技术突破
- 动态词向量 :首次实现基于上下文的动态词表示。
- 双向建模 :通过独立训练的双向LSTM间接捕捉全局上下文。
- 层次化特征 :验证了不同网络层的语言学意义。
2. 局限性
- 浅层双向性 :前向/后向LSTM独立训练,未实现真正的交互式双向建模。
- LSTM效率瓶颈 :长序列建模能力受限,训练速度慢于Transformer。
- 上下文长度限制 :受LSTM记忆容量影响,长距离依赖捕捉不足。
五、ELMo的历史影响
-
预训练范式的先驱 :证明了语言模型预训练+任务微调的可行性。
-
BERT与GPT的基石 :启发了基于Transformer的双向预训练模型(BERT)和自回归模型(GPT)。
-
特征可解释性研究 :推动了对神经网络层次化语言特征的探索(如探针任务分析)。
六、典型应用场景
-
命名实体识别(NER) :动态词向量显著提升实体边界识别精度。
-
文本分类 :通过组合不同层次特征捕捉局部与全局语义。
-
语义相似度计算 :上下文敏感的词表示改善句子匹配效果。
tips:ELMO过程属于无监督学习,RNN base模型预测下一个词的位置,而不是下一个词是否为正确的词
ELMO和transformer没有关系,和BiLSTM有关系,每次input的词汇作词嵌入(转换为词向量)
Bert
一、BERT的核心设计理念
1. 对上下文建模的彻底革新
- 问题驱动 :传统模型(如ELMo、GPT)的单向或浅层双向性限制了对上下文的全局理解。
- 核心思想 :通过深度双向Transformer 实现全上下文交互建模,消除方向性偏差。
2. 预训练-微调范式(Pre-training + Fine-tuning)
- 统一架构 :同一模型结构适配多种下游任务,无需任务特定结构调整。
- 参数复用 :预训练阶段学习通用语言知识,微调阶段注入领域/任务知识。
3. 任务驱动的预训练目标
- Masked Language Model (MLM) :随机遮蔽15%的输入词,迫使模型基于全上下文预测被遮蔽词。
- Next Sentence Prediction (NSP) :学习句子间关系,增强对篇章级语义的理解。
二、BERT的模型架构与技术逻辑
1. 基于Transformer的编码器堆叠
- 基础配置 :
- BERT-base : 12层Transformer, 768隐藏维度, 12注意力头(110M参数)
- BERT-large : 24层Transformer, 1024隐藏维度, 16注意力头(340M参数)
- 双向注意力机制 :每个词可同时关注序列中所有其他词(包括前后位置)。
2. 输入表示设计
- Token Embeddings :WordPiece分词(30k词表),处理未登录词(如"playing"→"play"+"##ing")。
- Segment Embeddings :区分句子A/B(用于NSP任务)。
- Position Embeddings :学习绝对位置编码(最大512长度)。
- 特殊标记 :`[CLS]`(分类标记)、`[SEP]`(句子分隔符)、`[MASK]`(遮蔽符)。
3. 预训练任务详解
三、BERT的运行过程
1. 预训练阶段
- 数据源 :BooksCorpus(8亿词) + 英文维基百科(25亿词)。
- 训练策略 :
- 动态遮蔽:每个epoch重新随机遮蔽词,提升鲁棒性。
- 80-10-10规则:被遮蔽词中80%替换为`[MASK]`,10%替换为随机词,10%保留原词。
- 优化参数 :Adam(β₁=0.9, β₂=0.999),学习率1e-4,batch size=256/512。
2. 微调阶段
- 任务适配方式 :
- 句子对任务 (如STS):使用`[CLS]`标记的嵌入进行相似度计算。
- 序列标注任务 (如NER):使用每个token的最后一层输出。
- 问答任务 (如SQuAD):输出段落中答案的起始/结束位置概率。
- 轻量级调整 :通常仅需在预训练模型顶层添加1-2个全连接层。
四、BERT的技术突破与局限性
1. 革命性贡献
- 深度双向性 :突破LSTM/单向Transformer的上下文建模限制。
- 通用表征能力 :在11项NLP任务中刷新SOTA(GLUE基准提升7.7%绝对准确率)。
- 长距离依赖建模 :自注意力机制有效捕捉跨句子依赖关系。
2. 局限性
- 预训练-微调数据分布差异 :MLM的`[MASK]`标记在微调时不存在,导致训练-应用偏差。
- 计算资源消耗 :BERT-large预训练需16个TPU训练4天(成本约7,000美元)。
- 生成能力缺失 :仅支持编码任务,无法直接生成文本(后由UniLM、BART等改进)。
五、BERT的历史地位与后续发展
1. NLP范式转变
- 预训练成为标配 :推动"预训练大模型+下游任务轻量化"成为NLP主流范式。
- 多模态扩展 :催生跨领域模型如VideoBERT(视频)、BioBERT(生物医学)。
2. 关键衍生模型
- RoBERTa :移除NSP任务,扩大batch size和训练数据,性能进一步提升。
- ALBERT :通过参数共享(跨层参数)和嵌入分解降低内存消耗。
- DistilBERT :知识蒸馏技术压缩模型体积(保留95%性能,体积减少40%)。
六、BERT的典型应用场景
语义搜索 :计算query-document语义相关性(Google Search 2019年应用)。
智能问答 :基于段落理解的答案抽取(如Google Assistant)。
文本分类 :情感分析、垃圾邮件检测等。
4.实体链接 :将文本中的实体链接到知识库(如Wikipedia)。
bert的应用
词性标注、情感分类等
七、与ELMo的关键对比
训练bert的方法
linear multi-class classifier -- softmax
MASK -- 掩饰 遮挡一部分词汇