KAN: Kolmogorov–Arnold Networks
论文链接:https://arxiv.org/abs/2404.19756
代码链接:https://github.com/KindXiaoming/pykan
项目链接:https://kindxiaoming.github.io/pykan/intro.html
Abstract
受Kolmogorov-Arnold表示定理的启发,我们提出Kolmogorov-Arnold网络(KAN)作为多层感知器(MLP)的有前途的替代品。MLP在节点(“神经元”)上有固定的激活函数,而KAN在边缘(“权重”)上有可学习的激活函数。kan根本没有线性权重——每个权重参数都被参数化为样条的单变量函数所取代。我们表明,这个看似简单的改变使得KAN在准确性和可解释性方面优于MLP。就准确性而言,在数据拟合和PDE求解方面,更小的KAN可以达到与更大的MLP相当或更好的准确性。从理论和经验上看,KAN比MLP具有更快的神经尺度规律。对于可解释性,KAN可以直观地可视化,并且可以轻松地与人类用户交互。通过数学和物理的两个例子,KAN被证明是有用的“合作者”,帮助科学家(重新)发现数学和物理定律。总之,KAN是MLP的有希望的替代品,为进一步改进当今严重依赖MLP的深度学习模型提供了机会。
1 Introduction
多层感知器(MLP)[1,2,3],也被称为全连接前馈神经网络,是当今深度学习模型的基础组成部分。MLP的重要性永远不会被夸大,因为它们是机器学习中近似非线性函数的默认模型,因为它们的表达能力得到了通用近似定理的保证[3]。然而,MLP是我们能建立的最好的非线性回归量吗?尽管普遍使用MLP,但它们有明显的缺点。例如,在Transformer[4]中,MLP消耗了几乎所有的非嵌入参数,并且在没有后期分析工具的情况下通常难以解释(相对于注意力层)[5]。
我们提出了一种有希望的MLP替代方案,称为Kolmogorov-Arnold网络(KANs)。MLP受到普遍近似定理的启发,而KAN则受到Kolmogorov-Arnold表示定理的启发[6,7]。与MLP一样,KAN具有全连接的结构。然而,MLP将固定的激活函数放在节点(“神经元”)上,而KAN将可学习的激活函数放在边缘(“权重”)上,如图0.1所示。因此,KAN根本没有线性权矩阵:取而代之的是,每个权参数都被一个可学习的一维函数参数化为样条所取代。KAN节点只是简单地对输入信号求和,而不应用任何非线性。有人可能会担心,由于每个MLP的权重参数都变成了KAN的样条函数,因此KAN的成本非常昂贵。幸运的是,KAN通常允许比MLP更小的计算图。例如,我们表明,对于PDE求解,2层宽度为10的KAN比4层宽度为100的MLP(10−7 vs 10−5 MSE)精确100倍,参数效率高100倍(102 vs 104参数)。
注:样条函数(spline function)—— 分段多项式函数(piecewise polynomial function),最简单的样条函数是一种分段多项式函数。https://blog.csdn.net/lanchunhui/article/details/75670382
不出所料,已经研究了使用Kolmogorov-Arnold表示定理构建神经网络的可能性[8,9,10,11,12,13]。然而,大多数工作都坚持使用原始的深度为2,宽度为(2n + 1)表示,并且没有机会利用更现代的技术(例如,反向传播)来训练网络。我们的贡献在于将原始的Kolmogorov-Arnold表示推广到任意宽度和深度,在今天的深度学习世界中重新激活和背景化它,以及使用广泛的经验实验来突出其作为AI + Science基础模型的潜在作用,因为它的准确性和可解释性。
尽管它们有优雅的数学解释,但KAN只不过是样条和MLP的组合,利用各自的优势并避免各自的弱点。样条对于低维函数是精确的,易于局部调整,并且能够在不同的分辨率之间切换。然而,样条曲线由于无法利用组合结构而存在严重的维数缺陷(COD)。另一方面,MLP由于其特征学习而较少受到COD的影响,但由于其无法优化单变量函数,因此在低维情况下不如样条曲线准确。为了准确地学习一个函数,一个模型不仅要学习组成结构(外部自由度),而且要很好地近似单变量函数(内部自由度)。KAN是这样的模型,因为它们在外面有MLP,在里面有样条。因此,KAN不仅可以学习特征(由于它们与MLP的外部相似性),而且还可以以很高的精度优化这些学习到的特征(由于它们与样条的内部相似性)。例如,给定一个高维函数:
f ( x 1 , ⋯ , x N ) = exp ( 1 N ∑ i = 1 N sin 2 ( x i ) ) , (1.1) f(x_1,\cdots,x_N)=\exp\left(\frac{1}{N}\sum_{i=1}^N\sin^2(x_i)\right), \tag{1.1} f(x1,⋯,xN)=exp(N1i=1∑Nsin2(xi)),(1.1)
当N较大时,由于COD的影响,样条曲线失效;MLP可以潜在地学习广义加性结构,但它们对于用ReLU激活来近似指数函数和正弦函数是非常低效的。相比之下,KAN可以很好地学习组合结构和单变量函数,因此在很大程度上优于MLP(见图3.1)。
在本文中,我们将使用大量的数值实验来证明,相对于MLP, KANs可以显著提高准确性和可解释性。本文的组织结构如图2.1所示。在第2节中,我们介绍了KAN架构及其数学基础,介绍了网络简化技术以使KAN具有可解释性,并介绍了网格扩展技术以使KAN越来越准确。在第3节中,我们展示了KAN在数据拟合和PDE求解方面比MLP更准确:当数据中存在组合结构时,KAN可以克服维度灾难,实现比MLP更好的缩放律。在第4节中,我们展示了KAN是可解释的,可以用于科学发现。我们用数学(结理论)和物理(安德森局域化)中的两个例子来证明,KANs可以帮助科学家(重新)发现数学和物理定律的“合作者”。第五部分总结了相关工作。在第6节中,我们通过讨论广泛的影响和未来的方向来结束。
注:“安德森局域化”(Anderson Localization):https://www.zhihu.com/question/36101023
2 Kolmogorov–Arnold Networks (KAN)
多层感知器(multilayer Perceptrons, MLP)的灵感来自于普适近似定理。我们转而关注Kolmogorov-Arnold表示定理,该定理可以通过一种称为Kolmogorov-Arnold网络(KAN)的新型神经网络来实现。我们回顾了2.1节中的Kolmogorov-Arnold定理,以启发2.2节中Kolmogorov-Arnold网络的设计。在第2.3节中,我们为KAN的表达能力及其神经标度定律提供了理论保证。在第2.4节中,我们提出了一种网格扩展技术,使KAN越来越准确。在第2.5节中,我们提出简化技术以使KAN可解释。
2.1 Kolmogorov-Arnold表示定理
注: 希尔伯特第 13 问题,Kolmogorov–Arnold representation theorem 和通用近似定理(Universal approximation theorem) https://blog.csdn.net/qq_32515081/article/details/129569496
Vladimir Arnold和Andrey Kolmogorov证明了如果f是一个有界域上的多元连续函数,则f可以写成单个变量的连续函数和二进制加法运算的有限合成。更具体地说,对于光滑的 f : [ 0 , 1 ] n → R f: {[0,1]}^n→\mathbb{R} f:[0,1]n→R,
f ( x ) = f ( x 1 , ⋯ , x n ) = ∑ q = 1 2 n + 1 Φ q ( ∑ p = 1 n ϕ q , p ( x p ) ) , (2.1) f(\mathbf{x})=f(x_1,\cdots,x_n)=\sum_{q=1}^{2n+1}\Phi_q\left(\sum_{p=1}^n\phi_{q,p}(x_p)\right), \tag{2.1} f(x)=f(x1,⋯,xn)=q=1∑2n+1Φq(p=1∑nϕq,p(xp)),(2.1)
其中, ϕ q , p : [ 0 , 1 ] → R \phi_{q,p}:[0,1]\to\mathbb{R} ϕq,p:[0,1]→R和 Φ q : R → R \Phi_q:\mathbb{R}\to\mathbb{R} Φq:R→R。从某种意义上说,它们表明了唯一真正的多元函数是加法,因为所有其他函数都可以用单变量函数和和来表示。有人可能会天真地认为这对机器学习来说是个好消息:学习一个高维函数可以归结为学习一个多项式数量的一维函数。然而,这些一维函数可能是非光滑的,甚至是分形的,因此在实践中可能无法学习[14]。由于这种病态的行为,Kolmogorov-Arnold表示定理在机器学习中基本上被判了死刑,被认为理论上是正确的,但实际上毫无用处[14]。
然而,我们对Kolmogorov-Arnold定理在机器学习中的有用性更为乐观。首先,我们不需要拘谨于原始的公式(2.1),它只有两层非线性和隐藏层中少量的(2n + 1)项:我们将网络推广到任意的宽度和深度。其次,科学和日常生活中的大多数函数通常是光滑的,并且具有稀疏的组成结构,这可能有助于光滑的Kolmogorov-Arnold表示。这里的哲学接近于物理学家的心态,他们通常更关心典型的情况,而不是最坏的情况。毕竟,我们的物理世界和机器学习任务必须具有使物理和机器学习有用或可推广的结构[15]。
2.2 KAN架构
假设我们有一个由输入输出对 { x i , y i } \{x_i, y_i\} {xi,yi}组成的监督学习任务,我们想要找到所有数据点的 f f f,使得 y i ≈ f ( x i ) y_i≈f(x_i) yi≈f(xi)。公式(2.1)暗示,如果我们能找到合适的单变量函数,我们就完成了。这启发我们设计一个神经网络,显式参数化公式(2.1)。由于所有需要学习的函数都是单变量函数,我们可以将每个一维函数参数化为一条B样条曲线,具有局部B样条基函数的可学习系数(见右图2.2)。现在我们有了一个KAN的原型,其计算图由公式(2.1)精确指定,如图0.1 (b)所示(输入维数n = 2),表现为一个两层神经网络,激活函数放置在边缘而不是节点上(对节点进行简单求和),中间层宽度为2n + 1。
如前所述,这样的网络被认为太简单,无法在实践中任意地用光滑样条近似任何函数!因此,我们将我们的KAN概括为更广泛和更深。目前还不清楚如何使KAN更深,因为Kolmogorov-Arnold表示对应于两层的KAN。据我们所知,目前还没有一个“一般化”版本的定理对应于更深层次的KAN。
当我们注意到MLP和KANs之间的类比时,突破就出现了。在MLP中,一旦我们定义了一个层(它由线性变换和非线性组成),我们就可以堆叠更多的层来使网络更深。要构建深度KAN,我们首先应该回答:“什么是KAN层?“ 结果表明,具有 n i n n_{in} nin维输入和 n o u t n_{out} nout维输出的KAN层可以定义为一维函数的矩阵。
Φ = { ϕ q , p } , p = 1 , 2 , ⋯ , n i n , q = 1 , 2 ⋯ , n o u t , (2.2) \mathbf{\Phi}=\{\phi_{q,p}\},\quad p=1,2,\cdots,n_{\mathrm{in}},\quad q=1,2\cdots,n_{\mathrm{out}}, \tag{2.2} Φ={ϕq,p},p=1,2,⋯,nin,q=1,2⋯,nout,(2.2)
其中函数 ϕ q , p ϕ_{q,p} ϕq,p具有可训练的参数,如下所示。在Kolmogov-Arnold定理中,内部函数形成一个 n i n = n n_{in} = n nin=n, n o u t = 2 n + 1 n_{out} = 2n+ 1 nout=2n+1的KAN层,外部函数形成一个 n i n = 2 n + 1 , n o u t = 1 的 n_{in} = 2n+ 1, n_{out} = 1的 nin=2n+1,nout=1的KAN层。因此,公式(2.1)中的Kolmogorov-Arnold表示只是两个KAN层的简单组合。现在很清楚拥有更深的Kolmogorov-Arnold表示意味着什么:简单地堆叠更多的KAN层!
让我们引入一些符号。这段话有点技术性,但读者可以参考图2.2(左)来获得具体的例子和直观的理解。KAN的形状由整数数组表示:
[ n 0 , n 1 , ⋯ , n L ] , (2.3) [n_0,n_1,\cdots,n_L], \tag{2.3} [n0,n1,⋯,nL],(2.3)
其中 n i n_i ni为计算图第I层的节点数。我们用 ( l , i ) (l, i) (l,i)表示第 l l l层中的第 i i i个神经元,用 x l , i x_{l,i} xl,i表示 ( l , i ) (l, i) (l,i)-神经元的激活值。在第 l l l层和第 l + 1 l+1 l+1层之间,有 n l n l + 1 n_ln_{l+1} nlnl+1个激活函数:连接 ( l , i ) (l, i) (l,i)和 ( l + 1 , j ) (l +1, j) (l+1,j)的激活函数表示为:
ϕ l , j , i , l = 0 , ⋯ , L − 1 , i = 1 , ⋯ , n l , j = 1 , ⋯ , n l + 1 . (2.4) \phi_{l,j,i},\quad l=0,\cdots,L-1,\quad i=1,\cdots,n_{l},\quad j=1,\cdots,n_{l+1}. \tag{2.4} ϕl,j,i,l=0,⋯,L−1,i=1,⋯,nl,j=1,⋯,nl+1.(2.4)
预先激活的 ϕ ( l , j , i ) ϕ (l,j,i) ϕ(l,j,i)就是 x l , i x_{l,i} xl,i;对 ϕ l , j , i ϕ_{l,j,i} ϕl,j,i的后激活表示为 x ~ l , j , i ≡ ϕ l , j , i ( x l , i ) \tilde{x}_{l,j,i}\equiv ϕ_{l,j,i}(x_l,i) x~l,j,i≡ϕl,j,i(xl,i)。 ( l + 1 , j ) (l + 1, j) (l+1,j)神经元的激活值就是所有传入的后激活值之和:
x l + 1 , j = ∑ i = 1 n l x ~ l , j , i = ∑ i = 1 n l ϕ l , j , i ( x l , i ) , j = 1 , ⋯ , n l + 1 . (2.5) x_{l+1,j}=\sum_{i=1}^{n_l}\tilde{x}_{l,j,i}=\sum_{i=1}^{n_l}\phi_{l,j,i}(x_{l,i}),\quad j=1,\cdots,n_{l+1}. \tag{2.5} xl+1,j=i=1∑nlx~l,j,i=i=1∑nlϕl,j,i(xl,i),j=1,⋯,nl+1.(2.5)
在矩阵形式中,它是
x l + 1 = ( ϕ l , 1 , 1 ( ⋅ ) ϕ l , 1 , 2 ( ⋅ ) ⋯ ϕ l , 1 , n l ( ⋅ ) ϕ l , 2 , 1 ( ⋅ ) ϕ l , 2 , 2 ( ⋅ ) ⋯ ϕ l , 2 , n l ( ⋅ ) ⋮ ⋮ ⋮ ϕ l , n l + 1 , 1 ( ⋅ ) ϕ l , n l + 1 , 2 ( ⋅ ) ⋯ ϕ l , n l + 1 , n l ( ⋅ ) ) ⏟ Φ l x l , (2.6) \mathbf{x}_{l+1}=\underbrace{\begin{pmatrix}\phi_{l,1,1}(\cdot)&\phi_{l,1,2}(\cdot)&\cdots&\phi_{l,1,n_l}(\cdot)\\\phi_{l,2,1}(\cdot)&\phi_{l,2,2}(\cdot)&\cdots&\phi_{l,2,n_l}(\cdot)\\\vdots&\vdots&&\vdots\\\phi_{l,n_{l+1},1}(\cdot)&\phi_{l,n_{l+1},2}(\cdot)&\cdots&\phi_{l,n_{l+1},n_l}(\cdot)\end{pmatrix}}_{\Phi_l}\mathbf{x}_l, \tag{2.6} xl+1=Φl ϕl,1,1(⋅)ϕl,2,1(⋅)⋮ϕl,nl+1,1(⋅)ϕl,1,2(⋅)ϕl,2,2(⋅)⋮ϕl,nl+1,2(⋅)⋯⋯⋯ϕl,1,nl(⋅)ϕl,2,nl(⋅)⋮ϕl,nl+1,nl(⋅) xl,(2.6)
其中 Φ l Φ_l Φl为第 l l l层KAN对应的函数矩阵。一般的KAN网络是 L L L层的组合:给定一个输入向量 x 0 ∈ R n 0 x_0∈\mathbb{R}^{n_0} x0∈Rn0, KAN的输出为
K A N ( x ) = ( Φ L − 1 ∘ Φ L − 2 ∘ ⋯ ∘ Φ 1 ∘ Φ 0 ) x . (2.7) \mathrm{KAN}(\mathbf{x})=(\mathbf{\Phi}_{L-1}\circ\mathbf{\Phi}_{L-2}\circ\cdots\circ\mathbf{\Phi}_{1}\circ\mathbf{\Phi}_{0})\mathbf{x}. \tag{2.7} KAN(x)=(ΦL−1∘ΦL−2∘⋯∘Φ1∘Φ0)x.(2.7)
我们也可以重写上述方程,使其更类似于公式(2.1),假设输出维 n L = 1 n_L = 1 nL=1,并定义 f ( x ) ≡ K A N ( x ) f(x)≡KAN(x) f(x)≡KAN(x):
f ( x ) = ∑ i L − 1 = 1 n L − 1 ϕ L − 1 , i L , i L − 1 ( ∑ i L − 2 = 1 n L − 2 ⋯ ( ∑ i 2 = 1 n 2 ϕ 2 , i 3 , i 2 ( ∑ i 1 = 1 n 1 ϕ 1 , i 2 , i 1 ( ∑ i 0 = 1 n 0 ϕ 0 , i 1 , i 0 ( x i 0 ) ) ) ) ⋯ ) , (2.8) f(\mathbf{x})=\sum\limits_{i_{L-1}=1}^{n_{L-1}}\phi_{L-1,i_{L},i_{L-1}}\left(\sum\limits_{i_{L-2}=1}^{n_{L-2}}\cdots\left(\sum\limits_{i_{2}=1}^{n_{2}}\phi_{2,i_{3},i_{2}}\left(\sum\limits_{i_{1}=1}^{n_{1}}\phi_{1,i_{2},i_{1}}\left(\sum\limits_{i_{0}=1}^{n_{0}}\phi_{0,i_{1},i_{0}}(x_{i_{0}})\right)\right)\right)\cdots\right), \tag{2.8} f(x)=iL−1=1∑nL−1ϕL−1,iL,iL−1 iL−2=1∑nL−2⋯(i2=1∑n2ϕ2,i3,i2(i1=1∑n1ϕ1,i2,i1(i0=1∑n0ϕ0,i1,i0(xi0))))⋯ ,(2.8)
这很麻烦。相比之下,我们对KAN层的抽象及其可视化更清晰直观。原始Kolmogorov-Arnold表示公式(2.1)对应于形状为 [ n , 2 n + 1 , 1 ] [n, 2n + 1,1] [n,2n+1,1]的2层KAN。注意所有的运算都是可微的,所以我们可以用反向传播来训练KAN。为了比较,一个MLP可以写成仿射变换 W W W和非线性 σ σ σ的interleaving:
M L P ( x ) = ( W L − 1 ∘ σ ∘ W L − 2 ∘ σ ∘ ⋯ ∘ W 1 ∘ σ ∘ W 0 ) x . (2.9) \mathrm{MLP}(\mathbf{x})=(\mathbf{W}_{L-1}\circ\sigma\circ\mathbf{W}_{L-2}\circ\sigma\circ\cdots\circ\mathbf{W}_{1}\circ\sigma\circ\mathbf{W}_{0})\mathbf{x}. \tag{2.9} MLP(x)=(WL−1∘σ∘WL−2∘σ∘⋯∘W1∘σ∘W0)x.(2.9)
很明显,MLP将线性变换和非线性分别处理为 W W W和 σ σ σ,而KAN在 Φ Φ Φ中将它们一起处理。在图0.1 ©和(d)中,我们可视化了三层MLP和三层KAN,以澄清它们的区别。
实现细节。虽然一个KAN层公式(2.5)看起来非常简单,但要使它很好地优化是很重要的。关键的技巧是:
(1) 残差激活函数。我们包括一个基函数 b ( x ) b(x) b(x)(类似于残差连接),使得激活函数 φ ( x ) φ (x) φ(x)是基函数 b ( x ) b(x) b(x)和样条函数的和:
ϕ ( x ) = w ( b ( x ) + s p l i n e ( x ) ) . (2.10) \phi(x)=w\left(b(x)+\mathrm{spline}(x)\right). \tag{2.10} ϕ(x)=w(b(x)+spline(x)).(2.10)
我们设置
b ( x ) = silu ( x ) = x / ( 1 + e − x ) (2.11) b(x)=\text{silu}(x)=x/(1+e^{-x}) \tag{2.11} b(x)=silu(x)=x/(1+e−x)(2.11)
在大多数情况下。spline(x)被参数化为b样条的线性组合,使得:
s p l i n e ( x ) = ∑ i c i B i ( x ) (2.12) \mathrm{spline}(x)=\sum_ic_iB_i(x) \tag{2.12} spline(x)=i∑ciBi(x)(2.12)
c i s c_is cis是可训练的。原则上 w w w是多余的,因为它可以被吸收到 b ( x ) b(x) b(x)和spline(x)中。然而,我们仍然包括这个 w w w因子,以更好地控制激活函数的总体大小。
(2) 初始化尺度。每个激活函数初始化为spline(x)≈0 2。 w w w根据Xavier初始化进行初始化,Xavier初始化已用于初始化MLP中的线性层。
(3) 样条网格的更新。我们根据输入激活动态更新每个网格,以解决样条在有界区域上定义,但在训练期间激活值可以从固定区域进化的问题。
参数计算。为简单起见,让我们假设一个网络
(1) 深度为L,
(2) 层的宽度为 n 0 = n 1 = ⋅ ⋅ ⋅ = n L = N n_0 = n_1 =···= n_L = N n0=n1=⋅⋅⋅=nL=N;
(3) 每条样条的阶数为k(通常为k = 3),在G个间隔上(对于G + 1个网格点)。
总共有 O ( N 2 L ( G + k ) ) ∼ O ( N 2 L G ) O(N^{2}L(G+k))\sim O(N^{2}LG) O(N2L(G+k))∼O(N2LG)个参数。相比之下,深度L和宽度N的MLP只需要O(N2L)个参数,这似乎比KAN更有效。幸运的是,KAN通常需要比MLP小得多的N,这不仅节省了参数,而且可以实现更好的泛化(例如,图3.1和3.3),并且有利于可解释性。我们注意到,对于一维问题,我们可以取 N = L = 1 N = L = 1 N=L=1,并且我们实现的KAN网络只是一个样条近似。对于高维,我们用下面的定理来描述KAN的泛化行为。
2.3 KAN的近似能力和标度定律(Approximation Abilities & Scaling Laws)
回想一下,在公式(2.1)中,2层宽度为(2n + 1)表示可能是非光滑的。然而,更深的表示可能带来更平滑的激活。例如,4-变量函数:
f ( x 1 , x 2 , x 3 , x 4 ) = exp ( sin ( x 1 2 + x 2 2 ) + sin ( x 3 2 + x 4 2 ) ) (2.13) f(x_1,x_2,x_3,x_4)=\exp\left(\sin(x_1^2+x_2^2)+\sin(x_3^2+x_4^2)\right) \tag{2.13} f(x1,x2,x3,x4)=exp(sin(x12+x22)+sin(x32+x42))(2.13)
可以平滑地表示为3层的[4,2,1,1]KAN,但可能不允许平滑激活的2层KAN。为了便于近似分析,我们仍然假设激活是平滑的,但允许表示任意宽和深,如公式(2.7)所示。为了强调我们的KAN对有限网格点集的依赖性,我们在下面使用 Φ l G Φ^G_l ΦlG和 Φ l , i , j G Φ^G_{l,i,j} Φl,i,jG来代替公式(2.5)和(2.6)中使用的符号 Φ l Φ_l Φl和 Φ l , i , j Φ_{l,i,j} Φl,i,j。
定理2.1 (近似理论,KAT)。设 x = ( x 1 , x 2 , ⋅ ⋅ ⋅ , x n ) x = (x_1, x_2,···,x_n) x=(x1,x2,⋅⋅⋅,xn)假设函数 f ( x ) f(x) f(x)允许有一种表示
f = ( Φ L − 1 ∘ Φ L − 2 ∘ ⋯ ∘ Φ 1 ∘ Φ 0 ) x , (2.14) f=(\boldsymbol{\Phi}_{L-1}\circ\boldsymbol{\Phi}_{L-2}\circ\cdots\circ\boldsymbol{\Phi}_1\circ\boldsymbol{\Phi}_0)\mathbf{x}, \tag{2.14} f=(ΦL−1∘ΦL−2∘⋯∘Φ1∘Φ0)x,(2.14)
如公式(2.7),其中 Φ l , i , j Φ_{l,i,j} Φl,i,j的每一个都是 ( k + 1 ) (k + 1) (k+1)次连续可微的。然后存在一个常数 C C C依赖于 f f f和它的表示,这样我们就有了下面关于网格大小 G G G的近似界:存在 k k k阶B-样条函数 Φ l , i , j G Φ^G_{l,i,j} Φl,i,jG使得对于任何 0 ≤ m ≤ k 0≤m≤k 0≤m≤k,我们都有这个界
∥ f − ( Φ L − 1 G ∘ Φ L − 2 G ∘ ⋯ ∘ Φ 1 G ∘ Φ 0 G ) x ∥ C m ≤ C G − k − 1 + m . (2.15) \|f-(\Phi_{L-1}^{G}\circ\Phi_{L-2}^{G}\circ\cdots\circ\Phi_{1}^{G}\circ\Phi_{0}^{G})\mathbf{x}\|_{C^{m}}\leq CG^{-k-1+m}. \tag{2.15} ∥f−(ΦL−1G∘ΦL−2G∘⋯∘Φ1G∘Φ0G)x∥Cm≤CG−k−1+m.(2.15)
这里我们采用 C m C^m Cm范数的符号来测量 m m m阶导数的大小:
∥ g ∥ C m = max ∣ β ∣ ≤ m sup x ∈ [ 0 , 1 ] n ∣ D β g ( x ) ∣ . \|g\|_{C^m}=\max_{|\beta|\leq m}\sup_{x\in[0,1]^n}\left|D^\beta g(x)\right|. ∥g∥Cm=∣β∣≤mmaxx∈[0,1]nsup Dβg(x) .
证明。通过经典的一维B-样条理论[19]以及Φl,i,j作为连续函数在有界域上可以一致有界的事实,我们知道存在有限网格B-样条函数 Φ l , i , j G Φ^G_{l,i,j} Φl,i,jG使得对于任意 0 ≤ m ≤ k 0≤m≤k 0≤m≤k,
∥ ( Φ l , i , j ∘ Φ l − 1 ∘ Φ l − 2 ∘ ⋯ ∘ Φ 1 ∘ Φ 0 ) x − ( Φ l , i , j G ∘ Φ l − 1 ∘ Φ l − 2 ∘ ⋯ ∘ Φ 1 ∘ Φ 0 ) x ∥ C m ≤ C G − k − 1 + m , \|(\Phi_{l,i,j}\circ\Phi_{l-1}\circ\Phi_{l-2}\circ\cdots\circ\Phi_{1}\circ\Phi_{0})\mathbf{x}-(\Phi_{l,i,j}^{G}\circ\Phi_{l-1}\circ\Phi_{l-2}\circ\cdots\circ\Phi_{1}\circ\Phi_{0})\mathbf{x}\|_{C^{m}}\leq CG^{-k-1+m}, ∥(Φl,i,j∘Φl−1∘Φl−2∘⋯∘Φ1∘Φ0)x−(Φl,i,jG∘Φl−1∘Φl−2∘⋯∘Φ1∘Φ0)x∥Cm≤CG−k−1+m,
常数C与G无关,我们固定那些B-样条近似。因此余量 R l R_l Rl定义为
R l : = ( Φ L − 1 G ∘ ⋯ ∘ Φ l + 1 G ∘ Φ l ∘ Φ l − 1 ∘ ⋯ ∘ Φ 0 ) x − ( Φ L − 1 G ∘ ⋯ ∘ Φ l + 1 G ∘ Φ l G ∘ Φ l − 1 ∘ ⋯ ∘ Φ 0 ) x R_{l}:=(\Phi_{L-1}^{G}\circ\cdots\circ\Phi_{l+1}^{G}\circ\Phi_{l}\circ\Phi_{l-1}\circ\cdots\circ\Phi_{0})\mathbf{x}-(\Phi_{L-1}^{G}\circ\cdots\circ\Phi_{l+1}^{G}\circ\Phi_{l}^{G}\circ\Phi_{l-1}\circ\cdots\circ\Phi_{0})\mathbf{x} Rl:=(ΦL−1G∘⋯∘Φl+1G∘Φl∘Φl−1∘⋯∘Φ0)x−(ΦL−1G∘⋯∘Φl+1G∘ΦlG∘Φl−1∘⋯∘Φ0)x
满足
∥ R l ∥ C m ≤ C G − k − 1 + m , \|R_l\|_{C^m}\leq CG^{-k-1+m}, ∥Rl∥Cm≤CG−k−1+m,
与G无关的常数,最后注意
f − ( Φ L − 1 G ∘ Φ L − 2 G ∘ ⋯ ∘ Φ 1 G ∘ Φ 0 G ) x = R L − 1 + R L − 2 + ⋯ + R 1 + R 0 , f-(\Phi_{L-1}^G\circ\Phi_{L-2}^G\circ\cdots\circ\Phi_1^G\circ\Phi_0^G)\mathbf{x}=R_{L-1}+R_{L-2}+\cdots+R_1+R_0, f−(ΦL−1G∘ΦL−2G∘⋯∘Φ1G∘Φ0G)x=RL−1+RL−2+⋯+R1+R0,
我们知道公式(2.15)成立。
我们知道,在定理2.1的假设成立的情况下,有限网格大小的KAN可以很好地逼近函数,其残差率与维数无关,从而战胜了维数的诅咒!这很自然,因为我们只使用样条来近似一维函数。特别地,当m = 0时,我们在 L ∞ L^∞ L∞范数中恢复了精度,这反过来又提供了有限域上RMSE的界,它给出了缩放指数 k + 1 k + 1 k+1。当然,常数C依赖于表示;因此,它将取决于尺寸。我们将把常数对量纲的依赖性的讨论留到以后的工作中讨论。
我们注意到,虽然Kolmogorov-Arnold定理公式(2.1)对应于形状为 [ d , 2 d + 1 , 1 ] [d, 2d+ 1,1] [d,2d+1,1]的KAN表示,但其函数不一定是光滑的。另一方面,如果我们能够确定一个平滑的表示(可能以额外的层或使KAN比理论规定的更宽为代价),那么定理2.1表明我们可以击败维度灾难(COD)。这并不奇怪,因为我们可以固有地学习函数的结构,并使我们的有限样本KAN近似可解释。
Neural scaling laws: 与其他理论的比较。Neural scaling laws是测试损失随着模型参数的增加而减小的现象,即, ℓ ∝ N − α \ell\propto N^{-\alpha} ℓ∝N−α,其中, ℓ \ell ℓ为测试RMSE, N为参数个数,α为标度指数。更大的 α α α意味着通过简单地按比例放大模型可以得到更多的改进。人们提出了不同的理论来预测 α α α。Sharma和Kaplan[17]认为,α来自于内在维数为d的输入流形上的数据拟合。如果模型函数类是k阶的分段多项式(对于ReLU, k = 1),则标准逼近理论意味着α = (k + 1)/d。这个界限受到维度的诅咒,所以人们通过利用组合结构来寻找与d无关的其他界限。特别是,Michaud等人[18]考虑了只涉及一元(例如,平方,正弦,exp)和二元(+和x)运算的计算图,发现α = (k + 1)/d∗= (k + 1)/2,其中 d ∗ = 2 d^∗= 2 d∗=2是最大度。Poggio等人[14]利用组合稀疏性的思想,证明了给定函数类Wm(其导数连续到m阶的函数),需要N = O(λ−2m)个参数来实现误差λ,这相当于α = m2。我们的方法假设存在光滑的Kolmogorov-Arnold表示,将高维函数分解为几个1D函数,给出α = k+1(其中k是样条的分段多项式阶)。我们选择k = 3个三次样条,因此α = 4,这是与其他作品相比最大和最好的缩放指数。我们将在3.1节中展示,这个边界α = 4实际上可以用KAN经验地实现,而前面工作[18]报道,MLP甚至存在饱和较慢边界(例如,α = 1)和快速平台化的问题。当然,我们可以增加k来匹配函数的平滑性,但是太高的k可能太振荡,导致优化问题。
KAT与UAT的比较。全连接神经网络的强大是由通用近似定理(UAT)证明的,该定理指出,给定一个函数和误差容限λ > 0,一个具有k > N(λ)神经元的双层网络可以在误差λ内近似该函数。然而,UAT不能保证N(御柱)如何随御柱变化。确实,它受到COD的影响,在某些情况下,N已被证明随d呈指数增长[15]。KAT和UAT之间的区别在于,KAN利用了函数固有的低维表示,而MLP则没有。实际上,我们将展示KAN与符号函数很好地对齐,而MLP则不是。
2.4 精度:网格扩展
原则上,样条对于目标函数可以任意精确,因为网格可以任意细粒度。KANs继承了这个好功能。相比之下,mlp没有“细粒度”的概念。诚然,增加MLP的宽度和深度可以提高性能(“Neural scaling laws”)。然而,这些Neural scaling laws是缓慢的(在最后一节讨论)。因为不同大小的模型都是独立训练的,所以获取这些模型的成本也很高。相比之下,对于KAN,可以先用更少的参数训练一个KAN,然后通过简单地使其样条网格更精细,将其扩展到具有更多参数的KAN,而不需要从头开始重新训练更大的模型。
接下来,我们将描述如何执行网格扩展(如图2.2所示),它基本上是将新的细粒度样条拟合到旧的粗粒度样条上。假设我们想用k阶的B-样条在有界区域[a, b]中近似一个1D函数 f f f,具有 G 1 G_1 G1区间的粗粒度网格,其网格点为 { t 0 = a , t 1 , t 2 , ⋅ ⋅ ⋅ , t G 1 = b } \{t_0 = a, t_1, t_2,···,t_{G_1} = b\} {t0=a,t1,t2,⋅⋅⋅,tG1=b},其增广为 { t − k , ⋯ , t − 1 , t 0 , ⋯ , t G 1 , t G 1 + 1 , ⋯ , t G 1 + k } \{t_{-k},\cdots,t_{-1},t_{0},\cdots,t_{G_{1}},t_{G_{1}+1},\cdots,t_{G_{1}+k}\} {t−k,⋯,t−1,t0,⋯,tG1,tG1+1,⋯,tG1+k}。有 G 1 + k G_1+k G1+k个B-样条基函数,其中第 i i i个B-样条 B i ( x ) B_i(x) Bi(x)仅在 [ t − k + i , t i + 1 ] ( i = 0 , ⋅ ⋅ ⋅ , G 1 + k − 1 ) [t_{−k+i}, t_{i+1}] (i =0,···,G_1+k−1) [t−k+i,ti+1](i=0,⋅⋅⋅,G1+k−1)上不为零,则粗网格上的f表示为这些b样条基函数的线性组合 f c o a r s e ( x ) = ∑ i = 0 G 1 + k − 1 c i B i ( x ) . f_{\mathrm{coarse}}(x)={\sum}_{i=0}^{G_{1}+k-1}c_{i}B_{i}(x). fcoarse(x)=∑i=0G1+k−1ciBi(x).。给定一个间隔为 G 2 G_2 G2的更细网格,该网格上的 f f f相应为 f f i n e ( x ) = ∑ i = 0 G 2 + k − 1 c i ′ B i ′ ( x ) f_{\mathrm{fine}}(x)=\sum_{i=0}^{G_{2}+k-1}c_{i}^{\prime}B_{i}^{\prime}(x) ffine(x)=∑i=0G2+k−1ci′Bi′(x))。参数 c j ′ s c^{'}_j s cj′s可以通过最小化 f f i n e ( x ) f_{fine}(x) ffine(x)到 f c o a r s e ( x ) f_{coarse}(x) fcoarse(x)之间的距离(在 x x x的某个分布上)从参数 c i c_i ci初始化:
{ c j ′ } = argmin { c j ′ } E x ∼ p ( x ) ( ∑ j = 0 G 2 + k − 1 c j ′ B j ′ ( x ) − ∑ i = 0 G 1 + k − 1 c i B i ( x ) ) 2 , (2.16) \{c_{j}^{\prime}\}=\operatorname{argmin}_{\{c_{j}^{\prime}\}}\mathbb{E}_{x\sim p(x)}\left(\sum_{j=0}^{G_{2}+k-1}c_{j}^{\prime}B_{j}^{\prime}(x)-\sum_{i=0}^{G_{1}+k-1}c_{i}B_{i}(x)\right)^{2}, \tag{2.16} {cj′}=argmin{cj′}Ex∼p(x)(j=0∑G2+k−1cj′Bj′(x)−i=0∑G1+k−1ciBi(x))2,(2.16)
这可以用最小二乘算法来实现。我们独立地对一个KAN中的所有样条进行网格扩展。
简单的例子:类似staricase的损失曲线。我们用一个简单的例子 f ( x , y ) = e x p ( s i n ( π x ) + y 2 ) f(x, y) = exp(sin(πx) + y^2) f(x,y)=exp(sin(πx)+y2)来演示网格扩展的效果。在图2.3(左上)中,我们显示了[2,5,1]KAN的训练和测试RMSE。网格点的数量从3开始,每200个LBFGS步骤增加到一个更高的值,最终有1000个网格点。很明显,每次细粒度化发生时,训练损失都会比以前下降得更快(除了具有1000个点的最细网格,由于糟糕的损失情况,优化可能会停止工作)。然而,由于偏差-方差权衡(欠拟合vs过拟合),测试损失先下降后上升,呈现u形。我们推测,当参数个数与数据点个数相匹配时,在插值阈值处达到最佳测试损失。由于我们的训练样本为1000,并且a [2,5,1] KAN的总参数为15G (G为网格间隔数),因此我们期望插值阈值为G = 1000/15≈67,这与我们的实验观察值G~50大致一致。
小的kan概括起来更好。这是我们能达到的最佳测试性能吗?注意,合成任务可以精确地用[2,1,1]KAN表示,因此我们训练一个[2,1,1]KAN,并在右上方的图2.3中给出训练动态。有趣的是,它可以实现比[2,5,1]KAN更低的测试损失,具有更清晰的阶梯结构,并且由于参数更少,插值阈值延迟到更大的网格尺寸。这突出了选择KAN架构的微妙之处。如果我们不知道问题的结构,我们如何确定最小KAN形状?在第2.5节中,我们将提出一种通过正则化和修剪来自动发现这种最小KAN架构的方法。
比例定律: 与理论的比较。我们还对测试损失如何随着网格参数数量的增加而减少感兴趣。在图2.3(左下)中,a [2,1,1] KAN的尺度大致为 t e s t R M S E ∝ G − 3 test RMSE∝G^{-3} testRMSE∝G−3。然而,根据定理2.1,我们期望检验 R M S E ∝ G − 4 RMSE∝G^{-4} RMSE∝G−4。我们发现样本间的误差不是均匀的。这可能归因于边界效应[18]。事实上,有一些样本的误差比其他样本大得多,这使得整体扩展速度变慢。如果我们绘制平方损失的中位数(而不是平均值)的平方根,我们得到更接近G -4的缩放。尽管存在这种次优性(可能是由于优化),在数据拟合(图3.1)和PDE求解(图3.3)方面,KAN仍然比MLP具有更好的缩放规律。此外,训练时间随网格点G的数量呈有利尺度变化,如图2.3右下4所示。
外部自由度和内部自由度。KAN强调的一个新概念是外部自由度与内部自由度(参数)之间的区别。节点连接方式的计算图表示外部自由度(“dofs”),而激活函数内的网格点表示内部自由度。KAN受益于它们同时具有外部dofs和内部dofs的事实。外部dofs (MLP也有,但样条没有)负责学习多变量的组合结构。内部dofs(样条也有,但MLP没有)负责学习单变量函数。
2.5 可解释性:简化KAN并使其具有互动性
最后一小节的一个问题是,我们不知道如何选择最适合数据集结构的KAN形状。例如,如果我们知道数据集是通过符号公式 f ( x , y ) = e x p ( s i n ( π x ) + y 2 ) f(x, y) = exp(sin(πx)+y^2) f(x,y)=exp(sin(πx)+y2)生成的,那么我们就知道a [2,1,1] KAN能够表达这个函数。然而,在实践中,我们不知道先验的信息,所以有方法来自动确定这种形状是很好的。这个想法是从一个足够大的KAN开始,用稀疏性正则化训练它,然后进行修剪。我们将证明这些经过修剪的KAN比未经过修剪的KAN更易于解释。为了使KAN最大限度地可解释,我们在2.5.1节中提出了一些简化技术,并在2.5.2节中提供了一个用户如何与KAN交互以使其更具可解释性的示例。