在一些深度学习或者机器学习模型中,我们常常需要一些超参数来调参。因为是超参数,它们可能无法用一些梯度下降这些算法来处理,只能用网格搜索(或者其他超参数方法)来处理。现在,由于非常强的可扩展性,通过在多个机器上设置不同的超参数,我们可以并行地计算增大计算效率。但是简单粗暴的这样并行未必是一个最好的方法,不妨考虑下面一个场景:
比如在我们仅仅需要调整学习率a这一个参数,来minimize损失函数的情景中:我们在第一台机器K1中选择a = [0.6,0.7,0.8,...],在第二台机器K2中选择a = [0.5,0.4,0.3,...]这样的一个策略(这个策略本来貌似就有点怪是吧 )。我们在K1,K2中分别以及并行了三次,结果发现有一个明显的K1中的loss逐渐下降,而K2中的loss逐渐上升的趋势。(这可能是因为最优的a在0.8以上,且随着a的减小损失函数增大)。如果我们已经发现K2中的超参数整体很差,我们可能有能力去选择停止K2的实验(中断一下运行的代码即可),并就已经观测到的模拟结果重新进行实验设计。这就涉及到序贯决策,可能要纳入一些分布式强化学习的内容进来,比如多臂老虎机。然后还有一些其它约束:比如出于时间/成本原因,我们最多设置不同参数模拟100次。
因为我不是博士生,知识储备和精力不够,不知道有没有文献讨论过这个事情,所以想请教一下有没有大佬了解过这个事情。