Files
b2txt25/TTA-E/README_Algorithms.md
2025-10-06 15:17:44 +08:00

4.6 KiB
Raw Blame History

TTA-E参数优化算法对比

本项目提供了两种强大的进化算法来优化TTA-E集成参数遗传算法(GA)差分进化(DE)

🧬 遗传算法 (GA_optimize.py)

算法特点

  • 模拟生物进化:选择、交叉、变异
  • 离散+连续优化:适合混合参数空间
  • 多样性保持:通过多种遗传操作维持种群多样性

配置参数

self.population_size = 20        # 种群大小
self.num_generations = 20        # 迭代代数  
self.num_parents_mating = 5      # 父代数量
self.mutation_percent_genes = 20 # 变异率(%)
keep_parents = 2                 # 保留最佳父代数

优势

  • 成熟稳定PyGAD库经过充分测试
  • 参数控制:丰富的参数调节选项
  • 并行支持:内置多线程处理
  • 精英保留:确保优秀解不丢失

适用场景

  • 参数空间复杂,需要探索多样性
  • 对算法透明度要求高
  • 需要精细调节进化策略

🔄 差分进化 (DE_optimize.py)

算法特点

  • 向量差分变异:基于种群差异生成新解
  • 连续优化专家:专为实数优化设计
  • 自适应收敛:自动调节搜索策略

配置参数

self.population_size = 15        # 种群大小倍数(实际=15×6=90)
self.max_iterations = 50         # 最大迭代次数
self.mutation_factor = 0.7       # 变异因子[0.5, 2.0] 
self.crossover_prob = 0.9        # 交叉概率[0, 1]
self.tolerance = 1e-6            # 收敛容忍度

优势

  • 收敛快速通常比GA更快找到全局最优
  • 参数少:调节参数相对简单
  • 数学严谨:基于向量运算,理论基础扎实
  • 内置精炼SciPy实现包含局部优化

适用场景

  • 连续参数优化为主
  • 对收敛速度要求高
  • 喜欢简洁算法配置

📊 性能对比

特性 遗传算法(GA) 差分进化(DE)
收敛速度 中等 较快
参数调节 复杂(7个主要参数) 简单(4个主要参数)
种群大小 固定20个体 自适应(15×6=90个体)
内存使用 较低 中等
算法透明 高(详细日志) 中等
局部优化 有(内置polish)
随机性 中等

🎯 优化目标对比

两种算法都优化相同的6维参数空间

参数维度
- gru_weight: [0, 1]           # GRU模型权重
- tta_weights[0]: [0, 5]       # Original增强权重  
- tta_weights[1]: [0, 5]       # Noise增强权重
- tta_weights[2]: [0, 5]       # Scale增强权重
- tta_weights[3]: [0, 5]       # Shift增强权重
- tta_weights[4]: [0, 5]       # Smooth增强权重

目标函数
minimize PER (Phoneme Error Rate)

🚀 使用建议

选择遗传算法(GA)的情况:

  • 🔍 探索阶段:初次优化,需要探索参数空间
  • ⚙️ 精细控制:需要调节具体的进化策略
  • 📈 渐进改进:可以接受较慢但稳定的优化过程
  • 🧪 实验研究:需要分析优化过程的详细信息

选择差分进化(DE)的情况:

  • 快速收敛:需要尽快找到优秀解
  • 🎯 精度优先:追求最终解的质量
  • 🔧 简单配置:希望算法参数调节简单
  • 🏁 生产应用:追求稳定可靠的优化结果

📝 运行示例

运行遗传算法:

conda activate b2txt25
cd /root/autodl-tmp/nejm-brain-to-text/TTA-E
python GA_optimize.py

运行差分进化:

conda activate b2txt25  
cd /root/autodl-tmp/nejm-brain-to-text/TTA-E
python DE_optimize.py

📈 预期结果

遗传算法输出:

Generation 15
Best solution: GRU weight=0.989, TTA weights=[2.297, 1.438, 3.661, 2.911, 0.156]
Best fitness (negative PER): -10.130
Best PER: 10.130%

差分进化输出:

🎯 Eval 145: New best PER = 9.874%
   GRU weight = 0.8234, TTA weights = [1.892, 2.156, 3.445, 1.234, 0.891]
📊 Progress: 150 evaluations, Best PER = 9.874%

🔧 高级配置

并行运行对比:

可以同时运行两种算法,最后比较结果:

# 终端1运行GA
python GA_optimize.py &

# 终端2运行DE  
python DE_optimize.py &

# 等待两者完成,比较结果

结果分析:

优化完成后,检查生成的结果文件:

  • ga_optimization_result_YYYYMMDD_HHMMSS.pkl
  • de_optimization_result_YYYYMMDD_HHMMSS.pkl

选择PER最低的方案作为最终配置。


建议对于TTA-E参数优化推荐先使用**差分进化(DE)快速找到优秀解,然后可选择性地使用遗传算法(GA)**进行精细调节或验证结果的稳定性。