Skip to content

聊一聊 ELMo 技术,它有哪些优缺点?可以做到一词多义吗?为什么? ​

  • 标签:自然语言处理(NLP)、ELMo

🏛 业务架构师 ​

ELMo(Embeddings from Language Models,2018)是"动态词向量"的开山之作,我用"它解决了什么"来组织回答:

原理:用双向 LSTM 语言模型在大语料上预训练,每个词的表示取"左向 LSTM 隐状态+右向 LSTM 隐状态+静态词向量"的拼接——因为是上下文相关的,同一个词在不同句子里向量不同。

能否一词多义——能,这正是它的核心贡献:Word2Vec 时代"bank"不管上下文只有一个向量;ELMo 里" river bank"(河岸)和"bank account"(银行账户)的 bank 表征由双向 LSTM 按上下文计算,天然区分。为什么能做到:双向语言模型的目标就是"看完上下文预测词",训练目标本身强制模型吸收上下文信息——一词多义是上下文建模的副产品。

优点:上下文相关表征(一词多义);预训练+下游微调的范式先驱(ELMo 时代是"特征拼接"式使用,BERT 把它升级为端到端微调);即插即用提升多种 NLP 任务。

缺点:LSTM 骨架的局限——长距离依赖能力有限、无法并行训练(规模上不去);特征式使用(拼接到下游模型)而非整体微调,上限低于 BERT;双向是"两个单向 LSTM 拼接"的浅层融合,不如 Transformer 的深度双向交互。

历史坐标(业务视角的总结):Word2Vec(静态向量)→ ELMo(动态向量)→ BERT(深度双向+可微调)→ LLM——ELMo 是承上启下的关键一跃,证明了"上下文Embedding"的价值方向,为 Transformer 时代的爆发铺路。面试时给出这条演进线的判断,比单独背 ELMo 结构更有分量。

🏗 系统架构师 ​

ELMo(2018)= 深度双向 LSTM 的语言模型嵌入——动态词向量的开端。机制与定位:

原理:

  • 双向 LSTM 语言模型:前向 LSTM(预测下一个词)+ 后向 LSTM(预测上一个词)联合训练——每个词的表示 = 前向隐状态 + 后向隐状态 + 静态词向量的拼接;
  • 上下文相关(动态)表示:同一个词在不同句子得到不同向量——"bank"在"river bank"与"bank account"中表征不同,这是对 Word2Vec 静态向量的核心突破(一词多义问题就此解决:双向上下文天然编码了语义消歧);
  • 字符级 CNN 编码输入:能处理 OOV 和词形变化(playing/played 共享表征);
  • 层级的可学习组合:下游任务可以学习各层表示的加权组合(底层句法、高层语义)——"预训练表示 + 任务自适应"范式的雏形。

优点:一词多义、OOV 友好、即插即用(当特征喂给现有模型);缺点:LSTM 架构限制(长依赖有限、串行训练慢)、表示是"特征级"复用(不是模型级微调)、双向是两个 LSTM 拼接(非真正的全上下文联合建模)。

历史坐标(架构师视角):ELMo 证明了"上下文相关表示"的价值,但受限于 LSTM 的工程天花板——同年 Transformer 发布,次年 BERT 用"Transformer + 双向 + 微调"把 ELMo 的思想做到极致。ELMo 是从静态词向量到预训练语言模型的关键过渡态:它提出的问题(上下文表示)定义了后续三年的研究方向。

💻 全栈开发专家 ​

ELMo(2018,Allen AI):用双向 LSTM 语言模型生成「上下文相关的词向量」——一词多义问题的早期破局者。

原理:

  1. 双向 LSTM 语言模型:前向 LSTM(根据上文预测下一词)+ 后向 LSTM(根据下文预测上一词)联合训练;
  2. 每个词的表示 = 多层 LSTM 隐状态的加权融合(学出来的线性组合);
  3. 下游任务不微调 ELMo 本体,把它输出当「特征」拼进自己的模型(feature-based,对比 BERT 的 fine-tune 范式)。

能做到一词多义吗?能——这正是它的核心贡献: Word2Vec 是静态向量:「苹果」无论在「吃苹果」还是「苹果手机」都是同一个向量。ELMo 的表示由双向上下文实时计算——「苹果」在两个句子里的隐状态不同,天然区分多义。这是「contextual embedding」概念的起点。

优点:

  • 上下文相关表示(多义解决);
  • 特征式使用,即插即用(当时算力友好);
  • 字符级 CNN 输入,天然处理 OOV 和形态变化。

缺点(被 BERT 取代的原因):

  • LSTM 串行结构,训练慢、规模上不去(BERT 靠 Transformer 并行吃大数据);
  • 浅融合:ELMo 输出只是拼在下游模型输入端,任务适配浅(BERT 端到端微调深度融合);
  • 双向是「两个单向拼接」,不是真正的双向联合建模(BERT 的掩码语言模型才是)。

历史定位:ELMo→GPT→BERT 是预训练范式三部曲的关键一环——「用预训练模型做词表示」的思想由它验证,架构红利由 Transformer 接棒兑现。