虽然我们知道,代价函数Jθ的表达式,但是还不知道怎么去确定假设函数hθ(x)的所有参数θ0,θ1 ... θn,使得Jθ值最小。
我们还是假设hθ(x)是一个线性函数,并且只有2个参数θ0,θ1,对应特征向量x只有1维
我们的目标是使得J(θ0,θ1)最小
我们可以采用以下方法,尝试找到J(θ0,θ1)最小值
这个算法我们称之为"梯度下降"算法
假设J(θ0,θ1)值和参数θ0,θ1满足如下3维关系图
按照前面提到的迭代方法,假设不同的θ0, θ1的初始值,我们可能会有如下两个不同的迭代过程
从前面两个图中所示,我们会发现θ0, θ1初始值不同的时候,我们会找到不同局部最小值,这个特点正是"梯度下降"算法的特点,虽然很多时候都只会有一个全局的最小值
根据前面的介绍,当只有2个参数θ0, θ1的时候,可以定义梯度下降算法的函数,如下
特别说明:
注意:
还是假设只有2个参数线性回归模型
J(θ0,θ1)对于θ0和θ1分别求导,可得
证明过程如下所示
特别注意: θ0和θ1的值需要同步更新
很多时候,我们的假设函数hθ(x)不止2个参数,可能会有n+1个参数θ0,θ1,θ2 ... θn,此时对应特征向量x有n维
因此我们可以得到n个参数的线性回归模型
对于这个n个参数的线性回归函数,我们可以得到对应的梯度下降算法
展开求偏导数后,可得
总结: 这里的梯度下降算法也称为”Batch” 梯度下降: 因为梯度下降的每一步都使用了所有的训练样本。