✨ 复制成功!

以文会友,打造好学人设!

📋 已复制到剪贴板:

《PyTorch入门精华》


1 前言
    1.1  PyTorch安装

    1.2  显卡驱动的困惑

    1.3  CUDA安装注意事项

    1.4  cuDNN的介绍

    1.5  Pytorch Lightning介绍

    1.6  PyTorch学习之道

    1.7  PyTorch快速入门

    1.8  PyTorch调参之道

    1.9  PyTorch调参套件

    1.10  手动创建虚拟环境

2 深度学习之数学基础
    2.1  希腊字母解读

    2.2  梯度的物理意义

    2.3  图解梯度下降法

    2.4  图解梯度上升法

    2.5  自然梯度

    2.6  泰勒公式的介绍

    2.7  信息与信息熵

    2.8  重要性采样

    2.10  欧几里得范数

    2.11  特征值和特征向量

    2.12  似然函数的理解

    2.13  矩阵秩的深刻理解

3 PyTorch入门疑难点
4 PyTorch全局设置
    4.1  全局设置当前设备

    4.2  全局设置浮点精度

5 PyTorch GPU分布式训练
    5.1  PyTorch GPU基础操作

    5.2  DataParallel用法详解

    5.3  GPU分布式训练模型

    5.4  CUDA_VISIBLE_DEVICES

    5.5  device详细说明

    5.6  to(device)和.cuda()

    5.7  CUDA设备索引

    5.8  GPU设备索引

6 向量的基础与核心
    6.1  Tensor的组成与存储

    6.2  Tensor的grad属性

    6.4  Tensor的叠加

    6.5  禁用梯度计算

    6.6  向量的保存和加载

    6.7  参数向量

    6.8  叶子节点

    6.9  detach原理

    6.10  requires_grad属性

    6.11  Tensor与Numpy互换

    6.12  张量cat操作

    6.13  零维张量

    6.15  squeeze/unsqu...函数

    6.16  argmax和max的区别

    6.17  torch.as_tensor的应用

7 神经网络基础
    7.2  PyTorch计算图

    7.3  查看网络权重参数

    7.4  保存模型

    7.5  Adam相关面试题

    7.6  Train模式和Eval模式

    7.7  线性网络

    7.8  双线性网络

    7.9  惰性线性层

    7.10  PyTorch中的自动微分

    7.12  Dropout机制

    7.13  半精度训练

    7.14  Xavier初始化

    7.15  注意力机制

    7.16  Dataset数据处理

    7.17  StepLR学习率调度器

    7.18  词嵌入的理解

    7.19  TensorDataset的使用

    7.20  模型的保存与加载

    7.21  ModuleList和Sequential

    7.22  Batch Normalization介绍

8 计算机视觉基础知识
    8.1  通道的深刻理解

    8.2  1x1卷积的作用

    8.3  特征提取和可视化

    8.4  反卷积的推导

    8.5  理解卷积

    8.7  空洞卷积

    8.8  池化层的作用

    8.9  感受野与特征图

    8.10  NMS算法

    8.11  特征图尺寸计算

9 循环神经网络基础
    9.2  RNN的介绍

10 注意力机制
    10.1  位置编码的作用

    10.2  位置编码的种类

    10.4  Embedding本质理解

    10.6  Transformer VS CNN/RNN

    10.7  ELMo介绍

11 PyTorch归一化
    11.2  层归一化技术详解

12 激活函数相关内容
    12.1  激活函数简介

    12.2  万能逼近定理

    12.3  指数函数的学习

    12.4  Sigmoid函数的介绍

    12.5  Tanh函数的介绍

    12.6  Softmax函数的实现

    12.7  ReLU函数的介绍

    12.8  Leaky Relu函数的介绍

    12.9  ReLu与非线性的理解

    12.10  Parametric ReLU函数

    12.11  ELU函数介绍

    12.12  神经元死亡的问题

13 思考题的答案
    13.1  思考题的答案解密

ELMo介绍

创建时间:2025-02-26 更新时间:2025-02-26 阅读次数:1532 次

ELMo简介

在Transformer出来之前,学界其实一直在尝试利用LSTM去做大型的预训练语言模型,其中最出名的是ELMo。

ELMo(Embeddings from Language Models)是一种基于深度学习的词向量表示方法,由Allen Institute for AI在2018年提出。

与传统的静态词向量(如Word2Vec、GloVe)不同,ELMo能够生成上下文相关的词向量,即同一个词在不同语境下会有不同的向量表示。例如,单词“bank”在“river bank”和“bank account”中含义不同,ELMo能够根据上下文生成不同的向量表示。

ELMo的核心特点

上下文相关:ELMo生成的词向量依赖于上下文,同一个词在不同句子中会有不同的表示。

双向语言模型:ELMo通过双向LSTM(长短期记忆网络)捕捉上下文信息,同时考虑前向和后向的语境。

多层表示:ELMo从语言模型的多个层中提取特征,结合不同层次的语义信息,生成更丰富的词向量。

ELMo的工作原理

双向LSTM:ELMo使用双向LSTM训练语言模型,分别从前向和后向预测下一个词。

多层特征融合:ELMo从LSTM的多层中提取特征,结合不同层次的语义信息,生成最终的词向量。

加权求和:通过加权求和,将不同层的表示结合起来,生成最终的上下文相关词向量。

ELMo的应用场景

ELMo广泛应用于自然语言处理任务,如文本分类、命名实体识别、问答系统等,能够显著提升模型性能。

ELMo的优势

上下文感知:能够捕捉词在不同语境中的语义变化。

多任务学习:预训练的ELMo模型可以迁移到多种下游任务。

性能提升:在许多NLP任务中,使用ELMo能显著提高模型表现。

ELMo的局限性

ELMo(Embeddings from Language Models)在2018年提出时,确实在自然语言处理(NLP)领域引起了广泛关注,因为它首次引入了上下文相关的词向量表示,显著提升了多项NLP任务的性能。然而,ELMo的统治地位并没有持续太久,很快就被基于Transformer架构的模型(如BERT、GPT等)超越。以下是ELMo被Transformer打败的历史背景和原因:

基于LSTM:ELMo使用双向LSTM(长短期记忆网络)来建模上下文信息,而LSTM的训练和推理速度较慢,且难以捕捉长距离依赖关系。

浅层特征融合:ELMo虽然从多层LSTM中提取特征,但其特征融合方式相对简单(加权求和),无法充分利用深层语义信息。

单向语言模型:ELMo的前向和后向语言模型是独立训练的,无法真正实现“双向”上下文建模。

Transformer的崛起和BERT的诞生

2017年,Google提出了Transformer架构(论文《Attention is All You Need》),彻底改变了NLP领域的格局。Transformer的核心是自注意力机制(Self-Attention),它能够直接建模输入序列中所有词之间的关系,克服了LSTM的局限性。

Transformer的优势:

并行计算:Transformer不需要像LSTM那样按序列顺序计算,可以并行处理整个输入序列,大大提高了训练和推理速度。

长距离依赖:自注意力机制能够直接捕捉长距离依赖关系,而不会像LSTM那样出现信息衰减。

深层模型:Transformer可以堆叠多层(如12层、24层甚至更多),从而学习到更复杂的语义表示。

BERT的诞生:

2018年底,Google基于Transformer架构提出了BERT(Bidirectional Encoder Representations from Transformers)。BERT的核心创新是双向上下文建模,即通过掩码语言模型(Masked Language Model, MLM)同时利用左右两侧的上下文信息。

BERT相比于ELMo的优势:

真正的双向建模:BERT通过掩码语言模型实现了真正的双向上下文建模,而ELMo只是简单地将前向和后向语言模型的结果拼接起来。

更深的模型:BERT通常使用12层或24层的Transformer,能够捕捉更复杂的语义信息。

预训练+微调范式:BERT引入了“预训练+微调”的范式,先在大量无标签数据上预训练,然后在特定任务上微调,显著提升了模型的表现。

BERT在发布后,迅速在多项NLP任务(如GLUE、SQuAD等)上刷新了记录,彻底取代了ELMo的地位。

ELMo的遗产

ELMo在2018年是一个重要的里程碑,但它很快被基于Transformer的模型(如BERT)超越。Transformer凭借其并行计算能力、长距离依赖建模和深层语义表示,彻底改变了NLP领域的发展方向。ELMo虽然不再是主流,但它为后续模型的创新铺平了道路,在NLP历史上留下了不可磨灭的印记。

尽管ELMo被Transformer/BERT超越,但它对NLP领域的影响是深远的:

上下文相关词向量:ELMo首次证明了上下文相关词向量的重要性,为后续模型(如BERT)奠定了基础。

预训练+微调范式:ELMo的成功推动了“预训练+微调”范式的普及,这一范式后来被BERT发扬光大。

多任务学习:ELMo展示了预训练模型在多任务学习中的潜力。

总结

ELMo通过上下文相关的词向量表示,解决了传统静态词向量的局限性,成为自然语言处理中的重要工具。然而,ELMo的统治地位并没有持续太久,很快就被基于Transformer架构的模型(如BERT、GPT等)超越。

本教程共117节,当前为第101节!
本教程最新修订时间为:2026-08-07 09:17:18

📌 面试天下网:一款服务于大一新生的口袋书,让大家在无聊的公共课上可以学习大模型技术!
📌 网站公告:程序出海:中国程序员当下最大的机遇>>>>>>