Overview of Transformer

写在开头

在学习 Transformer 之前,需要对卷积神经网络和循环神经网络有所了解。推荐吴恩达在 Coursera 平台的课程【深度学习专项】,B 站有搬运版 https://www.bilibili.com/video/BV12E411a7Xn/?spm_id_from=333.337.search-card.all.click&vd_source=2e0bed8f939119c48817ce61f4f75bdd

Transformer 在网上有很多的教程,我推荐观看李沐老师讲解的【Transformer论文逐段精读】,B 站地址 https://www.bilibili.com/video/BV1pu411o7BE/?spm_id_from=333.337.search-card.all.click&vd_source=2e0bed8f939119c48817ce61f4f75bdd,Transformer 发表在论文 "Attention is all you need" 中,感兴趣的也可以看看原文。

如果想进一步了解 Transformer 的底层知识,可以看看 Karpathy 的 minGPT 项目 https://github.com/karpathy/minGPT,minGPT 是一个小巧的、只有 300 行代码的 GPT 的从头实现。当然,我们也可以使用 minGPT 训练自己的项目。


理解 Transformer

传统的循环神经网络,包括 RNN、LSTM、GRU,以及后来引入了注意力机制的模型,都是序贯模型(sequential model),输入和输出都是从前往后按顺序进行的,这样导致模型难以进行并行计算,效率比较低。

那么,如何改进循环神经网络呢,以语言模型为例,可不可以一次性地将一个语言序列输入到模型中呢?可不可以像卷积神经网络那样通过多个输出通道(channel)输出不同模式的信息呢?

Transformer 通过引入自注意力机制(self attention mechanism)和多头注意力机制(multi-head attention mechanism)很好地回答了上述两个问题,改进了循环神经网络。Transformer(中文名为变形金刚)是一个只基于注意力机制的神经网络架构,它使用了编码器-解码器架构(encoder-decoder architecture),它没有使用循环,它把所有的循环层全部替换为了 multi-head attention 层。

Transformer 借鉴了卷积神经网络的思想,它引入的自注意力机制可以一次性地将一个语言序列输入到模型中,这种批量操作有点儿类似于卷积神经网络的 filter 窗口,自注意力机制一次可以扫描整个序列,而 filter 窗口只能扫描窗口范围。Transformer 的多头注意力机制借鉴了卷积神经网络的多输出通道设计,通过多次使用自注意力机制,然后将输出结果 concat 连接起来,使得更好地理解语言序列的信息。

自注意力机制通俗理解就是,我们输入的信息(1个词➡1个token➡1个embedding)同时被表示为查询向量(q)、键向量(k)和值向量(v),查询向量用作投放注意力,去和其他输入信息的键向量相乘(这些其他输入信息的键向量为被注意到的对象),计算内积作为相似度,内积越大,说明这两个信息的相似度越高。将这些内积进行 softmax 分数归一化处理,得到各个【注意-被注意】对的注意力权重,然后根据这些注意力权重对所有的值向量求加权和,即得到自注意力机制的输出。

传统的循环神经网络由于本身是序贯模型,所以输出信息是带有顺序信息的,而 Transformer 的输出信息是 key 和 query 乘积的加权和,是不带有顺序信息的。而语言序列的顺序是很重要的,Transformer 通过给输入信息的 embedding 加上一个位置编码(positional encoding)来给输入信息标记上位置信息。位置编码采用的是正余弦编码,假如第 t 个 embedding 的维度为 512,则选择 512 个不同变换的正余弦函数的 x=t 时的函数值作为位置编码向量,位置编码向量的维度也为 512。

此外,Transformer 还使用了 layerNorm 对数据进行标准正态分布化处理,以及在训练时对输入到解码器的信息进行掩码(mask)处理。


写在文末

人工智能技术日新月异,逐渐渗透进了各行各业。人工智能技术在生物领域有非常大的应用潜力,让我们一起学习,致力于人工智能推动生物发展。

为了促进交流,我创建了 AI in Bio 微信交流群,可以点击公众号主页底部进交流群一栏,获取交流群二维码,如果二维码失效,请给我留言,我会尽快更新。也可以先加我微信(微信ID:AIinbio),备注进交流群,然后我拉你进群。

感谢大家的支持与帮助!

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值