线性表示是如何学习的?抽象动态过程的精确解

arXiv cs.LG 论文

摘要

本文构建了一个框架,研究线性概念表示在神经网络训练过程中如何涌现,在线性网络中提供精确解,并分析非线性网络中的抽象动态过程。结果揭示了控制抽象的关键原则,并为可解释性和控制提供了启示。

arXiv:2607.08843v1 公告类型:新 摘要:在人工和生物神经网络中,概念通常被编码为表示空间中一致的线性方向。在深度学习中,这一思想被称为线性表示假说,支撑了许多基于线性探针的可解释性和控制方法,从概念检测到激活导向。然而,虽然先前的工作已经研究了此类方向在训练后是否应该存在,但它们在训练过程中涌现的动态过程仍知之甚少。本文构建了一个框架,研究训练过程中概念方向的对齐——我们称之为“抽象”的过程。在最小线性网络设置中,我们获得了抽象完整轨迹的精确解。这些解揭示了控制抽象的关键分析原则:(i) 数据和目标几何共同决定学习结束时的抽象;(ii) 抽象随网络深度增加而改善;(iii) 初始化尺度控制训练中达到的最大抽象。将我们的理论扩展到非线性网络,我们分析了非线性选择如何影响抽象动态过程:erf网络近似线性理论,而ReLU网络中的抽象更多依赖于输入几何而非目标几何。在两种情况下,我们证明了一个显著的衰减定律:与预激活相比,两种非线性都会削弱激活中的抽象。我们在开放模型(DINOv3, Gemma 4)中找到了这一定律的证据,并应用我们的理论改进了LLM中线性探针的泛化。总之,我们的结果为抽象提供了一个动态理论,对可解释性和控制具有启示意义。
查看原文
查看缓存全文

缓存时间: 2026/07/13 07:55

# 线性表示是如何学习的?抽象动力学的精确解
来源:https://arxiv.org/abs/2607.08843
查看 PDF(https://arxiv.org/pdf/2607.08843)

> **摘要:** 在人工和生物神经网络中,概念常被编码为表征空间中一致的线性方向。在深度学习中,这一思想被称为线性表示假说,并支撑着众多基于线性探针的可解释性与控制方法,涵盖概念检测到激活引导。然而,尽管先前的工作已研究过此类方向在训练*之后*是否应当存在,但它们在训练*期间*如何涌现的动态过程仍知之甚少。本文构建了一个框架,用于研究训练过程中概念方向的对齐——我们称之为“抽象”过程。在最小线性网络设定下,我们获得了抽象完整轨迹的精确解。这些解揭示了支配抽象的关键分析原则:(i) 数据和目标几何共同决定了学习结束时的抽象程度,(ii) 抽象随网络深度增加而改善,(iii) 初始化尺度控制着训练过程中能达到的最大抽象程度。将理论扩展到非线性网络后,我们分析了非线性函数的选择如何影响抽象动力学:erf 网络近似线性理论,而 ReLU 网络中的抽象更少依赖目标几何、更多依赖输入几何。在两类网络中,我们证明了一个显著的衰减律:相对于预激活,两种非线性都会削弱激活中的抽象。我们在开放模型(DINOv3、Gemma 4)中找到了这一规律的证据,并将其应用于改善 LLM 中线性探针的泛化能力。综合起来,我们的结果为抽象提供了一种动力学理论,对可解释性与控制具有启示意义。

## 提交历史

来自:William W. Yang \[查看电子邮件(https://arxiv.org/show-email/a87e37bc/2607.08843)\] **\[v1\]** 2026年7月9日星期四 18:04:25 UTC(3,435 KB)

相似文章

稀疏自编码器中概念学习与神经元解释的几何视角

arXiv cs.LG

本文提出了一个统一的几何框架,用于理解稀疏自编码器中的概念学习和神经元解释,将概念形式化为集合,并定义了检测、分离和近似。它提供了误差界、容量约束,并与形式概念分析建立了联系,同时在合成数据上进行了实验。

神经网络可证明地学习群组合的谱表示

Hugging Face Daily Papers

本文提供了神经网络在群组合任务中学习结构化表示的理论分析,证明了训练动态驱动神经元以指数收敛速度收敛到不可约群表示。该工作建立了特征学习的表示理论解释,并刻画了矩阵值群表示的低秩压缩现象。

深度线性网络中的非线性计算

OpenAI Blog

# 深度线性网络中的非线性计算 来源:[https://openai.com/index/nonlinear-computation-in-deep-linear-networks/](https://openai.com/index/nonlinear-computation-in-deep-linear-networks/) `` ``` 1x = tf.placeholder(dtype=tf.float32, shape=[batch_size,784]) 2y = tf.placeholder(dtype=tf.float32, shape=[batch_size,10]) 34w1 = tf.Variable(np.random.normal(scale=np.sqrt(2./784),size=[784,512]).astype(np.float32)) 5b1 = tf.Variable(np.zeros(512,dtype=np.float32)) 6w2 = tf.Variable(np.random