KAN(Kolmogorov-Arnold Networks)通俗理解

KAN论文地址:https://arxiv.org/abs/2404.19756

一、KAN 的原理:像 "定制化导线" 拼出复杂功能

可以把 KAN(Kolmogorov-Arnold Networks)理解成一套 "灵活的信号传输系统",核心思路来自一个数学定理 ------Kolmogorov-Arnold 表示定理,即KART(Kolmogorov--Arnold Representation Theorem),这个定理的通俗意思是:"再复杂的多变量函数(比如用多个因素预测结果的情况),都能拆成一个个单变量函数的组合"。

具体到 KAN 的结构,我们可以想象它有几层 "节点",节点之间用 "导线" 连接:

  • 这些 "导线" 不是普通的电线(像 MLP 里固定的权重),而是能自己学习 "传输规则" 的定制化导线------ 每根导线里都装了一个 "可学习的激活函数"(通常用 "B 样条函数",可以理解成能灵活弯曲的曲线)。
  • 节点的作用很简单,只负责 "汇总信号":比如某个节点会收集所有连到它的 "导线" 传来的信号,直接加起来传给下一层,自己不做任何复杂处理。

举个例子:如果用 KAN 处理 "根据 EEG 信号预测看到的图像"(对应论文里的任务),EEG 的每个通道信号是 "输入节点",最终的图像特征是 "输出节点"。连接它们的 "导线" 会自己学习:"通道 1 的信号该怎么变换,才能和通道 3 的信号配合,最终对应到'苹果'的图像特征"------ 每根导线的变换规则(激活函数)都是独立学习的,能精准适配数据里的复杂关联。

二、KAN 与 MLP 的关系:替代者,而非完全不同的 "新物种"

MLP(多层感知器)是我们熟悉的 "基础款神经网络",KAN 是为了解决 MLP 的缺点而生的 "升级替代方案",两者的核心区别和联系可以用 "工厂生产" 来类比:

Figure 0.1:MLPs VS KAN(ref.KAN: Kolmogorov-Arnold Networks)

1. 核心区别:"固定工序" vs "定制工序"

  • MLP 像 "标准化工厂":它的每一层都有固定流程 ------ 先把输入信号用 "固定权重" 做线性组合(比如 "信号 1×0.3 + 信号 2×0.5"),再用一个固定的激活函数(比如 ReLU,像个 "开关",只保留正数信号)处理。不管数据是什么规律,这个 "线性组合 + 固定激活" 的工序是不变的,只能通过调整 "权重" 来适配数据。缺点很明显:如果数据里有复杂的非线性关系,MLP 需要堆很多层、很多节点才能勉强拟合,不仅参数多、训练慢,还像个 "黑箱"------ 不知道哪个权重起了关键作用。

  • KAN 像 "定制化工厂":它把 MLP 里 "固定的权重 + 固定的激活" 拆成了 "每根导线的定制激活函数"------ 不再用统一的 "线性组合 + ReLU",而是让每根连接节点的 "导线" 自己学习适合的变换规则。比如处理 EEG 信号时,对 "枕叶通道"(负责视觉信息的脑区)的导线,会学到和 "额叶通道" 完全不同的变换规则,更精准地捕捉数据规律。优点是:用更少的参数就能达到甚至超过 MLP 的效果(比如论文里提到,2 层宽 10 的 KAN,比 4 层宽 100 的 MLP 精准 100 倍),而且 "导线" 的激活函数能可视化 ------ 你能看到哪根导线对结果影响最大,解释性更强。

2. 共同点:都是 "全连接结构",目标一致

两者都是 "全连接" 的 ------ 前一层的每个节点都会连接到后一层的每个节点,没有像 CNN 那样的 "局部连接";而且核心目标相同:都是通过多层变换,把输入数据映射到想要的输出(比如 数据→分类结果)。

简单说:KAN 不是推翻了 MLP 的结构,而是把 MLP 里 "僵硬的工序" 改成了 "灵活的定制工序",既保留了 MLP 处理复杂数据的能力,又解决了它 "参数多、解释性差" 的缺点。

总的来说,KAN 是 MLP 的 "升级版替代方案":MLP 用 "固定激活函数 + 可调整权重" 处理数据,像标准化生产;KAN 用 "可学习的激活函数(装在导线上)+ 简单节点汇总",像定制化生产,能更高效、更精准地拟合复杂数据,还能让人看懂它的 "决策过程"。

三、安装KAN

优先方案:无需安装 git,直接下载 pykan 源码手动安装。

1. 下载 pykan 源码压缩包
  1. 打开 GitHub 仓库链接:https://github.com/KindXiaoming/pykan
  2. 点击页面右上角的 Code 按钮,选择 Download ZIP ,将源码压缩包保存到本地(如 D:\pykan-master.zip)。
2. 解压并本地安装
  1. 右键解压 pykan-master.zip,得到文件夹 pykan-master(确保路径无中文,如 D:\pykan-master);

  2. 打开 Anaconda Prompt,激活你的 conda 环境(conda activate 环境名称);

  3. 切换到解压后的 pykan-master 文件夹路径:

    复制代码
    cd D:\pykan-main
  4. 执行本地安装命令:

    复制代码
    pip install -e .

安装成功后,会提示 "Successfully installed pykan"。

相关推荐
7hyya2 小时前
如何将Spring Boot 2接口改造为MCP服务,供大模型调用!
人工智能·spring boot·后端
做运维的阿瑞2 小时前
告别性能焦虑:Python 性能革命实践指南
开发语言·后端·python
. . . . .3 小时前
GPT的前世今生及发展
人工智能·gpt
唐叔在学习3 小时前
文档转换神器pypandoc详解:解锁Python跨格式文档转换的终极姿势
后端·python
eqwaak03 小时前
科技信息差(10.2)
开发语言·python·科技·科技信息差
DatGuy3 小时前
Week 19: 深度学习补遗:自注意力和Transformer Encoder架构
人工智能·深度学习·transformer
colus_SEU4 小时前
【循环神经网络5】GRU模型实战,从零开始构建文本生成器
人工智能·rnn·深度学习·gru
Penguin大阪4 小时前
GRU模型这波牛市应用股价预测
人工智能·深度学习·gru
格林威4 小时前
UV紫外相机在工业视觉检测中的应用
人工智能·深度学习·数码相机·算法·计算机视觉·视觉检测·uv