Files
b2txt25/TTA-E/README_Algorithms.md

163 lines
4.6 KiB
Markdown
Raw Normal View History

2025-10-06 15:17:44 +08:00
# TTA-E参数优化算法对比
本项目提供了两种强大的进化算法来优化TTA-E集成参数**遗传算法(GA)**和**差分进化(DE)**。
## 🧬 遗传算法 (GA_optimize.py)
### 算法特点
- **模拟生物进化**:选择、交叉、变异
- **离散+连续优化**:适合混合参数空间
- **多样性保持**:通过多种遗传操作维持种群多样性
### 配置参数
```python
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)
### 算法特点
- **向量差分变异**:基于种群差异生成新解
- **连续优化专家**:专为实数优化设计
- **自适应收敛**:自动调节搜索策略
### 配置参数
```python
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维参数空间
```python
参数维度:
- 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)的情况:
-**快速收敛**:需要尽快找到优秀解
- 🎯 **精度优先**:追求最终解的质量
- 🔧 **简单配置**:希望算法参数调节简单
- 🏁 **生产应用**:追求稳定可靠的优化结果
## 📝 运行示例
### 运行遗传算法:
```bash
conda activate b2txt25
cd /root/autodl-tmp/nejm-brain-to-text/TTA-E
python GA_optimize.py
```
### 运行差分进化:
```bash
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%
```
## 🔧 高级配置
### 并行运行对比:
可以同时运行两种算法,最后比较结果:
```bash
# 终端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)**进行精细调节或验证结果的稳定性。