很多介绍 Transformer 的文章一开始就是下面这张公式看到这里绝大多数兄弟已经放弃了。事实上即使不知道任何数学公式也完全可以理解 Transformer 的核心思想。这一章我们不用矩阵、向量运算这些复杂公式来表述而是用一个现实例子说明模型到底是如何思考一段文字的。3.1 从一句话开始假设我们给模型输入一句话小明昨天去北京出差今天他回来了。然后问他是谁对于我们人类来说答案非常简单。当然是小明。但是如果你仔细思考会发现句子里面其实并没有写他 小明。我们的大脑为什么能够知道因为我们会自动回忆前面的内容。发现小明和他关系最紧密。于是理解了他就是小明。Transformer 做的事情其实非常类似。它也会回头看,不过它不是只看一个词。而是看前面的所有 Token。3.2 Transformer 为什么叫 Transformer很多人第一次看到Transformer。都会问,为什么叫Transformer是不是它的直译--变形金刚(哈哈哈 开个玩笑..)其实Transformer 的中文一般翻译为转换器。为什么叫转换器因为它不断地把一串 Token,逐渐转换成越来越丰富的语义表示。举个例子,刚开始,模型看到苹果它只知道这是一个 Token。经过第一层它开始知道这是水果。再经过几层。它知道这里说的是苹果公司。继续经过几层。它发现上下文出现iPhone Mac Apple Store于是最终理解这里的苹果,不是水果。而是Apple 公司。注意,这里Token 没变,变化的是模型内部对它的理解。所以Transformer真正转换的不是文字。而是,每一个 Token 的语义表示。那么Transformer是怎么转换token的语义的呢?下面我们分步骤讲.3.3 第一步Embedding上一节,我们提到苹果 ↓ Token ID ↓ 31582这里很多人会问模型直接处理31582不行吗答案是不行。为什么因为31582只是编号,这种编号太短,可存储内容太少,表示的语义也有限。而且编号之间没有任何关系。例如苹果 31582 香蕉 712 北京 89231从数字来看,31582和712没有任何联系。但是,我们人类知道苹果和香蕉都属于水果。它们应该更接近。因此,模型需要把Token ID变成一种新的表示。它就是Embedding词向量。可以把它理解成模型给每一个 Token 建立的一张身份证。不过这张身份证不是姓名,住址,出生年月这些。而是一大串数字.例如苹果 ↓ [0.13, -0.42, 0.78, ......]在大模型里面,可能一个token有几千维这些数字。共同描述苹果这个词在语言世界里的位置。3.4 为什么叫向量空间很多文章都会说Token 被映射到高维向量空间。听起来特别抽象,其实你可以想象成一张地图。(当然 地图最多也就三维空间)地图上每一个 Token都有自己的坐标。例如当然,真正的大模型完全不是二维。而是几千维。但是,原理一样,距离越近说明语义越接近。例如模型可能发现北京 上海 广州在向量空间中距离很近。因为它们都是城市。而Redis MySQL Kafka也很近。因为它们作为技术中间件经常出现在同样的上下文。注意:模型并没有人告诉它,Redis 是数据库。它只是统计发现Redis、Kafka、MySQL、Spring Boot经常一起出现。于是通过大量的训练和计算,慢慢的这些 Token就在空间里面越来越近。3.5 Transformer 最重要的一步--Attention(注意力机制)到了这里,模型已经拥有了每一个 Token 的Embedding。接下来,神奇的事情发生了。Transformer 会问当前我要预测下一个 Token 时前面的哪些 Token 最重要例如小明 昨天 去了 北京 今天 他回来了。 他是谁?准备开始预测后面一句Transformer 会按token依次计算小明 重要吗 ★★★★★昨天 重要吗 ★★北京 重要吗 ★★★今天 重要吗 ★★最终模型发现和他关系最大的。其实是小明。于是模型就知道他大概率指的是小明。这一步。就是Transformer 最伟大的发明