第一届“欧洲基础物理人工智能会议”(EuCAIFCon)于2024年4月30日至5月3日在阿姆斯特丹举行。会议上许多讨论都集中在基础模型上,探讨是否可以利用人工智能发现潜在的新物理定律。令人惊讶的是,最近一篇名为KAN的论文在arXiv上发布,探讨了利用神经网络发现或重新发现物理和数学模型的可能性。 接下来我们将深入探讨构建KANs的数学公式和概念。以了解为什么这个网络会引起如此大的轰动! KA表示定理 KAN或Kolmogorov-Arnold网络基于著名数学家Kolmogorov和Arnold的表示定理。首先,让我们先退几步来理解这个定理。 KA定理是由这些数学家提出的,用于解决希尔伯特的第13个问题:是否所有七次方程的解都可以用两个变量的代数函数来表达?这是什么意思呢? 假设有如下的七次多项式:
希尔伯特问,其解x,被认为是三个变量a,b,c的函数,是否可以表示为有限数目的二元函数的组合: KA表示定理指出,对于任何连续函数 存在一元连续函数g_q, ψ_{p,q},使得:
这意味着(2d+1)(d+1)个一元函数g_q, ψ_{p,q}足以精确表示一个d变量函数。这里的关键点是,唯一的真正多变量函数是加法,因为其他所有函数都可以使用一元函数和求和来表示。 我们需要记住,g_q, ψ_{p,q}都是一元函数。因此,任何多变量的连续函数都可以表示为一元函数的组合。哇!我之前不知道。太酷了! 思考KA定理和多层感知器(MLPs) 论文的作者指出,这些一维函数(之前定义的)可能是不光滑甚至是分形的,因此在实践中可能无法学习。为了构建KANs,作者们超越了KA表示定理的定义,但首先我们来思考MLPs。 多层感知器(MLPs)基于通用逼近定理,该定理指出任何连续函数f:[0, 1]ᵈ → [0, 1]都可以通过至少包含一个隐藏层的神经网络(权重、偏差和非线性激活函数)来任意精确地逼近。在反向传播过程中,网络学习优化权重和偏差以充当函数逼近器,而激活函数保持不变。 现在,我们能否根据上述KA表示定理构建一个基于神经网络的架构? 如果考虑一个监督学习问题,给定{x_i, y_i}对,我们想找到一个函数使得y_i ≈ f(x_i),那么KA表示定理告诉我们,需要找到方程2中的一元函数(g_q, ψ_{p,q)。
在这里,作者们认为,由于我们只需要学习一元函数,我们可以将每个一维函数参数化为B样条曲线(见下文),其局部B样条基函数的系数是可学习的。这导致了KAN的原型,并在图1(b)中进行了说明,输入维度n=2表现为一个两层神经网络,激活函数放置在边上而不是节点上(在节点上进行简单的求和),中间层的宽度为2n+1。网络的构造,即激活数、节点数等,将很快清晰。鉴于方程2中的定义,原始KA表示定理可以被视为深度为2,每层包含(2d+1)项。 B样条:我们可以将B样条函数理解为由多个控制点控制的灵活带组成,用于创建平滑曲线。从数学角度更严格的定义是,p+1阶的B样条是由变量t中p阶的分段多项式函数B_{i, p}组成的集合。分段多项式相接处的t值被称为结点。 再次说明,B样条由分段多项式(基函数)构建,其阶数比其基多项式的度数多一。例如,二次B样条的多项式度数为2,阶数为3。这正是KAN论文中展示和使用的内容。 构建KAN层 已经提到,代表原始KA表示定理的两层网络太简单,无法任意精确地逼近任何函数。我们如何让KAN更宽、更深呢? 这里,作者提出了KAN和MLPs之间的绝佳类比以便更深入探讨。首先,我们需要了解什么是KAN层以及如何将它们堆叠起来构建深度神经网络。 首先,可以将KA表示以矩阵形式表达:
具有n_{in}维输入和n_{out}维输出的KAN层可以定义为一维函数的矩阵:
在Kolmogov-Arnold定理(方程2)中,内部函数构成一个n_{in}=n和n_{out}=2n+1的KAN层,外部函数构成一个n_{in}=2n+1和n_{out}=1的KAN层。此时,我们可以将KA表示视为两个KAN层的组合。让我们尝试习惯于堆叠更多KAN层时的符号。 我们可以使用作者提供的示例图来讨论网络维度等内容:
作者将n_i表示为KAN中第i层的节点数,第l层的第i个神经元由(l, i)表示,其中该神经元的激活由x_{l, i}给出。我们认为激活函数是位于网络图边缘的可学习函数,节点表示求和运算。因此,在第1层(0层)和第2层(1层)之间,我们看到有10个激活函数,分别由ϕ_{0,1,1}, ϕ_{0,1,2}等表示。激活函数的数量由0层和1层的节点数决定。 这里我们可以清楚地看到MLPs与KANs的区别。KANs的激活函数位于边缘,而MLPs的激活函数位于节点上。 在第0层,我们有两个节点x_{0,1}, x_{0,2},在第一层,有5个,所以激活函数的数量将是n_l × n_{l+1}。 n_l和n_{l+1}是根据方程4中定义的内部函数的输入和输出维度确定的。因此我们从两个输入n_{in}=2开始,所以n_{out}必须为2n+1=5。这反过来决定了隐藏层中激活函数的数量。 如果我们继续以节点数n_1=5和n_2=1(n_{out}),在该层有5个激活函数是合理的。这将是外部函数。重申一遍,KA表示由两个KAN层组成。 KAN层的矩阵形式 现在我们可以开始编写激活函数。让我们看看:连接第l层和l+1层两个节点的激活函数由ϕ_{l, j, i}表示,其中{j, i}分别代表那两层中的第j和第i个神经元。 因此,在第l层和l+1层之间的可学习激活函数:
我们可以再次检查图2,
我们将ϕ_{l, j, i}的输入前激活表示为x_{l, i};然后在激活后有:
第(l+1, j)神经元的激活值简单地是所有传入激活后的求和。 利用这些,我们可以定义激活的可学习变换矩阵:
利用这个我们也可以编写变换规则:
再次检查我们的理解,因此与图2比较:
确实有5个输出x_{1,1}, x_{1,2}, x_{1,3}, x_{1,4}, x_{1,5}。 一旦我们准备好了变换矩阵,我们可以简单地将它们组合(堆叠层)以便更深入地探讨,如下所示:
此时我们也可以认识到,所有运算都是可微分的(假设1D函数也是),梯度可以通过网络流动,即我们可以进行反向传播! 我们还可以将KAN与MLP层进行比较,在MLP层中有权重矩阵(线性变换)和激活函数(非线性)分开:
权重矩阵中的值会更新,但一旦定义,MLP中的激活函数就是固定的。这是KAN与MLP层之间的关键区别,我们的激活函数是可学习的。 由于对于KAN来说,现在一切都归结为激活函数,作者定义了如何构建这些函数。 可学习的激活函数 为了构建激活函数ϕ(x),作者提议使用基函数(b(⋅))和样条函数,并将它们组合如下:
作者选择的基函数为SiLU:
对于样条函数,它是B样条的线性叠加:
如果回顾第二张图,我们看到它是k=3的B样条的线性组合,即阶数为3,所以B样条中的多项式的度数为2。像这样定义样条的一个优势是,通过增加曲线的数量可以使其任意平滑。这也在图2中显示,作者增加了我们连接不同多项式的区间数量,从7增加到12。 B样条的权重,即c_i,是可训练的,作者认为方程11中的因子w的唯一用途是更好地控制激活函数的总体大小。 MLP与KAN的参数数量 作者还讨论了通常情况下,KAN比MLP运行较慢。为了理解这一点,我们可以简单地通过假设网络深度为L,每层都有相同数量的节点n_i=N,每个样条的阶数为k(通常为3)在G个区间上,来计算参数数量:
然而,KAN所需的宽度即N比MLP中的小,且KAN是可解释的,我们将看到作者提出的一个例子。作者强调训练KAN比MLP慢的另一个原因是,由于激活函数是可学习的,不可能利用“批处理计算”,即大量数据通过相同的函数。这在MLP中不是问题,因为在训练和测试时间内激活是固定的。 结语 这篇论文中还有很多复杂的细节,但对我个人而言最突出的是KAN的可解释性。作者展示了KAN可以“发现”从简单的除法法则到结理论中的非平凡关系。这可能会进一步推动KAN在AI与科学的基础模型中的应用。 作者建议,KAN可能比符号回归更具“吸引力”;作者给出了一个例子,通过KAN学习非常曲折的20阶贝塞尔函数(J_{20}(x)),这通过符号回归在没有任何关于那个特殊函数(本例中为贝塞尔函数)的先验知识的情况下是不可能的。 通过KAN的“发现”示例 在作者提出的许多示例中,我喜欢一个相对简单但引人入胜的“自动可发现”特性的KAN。我们总是喜欢这类物理示例;比如,我们从相对论速度加法公式开始:
我们可以考虑KAN的深度,将每一层KAN视为发现一个数学运算;因此,看看上面的公式,首先我们考虑乘法;作者显示,学习的激活函数将是线性和二次的,所以:
对(1+v_1 * v_2)的求逆将使用一层,而(v_1 + v_2)与(1/(1+v_1 * v_2))的乘法将需要另外两层;总共5层。 但研究人员发现,“自动发现”的KAN只有2层深,这可以通过速率技巧来解释。 在相对论中,我们可以通过速率技巧简化变换规则;可以定义速率为: 我们可以使用双曲正切加法公式: 使用这个,可以看到: 现在只有两层完全有意义。如果我们不知道速率技巧,试图理解这个2层的自动发现KAN可能会引导我们发现这个技巧。我们可以像这个例子中那样使用KAN来发现/重新发现一些基本的物理定律吗? 加载和运行KAN 让我们仔细看看上面的例子,作者在论文中也提到了这个例子,并且可以在GitHub上找到。我们将在Colab上运行它。 我们将开始本地安装并加载必要的库。
我们创建了包含两组速度的数据集,这些速度在训练和测试集中分开,并且有相应的回归值,即标签(f(v_1, v_2))。为了保险起见,我们可以使用matplotlib检查输入速度及其相应加成相对速度的分布。
我们得到了数据和标签的这些直方图。
第一层的激活函数已经看起来像arctanh,第二层的激活函数看起来像tanh。这真的很酷! 尝试从模型中获取第一层激活函数的符号函数表示的建议,揭示了我们实际看到的内容:
第二层也一样:
我们确实得到tanh作为符号函数的最佳建议。 我非常兴奋地看到基础AI、物理学和数学的研究者将如何合并KAN和MLP,或者修改KAN使其更快、更好、可能更具解释性(如果这是可能的);此外,发现/重新发现物理定律的可能性,可能在天体物理学、宇宙学领域,应该是使用KAN需要探索的另一个方面。 |
|