Datawhale AI 夏令营(NLP方向)2024 2期 笔记3

一、认识Transformer模型

Transformer模型是一种在自然语言处理(NLP)领域中革命性的架构,它首次出现在2017年的论文《Attention is All You Need》中。这个模型设计用于序列到序列的任务,如机器翻译,但其影响远远超出了这个范围,现在被广泛应用于各种NLP任务和其他序列建模场景。

1. 基本组成部分

编码器(Encoder)

编码器由多个相同的层堆叠组成,每一层通常包含两个子层:

  1. 多头自注意力机制(Multi-head Self-Attention):这个机制允许模型同时关注输入的不同部分,即在不同的“注意力头”中进行并行处理,这增强了模型捕获不同粒度信息的能力。
  2. 前馈神经网络(Feed Forward Network):这是一个简单的全连接神经网络,用于进一步处理自注意力层的输出。

解码器(Decoder)

解码器也有多个相同的层,每层包括三个子层:

  1. 掩码的多头自注意力机制(Masked Multi-head Self-Attention):在解码器中,为了保证预测的顺序性,使用掩码机制来阻止当前位置访问未来位置的信息。
  2. 多头注意力机制(Multi-head Attention):这部分允许解码器关注编码器的输出,实现编码器和解码器之间的交互。
  3. 前馈神经网络:与编码器相同,用于进一步处理信息。

位置编码(Positional Encoding)

因为Transformer没有内置的顺序概念(不像RNN那样有时间步的概念),所以需要添加位置编码来让模型理解输入序列中每个词的位置。位置编码通常是一个固定的函数,能够为序列中的每个位置生成一个唯一的向量。

下面给出构建模型的示例代码。

class PositionalEncoding(nn.Module):
    def __init__(self, d_model, dropout=0.1, max_len=5000):
        super(PositionalEncoding, self).__init__()
        self.dropout = nn.Dropout(p=dropout)

        pe = torch.zeros(max_len, d_model)
        position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)
        div_term = torch.e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值