一、引言
KAN神经网络(Kolmogorov–Arnold Networks)是一种基于Kolmogorov-Arnold表示定理的新型神经网络架构。该定理指出,任何多元连续函数都可以表示为有限个单变量函数的组合。与传统多层感知机(MLP)不同,KAN通过可学习的激活函数和结构化网络设计,在函数逼近效率和可解释性上展现出潜力。
二、技术与原理简介
1.Kolmogorov-Arnold 表示定理
Kolmogorov-Arnold 表示定理指出,如果 是有界域上的多元连续函数,那么它可以写为单个变量的连续函数的有限组合,以及加法的二进制运算。更具体地说,对于 光滑
其中 和 。从某种意义上说,他们表明唯一真正的多元函数是加法,因为所有其他函数都可以使用单变量函数和 sum 来编写。然而,这个 2 层宽度 - Kolmogorov-Arnold 表示可能不是平滑的由于其表达能力有限。我们通过以下方式增强它的表达能力将其推广到任意深度和宽度。,
2.Kolmogorov-Arnold 网络 (KAN)
Kolmogorov-Arnold 表示可以写成矩阵形式
其中
我们注意到 和 都是以下函数矩阵(包含输入和输出)的特例,我们称之为 Kolmogorov-Arnold 层:
其中。
定义层后,我们可以构造一个 Kolmogorov-Arnold 网络只需堆叠层!假设我们有层,层的形状为 。那么整个网络是
相反,多层感知器由线性层和非线错:
KAN 可以很容易地可视化。(1) KAN 只是 KAN 层的堆栈。(2) 每个 KAN 层都可以可视化为一个全连接层,每个边缘上都有一个1D 函数。
三、代码详解
1. 模型构建
from kan import KAN
import torch
model = KAN(width=[2,3,2,1])
x = torch.normal(0,1,size=(100,2))
model(x);
beta = 100
model.plot(beta=beta)
# [2,3,2,1] means 2 input nodes
# 3 neurons in the first hidden layer,
# 2 neurons in the second hidden layer,
# 1 output node
- 从 kan 库中导入 KAN 类,并引入 torch 以支持张量操作。
- 用宽度列表
[2,3,2,1]
初始化 KAN 模型,表示网络结构为: - 使用正态分布生成 100 个样本,每个样本包含 2 个特征。
- 将输入数据传入模型进行前向计算,得到网络输出。
- 设置参数
beta=100
(通常用来控制绘图时的细节或正则化参数),并调用model.plot(beta=beta)
绘制模型内部结构。
2. 边索引(激活函数)
model.fix_symbolic(0,0,0,'sin')
model.plot(beta=beta)
model.unfix_symbolic(0,0,0)
- 固定符号激活函数,将第 1 层、第 1 个输入和第 1 个输出之间的激活函数固定为符号函数 'sin'(正弦函数)。这一步骤会用符号版本的激活函数替换原来的可学习函数。
- 绘制模型图,绘制当前模型的内部结构,参数
beta
控制图中激活函数的透明度或显示细节,使你能够直观地看到固定后的符号激活函数的形态。 - 取消符号固定,将之前固定为 'sin' 的激活函数恢复为原先的状态(即取消符号固定),使该边上的激活函数重新变为可学习状态或默认设置。
model.fix_symbolic(1,0,0,'sin')
model.plot(beta=beta)
model.unfix_symbolic(1,0,0)
- 固定符号激活函数,将第 2 层、第 1 个输入和第 1 个输出之间的激活函数固定为符号函数 'sin'(正弦函数)。这一步骤会用符号版本的激活函数替换原来的可学习函数。
- 绘制模型图,绘制当前模型的内部结构,参数
beta
控制图中激活函数的透明度或显示细节,使你能够直观地看到固定后的符号激活函数的形态。 - 取消符号固定,将之前固定为 'sin' 的激活函数恢复为原先的状态(即取消符号固定),使该边上的激活函数重新变为可学习状态或默认设置。
3. 节点(神经元)的索引
model.remove_node(1,0)
model.plot(beta=beta)
- 从模型中移除第 2 层的第 1 个神经元。删除后,该神经元的所有入边和出边对应的激活函数都会被禁用或设为零,从而在模型中“剪枝”掉这个节点。
- 使用指定的 beta 参数绘制更新后的模型结构,便于观察删除节点后的网络拓扑和激活函数变化。
model.remove_node(2,1)
model.plot(beta=beta)
- 从模型中移除第 3 层的第 2 个神经元。删除后,该神经元的所有入边和出边对应的激活函数都会被禁用或设为零,从而在模型中“剪枝”掉这个节点。
- 使用指定的 beta 参数绘制更新后的模型结构,便于观察删除节点后的网络拓扑和激活函数变化。
4.层索引
# KAN spline layers are refererred to as act_fun
# KAN symbolic layers are referred to as symbolic_fun
model = KAN(width=[2,3,2,1])
i = 0
model.act_fun[i] # => KAN Layer (Spline)
model.symbolic_fun[i] # => KAN Layer (Symbolic)
for i in range(3):
print(model.act_fun[i].in_dim, model.act_fun[i].out_dim)
print(model.symbolic_fun[i].in_dim, model.symbolic_fun[i].out_dim)
- act_fun 列表存储了每一层基于 spline(B‐Spline 激活函数)的激活层
- symbolic_fun 列表存储了对应的符号层,用于符号化处理或解释性计算
- 构造一个 KAN 模型,其网络结构为[2,3,2,1]
- 说明模型中每一层都有两个对应的部分,一个是数值计算用的 spline 层,另一个是符号计算或解释用的符号层。
- 这段代码依次打印前三层中 spline 层和符号层的输入维度(in_dim)和输出维度(out_dim),用于确认各层的结构设置是否正确。
-
model.act_fun[i].grid:
获取第 i 层 spline 层的网格信息,定义了 B-spline 的节点分布,用于决定激活函数的分段结构。 -
model.act_fun[i].coef:
获取第 i 层 spline 层的 B-spline 系数,这些系数决定了激活函数(B-spline 曲线)的具体形状。 -
model.symbolic_fun[i].funs_name:
获取第 i 层符号层中各激活函数的名称(字符串列表),说明当前每个边上使用的符号函数类型,如 'sin'、'x^2' 等。 -
model.symbolic_fun[i].mask:
获取第 i 层符号层中对应连接的掩码,用于调控各个符号激活函数在前向传播中的贡献(例如剪枝或使某些连接失效)。
四、总结与思考
KAN神经网络通过融合数学定理与深度学习,为科学计算和可解释AI提供了新思路。尽管在高维应用中仍需突破,但其在低维复杂函数建模上的潜力值得关注。未来可能通过改进计算效率、扩展理论边界,成为MLP的重要补充。
1. KAN网络架构
-
关键设计:可学习的激活函数:每个网络连接的“权重”被替换为单变量函数(如样条、多项式),而非固定激活函数(如ReLU)。分层结构:输入层和隐藏层之间、隐藏层与输出层之间均通过单变量函数连接,形成多层叠加。参数效率:由于理论保证,KAN可能用更少的参数达到与MLP相当或更好的逼近效果。
-
示例结构:输入层 → 隐藏层:每个输入节点通过单变量函数
连接到隐藏节点。隐藏层 → 输出层:隐藏节点通过另一组单变量函数
组合得到输出。
2. 优势与特点
-
高逼近效率:基于数学定理,理论上能以更少参数逼近复杂函数;在低维科学计算任务(如微分方程求解)中表现优异。
-
可解释性:单变量函数可可视化,便于分析输入变量与输出的关系;网络结构直接对应函数分解过程,逻辑清晰。
-
灵活的函数学习:激活函数可自适应调整(如学习平滑或非平滑函数);支持符号公式提取(例如从数据中恢复物理定律)。
3. 挑战与局限
-
计算复杂度:单变量函数的学习(如样条参数化)可能增加训练时间和内存消耗。需要优化高阶连续函数,对硬件和算法提出更高要求。
-
泛化能力:在高维数据(如图像、文本)中的表现尚未充分验证,可能逊色于传统MLP。
-
训练难度:需设计新的优化策略,避免单变量函数的过拟合或欠拟合。
4. 应用场景
-
科学计算:求解微分方程、物理建模、化学模拟等需要高精度函数逼近的任务。
-
可解释性需求领域:医疗诊断、金融风控等需明确输入输出关系的场景。
-
符号回归:从数据中自动发现数学公式(如物理定律)。
5. 与传统MLP的对比
6. 研究进展
-
近期论文:2024年,MIT等团队提出KAN架构(如论文《KAN: Kolmogorov-Arnold Networks》),在低维任务中验证了其高效性和可解释性。
-
开源实现:已有PyTorch等框架的初步实现。
【作者声明】
本文分享的论文内容及观点均来源于《KAN: Kolmogorov-Arnold Networks》原文,旨在介绍和探讨该研究的创新成果和应用价值。作者尊重并遵循学术规范,确保内容的准确性和客观性。如有任何疑问或需要进一步的信息,请参考论文原文或联系相关作者。
【关注我们】
如果您对神经网络、群智能算法及人工智能技术感兴趣,请关注【灵犀拾荒者】,获取更多前沿技术文章、实战案例及技术分享!