
# 自动模型优化介绍
ModelArts训练支持超参搜索功能，自动实现模型超参搜索，为您的模型匹配最合适的超参。
在模型训练过程中，有很多超参需要根据任务进行调整，比如learning_rate、weight_decay等，这一工作往往需要一个有经验的算法工程师花费一定精力和大量时间进行手动调优。ModelArts支持的超参搜索功能，在无需算法工程师介入的情况下，即可自动完成超参的调优，在速度和精度上超过人工调优。
ModelArts支持以下三种超参搜索算法：
- 贝叶斯优化（SMAC）
- TPE算法
- 模拟退火算法（Anneal）
 #### 贝叶斯优化（SMAC）
贝叶斯优化假设超参和目标函数存在一个函数关系。基于已搜索超参的评估值，通过高斯过程回归来估计其他搜索点处目标函数值的均值和方差。根据均值和方差构造采集函数（Acquisition Function），下一个搜索点为采集函数的极大值点。相比网格搜索，贝叶斯优化会利用之前的评估结果，从而降低迭代次数、缩短搜索时间；缺点是不容易找到全局最优解。
表1贝叶斯优化的参数说明 
| 参数          | 说明                     | 取值参考                                       |
|:---|:---|:---|
| num_samples | 搜索尝试的超参组数              | int，一般在10-20之间，值越大，搜索时间越长，效果越好             |
| kind        | 采集函数类型                 | string，默认为'ucb'，可能取值还有'ei'、'poi'，一般不建议用户修改 |
| kappa       | 采集函数ucb的调节参数，可理解为上置信边界 | float，一般不建议用户修改                            |
| xi          | 采集函数poi和ei的调节参数        | float，一般不建议用户修改                            |
   
 #### TPE算法
TPE算法全称Tree-structured Parzen Estimator，是一种利用高斯混合模型来学习超参模型的算法。在每次试验中，对于每个超参，TPE为与最佳目标值相关的超参维护一个高斯混合模型l(x)，为剩余的超参维护另一个高斯混合模型g(x)，选择l(x)/g(x)最大化时对应的超参作为下一组搜索值。
表2TPE算法的参数说明 
| 参数               | 说明                        | 取值参考                           |
|:---|:---|:---|
| num_samples      | 搜索尝试的超参组数                 | int，一般在10-20之间，值越大，搜索时间越长，效果越好 |
| n_initial_points | 采用TPE接近目标函数之前，对目标函数的随机评估数 | int，一般不建议用户修改                  |
| gamma            | TPE算法的一定分位数，用于划分l(x)和g(x) | float，范围(0,1)，一般不建议用户修改        |
   
 #### 模拟退火算法（Anneal）
模拟退火算法即Anneal算法，是随机搜索中一个简单但有效的变体，它利用了响应曲面中的平滑度。退火速率不自适应。Anneal算法从先前采样的一个试验点作为起点，然后从与先验分布相似的分布中采样每组超参数，但其密度更集中在选择的试验点周围。随着时间推移，算法会倾向于从越来越接近最佳点处采样。在采样过程中，算法可能绘制一个次佳试验作为最佳试验，以一定概率跳出局部最优解。
表3模拟退火算法的参数说明 
| 参数           | 说明                         | 取值参考                           |
|:---|:---|:---|
| num_samples  | 搜索尝试的超参组数                  | int，一般在10-20之间，值越大，搜索时间越长，效果越好 |
| avg_best_idx | 要探索试验的几何分布平均，从按照分数排序的试验中选择 | float，一般不建议用户修改                |
| shrink_coef  | 随着更多的点被探索，邻域采样大小的减少率       | float，一般不建议用户修改                |
   
