返回首页

神经网络与乘法:Transformer 中的 SwiGLU

本文解释了经典神经网络中缺少乘法以及 Transformer 中 SwiGLU 的作用。分析公式、基准测试以及对 LLM 的实际影响。

SwiGLU:神经网络如何学会乘法
Advertisement 728x90

神经网络为何不进行乘法运算:从感知机到SwiGLU

尽管神经网络在生成文本和图像方面取得了成功,但它们在根本上并不对输入数据进行乘法运算。在感知机中,输入经历线性组合:它们被加权并求和。基本神经元的公式为:$$h = \sigma(\sum w_i x_i + b)$$,其中没有两个变量 $x_1 \cdot x_2$ 的乘积。

对于像计算成本(价格 × 数量)这样的任务,网络通过记忆模式来近似结果,但并不直接计算乘法。添加隐藏层保留了这一原则:在每个阶段,只涉及加权信号的和。

在第一层:

Google AdInline article slot

$$h_1^{(1)} = x_1 w_{11}^{(1)} + x_2 w_{12}^{(1)}$$

$$h_2^{(1)} = x_1 w_{21}^{(1)} + x_2 w_{22}^{(1)}$$

在第二层:

Google AdInline article slot

$$h_1^{(2)} = h_1^{(1)} w_{11}^{(2)} + h_2^{(1)} w_{12}^{(2)}$$

代入显示:$x_1$ 和 $x_2$ 保持在和中,它们的乘积不会出现。权重在层之间相乘,但输入不会。

变通方法:平方和预计算

工程师添加预乘值($x_1 x_2$)或平方到输入中,以模拟乘法。一个学校公式允许表达乘积:

Google AdInline article slot

$$x y = \frac{1}{2} \left( (x+y)^2 - x^2 - y^2 \right)$$

这将乘法简化为加法、减法和平方。一个假设的激活函数 $f(z) = z^2$ 可能有所帮助,但标准的ReLU、Sigmoid和Tanh不提供平方的非线性。

实践表明:这样的变通方法在演示中有效,但在具有许多输入的实际任务中,它们需要提前知道必要的组合。

  • 预计算:将 $x_1 x_2$ 作为输入馈送。
  • 平方:使用 $(x+y)^2$、$x^2$、$y^2$。
  • 局限性:不可扩展,损害了通用逼近器的性质。

Transformer突破:GLU变体的作用

Transformer架构(2017年)引入了注意力机制,但关键一步是在2020年用门控线性单元(GLU)替换激活函数(Noam Shazeer,“GLU变体改进Transformer”)。ReGLU、GEGLU和SwiGLU在收敛性上优于ReLU。

| 激活函数 | 误差 |

|-----------|--------|

| ReLU | 2.45 |

| ReGLU | 2.32 |

| GEGLU | 2.25 |

| SwiGLU | 2.24 |

SwiGLU因速度而更受青睐。公式:

$$\text{SwiGLU}(x) = \text{Swish}(x W + b) \odot (x V + c)$$

这里 $\odot$ 是两个投影的逐元素乘法。这引入了二次依赖,允许建模 $x_1 x_2$ 而无需变通方法。SwiGLU用于现代LLM的FFN块中。

机制:

  • 输入 $x$ 被投影到两个路径:$xW + b$ 和 $xV + c$。
  • 第一个通过Swish($\text{Swish}(z) = z \sigma(\beta z)$)。
  • 逐元素乘法。

对模型的实际影响

SwiGLU改进了训练,但并未使AI成为精确的计算器。生成模型是概率性的:“2×2=4”是一个可能的标记,而不是推导。对于复杂计算,LLM在沙箱中委托给Python代码。

  • GLU的优点:更好的收敛性,非线性建模。
  • 缺点:网络并不总是自动找到必要的权重。
  • 需要大量数据。
  • 概率性质持续存在。

未来的集成(Transformer中的WebAssembly)将允许在模型内运行原生代码。

关键要点

  • 经典感知机对输入进行加法但不进行乘法运算。
  • GLU(SwiGLU)引入了投影的逐元素乘法以实现二次依赖。
  • 门控单元在现代Transformer中取代ReLU,将误差降低5–10%。
  • 对于精确计算,LLM使用外部工具。

— Editorial Team

Advertisement 728x90

继续阅读