从self-attention到transformer之transformer

从self-attention到transformer之transformer

在看这篇笔记之前你最好确保自己了解了self-attention的内容,这里附上关于self-attention的笔记连接供参考:
https://blog.csdn.net/weixin_42254244/article/details/116572402

1. Seq2Seq模型:

今天来介绍transformer模型,也跟后来产生的BERT有着紧密的联系,transformer也是Seq2Seq中的一个。Seq2Seq模型一般都有Encoder和Decoder两个结构,由Encoder来处理input sequence然后交给Decoder来决定要什么样的output sequence。如下图所示:
在这里插入图片描述

2. Encoder:

首先来介绍transformer的Encoder的部分,Encoder要做的事情说白了就是输入一个序列的向量然后经过处理在输出另一个序列的向量(同样长度)。就针对Encoder这件事情来说,不仅仅是self-attention,还有RNN,LSTM都可以做同样的事情。
在这里插入图片描述
那transformer模型中的Encoder的主要部分就是self-attention来做的。下图就是transformer论文中的Encoder的原始架构。
在这里插入图片描述
看起来可能会非常复杂,下面分别用几张图片来拆开讲解transformer的Encoder的架构:

先看左半部分,Encoder是由好几个block连接而成,每一个block都是输入一个序列的向量然后经过处理在输出相同长度的向量再作为输入传给下一个block。(这里之所以叫block而不叫layer是因为每一个block其实都多了好几个layer的事情)
每一个block里面所做的事情就像右半图画的一样,输入一个序列先通过一个self-attention结构,然后再通过一个fully-connected neural network得到输出的序列。
在这里插入图片描述
然而实际上,真实的block做的还不止这么多,还要把经过self-attention前后的对应位置的输入a和输出b加在一起的a+b当作是self-attention的新的输出。这种把输入和输出加在一起的做法叫residual connection(残差连接),这种做法在CV领域还是用的很广泛的,这里就不做详细的介绍。(其实是博主本人没有详细了解)
经过了residual connection之后还没有结束,还要把新的输出a+b做一次normalization。这里用的不是batch-normalization而是layer-normalization,layer-normalization其实还要逼batch-normalization更简单一些。不需要考虑序列的其他位置,只是

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值