神经网络的奥秘:从表达能力、优化到数据分布的简化分析

NYU博士论文精华:解构神经网络,从表达能力、优化性到数据分布,揭示其内在的简单结构与复杂功能。

原文标题:【NYU博士论文】神经网络中的简单结构:论表达能力、优化性与数据分布

原文作者:数据派THU

冷月清谈:

本文旨在通过简化情境,深入理解大型神经网络的功能机制。研究从三个方面展开:一、**表达能力**:对比图增强多层感知机(GA-MLPs)与经典图神经网络(GNNs)的函数类,采用图同构测试和带属性路径计数等方式衡量它们的表示能力;二、**优化性**:从理论角度分析神经网络训练中大学习率引发的不稳定性现象,研究损失函数在低维子空间中产生振荡的条件,并应用于教师-学生框架下的两层单神经元同构网络和矩阵分解问题;三、**数据分布**:提出将下一个 token 的预测分解为上下文内推理与分布关联两个部分,在合成实验中研究发现前馈层倾向于学习简单的分布关联,而注意力层主要负责上下文推理,并验证修改前馈层可以提升LLM在某些任务上的表现。

总而言之,该研究聚焦于神经网络中简单结构,旨在为理解大型模型的功能机制提供基础性步骤和理论支撑。

怜星夜思:

1、文章提到了前馈层和注意力层在处理数据分布时各有侧重,前者偏向学习简单的分布关联,后者侧重上下文推理。那么,在实际应用中,我们应该如何巧妙地结合这两种层,以最大化模型的性能?
2、文章中提到稳定性边缘(Edge of Stability)现象,并分析了大学习率引发的不稳定性。在实际训练中,除了调整学习率,还有哪些方法可以帮助我们稳定训练过程,避免模型崩溃?
3、文章研究了GA-MLPs和GNNs的表达能力,并使用图同构测试和带属性路径计数等方式来衡量。这些方法对于理解其他类型的神经网络(例如Transformer)的表达能力是否有借鉴意义?应该如何应用?

原文内容

来源:专知

本文约1000字,建议阅读5分钟

我们旨在从零出发,分析简化情境,作为理解这些大型模型功能机制的基础性步骤。


在这个大型语言模型(LLMs)及其他巨型神经网络迅猛发展的时代,我们旨在从零出发,分析简化情境,作为理解这些大型模型功能机制的基础性步骤。我们从三个方面展开探讨。
表达能力方面,我们研究了一类简化的图网络——图增强多层感知机(Graph-Augmented Multi-layer Perceptrons, GA-MLPs)的函数类,并与经典图神经网络(Graph Neural Networks, GNNs)进行了对比。我们采用图同构测试和带属性路径计数等方式来衡量它们的表示能力。
优化性方面,我们从理论角度分析了神经网络训练中由于大学习率引发的不稳定性现象,即“稳定性边缘”(Edge of Stability)。我们研究了损失函数在训练过程中为何会呈现出不稳定轨迹的条件,尤其是其在低维子空间中产生振荡的情况。随后,我们将这一特性应用于一些简单但具有代表性的学习问题中,如教师-学生框架下的两层单神经元同构网络和矩阵分解问题。
推理任务中的数据分布方面,我们提出将下一个 token 的预测分解为两个部分:上下文内推理(in-context reasoning)分布关联(distributional association)。我们在一个可控的合成实验设置中,从实证与理论两个角度对这一分解方法进行了研究,发现前馈层(feed-forward layers)更倾向于学习如二元语法(bigram)等简单的分布关联,而注意力层则主要负责上下文内的推理。最后,基于这些理解,我们进一步提供了实验证据,说明对前馈层进行修改可以提升 LLM 在某些任务上的表现。


关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU


除了学习率,batch size的影响也很大。小batch size虽然能带来更好的泛化性,但也更容易陷入局部最小值和震荡。可以尝试逐渐增大batch size,或者使用一些自适应batch size的方法。此外,梯度裁剪(gradient clipping)也是一个很有效的技巧,可以限制梯度的大小,防止梯度爆炸。

我觉得有时候模型崩溃可能是因为数据本身有问题。检查一下数据是不是有异常值或者label错误,清洗一下数据,可能会有意想不到的效果。或者可以尝试数据增强,增加数据的多样性,从源头解决问题。

这个问题很有意思!我的理解是,可以考虑让前馈层先做一层初步的特征提取,抓住一些浅层的、普遍的规律;然后把这些信息交给注意力层,让它结合上下文进行更深入的推理和判断。这样就能各司其职,发挥各自的优势。或者可以试试混合专家模型,不同的专家负责不同的任务,也是一个思路。

我觉得可以从可视化的角度入手。把Transformer的注意力权重可视化,看看它到底关注了哪些token,然后结合具体任务分析,看看这些token之间的关系是否合理 meaningful。虽然不能完全量化表达能力,但至少可以 gain 一些insight。比如,可以看看在机器翻译任务中,注意力机制是否能够正确地对齐源语言和目标语言的词汇。

从理论层面讲,衡量表达能力的核心在于确定神经网络所能表示的函数空间。对于Transformer,可以尝试分析其自注意力机制所构建的等价图结构,并研究这些图结构能够编码哪些类型的函数。例如,是否能够模拟特定的逻辑运算或者数学运算。这样可以更深入地理解Transformer的表达能力上限。

我觉得图同构测试和带属性路径计数的思路,本质上都是在分析网络能够区分哪些不同的结构。这个思路我认为是可以借鉴到transformer上的。比如,我们可以研究transformer能够区分哪些不同的token序列,或者能够捕捉哪些不同的依赖关系。关键在于如何将这些概念抽象成图结构,然后应用类似的测试方法。例如,可以将transformer的注意力机制看作是一种特殊的图结构,然后分析它能够捕捉哪些长程依赖关系。

我感觉这就像是人的思考方式。前馈层就像我们的直觉,快速反应,基于经验;注意力层就像我们的理性分析,慢条斯理,结合各种信息。所以,我觉得可以借鉴人类认知模型的思路,设计一个更符合直觉和理性的混合架构。

从理论角度来看,这涉及到一个trade-off。前馈层计算效率高,但表达能力有限;注意力层表达能力强,但计算复杂度也高。因此,结合的关键在于找到一个平衡点,既能充分利用上下文信息,又能避免计算资源的过度消耗。例如,可以采用稀疏注意力机制来降低注意力层的计算量。一个思路是先用前馈层学习bigram等特征,然后用注意力层学习更复杂的n-gram,从而提高模型性能。

从优化的角度来说,可以使用一些更高级的优化器,比如AdamW、RAdam等,它们在Adam的基础上做了改进,能更好地控制学习率,并提供更好的收敛性。同时,一些正则化手段,例如weight decay,dropout等,也能够帮助稳定训练过程,本质上是通过引入惩罚项来约束模型复杂度,避免过拟合。