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

163 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)**进行精细调节或验证结果的稳定性。