梯度下降算法

来源:互联网 发布:淘宝有哪些好的布料店 编辑:程序博客网 时间:2024/05/17 09:16

梯度下降算法(最速下降算法),其是解决参数无约束最优化的一类方法。(无约束:对参数没有任何限制,最多限制为实数,有的根本就没有限定)

在机器学习中,都会让自己的一个模型达到一个最优值(最大或最小等等)。这里有一个非常简单的模型:

f(x) = wx+b

这里先假设x就是一维情况。

如果我们知道f(x) 与x的对应点对,如(1,2),(2,4),(3,6)等等,我们就可以将这些点直接代入方程f(x)=wx+b

2=w*1+b   (1)

4=w*2+b   (2)

6=w*3+b   (3)

哎呀,妈呀!这个不就是我们小学学的二元一次方程组的吗?是的。我们也可以将上面的点对数据稍作修改:(1,2),(2,4),(3,6),(4,7),(5,8),(6,11),(7,13)...

再来看这些数据,会发现这些点对数据其实不在一条直线上的,那么w就不是能这么简单的解答出来了。此时,这个问题转变成了大学统计学中回归问题。回归问题的本质还是求一条曲线(直线也叫曲线),使得测量出来的点(样本)尽可能的都附着在这条曲线上。

定义如下方程:

J(w,b) = (w*x1+b-f(x1))*(w*x1+b-f(x1))+...+(w*xi+b-f(xi))*(w*xi+b-f(xi))+...+(w*xn+b-f(xn))*(w*xn+b-f(xn))

xn代表第n个样本。

那么,对于回归问题,可以看做一个求最优的问题(使得现有的点都尽可能的附着到我们所求的这条直线上),也就是求J(w,b)的最小值。

仔细观察J(w,b),其实它的未知数是w和b,这里xi,f(xi)都是已知数。那么J(w,b)就是一个关于w和b的一个参数方程了。

高中的数学就学过一些知识,求一个函数的极大值或极小值时其导数为0(不用最小二乘法,这里J(w,b)可能会是一个非常复杂的表达式(样本太多))。不过,我们可以再回想一下极值的性质(这里以极小值为例):在极小值的左边(可以想象为一元函数,多元函数就是偏导)其导数是小于0的,在其右边导数是大于0的;那么,如果从极小值的左边去寻找极小值,我们必需沿着导数变大的方向走;如果从极小值的右边寻找,我们必需沿着导数变小的方向走。这里让我们再联系一下我们所学的知识:梯度。根据梯度的定义,寻找极小值时,我们走的方向其实都是和梯度方向相反的。这里直接让我们看到了寻找极小值时的一个共性了。

那么求J(w,b)的极小值就可以从选定的一个点开始(初始w,b的值),然后沿着梯度相反的方向行走,慢慢的就能够找到我们所要的极小值了(梯度下降法是不能保证找到全局最优值:最小值)。

好吧,今天就先写到这。这里留个问题:这里w,b的调整是一个样本调整一次,还是所有样本都要参与一次参数调整中来?







0 0
原创粉丝点击