本文正在参与「金石计划 . 分割6万现金大奖」

前语

在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent) 是最常选用的办法之一,另一种常用的办法是最小二乘法。

目前正在学习这方面相关的内容,因而简略谈谈与梯度下降法相关的内容。

梯度

微积分里边,对多元函数的参数求 ∂∂ 偏导数,把求得的各个参数的偏导数以向量的形式写出来,便是梯度。

比方函数 f(x,y)f(x, y),分别对 xx, yy 求偏导数,求得的梯度向量便是 (∂f∂x,∂f∂y)T(\frac{∂f}{∂x},\frac{∂f}{∂y})^T,简称 gradf(x,y)grad \quad f(x,y) 或者 ▽f(x,y)▽f(x,y)。关于在点 (x0,y0)(x_0,y_0) 的具体梯度向量便是 (∂f∂x0,∂f∂y0)T(\frac{∂f}{∂x_0},\frac{∂f}{∂y_0})^T 或者 ▽f(x0,y0)▽f(x_0,y_0),假如是3个参数的向量梯度,便是 (∂f∂x,∂f∂y,∂f∂z)T(\frac{∂f}{∂x},\frac{∂f}{∂y},\frac{∂f}{∂z})^T,以此类推。

那么这个梯度向量求出来有什么含义呢?他的含义从几许含义上讲,便是函数变化添加最快的地方。具体来说,关于函数 f(x,y)f(x,y),在点 (x0,y0)(x_0,y_0),沿着梯度向量的方向,即 (∂f∂x0,∂f∂y0)T(\frac{∂f}{∂x_0},\frac{∂f}{∂y_0})^T 的方向,是 f(x,y)f(x,y) 添加最快的地方。或者说,沿着梯度向量的方向,愈加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也便是 −(∂f∂x0,∂f∂y0)T-(\frac{∂f}{∂x_0},\frac{∂f}{∂y_0})^T 的方向,梯度减少最快,也便是愈加容易找到函数的最小值

梯度下降

【AI】浅谈梯度下降算法(理论篇)

梯度下降法(英语:Gradient descent)是一个一阶最优化算法,一般也称为最陡下降法,可是不该与近似积分的最陡下降法(英语:Method of steepest descent)混杂。 要运用梯度下降法找到一个函数的部分极小值,必须向函数上当时点对应梯度(或者是近似梯度)的 反方向 的规则步长距离点进行迭代搜索。假如相反地向梯度 正方向 迭代进行搜索,则会挨近函数的部分极大值点;这个过程则被称为梯度上升法

上述对梯度下降法的描述来自于维基百科,简略概括一下便是 选取恰当的初值x0x_0,不断迭代更新xx的值,极小化目标函数,终究收敛

在进行算法推导时,咱们还需要注意一些概念:

  1. 步长(Learning rate):步长决议了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。
  2. 特征(feature):指的是样本中输入部分,比方2个单特征的样本 (x(0),y(0))(x^{(0)},y^{(0)})(x(1),y(1))(x^{(1)},y^{(1)}),则第一个样本特征为 x(0)x^{(0)},第一个样本输出为 y(0)y^{(0)}
  3. 假定函数(hypothesis function):在监督学习中,为了拟合输入样本,而运用的假定函数,记为 h(x)h_(x)。比方关于单个特征的 m 个样本 (x(i),y(i))(i=1,2,…,m)(x^{(i)},y^{(i)})(i=1,2,…,m),能够选用拟合函数如下:h(x)=0+1xh_(x)=_0+_1x
  4. 丢失函数(loss function):为了评价模型拟合的好坏,一般用丢失函数来度量拟合的程度。丢失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。线性回归中,丢失函数一般为样本输出和假定函数的差取平方。 比方关于 m 个样本 (xi,yi)(i=1,2,…,m)(x_i,y_i)(i=1,2,…,m),选用线性回归,丢失函数为:
    J(0,1)=∑i=1m(h(xi)−yi)2J(_0,_1)=∑_{i=1}^m(h_(x_i)−y_i)^2
    其间 xix_i 表明第 ii 个样本特征,yiy_i 表明第 ii 个样本对应的输出,h(xi)h_(x_i) 为假定函数。

算法推导

先决条件: 在线性回归的前提下,确认优化模型的假定函数和丢失函数。

1、确认当时位置的丢失函数的梯度,关于 i_i,其梯度表达式如下:

∂∂iJ(0,1…,n)\frac{∂}{∂_i}J(_0,_1…,_n)

2、用步长 (这儿指机器学习中的学习率更为适宜) 乘以丢失函数的梯度,得到当时位置下降的距离,即

∂∂iJ(0,1…,n)\frac{∂}{∂_i}J(_0,_1…,_n)

3、确认是否一切的 i_i,梯度下降的距离都小于 ,假如小于 则算法终止,当时一切的 i(i=0,1,…n)_i(i=0,1,…n) 即为终究结果,否则进入过程4;

4、更新一切的 ,关于 i_i,其更新表达式如下,更新完毕后持续转入过程1;

i=i−∂∂iJ(0,1…,n)_i=_i−\frac{∂}{∂_i}J(_0,_1…,_n)

TIP

丢失函数如前面先决条件所述:

J(0,1…,n)=12m∑j=0m(h(x0(j),x1(j),…,xn(j))−yj)2J(_0,_1…,_n)=\frac{1}{2m}∑_{j=0}^m(h_(x^{(j)}_0,x^{(j)}_1,…,x^{(j)}_n)−y_j)^2

则在算法过程过程1中关于 i_i的偏导数核算如下:

∂∂iJ(0,1…,n)=1m∑j=0m(h(x0(j),x1(j),…,xn(j))−yj)xi(j)\frac{∂}{∂_i}J(_0,_1…,_n)=\frac{1}{m}∑_{j=0}^m(h_(x^{(j)}_0,x^{(j)}_1,…,x^{(j)}_n)−y_j)x_i^{(j)}

由于样本中没有 x0x_0,上式中令一切的 x0jx^j_0 为1,过程4中 i_i 的表达式更新如下:

i=i−1m∑j=0m(h(x0(j),x1(j),…,xn(j))−yj)xi(j)_i=_i−\frac{1}{m}∑_{j=0}^m(h_(x^{(j)}_0,x^{(j)}_1,…,x^{(j)}_n)−y_j)x_i^{(j)}

从这个比如能够看出当时点的梯度方向是由一切的样本决议的;

后记

上述便是本篇博文的一切内容了,比较细致的介绍了梯度以及梯度下降算法相关的内容,下一篇博文 【AI】浅谈梯度下降算法(实战篇) 咱们将结合代码,通过实战对梯度下降知识点进行稳固和加深形象,深入理解其间的奥义!

参考:

  • 梯度下降(Gradient Descent)
  • Python 完成简略的梯度下降法
  • 梯度下降法原理与python完成

上篇精讲:【项目实战】MNIST 手写数字辨认(下)

我是,期待你的关注;

创造不易,请多多支撑;

系列专栏:AI