analog-neural-training 1.0.0
模拟计算启发式神经网络训练系统：基于ODE积分器的高能效训练框架
License: MIT
Requires Python: >=3.8
Keywords: deep-learning, neural-networks, analog-computing, ode-solvers, energy-efficient-ai, optimization, neuromorphic-computing, machine-learning

# 🚀 模拟计算启发式神经网络训练系统

[![PyPI version](https://badge.fury.io/py/analog-neural-training.svg)](https://badge.fury.io/py/analog-neural-training)
[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![CI](https://github.com/EagleFandel/analog-neural-training/workflows/CI/badge.svg)](https://github.com/EagleFandel/analog-neural-training/actions)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

> **将神经网络训练转化为连续时间动力系统，利用模拟计算思想实现10-100×能效提升**

本项目提供完整的基于ODE积分器的神经网络训练框架，包括五种优化器、硬件仿真器、能耗分析工具和应用案例。

## ✨ 核心特性

### 🎯 五种模拟启发优化器

| 优化器 | 特点 | 适用场景 | 能效提升 |
|--------|------|----------|----------|
| **RK4** | 高精度四阶龙格-库塔 | 通用训练 | 0.8× |
| **DOPRI54** | 自适应步长 | 平滑损失景观 | **0.5×** ⚡ |
| **IMEX** | 半隐式方法 | 刚性问题 | 允许10-100×步长 |
| **Symplectic** | 辛积分保能量 | 长期训练/强化学习 | 能量漂移<1% |
| **SDE** | 随机噪声鲁棒 | 低精度硬件 | 模拟ADC/DAC约束 |

### 🔧 完整工具链

- ✅ **跨框架支持**：NumPy / PyTorch / TensorFlow
- ✅ **硬件仿真器**：模拟ADC/DAC量化、热噪声、电容泄漏
- ✅ **能耗分析**：数字 vs 模拟架构对比（理论100×提升）
- ✅ **约束训练**：功耗预算、延迟限制、内存约束
- ✅ **可视化Dashboard**：Streamlit交互界面，Pareto前沿分析，PDF报告生成
- ✅ **理论分析工具**：PL条件验证、Lyapunov稳定性、能量漂移分析

### 📊 实验验证

在MNIST数据集上（10K样本，100步训练）：

```
优化器          准确率    NFE    时间     能耗(相对)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Adam (基线)     86.9%    100    2.1s     1.0×
DOPRI54 ⚡     85.2%    120    1.6s     0.5×  (-50%)
RK4             84.4%    400    2.5s     0.8×  (-20%)
Symplectic      83.8%    200    2.0s     0.7×  (-30%)
```

## 🚀 快速开始（5分钟）

### 安装

```bash
git clone https://github.com/your-repo/analog-training.git
cd analog-training
pip install -r requirements.txt
```

### 最简单的例子

```python
from src.models.mlp import MLP
from src.optim.analog_inspired import RK4Optimizer
import numpy as np

# 创建模型
model = MLP([10, 32, 2])

# 准备数据
x_train = np.random.randn(100, 10)
y_train = np.random.randint(0, 2, 100)

# 创建优化器（RK4积分器）
optimizer = RK4Optimizer(
    model.loss_and_grad,
    model.theta0,
    lr=1e-3
)

# 训练
for step in range(100):
    theta, loss = optimizer.step(x_train, y_train, task="classification")
    if step % 20 == 0:
        print(f"步骤 {step}: 损失 = {loss:.4f}")
```

### PyTorch集成

```python
import torch
from src.optim.pytorch_adapters import TorchRK4

model = torch.nn.Sequential(
    torch.nn.Linear(10, 32),
    torch.nn.ReLU(),
    torch.nn.Linear(32, 2)
)

optimizer = TorchRK4(model.parameters(), lr=1e-3)

# 训练循环
for epoch in range(10):
    def closure():
        optimizer.zero_grad()
        outputs = model(x_train)
        loss = criterion(outputs, y_train)
        loss.backward()
        return loss
    
    loss = optimizer.step(closure=closure)
```

## 📚 文档

### 快速开始

- **[快速入门](GETTING_STARTED.md)** - 5分钟上手指南 ⭐
- **[快速开始](QUICKSTART.md)** - 代码示例和常见任务

### 完整文档

- **[用户指南](docs/user_guide.md)** - 完整API文档和使用教程
- **[理论背景](docs/theory.md)** - 连续时间训练的数学基础
- **[理论分析工具](docs/theoretical_analysis.md)** - PL条件、Lyapunov稳定性、能量漂移
- **[硬件设计](docs/hardware_design_spec.md)** - 模拟芯片实现方案
- **[PDF导出指南](docs/pdf_export_guide.md)** - PDF报告生成文档

### 项目信息

- **[项目结构](PROJECT_STRUCTURE.md)** - 完整文件组织说明
- **[贡献指南](CONTRIBUTING.md)** - 如何参与项目开发
- **[更新日志](CHANGELOG.md)** - 版本更新记录
- **[项目总结](PROJECT_SUMMARY.md)** - 已完成工作总结

### 示例代码

- **[应用案例](examples/use_cases/)** - 4个实际场景演示

## 🎓 应用案例

### 案例1：IoT传感器在线学习

```bash
python examples/use_cases/case1_iot_sensor.py
```

在10 Joules能耗预算内，DOPRI54达到82.5%准确率，优于Adam的78.2%。

### 案例2：手机端模型微调

```bash
python examples/use_cases/case2_mobile_finetuning.py
```

个性化准确率提升+3.5%，延迟<50ms，满足用户体验要求。

### 案例3：强化学习（倒立摆）

```bash
python examples/use_cases/case3_reinforcement_learning.py
```

辛积分保持能量稳定，长期训练回报提升32%。

### 案例4：刚性优化问题

```bash
python examples/use_cases/case4_stiff_optimization.py
```

IMEX方法在强正则化下允许100×更大步长，避免发散。

## 🧪 运行完整基准测试

```bash
# 运行所有基准测试
python experiments/benchmark_suite.py --all --steps 100

# 边缘设备场景
python experiments/edge_device_demo.py --scenario all

# 理论分析演示
python experiments/theoretical_analysis_demo.py

# 启动可视化Dashboard（推荐方式）
python run_dashboard.py

# 或者直接使用streamlit命令
streamlit run src/visualization/advanced_dashboard.py
```

## 📄 PDF报告导出

现已支持基于 **ReportLab** 的专业PDF报告生成，覆盖所有5个标签页的完整内容。

### 快速使用

1. **在Dashboard中导出**：
   ```bash
   python run_dashboard.py
   # 点击侧边栏的"生成PDF报告"按钮
   ```

2. **命令行生成**：
   ```bash
   python src/pdf_export/cli_demo.py
   ```

### 功能特性

- ✅ 导出所有标签页（损失曲线、能耗对比、Pareto前沿、综合评估、硬件仿真）
- ✅ 原生图表渲染（线图、柱状图、散点图、雷达图）
- ✅ 中文字体支持（STSong-Light内置字体）
- ✅ 专业排版（A4页面、自动分页、样式化章节）
- ✅ 详细日志记录（`logs/pdf_export.log`）
- ✅ 清晰错误提示

详细文档：`docs/pdf_export_guide.md`

## 📊 项目结构

```
├── src/
│   ├── optim/              # 优化器库
│   │   ├── analog_inspired.py      # NumPy实现
│   │   ├── pytorch_adapters.py     # PyTorch版本
│   │   └── tensorflow_adapters.py  # TensorFlow版本
│   ├── hardware/           # 硬件仿真
│   │   ├── analog_simulator.py     # 模拟电路仿真器
│   │   ├── energy_models.py        # 能耗模型
│   │   └── constrained_training.py # 约束训练器
│   ├── models/             # 网络模型
│   ├── ode/                # ODE积分器
│   ├── metrics/            # 评估指标
│   └── visualization/      # 可视化
├── experiments/            # 实验脚本
│   ├── benchmark_suite.py          # 基准测试
│   └── edge_device_demo.py         # 边缘设备演示
├── examples/use_cases/     # 应用案例
├── analysis/               # 理论分析工具
├── docs/                   # 文档
└── reports/                # 论文草稿
```

## 🔬 理论基础

### Polyak-Łojasiewicz收敛保证

在PL条件下，梯度流ODE满足指数收敛：

$$L(\theta(t)) - L^* \le (L(\theta_0) - L^*)e^{-2\mu t}$$

### 能效提升原理

| 计算 | 数字实现 | 模拟实现 | 加速比 |
|------|---------|---------|--------|
| 矩阵乘法 | O(N²) FLOPs | KCL天然求和 | 100-1000× |
| 梯度计算 | 反向传播 | 跨导放大器 | 10-100× |
| 参数更新 | 逐个寄存器 | 电容充放电 | 50-100× |

**混合架构**（80%模拟+20%数字）：理论加速**35-100×**

## 📈 实验结果摘要

### MNIST分类（完整对比）

| 方法 | 准确率 | NFE | 能耗 | 特点 |
|------|--------|-----|------|------|
| Adam | 86.9% | 100 | 1.0× | 基线 |
| SGD | 82.1% | 100 | 0.95× | 简单 |
| **DOPRI54** | **85.2%** | **120** | **0.5×** | 最佳能效 ⚡ |
| RK4 | 84.4% | 400 | 0.8× | 高精度 |
| IMEX | 85.0% | 150 | 0.6× | 处理刚性 |
| Symplectic | 83.8% | 200 | 0.7× | 长期稳定 |

### 边缘设备（10J预算）

| 优化器 | 完成步数 | 准确率 | 效率(acc/J) |
|--------|----------|--------|-------------|
| Adam | 42 | 78.2% | 0.078 |
| **DOPRI54** | **68** | **82.5%** | **0.083** ✅ |

## 🏆 主要贡献

1. **理论创新**：首次系统性地将高阶ODE积分器应用于神经网络训练
2. **算法设计**：五种优化器覆盖不同场景，有理论收敛保证
3. **硬件映射**：详细的混合数字-模拟架构设计与能耗分析
4. **开源实现**：完整工具链，支持三大深度学习框架
5. **实验验证**：多个数据集与应用场景的全面测试

## 📝 引用

如果您在研究中使用了本项目，请引用：

```bibtex
@article{analog_training_2025,
  title={基于模拟计算的神经网络训练资源优化：理论、实现与实验验证},
  author={Your Name},
  journal={arXiv preprint},
  year={2025}
}
```

## 🤝 贡献

欢迎贡献！请查看 [CONTRIBUTING.md](CONTRIBUTING.md) 了解详情。

## 📄 许可证

本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。

## 🔗 相关资源

- **论文草稿**：[reports/paper_draft.md](reports/paper_draft.md)
- **应用报告**：[reports/analog_computing_applications.md](reports/analog_computing_applications.md)
- **硬件规范**：[docs/hardware_design_spec.md](docs/hardware_design_spec.md)
- **可视化Demo**：运行 `streamlit run src/visualization/advanced_dashboard.py`

## 📧 联系

- 项目主页：https://github.com/your-repo/analog-training
- 问题反馈：[GitHub Issues](https://github.com/your-repo/issues)
- 邮箱：your.email@example.com

---

**⭐ 如果本项目对您有帮助，请给个星标支持！**