位置:首页 > 新闻资讯 > 『NLG学习』(二)教你搭建自己的Transformer

『NLG学习』(二)教你搭建自己的Transformer

时间:2025-07-25  |  作者:  |  阅读:0

本文围绕Transformer展开,先介绍其相较CNN与RNN的优势,如并行计算、自注意力机制等。接着讲解构建Transformer的五个零件及算法,包括嵌入、位置编码、掩码等。还给出了数据预处理、各组件实现及组装训练的代码,展示了结果,提及进步与不足,指出位置编码处理欠佳。

『NLG学习』(二)教你搭建自己的Transformer_wishdown.com

Abstract(摘要)

在transformer出现之前,主要的序列转导模型是基于复杂的递归或卷积神经网络,其中包括一个编码器和一个解码器。性能最好的模型也通过一个注意力机制来连接编码器和解码器。然而,好景不长,谷歌的大佬们提出了transformer,一来可以进行并行计算,提高训练推理速度;二来可以加入了自注意力机制,可以更好的关注序列间的时间维度上的关系。transformer同时兼备了CNN与RNN的优点,既实现了参数局部共享,降低了参数量(CNN最大的特点),同时又可以关注序列中的任意两个单词间的依赖关系,彻底解决了RNN对于长期依赖关系的无力感,真可谓万物皆可联。但很遗憾的是,谷歌大佬们的这篇attention is all you need写的太过晦涩,很难读懂,因此笔者查阅了各种资料,才将transformer略微搞懂。下面让我们开始transformer的学习吧~

Introduction(介绍)

transformer摒弃了原先的CNN与RNN的架构,仅仅使用了全连接层与自注意力机制,因此训练速度很快。同时在encoder部分,我们对src进行并行计算,与使用RNN相比,速度也有了大大的提升。那么,要搭建一个我们自己的transformer,需要五个零件,分别是

下面让我们一步步地开始学习吧

Algorithm(算法)

1)Embedding

嵌入单词目前已成为主流的做法,嵌入向量蕴含的信息量远比one-hot向量大的多。而且实作也很简单,直接调用API即可。当每个单词输入网络时,此代码将执行查找并检索其嵌入向量。 然后,这些向量将被模型作为参数学习,并随梯度下降的每次迭代进行调整。

2)position-encoding

刚才的embedding是为了让机器理解单词的意思,这一步是为了让机器理解各个单词的位置。当然,其实这一步本论文处理得不是很好,只是使用了三角函数进行了映射,当然这只是权宜之计,下面让我们看看作者的做法。

『NLG学习』(二)教你搭建自己的Transformer_wishdown.com

? ? ? ?

这是该trick的示意图,行为pos,列为i

『NLG学习』(二)教你搭建自己的Transformer_wishdown.com

? ? ? ?

福利游戏

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多