# 更新日志 (Changelog) ## [2.0.0] - 2025-10-27 ### ✨ 新增功能 #### 训练改进 - **训练集/验证集划分**: 自动划分80%训练集和20%验证集 - **双Loss监控**: 每个epoch同时显示训练Loss和验证Loss - **早停机制(Early Stopping)**: 验证Loss连续20轮不降则自动停止训练 - **最佳模型保存**: 自动保存验证Loss最低的模型,而非最后一轮 - **智能训练**: 最多训练500轮,但通常会在150-200轮触发早停 #### 可视化功能 - **训练曲线图**: 自动生成 `training_loss.png` - 双曲线对比(训练Loss vs 验证Loss) - 标记最佳模型的epoch位置 - 提供完整曲线和后期收敛细节两个子图 - 支持中文字体显示 #### 诊断功能 - **训练总结报告**: 训练结束后自动输出 - 总训练轮数 - 最佳模型epoch - 最佳验证Loss - 最终训练Loss和验证Loss - 训练/验证Loss差异分析 - **智能诊断**: 自动判断模型状态 - ✓ 良好:没有明显过拟合 - ⚠ 尚可:有轻微过拟合倾向 - ✗ 警告:可能存在过拟合 ### 📝 文档更新 #### README.md - 更新训练流程说明,详细说明新增功能 - 新增"如何判断模型训练效果好坏"FAQ - 新增"验证Loss远高于训练Loss"问题解答 - 更新训练参数表格,包含早停和验证集信息 - 更新性能基准数据 - 标注版本号为2.0.0并列出更新内容 #### 提示词文件 - **prompt_simple.txt**: 更新训练脚本要求,包含验证集和早停 - **prompt_professional.txt**: 详细补充所有新功能的实现要求 - 验证集监控 - 早停机制 - 最佳模型保存 - 训练可视化 - 智能诊断 - 更新成功标准和重要提示 ### 🔧 代码优化 #### train_lstm.py - 代码从150行扩展到~330行(增加了大量功能但保持可读性) - 所有新增代码均有详细中文注释 - 改进的训练循环: ```python for epoch in range(500): # 最多500轮 # 训练阶段 model.train() # ... 训练代码 ... # 验证阶段 model.eval() with torch.no_grad(): # ... 验证代码 ... # 早停检查 if val_loss < best_val_loss: best_model_state = model.state_dict() else: patience_counter += 1 if patience_counter >= patience: break # 触发早停 ``` ### 📊 训练效果对比 #### v1.0.0(旧版本) - 固定训练100轮 - 只有训练Loss - 无法判断过拟合 - 可能保存次优模型 - 训练时间:~15秒 #### v2.0.0(新版本) - 智能训练150-200轮(早停) - 训练Loss + 验证Loss - 自动检测过拟合 - 保证保存最佳模型 - 训练时间:~30秒 - 新增训练曲线图 - 新增诊断报告 ### 🎯 教学价值提升 1. **理解过拟合**: 通过双Loss对比直观理解 2. **学习早停**: 了解工业界常用的训练技巧 3. **模型评估**: 学会判断模型质量的方法 4. **可视化思维**: 培养通过图表分析问题的能力 5. **最佳实践**: 掌握训练集/验证集划分的重要性 ### 📦 新增文件 - `training_loss.png` - 训练曲线图(自动生成) - `CHANGELOG.md` - 本更新日志 ### ⚙️ 依赖变化 需要安装matplotlib用于绘图(可选): ```bash pip install matplotlib ``` 如果未安装matplotlib,程序会跳过绘图但不影响训练。 ### 🐛 问题修复 - 修复了可能保存次优模型的问题(现在保存验证Loss最低的模型) - 优化了文件路径处理,确保所有输出文件保存到脚本目录 ### 🔮 未来计划 - [ ] 添加TensorBoard支持 - [ ] 支持学习率动态调整 - [ ] 添加多模型对比功能 - [ ] 支持分布式训练 - [ ] 增加更多技术指标特征 --- ## [1.0.0] - 2025-10-27(初始版本) ### 基础功能 - LSTM模型训练 - CUDA GPU加速 - MT5数据获取 - ONNX模型导出 - MQL5 EA交易 - 基础文档 --- **版本说明**: - 主版本号:重大功能变更或架构调整 - 次版本号:新增功能或重要改进 - 修订号:Bug修复或小优化 **当前版本**: 2.0.0 **维护状态**: 活跃开发中