当前位置:   article > 正文

论文解读:KAN: Kolmogorov–Arnold Networks

kolmogorov-arnold networks

五一假期刚开始没两天的时候,刷到了一篇火遍国内外AI圈的论文,叫做 KAN: Kolmogorov–Arnold Networks ,  尤其国内某些科技媒体铺天盖地的宣传更是让我提起了兴趣,在假期结束之前,抽个空读一下看看是怎么个事。读了之后发现,仅仅只是高数、线代和概率论这些数学知识是看不懂的,最好还需要了解一点数分方面的知识,反正我是借助了ChatGPT才能勉强看完,这里我就从一个简单的科普角度来阅读这篇文章好了,建议感兴趣的同学还是完整的阅读下这篇文章,真的是个很有意思的思路。

基础

什么是 Kolmogorov-Arnold 定理?

这篇论文主要的理论依据在于 Kolmogorov-Arnold 定理, 中文叫做科尔莫戈洛夫-阿诺尔德表示定理。这个定理是由苏联数学家安德烈·科尔莫戈洛夫(Andrey Kolmogorov)首先提出,并由他的学生弗拉基米尔·阿诺尔德(Vladimir Arnold)在1957年进一步发展。定理最初的动机是探讨多元函数可以如何被一组更简单的函数表示,这是数学和理论计算机科学中的一个基本问题,而且实际上部分解答了数学家希尔伯特著名的23个问题中的第13个问题:是否可以使用加,减,乘,除,以及最多两个变量的代数函数的组合来求解7次方程。 Kolmogorov-Arnold 定理是是在一个更广泛的连续函数的背景下,而非希尔伯特原先提出的代数方程的框架,因此只能算是部分解决。

具体来说, Kolmogorov-Arnold 定理指的是,对于任何定义在闭区间 上的连续函数 dbd340fb771b0fa46a7892b13b4d95fc.png,存在整数 以及一系列的一维连续函数 和 ,使得该多变量函数可以表示为:acd15ac7d23b4fbdf651efd98839ba04.png 其中:

  • 是将单个变量 映射到实数的一维连续函数。

  • 是将实数和到实数的一维连续函数,它处理由 映射后的和。

  • 表示所需的最少函数数量,确保任意连续函数都能以这种形式表示。

平时很少接触数学的同学们直接看这个定理可能有点云里雾里,我们来看个简单的例子好了。假设我们有个多元函数: a92e404dfbff96dc15abdbb86ca3c58c.png ,根据定理,我们可以找到一组一维函数 和 ,使得 48452fffc230fed4f4785ff45af69ea2.png 可以被表示为这些函数的组合:

9e4b81f5f3dc24f8ab6517f8073a67ad.png

这里,ce46a3e15645df8e8d8865283db9ca1b.png,我们可以选择以下具体的函数形式:

  • e22e8b4c6ca6f112e8cedee181a40f4a.png, 838350455d23b7beff1a65abbe38a9ec.png,37fca123d981aa709ff3330e68e13fc8.png

  • f4750a42919098f62dbaa853a5d4e2fa.png, 1b91aaf0b2b22c7d738cf2422594cd29.png,074992e18b9d738960f083667015b7e1.png

  • e4ef8f08cfe6aebc123d6f5d7552800b.png, ef309d0244ff31d82b9a947479f64a28.png,b8e649acfe2d055075074fecc7a81d14.png

  • 其余 函数可以定义为 0,因为它们不会影响最终的和。

相应地, 函数可以选择为:

  • b368f0904e87df4556d6cfb122670f28.png, a48abb20cecae1333874c75e14bc788a.png,61bd20bb46e9bd9e3c4503599cf1a7dd.png

  • 其余 40732dd9b1553d085e24cd539852f422.png,因为它们不会对最终的和产生贡献。

因此,b13bfe672426174317cca5094dd15f0a.png 可以表示为:

  1. 不能识别此Latex公式:
  2. \begin{align}
  3. f(x, y, z)  &= x^2 + 2y^3 + \sin z   \\
  4. &= \Phi_1(\phi_{1,1}(x)) + \Phi_2(\phi_{2,2}(y)) + \Phi_3(\phi_{3,3}(z))
  5. \end{align}


那么这个定理对于我们来说有什么作用呢?

其实它的关键点在于,它说明了多维函数可以通过一系列的一维函数操作和简单的加法来构建。这种结构简化了多维函数的复杂性,因为一维函数相对来说更易于处理和学习。从机器学习和神经网络的角度看,这提供了一种潜在的网络架构设计思路,即通过学习一系列的一维函数来近似复杂的多维函数。

回忆下 MLP

我们回过头看看 MLP 网络模型,也就是多层感知机。它是深度神经网络(DNN)的一种形式。MLP由多个层组成,每一层都包含多个神经元,这些神经元通过激活函数进行非线性变换。MLP包括三种主要的层:

  1. 输入层:负责接收样本数据。每个神经元代表输入数据的一个特征。

  2. 隐藏层:一个或多个隐藏层,每层包含多个神经元。隐藏层是MLP的核心,它们能够学习输入数据中的非线性特征和模式。每个隐藏层的输出都作为下一层的输入。

  3. 输出层:将神经网络的输出呈现给外界。输出层的设计取决于特定任务——例如,分类任务通常用具有softmax激活函数的输出层,而回归任务则可能使用一个没有激活函数或使用线性激活函数的单个节点。

我们都知道,在 Transformer 架构中,有着自注意力层和前馈层,其中每个自注意力层后面通常就会跟着一个 MLP 块, 这个 MLP 块也被称作前馈网络(Feed Forward Network, FFN)。MLP 的存在为模型提供了处理复杂任务所需的计算和表达能力。通过这种结构,Transformer 能够有效地处理各种序列化数据,并在多个领域,如自然语言处理、图像识别和时间序列分析中,展示出极佳的表现。

那么 MLP 是基于什么原理呢?答案是通用近似定理(Universal Approximation Theorem) ,也有种翻译叫做万能近似定理,可见这个定理也是非常强大的。

这个定理的提出也很早了,George Cybenko 于1989年对使用sigmoid激活函数的神经网络证明了这一定理。紧接着,Kurt Hornik在1991年扩展了这一结果,证明了使用任意非线性激活函数的神经网络也具有通用近似能力。

定理的主要内容是:

对于任何在闭区间上定义的连续函数和任意的误差 ,都存在一个具有至少一个隐藏层的前馈神经网络,可以找到一组权重和偏置,使得该神经网络的输出函数在整个定义域内与目标函数的最大偏差小于 。

这个定理解释了为什么神经网络可以被应用于各种复杂的模式识别和非线性回归任务,但在实际应用中,如何设计网络结构、选择合适的激活函数和训练算法以达到所需的逼近精度仍然是重要的研究和工程问题。此外,定理并没有涉及网络训练的收敛速度或是所需的训练数据量,因此它也有着它的局限性。

a811518202e4041dcdf17a0876b0cfc2.png

上面这张图就是论文中对于 MLPs(Multi-Layer Perceptrons) 和 KANs(Kolmogorov-Arnold Networks) 的对比。与 MLPs 类似,KANs 实际上也具有全连接结构,区别在于,MLPs 在节点(神经元)上放置固定的激活函数,而 KANs 在边缘(权重)上放置的是可学习的激活函数。因此,Kolmogorov-Arnold 网络完全没有线性权重矩阵:每个权重参数都由一种可学习的一维样条函数替代。Kolmogorov-Arnold 网络的节点仅对输入信号进行求和,不进行任何非线性处理。而且 KANs 通常允许比 MLPs 更小的计算图,文中也用 PDE 求解作为示例进行了说明:1个2层宽度为10的 KAN 比 一个4层宽度为100的 MLP 精度高100倍且参数效率高100倍。

这篇论文的贡献不只是使用 Kolmogorov-Arnold 表示定理来构建神经网络,而是将原始的 Kolmogorov-Arnold 推广到任意宽度和深度。KANs 的实质可以理解成样条和 MLPs 的组合,那么结合后可以得到他们各自的优势。

首先来看看样条函数(Spline function),它是一种特别的数学函数,用于在数值分析、插值、和曲线拟合中实现平滑曲线的生成。没学过数分的可能都不太了解,我们也简单介绍下。

样条函数通常由一系列低阶多项式分段定义,这些多项式在分段的接合点(称为节点或结点)上连续并具有连续的导数。这些多项式的阶数(degree)决定了样条的光滑程度,常见的如线性样条(一阶)、二次样条(二阶)、和三次样条(三阶)。其中,三次样条是最常用的类型,因为它在提供足够平滑的曲线的同时,计算复杂度和拟合效果之间达到了良好的平衡。

样条函数因其数学性质和灵活性,在低维空间中的数据插值和函数逼近中表现出色。然而,当应用到高维空间时,样条函数面临一系列挑战,主要是由于“维数灾难”(curse of dimensionality, COD)引起的,简单地说,就是随着数据的维度增加,为了维持样条插值的准确性和平滑性,所需的数据量和计算复杂度会呈指数级增长。这是因为每增加一个维度,样条函数所需覆盖的数据空间和可能的交互作用也急剧增加。

那么对于 MLP,它能够通过特征学习来挖掘数据的复合结构,每一层的神经元可以从前一层学到的特征中进一步抽取信息,这种分层学习的方式使得MLP在高维数据中能够捕捉更深层次的、非线性的数据结构和关联,从而缓解维数增加带来的影响,从而使其在维数灾难中表现得更为鲁棒。

但MLP在低维数据上的表现不如样条函数精确,且在模拟某些特定函数(如指数和正弦函数)时可能效率低下,这主要有这么几个原因:

1. 非线性激活函数的限制
MLP通常使用非线性激活函数(如Sigmoid、Tanh或ReLU)来使网络具备学习复杂非线性关系的能力。然而,这些标准的非线性激活函数可能并不直接适合精确模拟一些特定的数学函数,如指数函数或三角函数。要通过这些基本的非线性函数来精确拟合指数或正弦曲线,可能需要大量的神经元和复杂的网络结构,这会导致学习过程中的效率问题。

2. 优化和收敛问题
MLP的训练涉及到复杂的权重调整和误差最小化过程,这通常通过反向传播和梯度下降方法实现。在低维空间和简单函数拟合的情况下,网络的训练可能不够稳定或收敛速度慢,特别是当目标函数具有周期性、快速变化或者极端值时。此外,过拟合在低维数据上也更容易发生,尤其是在网络结构过于复杂时。

3. 维数灾难的反面影响
虽然MLP设计初衷是为了解决高维数据问题,但这种设计在低维数据上可能造成资源浪费和效率低下。例如,一个为处理成百上千维度数据而设计的复杂MLP在仅有一两个输入特征的任务上可能表现过剩且运算效率不高

那么结合样条函数和 MLP 的优势而得到的KANs,它能够学习数据的复合结构(外部自由度)和优化一元函数(内部自由度),这使它们能够精确地学习和优化特征,从而在复杂性能和精确度上超越单纯的MLP或样条函数。

KANs内部使用样条函数来建模数据,外部则利用类似MLP的结构来优化和调整这些样条函数学习到的特征,因此在性能上优于 MLPs。

52dc0923975c3b49540ee5d0844754a8.png

KAN 架构

在 KAN 中,每个连接不再是简单的权重,而是一个可学习的一维函数。这些函数通常通过样条或其他平滑函数进行参数化,使得网络可以学习在每个维度上最适合数据的非线性变换。每个输入变量 通过一组独立的一维函数 876f797db0847e2c5ab10539915d60ac.png 处理,其中 p 表示输入变量的索引,q 表示输出维度的索引。

组合函数 在网络高层使用,它们将一维函数的输出进行组合和加工。这些函数也可以通过一维样条或其他形式进行参数化,使得输出不仅仅是简单的线性组合,而是能够捕捉输入间复杂的交互效应。

架构描述

为了更清晰的理解 KANs, 我们可以看下这张图,左边展示了网络的层次结构和数据流动,右边则详细描述了一个关键的组件——B-样条激活函数,并展示了如何通过“网格扩展技术”在粗糙和细致网格之间切换。

ef603723ef13921c62c9998aea2c0667.png

左侧的图显示了 KAN 的分层架构。每层包括一组节点,每个节点都通过一组特定的函数处理输入数据,输出到下一层。每个节点上的小图标表示的是激活函数的形式,这里用B-样条函数作为激活函数。

右侧的图展示了一个激活函数 ϕ(x),它被参数化为一个B-样条函数。图中还展示了如何通过改变B-样条的节点(也称为控制点)数量来调整函数的粒度。

这张图的核心在于展示KAN如何通过使用B-样条作为激活函数,结合网络的多层结构和激活函数的动态调整(网格扩展技术),来处理复杂的高维数据。这种设计使得网络不仅能适应不同的数据分辨率,还能通过调整激活函数的精度来优化性能。

B-样条是样条曲线一种特殊的表示形式。它是B-样条基曲线的线性组合。B-样条是贝兹曲线的一种一般化,可以进一步推广为非均匀有理B样条(NURBS),使得我们能给更多一般的几何体建造精确的模型。

在 MLPs 中,一旦我们定义了一个层(由线性和非线性组成),就可以堆叠更多的层使得网络更深。同样我们可以也这样来堆叠深度 KAN 网络,但在此之前,先要解答一个问题:什么是 KAN 层?

按照文中解释,KAN 层被定义为包含多个一维函数的矩阵,这些函数之间可以训练和调整。每个函数不仅处理单一的输入输出关系,而是可以处理多个输入到多个输出的映射。这与 MLP 中每层处理多个输入和输出的方式相似,但 KAN 中使用的是一维函数的矩阵:

67d88d86101abbe060603b7cc0139d3a.png
其中 p 是输入维度的索引,q 是输出维度的索引。这种矩阵形式允许KAN网络在每个层上实现复杂的多维输入到多维输出的映射。

对于 KAN 的参数和层结构,每个 函数都有可训练的参数,使得 KAN 可以通过学习优化这些函数以适应具体的数据模式。根据 Kolmogorov-Arnold 定理,内部函数形成一个 KAN 层处理输入,外部函数形成另一个 KAN 层处理输出。对于有 n 维输入的情况,内部函数层的输入维度 ,输出维度 6d6a5816b152f748921ba737a1d6b6e0.png,满足Kolmogorov-Arnold定理中对输出数量的要求。

那么通过上述的层定义,可以看到,构建更深层的 KAN 就像在 MLP 中添加更多层一样简单。每一层的输出可以作为下一层的输入,通过这种方式,KAN能够实现更复杂的数据表示和处理。文中的描述指出,通过叠加更多的KAN层,可以实现对更复杂函数的高精度逼近。

文中关于 KAN 层的公式表达在公式2.5:

dd545977a2b45c1b940c61786c8692c3.png
描述了如何在第 l 层和第 l+1 层之间进行计算,即下一层的每个节点的激活值是当前层所有节点输出通过相应的一维函数处理后的总和。

这个公式看起来还是比较简单的,但文中还提到了如何进行优化才能达到更好的性能,主要包含了3个技巧:

  1. 残差激活函数:在文中公式(2.10)中,每个激活函数 ϕ(x) 被设计为残差形式,即包括一个基函数

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/577689
推荐阅读
相关标签