TorchCurves:把参数曲线变成可学习层,PyTorch新库打通KAN与函数回归

TorchCurves 将 B 样条与 Legendre 参数曲线做成 PyTorch 可微模块,让曲线成为可训练、可组合的层。
TorchCurves 是 PyTorch 生态中一个新库,把 B 样条和 Legendre 多项式基下的参数曲线实现为可微模块,核心操作是将一批标量输入映射到曲线点,且对输入与曲线系数同时可微。曲线系数可独立优化,也可由其他网络生成,库提供可训练模块、基模块和函数式接口三类用法。目标场景包括连续特征嵌入、Kolmogorov-Arnold 网络和函数回归。工程上强调可读性,未编写自定义硬件内核,计时实验仅给出定性结论:通用性在部分规模可行、部分规模开销明显。其定位是让曲线成为自动微分图中可组合的积木,而非替代 SciPy 等数值库。
在深度学习框架中,向量值参数曲线通常只是可视化工具或数据插值手段,很少被当作可训练的一等公民。PyTorch 生态里新出现的 TorchCurves 试图改变这一点:它把 B 样条和 Legendre 多项式基下的参数曲线实现为可微模块,让曲线系数可以像神经网络权重一样被优化。

核心操作:从标量批次到曲线点
TorchCurves 的中心操作是把一批标量输入映射到曲线上的点。曲线由 B 样条或 Legendre 多项式基表示,前向计算既对输入可微,也对曲线系数可微。这意味着你可以把曲线嵌入到更大的模型中,让梯度从损失函数一路回传到控制点或多项式系数上。
这种设计带来两种典型用法:一是曲线系数作为独立参数直接优化;二是系数由另一个网络生成,形成“网络输出曲线、曲线再输出坐标”的复合结构。库本身提供三类接口——可训练模块、可复用的基模块,以及函数式接口——覆盖从快速实验到模块化集成的不同需求。
B 样条基是一种用分段多项式构造平滑曲线的数学工具,其曲线由一组控制点(系数)和定义在节点向量上的基函数线性组合而成。B 样条局部支撑的特性意味着调整某个控制点只影响局部曲线形状,天然适合作为可学习参数。Legendre 多项式基则是一组定义在 [-1, 1] 区间上的正交多项式,常用于函数逼近;它的正交性使系数估计更稳定,但全局支撑意味着每个系数影响整条曲线。两者在 TorchCurves 中都被实现为基模块,核心区别在于局部性与全局性的权衡:B 样条擅长表示分段光滑的局部特征,Legendre 基则适合表示低阶全局趋势。
可微模块指遵循 PyTorch nn.Module 接口、其前向计算完全由可自动微分的张量操作组成的组件。与普通模块不同,这里的关键是曲线求值对输入坐标和曲线系数同时可微,因此梯度能穿过曲线层回传到上游网络或直接更新系数。
应用场景:连续特征嵌入与 KAN
作者在项目描述中列举了几个方向:连续特征嵌入、Kolmogorov-Arnold 网络(KAN)以及函数回归。其中 KAN 是近期受到关注的结构,它的边函数本质上就是可学习的单变量曲线。TorchCurves 把这类边函数抽象成基模块,正好为 KAN 提供了一套可替换的曲线求值后端。
函数回归则更直接:当目标是一个连续函数而非离散标签时,用参数曲线作为输出头比全连接层更自然。连续特征嵌入则面向那些输入本身是连续坐标的任务,比如空间位置编码或隐式神经表示。
据项目说明,这些场景共享同一个需求——曲线求值必须可微、可批处理,并且能与其他 PyTorch 模块自由组合。
Kolmogorov-Arnold 网络(KAN) 是一种基于 Kolmogorov-Arnold 表示定理的神经网络结构:定理指出多元连续函数可表示为有限个单变量连续函数与加法的组合。KAN 将每个“边”上的权重替换为可学习的单变量函数(通常用样条参数化),节点只做求和。这与 MLP 把非线性放在节点上不同,KAN 把非线性放在边上,因此边函数的求值质量和可微性直接决定模型能力。TorchCurves 提供的基模块正好可作为这些边函数的求值后端,研究者无需手写基函数导数即可训练 KAN。
函数回归与普通回归的区别在于目标是整个连续函数而非离散标签。用参数曲线作输出头时,模型直接输出曲线系数,再在任意坐标处求值,天然支持变分辨率输出和连续域上的监督。
实现取舍:可读性优先,不写自定义内核
TorchCurves 的工程选择值得注意。它把经典曲线求值算法与向量化 PyTorch 操作结合,明确强调可读性和可维护性,没有为性能编写自定义硬件内核。这一定位让库更容易被审阅和修改,但也意味着在极端规模下会付出额外开销。
作者做了两组计时实验:一组比较曲线求值与 NumPy、SciPy 的表现,另一组比较 KAN 训练与 EfficientKAN 在不同问题规模下的差异。结论是定性的——这种通用性在一些规模下仍然计算可行,而在另一些情形下开销相当明显。原文没有给出具体加速比或绝对耗时,因此更稳妥的理解是:TorchCurves 面向的是灵活性和可微性优先的场景,而非追求极致吞吐的生产推理。
自定义硬件内核通常指用 CUDA、Triton 或 C++ 扩展编写的底层算子,可绕过 PyTorch 通用调度开销、针对特定计算模式做融合与并行优化。科学计算类库若追求极致性能,往往会为曲线求值这类规则计算写专用内核,但代价是可移植性下降、代码难以审阅。TorchCurves 选择纯向量化 PyTorch 操作,意味着它能在 CPU/GPU 及不同后端上一致运行,但每次求值都要经过通用算子调度,在小批量或频繁调用场景下开销更明显。这也解释了计时实验中“部分规模可行、部分规模开销明显”的定性结论。
生态位置与使用建议
在 PyTorch 生态中,可微曲线库并不常见。SciPy 的样条工具成熟但不可微,NumPy 适合数值计算但不参与自动微分。TorchCurves 填补的是“曲线即层”这一层抽象,把 B 样条和 Legendre 基的数学结构直接暴露为模块。
对于想尝试 KAN 或函数回归的研究者,这个库提供了一条低门槛路径:不需要自己推导基函数导数,也不需要手写批处理求值。对于关注性能的工程团队,则需要先用自己的问题规模做基准测试,再决定是否采用。项目已在 GitHub 开源,地址为 github.com/alexshtf/torchcurves。
一个合理的判断是:TorchCurves 的价值不在于替代现有数值库,而在于把参数曲线纳入自动微分图,让“曲线”成为模型设计中可以组合的积木。
相关推荐

@ai-sdk/rsc 1.0.291 版本发布:修复补丁与依赖更新
@ai-sdk/rsc 发布 1.0.291 补丁版本,更新依赖至 ai@5.0.289。本文介绍该版本的变更内容、依赖关系与升级建议,帮助开发者了解 AI SDK 生态的版本维护节奏。

英伟达治理危机:公司治理专家为何集体围观
英伟达陷入令公司治理专家都感到罕见的危机,多位专家表示从未见过类似局面。本文分析这一治理危机为何引发专业围观,以及对AI芯片行业可能产生的影响。

Ollama保姆级教程:零基础本地部署AI大模型
零基础 Ollama 安装部署教程:讲解软件与模型分盘存放的三种安装方式、如何修改模型目录、装好后如何用命令运行模型,并按显存大小给出模型选择建议与思考模式关闭技巧。