Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

ZJU-AI-course

浙江大学软件学院 - 人工智能算法与系统 (2025秋) 实训作业仓库

本仓库包含浙江大学软件学院《人工智能算法与系统》课程(2025秋)三个实训作业的完整代码与解决方案。本项目采用了“本地训练 + 平台推理”的策略,在本地高性能计算环境中训练模型,并将最优权重上传至智海 Mo 平台进行评测。

本地开发环境

本项目在以下本地环境中进行开发与训练:

  • GPU: NVIDIA RTX 50 Series (16GB VRAM)
  • CUDA: 13.0
  • Python: 3.11+
  • PyTorch: 2.9.1 (配合 CUDA 13.0)
  • 其他依赖: torch-geometric, opencv-python, openai, numpy, pandas

整体工作流

为了克服在线平台算力限制并利用本地显存优势,所有实验均遵循以下流程:

  1. 本地训练: 使用 train.py (或对应文件夹下的训练脚本) 在本地 GPU 上进行模型训练。
  2. 结果保存: 训练好的最佳模型权重(.pt.pth)保存至 results/ 目录。
  3. 上传部署: 将模型权重文件上传至智海 Mo 平台对应的 results 文件夹。
  4. 在线推理: 将仓库中的推理脚本(如 main.py)复制到平台,加载上传的权重进行最终预测。

实验一:金融异常检测 (Financial Anomaly Detection)

基于 DGraphFin 动态图数据集,识别欺诈用户节点。

文件结构

  • 1/train.py: 本地训练脚本。
  • 1/main.py: 平台推理脚本(提交用)。
  • 1/results/model.pt: 训练好的 GraphSAGE 模型权重。

核心算法与优化

  • 模型选择: 使用 GraphSAGE 模型,相比 MLP 能更好地捕捉图结构信息(邻居节点的聚合特征)。
  • 数据预处理:
    • 无向图转换: 使用 T.ToUndirected() 增强信息流动。
    • 特征归一化: 对节点特征进行标准化处理,加速收敛。
  • 训练策略:
    • 混合精度训练 (AMP): 使用 torch.amp.autocastGradScaler,显著降低显存占用(约减少 50%),同时加快训练速度。
    • 参数调优: 将隐藏层维度设为 128,Dropout 设为 0.5,在防止过拟合与保留特征之间取得平衡。
    • 类别平衡: 针对金融欺诈数据的类别不平衡问题,在 Loss 计算中引入了类别权重。

实验二:垃圾分类 (Garbage Classification)

基于图像数据的 26 分类任务。

文件结构

  • 2/2train_local.py: 本地训练脚本(包含 Mixup 等增强)。
  • 2/2main.py: 平台推理脚本(包含 TTA)。
  • 2/results/efficientnet_b3_fixed.pth: 训练好的模型权重。

核心算法与优化

  • 模型架构: 放弃了 Baseline 的 MobileNetV2,采用 EfficientNet-B3。该模型在 ImageNet 上有更高的准确率,且参数量适中,适合 16GB 显存微调。
  • 数据增强 (Data Augmentation):
    • Mixup: 在训练过程中混合两张图片及其标签,强制模型学习线性插值特征,极大提升了模型的鲁棒性。
    • 常规增强: 随机裁剪、旋转、水平翻转、颜色抖动等。
  • 推理优化 (Test-Time Augmentation, TTA):
    • 在预测阶段,不仅仅预测原图,而是对图片进行 “中心+四角裁剪” 以及 “水平翻转”,共计 10 张子图 进行预测。
    • 对 10 次预测结果取平均(Soft Voting),并引入温度缩放 (Temperature Scaling) 平滑概率分布,显著提升了泛化能力。

实验三:中医辨证系统 (TCM Diagnosis System)

基于患者症状文本,输出“证型”与“治法”。

文件结构

  • 3/main.py: 平台推理脚本(集成 RAG 与 LLM)。

核心算法与优化

本实验未使用传统的微调,而是采用了 RAG (检索增强生成) + 规则约束 的方案,以极低的成本获得了极高的语义相似度分数。

  1. 强力清洗 (Data Cleaning):
    • 针对性去除“患者男性,身高...”等与病情无关的噪音,只提取“现症见”或“主诉”后的核心症状文本。
  2. 知识库构建 (Knowledge Base):
    • 预加载训练集 result.csv,建立绝对映射表证型 -> 最标准治法。确保只要证型判断正确,治法输出与标准答案一字不差。
  3. 多级推理策略:
    • Level 1 (清洗文本检索): 计算输入症状与知识库的相似度(基于 difflib)。如果相似度 > 0.5,直接通过查表返回结果(RAG)。
    • Level 2 (KNN 投票): 选取最相似的 Top-3 案例,如果其中有两个案例证型一致,则采用该证型。
    • Level 3 (LLM 兜底): 调用 Qwen2.5-7B-Instruct (通过 SiliconFlow API),利用 Few-Shot Prompting 让大模型进行判断。
  4. 强制一致性: 无论 LLM 输出什么治法,最终输出均强制替换为知识库中的标准治法,避免因“同义词”导致的扣分。

实验结果与评分

三个实验成绩如下:

实验一:金融异常检测 AUC=0.79

实验一分数

实验二:垃圾分类=98

实验二分数

实验三:中医辨证系统=95

实验三分数


本仓库代码仅供学习参考,请遵守学术诚信原则。

About

浙江大学软件学院-人工智能算法与系统-2025秋-智海mo平台-三个实训作业-【金融异常检测】【手写数字识别与垃圾分类】【中医辨证系统实现】-思路与代码参考仓库

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages