KAN网络简明教程

news2024/12/30 3:29:57

在不断发展的机器学习领域,最近一篇题为“KAN:柯尔莫哥洛夫-阿诺德网络”的研究论文在爱好者中引发了一波热潮。这种创新方法挑战了多层感知器 (MLP) 的传统观点,为神经网络架构提供了全新的视角。

 NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

1、什么是柯尔莫哥洛夫-阿诺德网络 (KAN)

这一突破性概念的核心是柯尔莫哥洛夫-阿诺德表示定理,这是由弗拉基米尔·阿诺德和安德烈·柯尔莫哥洛夫开发的数学理论。该定理断言,复杂的多元函数可以分解为更简单的一维函数,为 KAN 的独特结构奠定了基础。

现在,显而易见的问题是这些“更简单的一维函数”是什么。对于任何有一点数学或计算图形知识的人来说,我们谈论的是古老而值得信赖的分段多项式,即样条函数

2、KAN 的秘密武器,样条线!

样条线是一种数学函数,通过连接一系列控制点,可以创建平滑的曲线。样条线可以灵活地调整曲线的形状,同时确保相邻段之间的连续性和平滑性。

要创建样条线,通常从一组定义曲线路径的控制点开始。然后通过使用基函数(例如 B 样条线或贝塞尔曲线)在这些控制点之间插入或近似路径来构建曲线。

本质上,样条线提供了一种多功能工具,可以精确灵活地表示复杂的曲线或曲面,使其在各个领域都具有无价的价值。

但是,这些样条线如何在 KAN 架构中使用和利用?

3、了解 KAN 工作原理的最简单方法

KAN 与传统 MLP 不同,它沿网络边缘用可学习函数(B 样条线)替换固定激活函数。

这种自适应架构允许 KAN 有效地对复杂函数进行建模,同时保持可解释性并减少所需的参数数量。

与 MLP 中充当信号传输被动管道的神经元不同,KAN 中的神经元是学习过程的主动参与者,旨在根据遇到的数据动态地塑造其行为。

这种变革性转变是通过采用位于网络边缘的可学习激活函数实现的。

这些函数利用 B 样条的表达能力,赋予 KAN 无与伦比的灵活性和适应性,使它们能够轻松驾驭复杂的数据环境。

4、KAN 的主要优势

增强的可扩展性:与 MLP 相比,KAN 表现出卓越的可扩展性,尤其是在高维数据场景中。它们能够将复杂的函数分解为更简单的组件,从而高效处理大型数据集,使其成为处理大量信息任务的理想选择。

提高准确性:尽管使用较少的参数,但 KAN 在各种任务中都比传统 MLP 实现了更高的准确性和更低的损失。这归因于它们能够自适应地对数据中的关系进行建模,从而产生更精确的预测和更好地泛化到看不见的示例。

可解释的模型:KAN 的结构有助于提高可解释性,使研究人员能够推导出有效表示学习模式的符号公式。与黑盒模型不同,KAN 提供了输入特征如何在整个网络中转换的见解,从而增强了透明度和理解力。

5、KAN实践

现在我们知道了什么是 KAN,以及为什么它们在人工智能领域如此重要,但世界并不仅仅依靠论文中看起来不错的理论和模型来推动。

但 KAN 最好的一点是,它们非常类似于使用新的 Python 库“PyKAN”在你自己的数据科学问题中进行扩展和利用。

让我们以一个如何在 Python 中实现这些架构的示例来结束我们的讨论,让我们使用分类问题进行演示。

5.1 创建数据集

我们将使用 sklearn 库的“make_moons”函数创建一个合成数据集。

import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
import torch
import numpy as np

dataset = {}
train_input, train_label = make_moons(n_samples=1000, shuffle=True, noise=0.1, random_state=None)
test_input, test_label = make_moons(n_samples=1000, shuffle=True, noise=0.1, random_state=None)

dataset['train_input'] = torch.from_numpy(train_input)
dataset['test_input'] = torch.from_numpy(test_input)
dataset['train_label'] = torch.from_numpy(train_label)
dataset['test_label'] = torch.from_numpy(test_label)

X = dataset['train_input']
y = dataset['train_label']
plt.scatter(X[:,0], X[:,1], c=y[:])

输出如下:

5.2 创建并训练 KAN

from kan import KAN

odel = KAN(width=[2,2], grid=3, k=3)

def train_acc():
    return torch.mean((torch.argmax(model(dataset['train_input']), 
    dim=1) == dataset['train_label']).float())

def test_acc():
    return torch.mean((torch.argmax(model(dataset['test_input']), 
    dim=1) == dataset['test_label']).float())

results = model.train(dataset, opt="LBFGS", steps=20, 
          metrics=(train_acc, test_acc), 
          loss_fn=torch.nn.CrossEntropyLoss())

5.3 从模型中获取符号公式

此后,将得出一个符号公式,表示模型从数据中学到的内容。

formula1, formula2 = model.symbolic_formula()[0]

5.4 计算准确率

最后,可以从学习到的公式中得到准确率

def acc(formula1, formula2, X, y):
    batch = X.shape[0]
    correct = 0
    for i in range(batch):

        logit1 = np.array(formula1.subs('x_1', 
                          X[i,0]).subs('x_2', X[i,1])).astype(np.float64)
        logit2 = np.array(formula2.subs('x_1', X[i,0]).subs('x_2', 
                          X[i,1])).astype(np.float64)

        correct += (logit2 > logit1) == y[i]

    return correct/batch

# Print Accuracy
print('train acc of the formula:', acc(formula1, 
                                       formula2, 
                                       dataset['train_input'],  
                                       dataset['train_label']))

print('test acc of the formula:', acc(formula1, 
                                      formula2, 
                                      dataset['test_input'], 
                                      dataset['test_label']))

输出如下:

train acc of the formula: tensor(0.9700)
test acc of the formula: tensor(0.9660)

6、结束语

总之,柯尔莫哥洛夫-阿诺德网络 (KAN) 代表了神经网络架构的范式转变。虽然需要进一步研究和实验才能充分发挥其潜力,但 KAN 有望成为未来几年推动机器学习和科学发现的宝贵工具。

随着该领域的不断发展,KAN 站在创新的前沿,塑造智能系统的未来,并彻底改变我们处理复杂数据分析和建模的方式。


原文链接:KAN网络简明教程 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1995462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 实战(9)窗体 | 9.2、QDialog

文章目录 一、QDialog1、基本概念2、常用特性2.1、模态与非模态2.2、数据交互 3、总结 前言: Qt框架中的QDialog类是一个功能强大且灵活的对话框控件,广泛应用于各种GUI(图形用户界面)应用程序中,用于处理用户输入、消…

map/multimap容器

一、 map基本概念 简介: map中所有元素都是pair pair中第一个元素为key(键值),起到索引惟用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序 本质: map/multimap属于关联式容器,底层结构是用二叉树实现 优点: 可以根据ke…

欧拉系统离线安装界面ukui

1、官网下载安装镜像iso后,默认没有gui openEuler | 开源社区 | openEuler社区官网openEuler是一个开源、免费的 Linux 发行版平台,将通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系。同时,openEuler 也是…

数据结构与算法|算法总结|动态规划篇之子序列、子数组问题

首先我们要明确以下两个问题: 子序列:子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 子数组:子数组是数…

HTTP协议基础知识【后端 4】

HTTP协议基础知识 HTTP(Hyper Text Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,它定义了客户端(如浏览器)与服务器之间数据传输的格式和规则。无论是浏览网页、在线购物还是使…

常见漏洞扫描工具!

AWVS 下载链接: 链接: https://pan.baidu.com/s/1rFq9iMV8oluumyylA22MFg?pwdmyc2 提取码: myc2 打开awvs安装⼯具,一路默认,不要修改文件安装路径,不然会失败; email和password是之后登录服务的账号密码&#xf…

算法日记day 34(动归之使用最小花费爬楼梯|不同路径2|整数拆分|不同的二叉搜索树)

一、使用最小花费爬楼梯 题目: 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返…

工业设备数据采集方案的设计实施与应用-天拓四方

随着工业4.0时代的来临,工业设备数据采集成为了提升生产效率、优化能源管理、实现智能化决策的关键环节。本文将围绕工业设备数据采集的重要性、方案设计实施以及TDE工业网关的应用实践展开探讨,以期为相关企业提供一种清晰、专业且实操性强的数据采集方…

Navicat Premium使用

文章目录 Navicat Premium 16的使用连接MySQL建立数据库并构建表导入数据 Navicat Premium 16是一款功能强大的数据库管理工具,它允许用户从单一应用程序中同时连接多种数据库,提供了极其便捷和高效的管理和开发环境,对于 MySQL 用户来说&…

leetcode198_打家劫舍

思路 动态规划 func rob(nums []int) int {if len(nums) < 2 {return nums[0]}// dp[i] 表示到第i家为止&#xff0c;小偷能够偷窃到的最高金额dp : make([]int, len(nums))dp[0] nums[0]dp[1] max(nums[0], nums[1])for i:2; i<len(nums); i {if nums[i] dp[i-2] &…

制造业BOM管理难点分析 三品PDM系统BOM管理解决方案详情

在当今竞争激烈的市场中&#xff0c;制造企业面临着产品多样化、个性化需求和快速交付的压力。BOM物料清单作为产品数据管理的核心&#xff0c;其准确性和效率直接影响到企业的竞争力。然而&#xff0c;BOM管理在制造企业中往往面临诸多挑战。但是PDM系统的出现让BOM管理变得不…

VisionPro二次开发学习笔记1-创建基于QuickBuild的C#应用程序

创建基于QuickBuild的C#应用程序 使用的QuickBuild应用程序位于&#xff05;VPRO_ROOT&#xff05;/ Samples / Programming / QuickBuild / advancedAppOne.vpp中。在继续之前&#xff0c;可以在QuickBuild中运行该应用程序。 QuickBuild应用程序使用PatMax查找支架的“耳朵…

SSH 和 Telnet 之间的区别

SSH 和 Telnet是帮助用户与远程系统建立连接的两种通信协议&#xff0c;这些通信协议决定了数据如何在网络上的不同设备之间传输&#xff0c;这些设备通常需要通过各种物理和数字环境进行传输&#xff0c;网络协议的主要目标是通信、网络管理和安全。 Telnet Telnet是一种较旧…

如果您的照片从设备中消失请无需惊慌,几个安卓照片恢复工具可以试试

新的手机数据恢复应用程序定期推出&#xff0c;这个市场竞争非常激烈。因此&#xff0c;选择最好的 Android 手机照片恢复应用程序可能是最棘手的部分。这就是为什么我们准备了一份概述&#xff0c;介绍目前被认为是恢复丢失照片最有效的应用程序。 几个安卓照片恢复工具 让我…

Cocos通过Electron打包web应用后,在触屏一体机设备触摸滑动无效问题解决

Cocos通过Electron打包web应用后&#xff0c;在触屏一体机设备触摸滑动无效问题解决 已经很晚了&#xff0c;刚刚解决这个问题&#xff0c;还是想记录一下&#xff0c;因为刚刚接触 cocos 没多久&#xff0c;这个问题困扰了我很久。 背景 接手了一个答题小游戏&#xff0c;由于…

直线度测量仪测量不准时如何快速自检恢复?

直线度测量仪应用于圆形产品的直线度及外径尺寸检测&#xff0c;既有应用于生产线中的在线测量仪又有离线直线度测量仪&#xff0c;但不管哪种设备&#xff0c;都是光学检测设备&#xff0c;也都具备光学设备的特性。 在测量仪的长期使用过程中&#xff0c;难免会遇到测量不准…

2015款到18款奔驰GLC升级为2021款的HU6主机后,实现了触摸屏人机交互和Carplay功能

奔驰GLC是北京奔驰生产的一款中型SUV。有车主将2015款奔驰GLC升级为2021款的HU6主机后&#xff0c;实现了触摸屏人机交互和Carplay功能。该车主分享了使用体验&#xff1a; • Carplay功能&#xff1a;可以直接在车机大屏幕上显示导航、音乐和电话信息&#xff0c;让用户在开车…

中国信息学奥赛专用系统之----NOI Linux 2.0系统安装教程

1、下载NOI Linux 2.0系统&#xff0c;下载地址&#xff1a; https://noiresources.ccf.org.cn/ubuntu-noi-v2.0.iso 2、新建虚拟机 3、开机安装系统 下载插件&#xff0c;可能需要10分钟以上。 5、进系统看看 OK,NOI Linux 2.0系统安装完毕&#xff01;

MySQL面试题全解析:准备面试所需的关键知识点和实战经验

MySQL有哪几种数据存储引擎&#xff1f;有什么区别&#xff1f; MySQL支持多种数据存储引擎&#xff0c;其中最常见的是MyISAM和InnoDB引擎。可以通过使用"show engines"命令查看MySQL支持的存储引擎。 存储方式&#xff1a;MyISAM引擎将数据和索引分别存储在两个不…

手机怎么远程控制电脑屏幕?手机远程控制电脑方法分享

手机与电脑之间的互联互通变得越来越便捷。 无论是工作还是学习&#xff0c;有时我们需要在手机上远程控制电脑屏幕&#xff0c;以完成一些复杂的操作或查看电脑上的文件。 本文将详细介绍几种实用的手机远程控制电脑屏幕的方法&#xff0c;帮助读者轻松实现这一目标。 一、使…