赞
踩
梯度下降法用来求函数的极小值,且是一种迭代算法,由于计算机效率高,在机器学习中经常使用。梯度下降法常求凸函数(如机器学习中各种代价函数)的极小值,因为凸函数只有一个极小值,使用梯度下降法求得的极小值就是最小值。与其对应的有梯度上升法,用来求函数的极大值,两种方法原理一样,只是计算的过程中正负号不同而已。
凸函数的数学定义:某个向量空间的凸子集(区间)上的实值函数,如果在其定义域上的任意两点,有 f(tx + (1-t)y) <= tf(x) + (1-t)f(y),则称其为该区间上的凸函数。
并不是所有的函数都有最小值,我们需要保证是凸函数才有最小值。所以在自己构建的目标函数中,在应用任何算法之前,先确定它是凸函数。
梯度就是表示某一函数在该点处的方向导数沿着该方向取得最大值。这个概念比较抽象,我们拿下山做比较,一个人站在山上的某个山腰处,想要以最快的速度下山,那么该怎么最快下山呢?他只要每次沿着当前位置最陡峭最易下山的方向前进一小步,然后继续沿下一个位置最陡方向前进一小步。这样一步一步走下去,一直走到觉得我们到了山脚的位置。那么下山最陡的方向就是梯度的负方向,这种方法就是梯度下降法。
那怎么求一个函数的梯度呢?那就是这个函数在当前位置的导数。如函数 f ( x , y ) f(x,y) f(x,y)的梯度就是
∇ f ( x , y ) = ( ∂ f ( x , y ) ∂ x , ∂ f ( x , y ) ∂ y ) \nabla f(x,y) = (\frac{\partial f(x,y)}{\partial x},\frac{\partial f(x,y)}{\partial y}) ∇f(x,y)=(∂x∂f(x,y),∂y∂f(x,y))
那么对于如何使用梯度下降算法呢?就是先选择一个初始点,计算该点的梯度,然后按照梯度的方向更新自变量,直到函数的值变化很小或者达到最大迭代次数为止。拿函数 f ( x , y ) f(x,y) f(x,y)举例,若第 k k k次迭代值为 ( x k , y k ) (x^{k},y^{k}) (xk,y
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。