CUDA学习之路[13]:Attention算子详解
写在前边
市面上讲解Transformer架构的博客、视频、书籍实在是太多了,我不敢保证自己真的能够讲的比这些大牛都优秀,只能说尽量把我对于Transformer的全部理解都写在这一个系列博客中。
为什么是Transformer?
很多人现在一谈起大模型、多模态等等就自然而然想到了Transformer,但是它最开始真的不是干这个的,从最开始处理NLP,一步一步到后边的大模型,其实中间还有很长一段路要走。
很多教程一上来就开始学技术,位置编码、自注意力、一堆词怼上来直接把人砸晕了。 但是技术本身的发展脉络是阶段性的,我们先了解一下整个Transformer的发展脉络,搞清楚每一个模块都是用来干嘛的。
这一讲完全讲历史,大家也就听一乐,后续几节我再实现具体的代码。
假设,我们现在要把下边这句话翻译成为中文:
The cat that was adopted last year and has been lazy ever since finally yawned.
句子很长,我们只需要看主谓宾:
The cat yawned.
这句话的翻译难点是什么?主语cat和真正的主句谓语yawned之间插入了一段很长的定语从句,这也是我们很多考研、考四六级同学面对长难句时候的困难——难以找到主谓宾。
在Transformer之前,处理自然语言的主流是RNN循环神经网络和LSTM长短期记忆网络。
对于RNN来说,处理句子就像玩传水优秀。它从The开始,把一部分水传给cat,再传给that…一直传到yawned。等传到最后句尾时,句首的信息已经在多次传递中严重衰减(梯度消失)。导致它根本想不起来主语是谁。

为了解决这个问题,LSTM引入了门控机制和细胞状态。通俗来说就是给原本的信息加上了便签,关键的词就进行标记。但是这样子做也有几个问题。首先是,用来标记的“笔记本”是容量有限的,句子太长就溢出了;并且它必须从前到后逐字阅读,很难进行并行计算,训练速度极慢。
直到1027年,Google团队发表了那篇改变历史的论文:《Attention is All you Need》
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!