一、前言
梯度下降法是机器学习常用的优化算法之一,是一种用来寻求目标函数最小值时的自变量值得算法。
虽然在线性回归和逻辑回归一文中已经提到过该算法,但是考虑到该算法的重要性,故而单独提取出来进行说明。
二、基础知识
1、缘由
因循旧例,还是从案例说起:
假设我们需要求解
z
=
x
2
+
y
2
z=x^2+y^2
z=x2+y2的最小值,按照常规的思路是
(1)分别求出
x
x
x和
y
y
y的偏导数
d
z
d
x
=
2
x
\frac{\mathrm{d}z}{\mathrm{d}x}=2x
dxdz=2x
d
z
d
y
=
2
y
\frac{\mathrm{d}z}{\mathrm{d}y}=2y
dydz=2y
(2)分别令
x
x
x和
y
y
y的偏导数为0
2 x = 0 2x=0 2x=0 2 y = 0 2y=0 2y=0
(3)联立方程组,得
x
=
0
x=0
x=0,
y
=
0
y=0
y=0
(4)代入函数得到最小值为0
机器学习的求解大多是一个求函数取得最小值(有时候只能求极小值)时候的参数的过程,而上述的过程已经可以实现,为什么还要整一个梯度下降法呢?
因为 机器学习学习重的自变量并不是只有一两个那么简单,成千上万甚至是亿都有可能,这个时候我们还联立成千上万个方程组求解是不现实的,所以就采用了梯度下降法!
虽然梯度下降法求出的结果并不是那么精确,但机器学习本身就是一个概率性的问题,再者,这不是无能为力嘛(不要逼我说出来)!
2、理论基础
关于求解最小值,梯度下降法的做法是:
(1)初始化目标的函数自变量值,一般是一个非0且足够小的值
(2)计算出每个自变量的的偏导数
(3)设置合适的学习率
η
\eta
η(下文再解释)
(4)循环更新自变量参数,更新方式为:
x
=
x
−
η
∗
d
z
d
x
=
x
−
η
∗
2
x
x=x-\eta*\frac{\mathrm{d}z}{\mathrm{d}x}=x-\eta*2x
x=x−η∗dxdz=x−η∗2x
y
=
y
−
η
∗
2
y
y=y-\eta*2y
y=y−η∗2y
看起来有点抽象,我们根据上面的目标函数来实践一下:
(1)假设我们随机设置了
x
x
x和
y
y
y的初始值为
x
=
3
x=3
x=3,
y
=
4
y=4
y=4,
(2)分别求偏导数(看上面)
(3)设置学习率
η
=
0.1
\eta=0.1
η=0.1
(4)循环更新自变量参数
x | y | x计算方式 | z | |
---|---|---|---|---|
第一次 | 3 | 4 | 随机初始化 | |
第二次 | 2.4 | 3.2 | 3-0.123=2.4; 4-0.124=3.2 | 2.42.4+3.23.2=16 |
第三次 | 1.92 | 2.56 | 2.4-0.122.4=1.92; 3.2-0.123.2=2.56 | 1.921.92+2.562.56=10.24 |
第四次 | 1.536 | 2.048 | 1.92-0.121.92=1.536; 2.56-0.122.56=2.048 | … |
第n次 | … | … | … | … |
通过一定次数的循环,
z
z
z会趋近于它的最小值0,而此时的
x
x
x和
y
y
y正是我们要寻找的合适参数。
3、梯度下降和机器学习优化的问题
(1)学习率的问题
梯度下降好比是一个下山的过程,我家在深不见底山脚最底下,想要最快回家的我开始沿着坡度最大的方向下山回家,而我每卖出的一步的距离称为学习率,学习率太小呢,走得比较慢,学习率太大呢,很容易一个大跨步越过我家屋顶,然后踏不进家门
(2)参数的问题
案例中的
x
x
x和
y
y
y是我们要求解的参数,而在机器学习中,只是这些参数更多了而已,它们主要来源于算法模型,如线性回归中的
y
=
W
x
+
b
y=Wx+b
y=Wx+b,我们想要求解输入
x
x
x经过什么样的参数变换得到输出
y
y
y,那这些参数就可以用梯度下降法来求解
(3)下降方式
具体的下降方式主要有三种:
批量梯度下降法、随机梯度下降法和小批量梯度下降法,为何会产生这么三种呢?
最原始的是批量梯度下降法,使用所有样本进行更新,这样有利于得到全局最优解,且易于并行向量计算,
但是样本过多时,速度就会很慢,特别是在计算资源如此昂贵的今天,所以就产生了随机梯度下降法,每次随机抽取一个样本进行更新,速度是快了,
但是有些盲目,下降方向容易走偏,后来采取了一个折中的方式:小批量梯度下降法, 把数据分为若干个批,按批来更新参数,如此,一批中的一组数据共同决定了本次梯度的方向,跑偏的概率小,减少计算量的同时也确保了梯度的方向。
如果用一个案例来解释这三种情况:
假设公司决定根据员工的意向来决定团建去哪里,那么,批量梯度下降法的方式就是,统计全体员工的意向进行分析,随机梯度下降法就是随便抽取员工的意见进行决定,而小批量下降算法就是在全体员工中抽取一小批人的意见进行统计。