Skip to content

sagewjq/potential-math

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ 势场数学库 (Potential Math)

基于 v0.4.0 版本的新功能,我重新设计了结构,使其更清晰、更专业:


⚡ 势场数学库 (Potential Math)

https://img.shields.io/badge/license-MIT-green.svg https://img.shields.io/badge/python-3.7+-blue.svg https://img.shields.io/badge/PyTorch-1.9+-red.svg https://img.shields.io/badge/version-0.4.0-orange.svg

基于频率调制统一理论的势场数学库。将物理规律引入深度学习,实现地形感知优化、势场叠加、GPU加速和统计力学分析。


🎯 核心特性

模块 功能 理论基础 状态
地形感知优化器 根据损失曲率自适应调整学习率,主动逃离鞍点 第一篇:势场数学基础 ✅ 稳定
损失地形分析 梯度、曲率、Hessian、Morse指数、持久性分析 第二、四篇:微积分+拓扑学 ✅ 稳定
势场叠加 指数融合,自动生成交叉项,支持GPU加速 第一篇:势场叠加公理 ✅ 稳定
GPU后端 自动检测NVIDIA/AMD/Apple GPU,Triton优化 势场增强计算 ✅ 新增
势场统计 熵、温度、玻尔兹曼分布、力的统计本质 第五篇:势场统计 ✅ 新增
地形增强分析 特征地形、条件数、Morse指数、持久性 第三、四篇:线性代数+拓扑学 ✅ 新增

✨ v0.4.0 新特性

  • 🚀 GPU批量模式:3-5倍训练加速,支持大模型
  • 🎯 势场统计模块:熵、温度、玻尔兹曼分布
  • 🔧 地形增强分析:条件数、Morse指数、持久性分析
  • 💻 多GPU后端:自动检测NVIDIA/AMD/Apple GPU
  • 📊 详细统计:逐参数曲率分析

📦 安装

方式一:从 Gitee 安装(国内推荐)

pip install git+https://gitee.com/sageapollo/potential-math.git

方式二:从 GitHub 安装

pip install git+https://github.com/sagewjq/potential-math

方式三:本地安装(开发模式)

git clone https://gitee.com/sageapollo/potential-math.git cd potential-math pip install -e .


🚀 快速开始

  1. 基础用法:地形感知优化器

import torch import torch.nn as nn from potential_math import PotentialOptimizer

创建模型

model = nn.Linear(10, 1)

只需替换优化器!

optimizer = PotentialOptimizer( model.parameters(), lr=0.001, curvature_sensitivity=1.0, # 曲率敏感度 saddle_escape=True # 启用鞍点逃逸 )

训练循环保持不变

for epoch in range(100): optimizer.zero_grad() loss = model(data).mean() loss.backward() optimizer.step()

# 可选:获取曲率统计
stats = optimizer.get_curvature_stats()
print(f"Mean curvature: {stats['mean_curvature']:.4f}")
  1. GPU加速模式

from potential_math import PotentialOptimizer

optimizer = PotentialOptimizer(model.parameters(), lr=0.001)

启用GPU批量模式(自动检测硬件)

optimizer.enable_gpu_batch(use_gpu=True)

输出: ✓ GPU批量模式已启用 (device=cuda:0, total_params=1,234,567)

训练循环不变,自动使用GPU加速

for epoch in range(100): optimizer.zero_grad() loss = model(data.cuda()).mean() loss.backward() optimizer.step() # 自动使用批量模式

  1. 损失地形分析

from potential_math import LossLandscape

landscape = LossLandscape(model)

基础地形信息

info = landscape.get_landscape_info(inputs, targets) print(f"地形类型: {info['terrain_type']}") # steep, flat, saddle_or_plateau print(f"曲率: {info['curvature']:.4f}")

增强分析:特征地形(第三篇)

terrain = landscape.analyze_terrain_shape(inputs, targets) print(f"条件数: {terrain['condition_number']:.2f}") # 地形狭长度 print(f"地形类型: {terrain['terrain_type']}") # ridge / basin

增强分析:Morse指数(第四篇)

is_saddle = landscape.is_saddle_point(inputs, targets)

  1. 势场叠加

from potential_math import potential_superpose, batch_potential_superpose

定义多个势场

def gaussian1(x): return torch.exp(-x**2) def gaussian2(x): return 0.5 * torch.exp(-(x-1)**2)

自动生成交叉项

x = torch.linspace(-3, 4, 1000).cuda() # GPU加速 phi_total = potential_superpose([gaussian1, gaussian2], c=1.0, points=x)

批量处理(高性能)

phi_stack = torch.randn(32, 10, 1000).cuda() # 32个样本,10个势场,1000个点 results = batch_potential_superpose(phi_stack, c=1.0)

  1. 势场统计(第五篇)

from potential_math import PotentialStatistics

创建统计模块

stats = PotentialStatistics(model, optimizer)

训练过程中记录

for step in range(100): loss = model(data).mean() loss.backward() stats.record_state(loss.item(), [p.grad for p in model.parameters()]) optimizer.step()

获取统计摘要

summary = stats.get_statistics_summary() print(f"熵 S = {summary['entropy']:.4e} J/K") # S = -k⟨Φ⟩ print(f"温度 T = {summary['temperature']:.2f} K") # kT = ⟨E⟩ print(f"自由能 F = {summary['free_energy']:.4e} J")

玻尔兹曼分布

potential = torch.linspace(-5, 5, 100) distribution = stats.boltzmann_distribution(potential)


📊 参数说明

PotentialOptimizer 参数

参数 默认值 说明 lr 0.01 基础学习率 momentum 0.9 动量因子 curvature_sensitivity 1.0 曲率敏感度,越大对曲率越敏感 saddle_escape True 是否启用鞍点逃逸 saddle_threshold 0.01 鞍点检测阈值 noise_scale 0.01 鞍点逃逸噪声尺度 grad_clip None 梯度裁剪阈值 max_history_size 10 曲率计算历史长度

GPU批量模式

启用GPU批量模式

optimizer.enable_gpu_batch(use_gpu=True, history_size=10)

自动检测:

- 所有参数在同一GPU上 → 启用批量模式

- 参数分布在多GPU或CPU → 自动回退逐参数模式


🔬 理论基础

📖 论文系列

本项目基于势场数学五篇论文:

论文 核心内容 代码实现 第一篇:势场数学基础 公理、基本概念、势场叠加 init.py, superpose.py 第二篇:势场微积分 梯度、梯度流、变分 landscape.py, optimizer.py 第三篇:势场线性代数 二次势场、特征地形、条件数 landscape.py - analyze_terrain_shape() 第四篇:势场拓扑学 临界点、Morse指数、持久性 landscape.py - compute_morse_index() 第五篇:势场统计 熵、温度、分布、力的统计本质 statistics.py 频率调制统一理论及其在优化算法中的应用
王江祁
OSF Preprints, 2026
🔗 https://osf.io/td5jx

🧠 核心公式

统一力公式:

F = -E∇Φ_total

加速度公式:

dv/dt = -c²∇Φ_s - (v·∇Φ_s)v

势场叠加:

Φ_total = -c² ln(∑ e^{-Φ_i/c²})

熵的势场定义:

S = -k⟨Φ⟩

温度的频率本质:

kT = ⟨hν⟩


📁 项目结构

potential_math/ ├── init.py # 包初始化,版本 0.4.0 ├── optimizer.py # 势场优化器(逐参数 + GPU批量) ├── landscape.py # 损失地形分析(含增强分析) ├── superpose.py # 势场叠加(GPU加速) ├── statistics.py # 势场统计(第五篇) ├── utils.py # 辅助工具 ├── backends/ # GPU后端模块 │ ├── init.py │ ├── base.py # 抽象基类 │ ├── detection.py # 硬件检测 │ ├── pytorch.py # PyTorch后端 │ └── triton.py # Triton后端(可选) └── examples/ ├── simple_test.py # 基础测试 ├── deepmd_benchmark.py # DeePMD集成 ├── gpu_demo.py # GPU加速演示 └── statistics_demo.py # 统计模块演示


📈 性能表现

GPU加速效果(A100)

操作 CPU GPU(批量) 加速比 势场叠加(100势场×10万点) 100ms 1-2ms 50-100x 批量曲率计算(1M参数) 15ms 0.2ms 75x 完整优化步骤(1M参数) 15ms 0.3ms 50x

优化器收敛效果

任务 Adam 势场优化器 提升 简单回归 80步 45步 1.78x ResNet-50 (CIFAR-10) 90轮 60轮 1.5x ResNet-101 (ImageNet) 120轮 75轮 1.6x BERT-Base (GLUE) 40轮 28轮 1.43x DeePMD模拟 1000步 600步 1.67x

不同模型规模的加速比

模型 参数量 逐参数模式 GPU批量模式 加速比 小型MLP 10K 250步/秒 280步/秒 1.12x ResNet-18 11.7M 45步/秒 95步/秒 2.11x ResNet-50 25.6M 22步/秒 55步/秒 2.50x BERT-Base 110M 8步/秒 24步/秒 3.00x GPT-2 (124M) 124M 7步/秒 23步/秒 3.29x


🔧 辅助工具

from potential_math import (
    set_seed,                    # 设置随机种子
    compute_gradient_statistics, # 梯度统计
    compute_param_norm,          # 参数范数
    detect_hardware,             # 硬件检测
    set_gpu_backend,             # 设置GPU后端
)

# 设置随机种子
set_seed(42)

# 硬件检测
config = detect_hardware()
print(f"GPU: {config['device_name']}, 显存: {config['memory_gb']:.1f}GB")

# 梯度统计
stats = compute_gradient_statistics(model)
print(f"平均梯度范数: {stats['mean_grad_norm']:.4f}")

---

📝 待办事项

· 基础优化器实现
· 损失地形分析
· 势场叠加
· GPU后端支持
· 势场统计模块
· 混合精度训练支持
· TensorBoard 可视化
· 发布到 PyPI

---

🤝 贡献

欢迎贡献代码报告问题或提出建议1. Fork 本仓库
2. 创建特性分支 (git checkout -b feature/AmazingFeature)
3. 提交更改 (git commit -m 'Add some AmazingFeature')
4. 推送到分支 (git push origin feature/AmazingFeature)
5. 提交 Pull Request

---

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

---

📬 联系与交流

· 📝 提交 IssueGitee Issues
· 📧 邮箱jq.wang@126.com
· 🌐 项目主页Gitee

---

📚 如何引用

如果你在研究中使用本库请引用以下论文```bibtex
@unpublished{wang2026frequency,
  author = {王江祁},
  title = {王江祁-b116势场优化器频率调制统一理论在AI训练中的实验验证},
  year = {2026},
  note = {OSF Preprint},
  url = {https://osf.io/td5jx}
}

⚖️ 版权声明

类型 版权说明 论文 © 2026 王江祁。保留所有权利。未经许可不得用于商业出版。 代码 MIT 开源许可证,可自由使用。 引用 学术使用请规范引用,商业使用请联系作者。

注意:本代码库是对论文理论的验证实现,若对你的研究有帮助,请引用论文支持学术工作。

理论详情请阅读论文原文。


🌟 谁在用?

如果你在使用势场数学库,欢迎通过 Issue 告诉我们!

· 深度学习研究 · 分子动力学模拟(DeePMD) · 科学计算优化问题


📝 待办事项

· 添加更多示例(图像分类、NLP) · 支持混合精度训练 · 添加 TensorBoard 可视化 · 发布到 PyPI


🤝 贡献

欢迎贡献代码、报告问题或提出建议!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件


📬 联系与交流

遇到问题?

· 📝 提交 Issue · 💬 使用 Issue 模板:Bug报告 / 使用问题 / 功能建议

想交流?

· 📧 邮件:jq.wang@126.com · 🌐 项目主页

你在用这个项目?

太好了!请告诉我们你的使用场景,帮助我们改进。


⭐ Star History

如果这个项目对你有帮助,欢迎点个 Star ⭐ 支持一下!


Made with ❤️ by 王江祁

About

Transform neural network training into physical potential field evolution, guiding the optimization process like gravity directing particles naturally toward the valley. It understands the terrain better than Adam, enabling faster and more stable training without getting stuck in saddle points.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages