PaddlePaddle / PaddleHub

Awesome pre-trained models toolkit based on PaddlePaddle. (400+ models including Image, Text, Audio, Video and Cross-Modal with Easy Inference & Serving)【安全加固,暂停交互,请耐心等待】
https://www.paddlepaddle.org.cn/hub
Apache License 2.0
12.75k stars 2.07k forks source link

有关autodl 超参数优化的问题 #1318

Open LilyCaiZL opened 3 years ago

LilyCaiZL commented 3 years ago

请问paddlehub的大佬,我们在定义超参数搜索范围的时候,有最大值和最小值,为什么还要设定初始值,而不是直接从最大值和最小值开始搜索?另外超参数搜索范围我们应该根据什么定义?我是用我的经验和我gpu的性能定义的范围,请问这个范围在定义的时候有什么科学依据或者论文可以参考的吗?谢谢解答

haoyuying commented 3 years ago

您好,具体使用细节请参考https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.8/docs/tutorial/autofinetune.md 在有最大值和最小值时,给定一个初始值,能够使得初始化时候超参在设定的初始值周围波动,且波动的方向会更多,若有一定的先验知识,会使得查找超参更容易收敛,效果会更好。如果从最大值和最小值开始搜索,会使得刚开始的搜索方向为单一的方向,同时超参搜索收敛难度会更大。超参搜索范围的定义主要还是来源于经验。目前paddle2.0还不支持autodl超参优化的功能,在今后的更新迭代中会在2.0版本丰富该功能,请您持续关注PaddleHub的动态。

LilyCaiZL commented 3 years ago

请问为什么刚开始的搜索方向为单一的方向,超参搜索收敛难度会更大?有什么理论依据吗?这里的“先验知识”是什么意思呢?

haoyuying commented 3 years ago

假设您设定的最小值最大值是[0,1],如果从0开始搜索,就只有增长这一个方向,因为设置了--round,如果只有一个方向的话,对于搜索中小于最小值0的点就会被舍弃,但是还会占用round数,会导致浪费round的浪费。如果设置0.5,就可以从增大和减小两个方向范围,如果预先知道这个超参可能会收敛在0.5附近,那初始值设定成0.5,就会比初始值定义为0收敛的快。先验知识就是炼丹经验🤫,没什么理论依据。若想获得更理论的依据,可以仔细阅读https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.8/docs/tutorial/autofinetune.md 中提到的内容。

LilyCaiZL commented 3 years ago

autodl 这里提出了round 的概念是因为使用了粒子群优化算法结合贝叶斯或者SHE2的超参数优化算法是吗?请问为什么要使用粒子群优化算法呢?在效果上与不用粒子群优化 算法的区别有多大,请问有什么论文或数据支持说明你们选择了粒子群优化算法呢?谢谢解答

xhyccc commented 3 years ago

优化离子群是一种常见的黑盒子优化算法,可以充分发挥并行化的优势。至于能不能一定保证在所有case上比其他算法好,我认为是无法保证的。 https://en.wikipedia.org/wiki/Particle_swarm_optimization 关于各种黑盒子算法调优 https://medium.com/next-level-german-engineering/hyperparameter-optimisation-utilising-a-particle-swarm-approach-5711957b3f3f https://www.automl.org/wp-content/uploads/2018/09/chapter1-hpo.pdf