今天给大家介绍一个machine learning中非常基础又非常重要的算法:gradient descent 梯度下降算法。其实在写这篇文章之前,我前面的文章中就有提到gradient descent,它实在是太“泛滥”了,几乎到处都能看到它的身影。那么,它到底是什么?能干什么?它是一种优化算法,在machine learning中经常用来优化目标函数,那什么是目标函数?目标函数根据问题的不同而不同,大家可以看我的另外两篇文章,里面就用到在gradient descent优化目标函数,大家可以看看里面的目标函数是什么,这两篇文章是BP神经网络和推荐系统之矩阵分解。
这里就给大家举个稍微简单一点的例子,假设有一堆男生女生的身高体重数据(training set),假是一条是身高体重数据,x1是身高,x2是体重,y是类标号,y=1表示这条数据是男生的,y=-1表示这条数据是女生的。我们希望能学习出一个函数f(X),使得f(X)能够尽可能准确地描述这些数据,如果能求出这个f(X),那么任给一个身高体重,就能预测出这人是男生还是女生。
那么f(X)长什么样?它的形式需要我们来指定,gradient descent只帮我们训练出其中的参数。为了方便讲解,我设f(X)为下面的形式,也就是一个线性的函数(一般来说,非线性的要比线性的函数的拟合能力要强,这里暂不讨论线性与非线性的问题):