详细内容或原文请订阅后点击阅览
我在变压器内构建了一台微型计算机
通过将一个简单的程序直接编译为变压器权重。我在变压器内构建微型计算机的帖子首先出现在走向数据科学上。
来源:走向数据科学变压器并希望有用的模式识别电路出现在其中。但如果我们已经知道电路怎么办?如果我们不从数据中学习权重,而是通过分析方式构建权重,以便模型直接执行计算图,结果会怎样?
这就是我的复活节周末项目背后的想法。
我没有将变压器视为必须通过优化发现算法的系统,而是将其视为可编程机器。时间表指定每个步骤应计算哪些中间量。隐藏维度被分配给变量,例如微型计算机中的寄存器。注意头被连接来执行查找和路由。前馈单元连接起来以实现局部门控计算。剩余更新将下一个机器状态写回到流中。
结果是执行确定性程序的普通转换器。
在此视图中,残余流是工作内存,每一层都成为一个机器步骤。有些值被读取,有些值被转换,有些值被传递,有些值在它们的槽可以安全地重用时被覆盖。变压器开始类似于一台由注意力、线性投影和门控块构建而成的小型编译计算机。
这些都不需要培训。如果您已经有了计算图和每个中间变量何时应存在的时间表,则可以直接构建模型权重。结果,变压器成为一个执行引擎,其行为由设计决定,而不是梯度下降。
在这篇文章的其余部分,我将通过一个小例子来具体说明这一点。我们将从一个简单的程序开始,将其变量分配给隐藏状态槽,然后逐步介绍如何分析连接注意力、前馈层和残差更新,以便标准转换器逐步执行它。
我们可以编译成 Transformer 的小程序
查找 = {
