量子计算9 发表于 2022-3-2 16:08

为什么transformer要用adam?

adam只是一种一阶的优化算法,优化算法有零阶优化算法、一阶优化算法和二阶优化算法之分。零阶优化算法、一阶优化算法和二阶优化都是通过对目标函数逼近或对目标函数加罚函数的方法将约束的优化问题转换为非约束的优化问题。三种算法的主要区别在于:零阶优化算法不利用一阶导数信息,一阶优化算法利用一阶导数信息,而二阶优化算法则是利用二阶导数信息和一阶导数信息;因此,各阶优化算法迭代一次所需要的时间分别是:二阶优化算法一阶优化算法零阶优化算法。零阶优化算法、一阶优化算法和二阶优化都是通过对目标函数逼近或对目标函数加罚函数的方法将约束的优化问题转换为非约束的优化问题。三种算法的主要区别在于:零阶优化算法不利用一阶导数信息,一阶优化算法利用一阶导数信息,而二阶优化算法则是利用二阶导数信息和一阶导数信息;因此,各阶优化算法迭代一次所需要的时间分别是:二阶优化算法一阶优化算法零阶优化算法。
零阶优化算法包括:随即搜索法、模式搜索算法、模拟退火算法等
一阶优化算法包括:批量梯度下降法(BGD)、Adam等
二阶优化算法包括:牛顿法等
因为损失函数的收敛性和可导可微等条件的限制,深度学习中大部分使用的都是一阶优化算法。而adam作为一个一阶优化算法有以下几个优点:1.计算效率高2.很少的内存需求3.梯度的对角线重缩放不变(这意味着亚当将梯度乘以仅带正因子的对角矩阵是不变的,以便更好地理解此堆栈交换)4.非常适合数据和/或参数较大的问题5.适用于非固定目标6.适用于非常嘈杂和/或稀疏梯度的问题7.超参数具有直观的解释,通常需要很少的调整。因此,adam被广泛使用。所以,在Transformer中使用adam。当然,也可以选择其他优化算法,只是adam相对优秀效果好。
页: [1]
查看完整版本: 为什么transformer要用adam?