神经生物学研究【20260003】

ANNA 模糊运算统一学习器

写在前面的话

整个神经生物学研究的代码都将放在下面仓库中

https://gitee.com/waterruby/ANNA.git

📖 项目概述

本项目是 ANNA (自主神经生物学网络架构)的一部分,目标是用一个神经网络同时学会多种模糊运算 (模糊加法、模糊乘法、模糊逻辑等)。模型通过将"运算类型"作为输入条件,能够在输入两个隶属度 x, y ∈ [0,1] 和指定的运算类型后,输出该运算的结果。训练完成后,模型可以在极低的误差下模拟所有已学习的模糊算子。

支持的模糊运算

运算名称 数学表达式 备注
有界和 min(1, x+y) t-conorm
概率和 x + y - x*y 代数和
有界积 max(0, x+y-1) t-norm
代数积 x * y 乘积 t-norm
最大值 max(x, y) 典型 s-norm
最小值 min(x, y) 典型 t-norm
爱因斯坦和 (x+y)/(1+xy) 另一种 t-conorm

🧠 模型架构

  • 输入维度2 + NUM_OPS
    • 前2维:x, y(隶属度,0~1)
    • NUM_OPS 维:运算类型的 one‑hot 编码(当前 NUM_OPS=7
  • 隐藏层:2 层全连接,每层 128 个神经元,激活函数 ReLU
  • 输出层 :1 个神经元,激活函数 Sigmoid,保证输出在 [0,1]
  • 损失函数:均方误差(MSE)
  • 优化器 :Adam,学习率 1e-3

🗂️ 数据集与训练策略

  • 数据生成 :每轮动态生成随机 (x, y),为每个样本随机选择一种运算,计算真实输出
  • 训练数据量 :每个 epoch 生成 BATCH_SIZE × NUM_BATCHES_PER_EPOCH 个样本(默认 256 × 2000 = 512,000)
  • 噪声注入 :在训练阶段可添加高斯噪声(默认 σ=0.01),提高泛化鲁棒性
  • 训练轮数:默认 30 个 epoch
  • 断点续训:支持中断后从最近 checkpoint 恢复

🚀 如何使用

环境要求

  • Python 3.8+
  • PyTorch 2.0+
  • NumPy, Matplotlib

安装依赖

bash 复制代码
pip install torch matplotlib numpy

快速运行(默认参数)

bash 复制代码
python fuzzy_learn.py

训练过程和最终评估指标会打印到控制台,并弹出每种运算的 3D 曲面对比图。

命令行参数(可选)

若需自定义运行参数,可使用 argparse 扩展(代码中已预留,可自行取消注释)。当前硬编码参数如下:

参数 默认值 含义
CHECKPOINT_DIR './fuzzy_checkpoints' checkpoint 保存目录
SAVE_EVERY_N_EPOCHS 5 保存间隔(epoch)
BATCH_SIZE 256 批量大小
NUM_BATCHES_PER_EPOCH 2000 每 epoch 的 batch 数
EPOCHS 30 总训练轮数
NOISE_STD 0.01 训练噪声标准差
HIDDEN_UNITS 128 隐藏层神经元数量

修改方式:直接编辑脚本开头的对应变量。

断点续训与模型保存

  • 训练过程中每 SAVE_EVERY_N_EPOCHS 个 epoch 自动保存 checkpoint 到指定目录,同时保存 checkpoint_latest.pt
  • 再次运行脚本时,会自动加载最新的 checkpoint 并继续训练(若已完成则跳过)
  • 若要完全重新训练,请删除 checkpoint 目录下的所有 .pt 文件

📊 训练结果(30 轮后)

各运算的测试误差(无噪声测试集)

运算 MSE MAE MaxAE
有界和 2.992e-5 0.004419 0.015637
概率和 9.39e-6 0.002359 0.015478
有界积 1.796e-5 0.002567 0.050808
代数积 1.398e-5 0.003068 0.031652
最大值 1.931e-5 0.003211 0.020418
最小值 9.01e-6 0.001950 0.022384
爱因斯坦和 1.728e-5 0.003380 0.020421

混合运算整体性能

  • 整体 MSE1.597e-5(所有运算混合的 20,000 个测试样本)

结论 :单一神经网络成功以极高精度模拟了 7 种不同的模糊运算,最大绝对误差不超过 5%,绝大多数在 2% 以内。有界积的 MaxAE 略高(5%),推测在 x+y≈1 边界附近拟合稍差。

🖼️ 可视化

训练结束后,程序会为每种运算绘制真值曲面(左)与模型预测曲面(右)的 3D 对比图,方便直观评估拟合效果。

⚠️ 中文显示问题 :若图表中中文无法显示(显示为方框),请在 import matplotlib.pyplot as plt 后添加以下代码:

python 复制代码
plt.rcParams['font.sans-serif'] = ['SimHei']   # 或 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False

📁 文件结构

复制代码
experiments/
├── fuzzy_learn.py          # 主训练脚本
├── fuzzy_checkpoints/      # 自动生成的 checkpoint 目录
│   ├── checkpoint_epoch_5.pt
│   ├── checkpoint_epoch_10.pt
│   └── checkpoint_latest.pt
└── README.md               # 本文档

🤝 贡献

本项目为 ANNA 神经生物学研究的一部分,欢迎提出 Issues 或 Pull Requests。

https://gitee.com/waterruby/ANNA.git

📄 许可证

Apache 2.0 License

相关推荐
雨落Re41 分钟前
如何设计一个高质量Skill
人工智能
Token炼金师1 小时前
大模型权重文件全指南:从格式选择到优化实战
人工智能
阿牛哥_GX1 小时前
CDP 浏览器操控原理:让脚本接管你的浏览器
人工智能
ThreeS1 小时前
手搓MiniVLA全实战教程-一步一步用pytorch解释原理与思路
人工智能·python
米小虾2 小时前
Loop Engineering —— 循环的设计与自主执行
人工智能·agent
米小虾2 小时前
Harness Engineering —— 系统的安全护栏
人工智能·agent
火山引擎开发者社区3 小时前
积分当钱花,火山引擎开发者激励计划首月消费双倍回馈
人工智能
aqi003 小时前
15天学会AI应用开发(十)把文本嵌入模型换成国产模型
人工智能·python·ai编程
MobotStone3 小时前
为什么在AI时代,“好奇心”成了最值钱的能力?
人工智能