梯度下降算法分析与简述
梯度下降(gradient descent)是一种最优化算法,基于爬山法的搜索策略,其原理简单易懂,广泛应用于机器学习和各种神经网络模型中。在吴恩达的神经网络课程中,梯度下降算法是最先拿来教学的基础算法。
梯度下降算法的基本原理
要想找到某函数的最大值或者最小值,最迅速的方法就是沿着梯度的方向上升或者下降。梯度下降算法就是以目标的负梯度方向对参数进行调整,沿着目标函数J(x,y)的梯度(一阶偏导数)的相反方向,即−∇θJ(x,y)来不断更新参数直到达到目标函数的极值点。当然除了方向还应该有下降的步长即学习率(learning rate),一般这个参数是提前指定好。
基本的梯度下降算法无法满足众多应用需求,所以每一个先进的机器学习框架或者模型都会使用梯度下降的变种,目前广泛使用的有三种,分别是全量梯度下降(batch gradient descent)、随机梯度下降(stochastic gradient descent)和批量梯度(mini-batch gradient descent)下降。
全量梯度下降(batch gradient descent)
又称Full Batch Learning,顾名思义该方法是由整个训练集来确定梯度的方向,需要将所有的训练数据都计算一遍。公式如下:
θ=θ−η⋅∇θJ(θ)
优点和缺点也是显而易见的。优点就是遍历全部数据得到的梯度方向是相对来说最正确的,因此能更好的找到极值点。缺点是一次计算大量的数据需要非常大的内存,而且计算时间过长。数据集比较大的时候不适合这种方法。