【学习笔记】transformer是什么?专给非计算机专业看的超直观解读

写在前面:作者本是个计算机小白,因为最近对chatGPT产生了兴趣,开始尝试了解背后的算法,因此有了这篇文章。因为作者是计算机小白(只在学过一点C语言,交完大作业就忘了个干净),所以写出来文章应该没啥门槛,希望可以帮助和我一样不懂计算机但感兴趣的朋友了解什么是transformer模型,即chatGPT中的"T"。

本文主要以我和chatGPT一问一答的形式进行(这部分完全没有门槛,中学数学就可以理解)。因为GPT有胡说八道之嫌,所以我很少直接让GPT介绍某个概念,而是我先看别人的文章形成对某概念的理解,再向GPT确认理解是否准确。当然,这也无法排除GPT仍然胡说八道,因此,如果有错误,还请各位大佬不吝赐教。注意本文是解释这个模型是什么,不涉及具体的实操过程,因此有些地方可能和实际情况有些出入。


transformer的整体架构如下,可以分为四个部分:输入,Encoder,Decoder,输出。我先只把它当一个目录,一步步解释每个框的含义是什么,最后再串起来解释整个架构。

 

输入和输出

1.1 输入(Inputs & Embedding)

 

拆开transformer这个黑盒子之前,我们先看它的输入和输出是什么。transformer的输入是一个形状为(batch_size, sequence_length, embedding_dim) 的张量。其中 batch_size 表示批次大小(有几句话),sequence_length 表示序列长度(一句话有多少个词)(实际上我们是需要用零填充同意长度的,详见3.1节),embedding_dim 表示词向量的维度(一个词用几维向量表示)(是一个超参数,也写作d_model,实际模型中一般为512)。

下面涉及第一个概念:词向量。简单地说,电脑无法直接理解我们的语言,词向量就是把单词翻译成了它能听得懂的语言。很容易想到,我们可以用单词在字典中出现的顺序进行编码。例如字典中只有”我“,”吃“,”苹果“三个单词,那么”我吃苹果“就可以编码为”123“。但从数学上看,1和2之间的欧式距离是1,1和3之间的欧氏距离是2;而从语义上看,“我”和“吃”之间语义的差异并不比“我”和“苹果”之间更小。因此,这种编码方式不利于理解。那么如何根据语义编码呢?可以这样操作:首先,字典序只是一个数字,其能储存的信息有限,因此可以先通过“独热编码”(one-hot encoding)对单词进行升维;然后再通过机器学习,将独热编码转化为它所"理解"的语义信息。看下面的对话。

我:请把”我吃苹果“转化为独热编码。

GPT:独热编码是一种将离散特征转换为向量的方法,每个特征对应一个唯一的向量,其中只有一个元素为 1,其他元素都为 0。以“我吃苹果”为例,如果我们将这个句子中的单词进行独热编码,可以得到如下的结果:

- 我:[1, 0, 0,]

- 吃:[0, 1, 0 ]

- 苹果:[0, 0, 1]

这种编码方式可以保留单词的语义信息,同时便于计算和处理。在 Transformer 模型中,输入的单词通常会被转换为对应的词向量,而不是独热编码。

我:关于词向量,我可否这么理解,它其实就是根据语义对单词进行分门别类,每个维度表示特定特征——当然,这些特征每次训练可能都不一样,是一种抽象的特征,未必具有人类能理解的含义。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值