Transformer超详细整理

本文详细介绍了Transformer模型的基本原理,包括自我注意力机制、多头注意力、位置编码等核心组件,并探讨了其相较于传统RNN的优势。
  • 先普及一些NLP基本概念,也给自己提个醒。
  • tokenization指的是分词,分出来的每一个词语叫做token。文本向量化,转化成vector(一般不用one-hot,文本很多就完蛋了)
  • word-embedding:使用了浮点型的稠密矩阵表示token,根据词典大小,向量会使用不同的维度,可以是100,256,300等等。向量中每一个值是个超参数,初始的时候是随机生成的,之后会在训练的过程中进行学习而获得。能够比one-hot表示减少大量的空间。可以把文本转化成向量,句子也可以。一般来说会先用token使用数字表示,然后用数字转化成向量。
  • 要对各种x-transformer进行理解,首先要了解他们的祖师爷,原版transformer。transformer抛弃了CNN,RNN,成为了自立门户的新模型,广泛应用于NLP领域,在很多领域能够达到SOTA。

原版Transformer:

  • 每一个encoder和decoder的内部结构都是下面这张图片所展示的。要理解transformer,这两个重要的知识点一定不能放过。

-

  • encoder部分:

    • encoder包括前馈神经网络和self-attention部分。我们可以得到下面的流程箭头图:
    • input embedding->positional encoding->
    • for i in range(6): 因为transformer有6个encoder
      • self attention->layer normalization->FFN->layer normlization
        -
  • decoder部分:

    • decoder主要包括self-attention, encoder decoder attention, 加上FFN,可以得到下面的箭头流程图:
    • input embedding->positional encoding->
    • for i in range(6): 因为transformer有6个decoder
      • self attention->layer normalization->encoder decoder attention->layer normalization->FFN->layer normlization
  • 总体流程图可以从这幅图得到,从总体到局部,这样方便我们逐个击破:

-

Positional Encoding:

  • transformer并没有存储单词位置信息的方法,比如狗咬人和人咬狗它区分不出来,为了解决这个问题,在encoder和decoder层都加入了positional embedding。positional embedding是一个维度和embedding向量,如何得到这个独特的向量呢?虽然方法有很多,但是作者采用了周期函数对位置进行标定,函数如下图所示:
  • PE(pos,2i)=sin⁡(pos/100002i/dmodel )PE(pos,2i+1)=cos⁡(pos/100002i/dmodel )\begin{aligned} P E_{(p o s, 2 i)} &=\sin \left(p o s / 10000^{2 i / d_{\text {model }}}\right) \\ P E_{(p o s, 2 i+1)} &=\cos \left(p o s / 10000^{2 i / d_{\text {model }}}\right) \end{aligned}PE(pos,2i)PE(pos,2i+1)=sin(pos/100002i/dmodel )=cos(pos/100002i/d
Transformer模型中,token是指输入序列中的每个词语或图像中的每个图像块。在NLP中,每个单词被视为一个token,并且通常还有一个特殊的token称为CLS,用于标注句子的语义。在CV中,图像被切割成不重叠的patch序列,每个patch也被视为一个token。\[1\]\[3\] 在Transformer模型中,tokenization是指将文本或图像划分为不同的token。这些token可以是单词、图像块或其他形式的输入单元。\[1\] 在Transformer模型中,embedding层用于将token转化为向量表示。这些向量表示被称为word-embedding,它们使用浮点型的稠密矩阵表示token。每个token的向量表示具有不同的维度,可以是100、256、300等等。这些向量的值是超参数,初始时是随机生成的,并在训练过程中进行学习。通过将文本或句子转化为向量表示,可以更好地表示和处理文本数据。\[1\] 在Transformer模型中,还有两个重要的概念是cls_token和Positional Encoding。cls_token是在输入序列的首位置添加的特殊token,用于对所有的token进行信息汇聚,以用于后续的分类任务。Positional Encoding用于为输入序列中的每个token添加位置信息,以帮助模型捕捉序列中的顺序关系。\[2\] 总结起来,Transformer模型中的token是指输入序列中的每个词语或图像中的每个图像块。它们经过tokenization分割,并通过embedding层转化为向量表示。在NLP中,还有一个特殊的token称为CLS,用于标注句子的语义。在CV中,图像被切割成不重叠的patch序列,每个patch也被视为一个token。同时,还有cls_token和Positional Encoding用于信息汇聚和位置编码。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Transformer超详细整理](https://blog.youkuaiyun.com/Sakura_day/article/details/118341728)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Transformer](https://blog.youkuaiyun.com/weixin_41677138/article/details/127137986)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [transform中的token理解(单词或词语的标记)](https://blog.youkuaiyun.com/weixin_43135178/article/details/118877976)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值