Transformer -- 笔记

BERT 就是 UNsupervised trained Transformer

Bert 只用到了 Transformer 结构中的 Encoder 部分,训练的时候不需要标注序列。

比如训练一个中英翻译模型,只收集中文语料就可以了,并不需要输入对应翻译之后的英文文本。

Transformer 就是 用到了大量 Self-attention layer 的 Seq2seq model

下面来看看 Self-attention layer 都做了哪些事情

因为传统的RNN不容易并行化 parallel  ,一种解决办法是 用CNN来取代RNN。

用CNN也可以做到RNN的那种效果:输入一个seq,输出也是一个seq

但是这样存在的问题是 每一个CNN只能考虑非常有限的内容,比如上面的一个filter 可能只和3个vector相乘,而RNN可以考虑整个输入序列来决定输出。这里使 CNN可以考虑更长的序列的一个做法是multi-layer,上层的filter就可以考虑更长的序列信息。

但是要叠很多层,才能看到较长的序列信息,这是CNN处理序列信息的一个缺点。

于是,Self-attention 闪亮登场~ ^_^

可以把 self-attention 看做是一个新的 layer,它也是输入一个seq,输出一个seq。

self-attention的特别之处是:它和 bidirectional-RNN有同样的能力,每一个输出向量能看到所有输入向量(input seq ,整个序列信息),但是 self-attention 可以并行计算每一个output vector。

  • Attention is all you need : 意思是只用Attention就可以,不需要再用RNN 或者 CNN

Attention有很多种计算方法:基本原理是 根据两个向量(输入两个向量),返回这两个向量的“相关”程度(衡量指标可以是一个 - 分数),Paper中用的是下面的 attention 计算方法。

然后经 Soft-max 层 处理,注意这里的α1,1 - α1,4 都是scalar 常数

然后把soft-max 之后的结果(常数)与对应的v向量相乘,并累加求和,就的到了一个输出变量(output vector) b1

同理 求b2

下面看看 Self-Attention 是怎么做到 parallel 的

其实主要也是用矩阵乘法来实现的并行

然后计算α时也可以用矩阵来处理,见下下张

整体拼接起来

注意: 

Attention 矩阵中的每一个 element

表示 input sequence 中每一个位置序列两两之间的 Attention

计算输出vector组成的矩阵

总览:

Self-attention 的变形 Multi-head Self-attention

然后乘以Wo矩阵 降维

Multi-head 中每一个head关注的点可以是不一样的,比如有一个head 关注的是local input seq 短距离的输入序列,有的head关注的是global 长距离的输入序列,不同的head 各司其职,共同实现输出序列的计算。

Positional Encoding - 位置编码

上面的计算可以发现,self-attention 没有考虑到位置信息,而位置信息一般在序列中还是蛮重要的,比如You go first,一般翻译成你先走,而不是你走先;

再比如:我喜欢苹果,因为它比较好吃。/ 我习惯苹果,因为它比安卓稳定。显然对句子的理解都是需要位置信息的。 

所以可以想办法把位置信息加进去。

下面看看 Seq2seq 中怎么使用Attention

可以用self-attention 替换RNN

Transformer 架构 -- 这里以机器翻译为例:

注意力权重的分布

下面的结果表明:

当句子中的指代关系发生变化时,Attention 的值也会相应发生变化。

比如:

这只动物没有穿过马路,因为它太累了。 (动物累)

这只动物没有穿过马路,因为它太宽了。(马路宽)

Multi-head Attention 特点

应用:输入 文档的集合,输出类似Wikipedia的结果

比较令人amazing的地方是 输入序列长度 高达10的6次方

并列多个Transformer

Transformer 还可以用在图像上

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Swin Transformer是一种特为视觉领域设计的分层Transformer结构,它的两个主要特性是滑动窗口和分层表示。滑动窗口允许在局部不重叠的窗口中计算自注意力,并且允许跨窗口连接。分层表示允许模型适应不同尺度的图像,并且计算复杂度与图像大小成线性关系。因此,Swin Transformer被形象地称为"披着Transformer皮的CNN"。Swim Transformer可以用作通用的主干网络,适用于图像分类、图像分割、目标检测等多种计算机视觉任务。它以Vision Transformer(VIT)为基础,吸取了ResNet的精华,并通过逐步扩大感受野的设计思想来将Transformer应用于图像处理任务。Swin Transformer的成功并非偶然,它是基于丰富的经验和积累而来的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Swin-Transformer网络结构详解](https://blog.csdn.net/qq_37541097/article/details/121119988)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [神经网络学习笔记5——Swin-Transformer网络](https://blog.csdn.net/qq_45848817/article/details/127105956)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值