目录
一.什么是梯度下降?
1. 沿着梯度下降的方向求解极小值.梯度下降过程和下山场景类似的微分的损失函数,代表着一座山寻找函数的最小值,也就是山底.
2.步骤:
输入:初始化位置,每步的距离为a,输出从位置s到达山底
步骤1:令初始化的位置为山的任意位置s
步骤2:在当前位置环顾四周,如果四周都比s高返回s
步骤3:在当前位置环顾四周,寻找坡度最陡的方向,令其为x方向
步骤4:沿着x方向往下走,长度为a到达新的s
步骤5:在s位置环顾四周,如果四周都比s高则返回s,否则转到第三步.
二.什么是梯度?
单变量函数中,梯度就是某一点切线斜率(某一点的导数 );有方向为函数增长最快的方向.
多变量函数中,梯度就是某一点的偏导,有方向:偏导分量的向量方向
梯度下降公式:
循环迭代当前的梯度,更新当前的权重参数
α:学习率(步长),不能太大也不能太小,机器学习中0.001~0.01
梯度是上升最快的方向,我们寻找的是下降最快的,所以加负号.
梯度下降优化过程:
1.给定初始位置,步长(学习率 )
2.计算该点当前的梯度的负方向
3.向该方向移动步长
4.重复2-3步,直至收敛
两次差距小于指定的阈值
达到指定的迭代次数
学习率步长:
1.步长决定了梯度下降迭代的过程中,每一步沿梯度的负方向前进的长度
2.学习率太小,下降的速度会慢
3.学习率太大,容易造成错过最低点.产生下降过程中的震荡,甚至梯度爆炸.
三.梯度下降法分类
1.全梯度下降算法 FGD
每次迭代时,使用全部样本的梯度值
缺点:使用全部数据集,训练速度慢
2.随机梯度下降算法SGD
每次迭代时,随机选择并使用一个样本的梯度值
优点:简单,高效.
缺点:不稳定,遇上噪声,则容易陷入局部最优解
3.小批量梯度下降算法 min-bantch
每次迭代时,随机选择并使用小批量的样本梯度值 m个样本中,选x个进行迭代(1<x<m)
若batch_size=1就是SGD,batch_size=n 就是FGD
目前使用最多的,结合了SGD的胆大,FG的心细,表现在两者之间.避开了FGD的运算 效 率 低,和SGD的不稳定.
4.随机平均梯度下降算法SAG
每次迭代时,随机选择一个样本的梯度值和以往样本的梯度值的均值
1.随机选择a样本,计算梯度并存储到列表,然后计算列表中的梯度均值,更新参数
2.在随机选择b样本,计算梯度值存储到列表,计算[a,b]的梯度均值,更新模型
3.随机再选择一个样本,假设又选择了 c 样本, 重新计算该样本梯度值,并更新列表中 [a,b
,c] 样本的梯度值,
初期表现不佳,优化速度慢,因为一般都将梯度初始者设置为0,而SAG每轮都结合了上一轮梯度值.