KAN神经网络简短介绍

news2024/11/24 11:46:25

KANs简介

Kolmogorov-Arnold Networks (KANs) 是一种创新的神经网络模型,它挑战了传统多层感知器(MLPs)的设计,通过将激活函数从节点转移到边上来提升模型的性能和可解释性。KAN的核心在于,其所有权重参数均被单变量的样条函数代替,这些函数可根据训练数据自适应调整,从而提供了比固定激活函数更高的灵活性和适应性。
在这里插入图片描述

性能优势

准确性提升:与同等规模或更大规模的MLPs相比,KANs在数据拟合和偏微分方程求解任务上展现了更高的准确率。研究显示,即使是小型KANs也能达到或超过大型MLPs的表现。
神经缩放律:KANs表现出比MLPs更优的神经缩放律,意味着随着模型参数数量的增加,KANs的性能提升更加显著。
可解释性增强:KANs的结构允许直观可视化,用户可以直接与网络“互动”,进行调试和优化,这在符号回归等任务中特别有利。用户可以手动指定或由系统建议合适的符号函数来代表激活函数,进而得到可读性强的最终表达式。

训练过程

KANs的训练流程包括几个关键步骤,其中涉及到参数初始化、激活函数的动态调整以及符号公式的提取,以下是具体细节:

参数初始化
激活函数基底: 激活函数b(x)通常设置为sigmoid-like函数,例如silu(x) = x / (1 + e^(-x))。
样条函数参数: 样条函数spline(x)通过B样条的线性组合来参数化,即 [ spline(x) = \sum_i c_i B_i(x) ] 其中,c_i是可训练参数。为了使初始激活接近零,B样条系数c_i从正态分布N(0, σ^2)中抽取,通常选择小的σ,如σ=0.1。
权重初始化: 权重w遵循Xavier初始化,保证了良好的梯度传播特性。
动态更新样条网格
由于样条函数定义在有界区域上,而训练过程中激活值可能超出预设区间,因此,每接收到新的输入激活值时,KANs会相应地更新每个网格点的位置,以确保覆盖所有可能出现的激活值范围。

模型训练与符号化
初步训练: KANs首先像常规神经网络一样进行训练,此时激活函数是基于样条函数的灵活表达。
修剪与符号化: 自动修剪过程可能会移除所有隐藏层的节点,只保留最后一个,形成一个简化的网络结构。随后,用户可通过观察网络图来猜测或使用suggest_symbolic函数推荐合适的符号函数来替换激活函数。
精调: 当所有激活函数都符号化后,仅剩的参数是仿射参数,继续训练这些参数直到损失降到极小值,表明找到了正确的符号表达。
输出公式: 使用Sympy等数学软件计算输出节点的最终符号表达式,例如得到1.0e1.0y^2 + 1.0sin(3.14*x)。

参数量与效率

虽然KANs的参数量级看似比MLPs更高(约O(N2LG)对比O(N2L)),实际上KANs往往能在较小的N值下达到更好的泛化能力,从而减少参数量,同时提升模型的通用性和可解释性。对于一维问题,KAN甚至简化为单个样条近似。

结论

KANs作为MLPs的有力竞争者,不仅在提高深度学习模型的准确性和可解释性方面展现出了巨大潜力,而且在面对非符号函数学习时提供了比符号回归方法更强的鲁棒性和适应性。论文通过数学和物理领域的实例验证了KANs作为研究工具的有效性,为未来人工智能和基础相互作用领域的发展开辟了新的路径。

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

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

相关文章

C++(week3):C语言文件操作

文章目录 (十二) 文件1.流(1)流模型(2)程序员视角的文件(3)缓冲区类型(4)标准流(5)二进制文件 与 文本文件(6)文件流的接口(API) 2.打开/关闭文件(1)fopen(2)fclose(3)示例代码 3.读/写文件(1)fgetc / fputc:一个字符一个字符地读写(2)fgets / fputs:一行…

pytest + yaml 框架 - 录制接口转 yaml 用例实现

pytest yaml 框架基本不用写 python 代码,只需写yaml 文件用例就能实现接口自动化。 现在引入接口录制功能,连 yaml 文件也不用写了,点点点就能生成 yaml 用例文件了。 录制功能在v1.3.4版本上实现 pip instal pytest-yaml-yoyo 环境准备 …

string类的介绍与使用【C++】

string类 前言一、为什么学习string类C语言中的字符串示例 二、标准库中的string类string类string类的常用接口说明string类对象的常见构造string类对象的容量操作string的接口测试及使用string类对象的访问及遍历操作下标和方括号遍历范围for遍历迭代器遍历相同的代码&#xf…

Seaborn : 超好用的Python可视化工具

1. 引言 说到数据可视化,Seaborn就像一颗隐藏的宝石!在进行探索性数据分析时,我们通常从Matplotlib 开始,而对 Seaborn 的探索相对较少!但是,只要你了解 Seaborn 的全部潜力,你就会惊奇地发现&…

半小时搞懂STM32面经知识点——IIC

1.IIC 1.1什么是IIC? 同步半双工通信协议,适用于小数据和短距离传输。 1.2 IIC需要几条线? IIC总共有2条通信总线(SDA,SCL),SCL为时钟同步线,用于主机和从机间数据同步操作;SDA为…

Qt开发常见报错大全与解决办法

下面的报错是我日常开发经常遇到的,对着下面的解决方法一招搞定就行了。 我们没必要都去记住,只需要见方抓药即可。 目前版本有27个常见报错,持续更新中。 常见报错 翻译不起作用 你可能改了类名字,但是.ts文件里没有跟着改。 Cannot send events to objects owned by a…

多线程-线程安全

目录 线程安全问题 加锁(synchronized) synchronized 使用方法 synchronized的其他使用方法 synchronized 重要特性(可重入的) 死锁的问题 对 2> 提出问题 对 3> 提出问题 解决死锁 对 2> 进行解答 对4> 进行解答 volatile 关键字 wait 和 notify (重要…

线下研讨会 技术沙龙|乐鑫芯片与 ESP RainMaker® 为科技初创企业赋能

众多科技初创企业在智能硬件市场迅猛发展的背景下,对不断变化的需求展现出了高度的敏锐性,期望能够快速将其转化为切实的产品方案。然而,面对复杂繁重的软硬件集成任务,这些企业往往容易陷入研发瓶颈、资金短缺以及效率低下等多重…

Mybatis技术内幕-基础支撑层

整体架构 MyBatis 的整体架构分为三层, 分别是基础支持层、核心处理层和接口层。 基础支持层 基础支持层包含整个MyBatis 的基础模块,这些模块为核心处理层的功能提供了良好的支撑。 解析器模块 XPathParser MyBatis提供的XPathParser 类封装了XPat…

HackMyVM-Minimal

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 gobuster 文件包含漏洞 提权 web信息收集 main方法 question_1 question_2 question_3 prize.txt 软连接 信息收集 arp ┌──(root?0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: E…

centos7.9系统安全加固

1、限制用户登陆 vim /etc/hosts.deny,若禁止192.168.0.158对服务器进行ssh的登陆,添加如下内容 sshd : 192.168.0.158 添加完毕后就生效了,直接用192.168.0.158访问主机,就无法连接了,显示 Connection closing...Soc…

pycharm报错Process finished with exit code -1073740791 (0xC0000409)

pycharm报错Process finished with exit code -1073740791 (0xC0000409) 各种垃圾文章(包括chatgpt产生的垃圾文章),没有给出具体的解决办法。 解决办法就是把具体报错信息显示出来,然后再去查。 勾选 然后再运行就能把错误显示…

图像分割各种算子算法-可直接使用(Canny、Roberts、Sobel)

Canny算子: import numpy as np import cv2 as cv from matplotlib import pyplot as pltimg cv.imread("../test_1_1.png") edges cv.Canny(img, 100, 200)plt.subplot(121),plt.imshow(img,cmap gray) plt.title(Original Image), plt.xticks([]), …

vue2+swiper——实现多图轮播+层叠轮播——技能提升

今天看到同事在写轮播图,由于是jq的写法,我没有过多参与,我只写vue的部分。。。虽然语言不一样,但是用法还是要会的。下面介绍通过swiper组件来实现轮播效果。 解决步骤1:安装swiper npm install swiper5.4.5 我这边…

数据分享—全国分省河流水系

河流水系数据是日常研究中必备的数据之一,本期推文主要分享全国分省份的水系和河流数据,梧桐君会不定期的更新数据,欢迎长期订阅。 数据预览 山东省河流水系 吉林省河流水系 四川省河流水系 数据获取方式 链接:https://pan.baidu.…

基于阿里云向量检索 Milvus 版与 PAI 搭建高效的检索增强生成(RAG)系统

阿里云向量检索 Milvus 版现已无缝集成于阿里云 PAI 平台,一站式赋能用户构建高性能的检索增强生成(RAG)系统。您可以利用 Milvus 作为向量数据的实时存储与检索核心,高效结合 PAI 和 LangChain 技术栈,实现从理论到实…

网络基础(三)——网络层

目录 IP协议 1、基本概念 2、协议头格式 2.1、报头和载荷如何有效分离 2.2、如果超过了MAC的规定,IP应该如何做呢? 2.3、分片会有什么影响 3、网段划分 4、特殊的ip地址 5、ip地址的数量限制 6、私有ip地址和公网ip地址 7、路由 IP协议 网络…

LINUX 精通 1——2.1.1 网络io与io多路复用select/poll/epoll

LINUX 精通 1 day12 20240509 算法刷题: 2道高精度 耗时 107min 课程补20240430 耗时:99 min day 13 20240512 耗时:200min 课程链接地址 前言 杂 工作5-10年 够用 费曼:不要直接抄,自己写;不要一个…

【微服务】spring aop实现接口参数变更前后对比和日志记录

目录 一、前言 二、spring aop概述 2.1 什么是spring aop 2.2 spring aop特点 2.3 spring aop应用场景 三、spring aop处理通用日志场景 3.1 系统日志类型 3.2 微服务场景下通用日志记录解决方案 3.2.1 手动记录 3.2.2 异步队列es 3.2.3 使用过滤器或拦截器 3.2.4 使…

安全工程师面试题

安全工程师面试题安全工程师是一个非常重要的职位,他们负责保护公司的网络和系统免受黑客和恶意软件的攻击。如果你想成为一名安全工程师,那么你需要准备好面试。下面是一… 1安全工程师面试题 安全工程师是一个非常重要的职位,他们负责保护…