引言

Transformer架构在自然语言处理和计算机视觉领域取得了巨大成功,其核心能力之一是上下文学习(In-Context Learning, ICL)——无需参数更新,仅通过输入序列中的示例即可学习新任务1。近年来,研究表明经过训练的Transformer能够隐式地发现并执行经典数值算法,这一发现引发了学界的广泛关注2

Transformer作为通用学习者的发现

Garg等人(2022)和Akyürek等人(2023)首先观察到,经过训练的Transformer可以在上下文中学习简单的函数类34。von Oswald等人(2023)进一步证明,对于线性回归任务,线性Transformer的每一层都在执行类似梯度下降的迭代算法,他们称之为GD++5

最近,Lutz等人(2025)在NeurIPS 2025上发表的工作「Linear Transformers Implicitly Discover Unified Numerical Algorithms」中取得了突破性进展:他们训练一个线性注意力Transformer完成矩阵补全任务,通过代数展开(algebraic unrolling)揭示出同一套参数无关的迭代更新规则(EAGLE算法)在三种不同的计算模式下(集中式、分布式、计算受限)均能出现2

上下文学习的数学框架

在上下文学习的框架下,输入序列由数据点对 组成,其中 是特征向量, 是对应的标签。模型需要根据这些示例预测查询点 对应的标签

# 上下文学习的典型输入格式
# 每个token包含 (x_i, y_i) 对
tokens = [
    (x_1, y_1),  # 示例1
    (x_2, y_2),  # 示例2
    ...
    (x_n, y_n),  # 示例n
    (x_t, 0)     # 查询token,y初始化为0
]

线性Transformer的前向传播可表示为:

其中 是注意力层的参数矩阵。通过合并参数,可以得到更简洁的形式:

线性回归的隐式求解

正规方程

给定 个训练样本 ,线性回归的目标是找到权重向量 最小化均方误差:

正规方程给出闭式解:

其中:

  • 是特征矩阵的协方差
  • 是标签-特征的加权和
// 正规方程求解线性回归
vector<double> solve_normal_equation(const vector<vector<double>>& X, 
                                      const vector<double>& y) {
    int n = X.size(), d = X[0].size();
    // 计算 Sigma = X^T X
    vector<vector<double>> Sigma(d, vector<double>(d, 0));
    for (int i = 0; i < n; ++i)
        for (int k = 0; k < d; ++k)
            for (int j = 0; j < d; ++j)
                Sigma[k][j] += X[i][k] * X[i][j];
    
    // 计算 alpha = X^T y
    vector<double> alpha(d, 0);
    for (int i = 0; i < n; ++i)
        for (int k = 0; k < d; ++k)
            alpha[k] += y[i] * X[i][k];
    
    // w = Sigma^{-1} * alpha (需要矩阵求逆)
    return matrix_inverse(Sigma) * alpha;
}

梯度下降法

当数据规模较大时,直接求逆的计算成本为 。梯度下降法提供了一种迭代求解方案:

梯度下降的收敛速度依赖于条件数 ,通常需要 次迭代才能达到精度

def gradient_descent(X, y, lr=0.01, max_iter=1000):
    n, d = X.shape
    w = np.zeros(d)
    
    for _ in range(max_iter):
        # 计算预测误差
        residual = y - X @ w
        # 计算梯度
        gradient = X.T @ residual
        # 更新权重
        w = w + lr * gradient
        
    return w

共轭梯度法

共轭梯度法(Conjugate Gradient, CG)是求解线性方程组和最小二乘问题的一阶方法,其迭代复杂度为 ,在条件数较大时优于普通梯度下降6

def conjugate_gradient(A, b, max_iter=None):
    """求解 Ax = b,其中A是对称正定矩阵"""
    x = np.zeros_like(b)
    r = b - A @ x
    p = r.copy()
    rsold = r @ r
    
    for i in range(max_iter or len(b)):
        Ap = A @ p
        alpha = rsold / (p @ Ap)
        x = x + alpha * p
        r = r - alpha * Ap
        rsnew = r @ r
        
        if np.sqrt(rsnew) < 1e-8:
            break
            
        beta = rsnew / rsold
        p = r + beta * p
        rsold = rsnew
        
    return x

Transformer的隐式执行

权重向量的维护

Vladymyrov等人(2024)证明,线性Transformer的每一层都维护着一个隐式线性回归问题的权重向量7。具体来说,对于第 层的输出 ,存在参数 使得:

对于查询token

这意味着每层都在执行一种预处理梯度下降(Preconditioned Gradient Descent)的变体。

预处理机制

GD++算法(von Oswald等人,2023)展示了一个关键的预处理机制5

其中

关键发现:GD++实际上实现了二阶收敛!Vladymyrov等人的定理5.1表明,对于最小二乘问题,GD++可以在 层内达到精度 7

# GD++ 算法的预处理机制示意
class GDPlusPlus:
    def __init__(self):
        self.w = None  # 隐式权重向量
        
    def forward(self, X, y, X_query):
        """X: (n, d), y: (n,), X_query: (d,)"""
        n, d = X.shape
        w = np.zeros(d)  # 初始化权重
        
        for layer in range(self.num_layers):
            # 计算统计量
            Sigma = X.T @ X  # d x d
            alpha = X.T @ y  # d
            
            # 预处理步骤:更新x(特征)
            # x' = (I + ω_xx * Sigma) @ x
            
            # 梯度步骤:更新y(残差)
            residual = y - X @ w
            gradient = X.T @ residual
            w = w + self.lr * gradient
            
        return X_query @ w

与在线学习的联系

Transformer的逐层迭代可以类比为在线学习中的优化过程:每一层接收前一层的信息(对应”历史梯度”),然后进行一步更新。这种类比揭示了Transformer如何通过堆叠注意力层来”模拟”迭代优化算法。

Lutz等人(2025)的EAGLE算法进一步深化了这一理解2。通过训练Transformer完成矩阵补全任务,他们发现权重重构后揭示出统一的迭代规则,该规则能够:

  • 在集中式设置中实现二阶收敛
  • 在分布式设置中减少通信复杂度
  • 在计算受限设置中保持准确性

预处理共轭梯度法

PCG算法回顾

预处理共轭梯度法(Preconditioned Conjugate Gradient)是求解对称正定线性系统 的经典方法。其核心思想是通过一个预处理矩阵 来改善矩阵 的条件数:

PCG的基本迭代为:

def preconditioned_cg(A, b, M=None, max_iter=1000, tol=1e-8):
    """
    预处理共轭梯度法
    A: 对称正定矩阵
    b: 右端向量
    M: 预处理矩阵(通常为A的近似逆)
    """
    n = len(b)
    x = np.zeros(n)
    r = b - A @ x
    z = r if M is None else np.linalg.solve(M, r)
    p = z.copy()
    
    for k in range(max_iter):
        Ap = A @ p
        pAp = p @ Ap
        
        if abs(pAp) < 1e-12:  # 避免除零
            break
            
        alpha = (r @ z) / pAp
        x = x + alpha * p
        r = r - alpha * Ap
        z_new = r if M is None else np.linalg.solve(M, r)
        
        if np.linalg.norm(r) < tol:
            break
            
        beta = (z_new @ r) / (z @ r)
        p = z_new + beta * p
        z = z_new
        
    return x

隐式PCG的数学推导

EAGLE算法(Lutz等人,2025)可以被理解为一种隐式的预处理共轭梯度变体2。考虑矩阵补全问题:

目标是根据可见块 预测缺失块 。Nyström近似给出:

EAGLE的核心更新规则为:

其中 是正交草图矩阵,

def EAGLE_update(A, B, C, D, S, eta=1.0, gamma=1.9):
    """
    EAGLE算法的核心更新
    A, B, C, D: 矩阵块
    S: 正交草图矩阵
    """
    # 计算草图
    A_tilde = A @ S
    B_tilde = B @ S
    
    # 计算缩放因子
    rho = 1.0 / (np.linalg.norm(A_tilde, 2) ** 2)
    
    # 更新各块
    A_new = A - eta * rho * A_tilde @ A_tilde.T @ A @ S.T
    B_new = B - eta * rho * B_tilde @ A_tilde.T @ A @ S.T
    C_new = C - gamma * rho * A_tilde @ A_tilde.T @ C
    D_new = D + gamma * rho * B_tilde @ A_tilde.T @ C
    
    return A_new, B_new, C_new, D_new

收敛性分析

定理1(集中式设置的二阶收敛)2

对于任意矩阵 ,设 的Nyström估计,。若 ,则存在

使得对所有

关键洞察:EAGLE的迭代与经典的Newton-Schulz矩阵求逆方法密切相关。考虑归一化后的迭代:

这正是计算矩阵符号函数的Newton-Schulz迭代2

秩限制注意力

低秩近似的意义

在计算受限的场景中,注意力矩阵的秩被限制为 。这种约束带来两个优势:

  1. 计算效率:每层复杂度从 降低到
  2. 通信效率:分布式设置中的通信量从 降低到

Lutz等人发现,即使在这种低秩约束下,Transformer仍然能够学习到有效的算法2

近似精度分析

分布式设置中的多样性指数2

定义数据多样性指数 为:

其中 值域上的正交投影。

定理2(分布式收敛)

。在无噪声情况下,存在

使得

def compute_diversity_index(A_list):
    """
    计算分布式设置中的数据多样性指数
    A_list: 各机器上的数据矩阵列表
    """
    M = len(A_list)
    d = A_list[0].shape[0]
    
    # 计算各机器的投影矩阵
    P_sum = np.zeros((d, d))
    for A_mu in A_list:
        Q, _ = np.linalg.qr(A_mu)
        P_sum += Q @ Q.T
    
    # 计算最小特征值
    P_avg = P_sum / M
    eigenvalues = np.linalg.eigvalsh(P_avg)
    alpha = eigenvalues[0]  # 最小特征值
    
    return alpha

计算受限设置中的草图分析

在秩限制注意力中,草图矩阵 呈现出随机正交矩阵的性质。其特征值分布和系数分布与 的统计特性高度吻合,这解释了为什么低秩约束不会显著损害算法性能。

实验验证

矩阵补全任务

Lutz等人(2025)的实验设置2

  • 数据生成:构造秩为 的矩阵 ,其中 的行从 采样
  • 参数
  • 噪声:添加方差为 的高斯噪声

实验结果显示,4层Transformer在三种设置下均实现了 量级的MSE降低。

# 矩阵补全任务的典型实验配置
class MatrixCompletionExperiment:
    def __init__(self):
        self.n = 18      # 训练样本数
        self.d = 18      # 特征维度
        self.n_prime = 2 # 输出维度
        self.rank = 10   # 矩阵秩
        self.alpha = 0.7 # 条件数参数
        
    def generate_low_rank_matrix(self, seed=42):
        """生成低秩矩阵样本"""
        np.random.seed(seed)
        
        # 生成因子矩阵
        R1 = np.random.randn(self.n + self.n_prime, self.rank)
        R2 = np.random.randn(self.d + self.d_prime, self.rank)
        
        # 加权
        Sigma_diag = self.alpha ** np.arange(self.rank)
        X = R1 @ np.diag(Sigma_diag) @ R2.T / np.sqrt(self.rank)
        
        return X[:self.n, :], X[:self.n, self.d:],
               X[self.n:, :self.d], X[self.n:, self.d:]

不同规模下的表现

集中式设置

方法κ = 100κ = 1000κ = 10000κ = 100000
梯度下降
共轭梯度
EAGLE

关键结果:在 时,EAGLE比共轭梯度法少约100倍的迭代次数。

分布式设置

  • 迭代复杂度与机器数量 无关
  • 收敛速度线性依赖于
  • 的低多样性场景中,加速EAGLE仍优于标准梯度下降约10倍

计算受限设置

  • 迭代次数随 线性增长
  • 每迭代时间随 降低(最多7倍加速)
  • 时,EAGLE比随机梯度下降快约2.5倍

理论启示

上下文学习的本质是优化

这些发现揭示了上下文学习的深层机制:Transformer通过训练学会了执行数值优化算法。具体来说:

  1. 数据空间 vs 参数空间:传统优化在参数空间迭代,而Transformer执行的是纯数据到数据的变换,没有显式的参数更新2

  2. 二阶动量的隐式出现:GD++和EAGLE中的预处理步骤实际上实现了二阶信息的使用,这与传统理解中Transformer仅实现一阶梯度下降的观点相悖7

  3. 算法发现的自动化:Transformer不仅学会了执行一个算法,还能在不同计算约束下自适应地调整该算法——这表明预训练可能”印刻”了一个灵活的基础算法框架。

隐式归纳偏置

为什么线性Transformer能够发现这些算法?

  1. 架构约束:线性注意力的参数化自然地将更新分解为预处理和梯度步骤
  2. 损失驱动:通过最小化MSE,Transformer被激励去学习能准确预测缺失数据的迭代规则
  3. 对称性:权重的块对角结构反映了底层问题的数学结构

归纳偏置的证据

  • 每层仅需一个注意力头即可达到竞争性能
  • 权重量化和稀疏化后算法性能保持稳定
  • 在各层保持常数,表明Transformer学会了归一化批次最大谱范数2

参考资料

Footnotes

  1. Brown, T., et al. (2020). Language models are few-shot learners. NeurIPS, 33, 1877-1901.

  2. Lutz, P., Gangrade, A., Daneshmand, H., & Saligrama, V. (2025). Linear Transformers Implicitly Discover Unified Numerical Algorithms. NeurIPS 2025. 2 3 4 5 6 7 8 9 10 11

  3. Garg, S., et al. (2022). What can transformers learn in-context? A case study of simple function classes. NeurIPS, 35, 30583-30598.

  4. Akyürek, E., et al. (2023). What learning algorithm is in-context learning? Investigations with linear models. ICLR.

  5. von Oswald, J., et al. (2023). Transformers learn in-context by gradient descent. ICML, 35151-35174. 2

  6. Hestenes, M. R., & Stiefel, E. (1952). Methods of conjugate gradients for solving linear systems. J. Res. Natl. Bur. Stand., 49(6), 409-436.

  7. Vladymyrov, M., et al. (2024). Linear transformers are versatile in-context learners. NeurIPS, 37, 48784-48809. 2 3