随写transformer

作为针对序列建模的模型,RNN,LSTM在以序列为主要呈现形式的NLP任务上展现出远超CNN的卓越性能。但是仍有缺陷:

  • RNN为单向依序计算,序列需要依次输入,串行计算,限制了计算机的并行计算能力,导致时间成本过高。
  • RNN难以捕捉长期依赖问题,即对于极长的序列,RNN难以捕捉远距离输入之间的关系。虽然LSTM通过门机制对此进行了一定优化,但RNN对长期依赖问题的捕捉能力仍然不如人意。

针对上述两个问题,2017年,Vaswani 等人发表了论文《Attention Is All You Need》,抛弃了传统的 CNN、RNN 架构,提出了一种全新的完全基于 attention 机制的模型——Transformer,解决了上述问题,在较小的时间成本下取得了多个任务的 the-state-of-art 效果,并为自然语言处理任务提供了新的思路。

自此,attention 机制进入自然语言处理任务的主流架构,在 Transformer 的基础上,诞生了预训练-微调范式的多种经典模型如 Bert、GPT、T5 等。当然,同样是在 Transformer 的肩膀上,引入了 RLHF 机制、实现了大量参数建模的 ChatGPT 则带领 NLP 进入了全新的大模型时代。

但不管是预训练-微调范式的主流模型 Bert,还是大模型时代的主流模型 ChatGPT、LLaMA,Transformer 都是其最坚实的基座。

注意力公式Q与K乘积进行放缩的原因:

如果Q和K对应的维度比较大,softmax放缩时就非常容易受影响,使不同值之间的差异较大,从而影响梯度的稳定性,因此,要将Q和K乘积的结果做一个放缩。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Transformer是一种广泛使用的神经网络模型,用于许多自然语言处理任务,如机器翻译、文本生成等。 要用PyTorch写Transformer,你需要以下步骤: 1. 安装PyTorch和相关库:在开始之前,请确保已安装PyTorch和相关库,例如torchtext和spacy。这些库可以帮助您处理和准备文本数据。 2. 准备数据:您需要准备训练和验证数据。您可以使用torchtext或其他库来加载和处理数据。在处理数据时,您需要使用tokenizer将文本转换为标记,并将它们转换为PyTorch张量。 3. 构建Transformer模型:您可以使用PyTorch构建Transformer模型。您需要实现多头自注意力层(multi-head self-attention layer)、前馈神经网络层(feedforward neural network layer)等组件,并将它们组合成Transformer模型。 4. 训练模型:您需要选择损失函数和优化器,并使用训练数据对模型进行训练。在训练期间,您需要使用反向传播算法来更新模型参数。 5. 验证模型:您需要使用验证数据对模型进行验证,以评估其性能。您可以计算模型的损失和准确度等指标。 6. 调整超参数:如果模型的性能不佳,您可能需要调整模型的超参数。您可以尝试调整学习率、批量大小、隐藏层大小等超参数。 7. 应用模型:一旦您的模型训练好了,您可以将其用于自然语言处理任务。您可以输入文本数据,并使用模型生成翻译或文本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值