栏目分类
发布日期:2024-07-08 08:24 点击次数:87
图片产品建模
第一届“欧洲基础物理人工智能会议”(EuCAIFCon)于2024年4月30日至5月3日在阿姆斯特丹举行。会议上许多讨论都集中在基础模型上,探讨是否可以利用人工智能发现潜在的新物理定律。令人惊讶的是,最近一篇名为KAN的论文在arXiv上发布,探讨了利用神经网络发现或重新发现物理和数学模型的可能性。
图片
接下来我们将深入探讨构建KANs的数学公式和概念。以了解为什么这个网络会引起如此大的轰动!
KA表示定理
KAN或Kolmogorov-Arnold网络基于著名数学家Kolmogorov和Arnold的表示定理。首先产品建模,让我们先退几步来理解这个定理。
KA定理是由这些数学家提出的,用于解决希尔伯特的第13个问题:是否所有七次方程的解都可以用两个变量的代数函数来表达?这是什么意思呢?
假设有如下的七次多项式:
图片
方程1
希尔伯特问,其解x,被认为是三个变量a,b,c的函数,是否可以表示为有限数目的二元函数的组合:
图片
KA表示定理指出,对于任何连续函数
图片
存在一元连续函数g_q, ψ_{p,q},使得:
图片
方程2:KA表示定理
这意味着(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)。
图片
图1:思考和构建KAN,摘自论文
在这里,作者们认为,由于我们只需要学习一元函数,我们可以将每个一维函数参数化为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表示以矩阵形式表达:
图片
方程3:以矩阵形式思考方程2
具有n_{in}维输入和n_{out}维输出的KAN层可以定义为一维函数的矩阵:
图片
方程4:设置矩阵的维度
在Kolmogov-Arnold定理(方程2)中,内部函数构成一个n_{in}=n和n_{out}=2n+1的KAN层,外部函数构成一个n_{in}=2n+1和n_{out}=1的KAN层。此时,我们可以将KA表示视为两个KAN层的组合。让我们尝试习惯于堆叠更多KAN层时的符号。
我们可以使用作者提供的示例图来讨论网络维度等内容:
图片
图2:思考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层之间的可学习激活函数:
图片
方程5:KAN边缘的可学习激活函数
我们可以再次检查图2,
图片
通过与图2比较来理解节点数量。
我们将ϕ_{l, j, i}的输入前激活表示为x_{l, i};然后在激活后有:
图片
激活前后的符号
第(l+1, j)神经元的激活值简单地是所有传入激活后的求和。
利用这些,兼职美工我们可以定义激活的可学习变换矩阵:
图片
方程6:KAN不同层的完整可学习激活函数集
利用这个我们也可以编写变换规则:
图片
方程7:完整变换规则:给定激活矩阵的预激活和激活后。
再次检查我们的理解,因此与图2比较:
图片
方程8:鉴于图2,检查我们是否能理解变换矩阵的维度!
确实有5个输出x_{1,1}, x_{1,2}, x_{1,3}, x_{1,4}, x_{1,5}。
一旦我们准备好了变换矩阵,我们可以简单地将它们组合(堆叠层)以便更深入地探讨,如下所示:
图片
方程9:通过堆叠若干KAN层来组成一个KAN
此时我们也可以认识到,所有运算都是可微分的(假设1D函数也是),梯度可以通过网络流动,即我们可以进行反向传播!
我们还可以将KAN与MLP层进行比较,在MLP层中有权重矩阵(线性变换)和激活函数(非线性)分开:
图片
方程10:将KAN与MLP比较;权重(线性)和激活(非线性)。
接单美工权重矩阵中的值会更新,但一旦定义,MLP中的激活函数就是固定的。这是KAN与MLP层之间的关键区别,我们的激活函数是可学习的。
由于对于KAN来说,现在一切都归结为激活函数,作者定义了如何构建这些函数。
可学习的激活函数
为了构建激活函数ϕ(x),作者提议使用基函数(b(⋅))和样条函数,并将它们组合如下:
图片
方程11:将基函数和样条函数作为线性组合的可学习激活函数。
作者选择的基函数为SiLU:
图片
方程12:基函数b(⋅)的选择
对于样条函数,它是B样条的线性叠加:
图片
方程13:样条函数作为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与MLP的参数数量对比
然而,KAN所需的宽度即N比MLP中的小,且KAN是可解释的,我们将看到作者提出的一个例子。作者强调训练KAN比MLP慢的另一个原因是,由于激活函数是可学习的,不可能利用“批处理计算”,即大量数据通过相同的函数。这在MLP中不是问题,因为在训练和测试时间内激活是固定的。
结语
这篇论文中还有很多复杂的细节,但对我个人而言最突出的是KAN的可解释性。作者展示了KAN可以“发现”从简单的除法法则到结理论中的非平凡关系。这可能会进一步推动KAN在AI与科学的基础模型中的应用。
作者建议,KAN可能比符号回归更具“吸引力”;作者给出了一个例子,通过KAN学习非常曲折的20阶贝塞尔函数(J_{20}(x)),这通过符号回归在没有任何关于那个特殊函数(本例中为贝塞尔函数)的先验知识的情况下是不可能的。
通过KAN的“发现”示例
在作者提出的许多示例中,我喜欢一个相对简单但引人入胜的“自动可发现”特性的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上运行它。
我们将开始本地安装并加载必要的库。
!pip install pykanfrom kan import KAN, create_dataset
import torch
我们创建了包含两组速度的数据集,这些速度在训练和测试集中分开,并且有相应的回归值,即标签(f(v_1, v_2))。为了保险起见,我们可以使用matplotlib检查输入速度及其相应加成相对速度的分布。
f = lambda x: (x[:,[0]]+x[:,[1]])/(1+x[:,[0]]*x[:,[1]]) # dataset creation where x[:, [0]] represents v1, x[:, [1]]: v2dataset = create_dataset(f, n_var=2, ranges=[-0.9,0.9])#plot the distribution import matplotlib.pyplot as plt### check train and test input distributionfig = plt.figure(figsize=(10, 5))fig.add_subplot(131)plt.hist(dataset['train_input'][:, 0], bins=20, alpha=0.7, label=r'$v_1$-train', color='orange')plt.hist(dataset['train_input'][:, 1], bins=20, alpha=0.7, label=r'$v_2$-train', histtype='step')plt.legend(fontsize=12)fig.add_subplot(132)plt.hist(dataset['test_input'][:, 0], bins=20, alpha=0.7, label=r'$v_1$-test', color='orange')plt.hist(dataset['test_input'][:, 1], bins=20, alpha=0.7, label=r'$v_2$-test', histtype='step')plt.legend(fontsize=12)fig.add_subplot(133)plt.hist(dataset['train_label'].numpy(), bins=20, alpha=0.7, label=r'$\frac{v_1+v_2}{1+v_1\, v_2}$-train', color='orange')plt.hist(dataset['test_label'].numpy(), bins=20, alpha=0.7, label=r'$\frac{v_1+v_2}{1+v_1\, v_2}$-test', histtype='step')plt.legend(fontsize=12)plt.tight_layout()plt.show()
我们得到了数据和标签的这些直方图。
图片
图3:在[-1, 1]之间随机分布的速度及其相应的(相对论性)加和值。
图片
图4:具有学习到的激活函数的两层KAN
第一层的激活函数已经看起来像arctanh,第二层的激活函数看起来像tanh。这真的很酷!
尝试从模型中获取第一层激活函数的符号函数表示的建议,揭示了我们实际看到的内容:
model.suggest_symbolic(0, 1, 0)>>> function , r2arctanh , 0.9986623525619507tan , 0.9961022138595581arcsin , 0.968244731426239
第二层也一样:
model.suggest_symbolic(1, 0, 0)>>> function , r2tanh , 0.9995558857917786arctan , 0.995667040348053gaussian , 0.9793974757194519
我们确实得到tanh作为符号函数的最佳建议。
我非常兴奋地看到基础AI、物理学和数学的研究者将如何合并KAN和MLP,或者修改KAN使其更快、更好、可能更具解释性(如果这是可能的);此外,发现/重新发现物理定律的可能性产品建模,可能在天体物理学、宇宙学领域,应该是使用KAN需要探索的另一个方面。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。 特别声明:以上内容(如有图片或视频亦包括在内)来源于网络,不代表本网站立场。本网站仅提供信息存储服务。如因作品内容、版权和其他问题需要同我们联系的,请联系我们及时处理。联系方式:451255985@qq.com,进行删除。Powered by 北京抖店详情页设计 @2013-2022 RSS地图 HTML地图
Copyright Powered by365建站 © 2023-2024 鄂ICP备2023020028号-1 武汉承致网络科技有限公司 版权所有