我们已经讲了逻辑回归模型、如何通过损失函数来界定你的模型对单一样本训练效果、代价函数。现在,我们来看如何使用梯度下降模型去训练和学习,来调整你的训练集中参数和。
之前,我们已经学到一个逻辑回归算法:
然后又学到了代价函数:代价函数可以衡量你的参数和在训练集上的效果,要使得参数和设置合理,自然想到要去找到使得代价函数尽可能小所对应的和。
接下来给出何为梯度下降法:
梯度下降法的形象化说明
在这个图中,横轴表示你的空间参数和,在实际中,可以是更高的维度,此处是为了更好绘图,所以我们定义和都是单一实数。代价函数(成本函数)是在水平轴和上的曲面,因此曲面的高度就是在某一点的函数值。我们所做的就是找到使得代价函数(成本函数)最小的对应参数和。
如图,我们看到代价函数(成本函数) 是一个凸函数,像一个大碗一样。
因此我们的成本函数,之所以被定义凸函数一个重要原因是我们使用了对于逻辑回归这个特殊代价函数造成的,为了找到最好的参数值,我们将会用一些初始值来初始化参数和。可以用如图那个小红点来初始化参数 ,也可以采用随机初始化的方法,对于逻辑回归几乎所有的初始化方法都有效,因为函数是凸函数,无论在哪里初始化,应该达到同一点或大致相同的点。
梯度下降法初始点开始,朝最陡的下坡方向走一步,不断地迭代,尽可能快点走下坡路。迭代如图所示:
直到走到全局最优解或者接近全局最优解的地方。以上就是梯度下降模型的说明了。
下面展示梯度下降法的细节化说明(为了画图容易,仅有一个参数w,忽略b):
想要找到的最小值,假设函数图像如下图:
假定代价函数(成本函数) 仅一个参数 ,即用一维曲线代替多维曲线,这样可以更好画出图像。
我们将重复(repeat)执行以下操作:
表示迭代参数
表示学习率(learning rate),学习率可以控制我们在每一次迭代或者梯度下降法中步长(step)的大小。
就是函数 对 求导。在代码中会约定使用作为导数变量名。
在算法收敛前不断重复上面操作。
记住导数的定义——函数在某一点的斜率,函数的斜率是高除以宽。图中的导数是正的,按照上面的迭代公式去更新自己,导数是正的,所以你每一次从中减去这个乘积,接着每一次都向图像左边走一步。如果在一开始你参数值很大的话,这样的梯度下降法会让你的算法渐渐地减小这个参数。
另一个例子,如果w的起始位置在图像左边。在这个点处的斜率 将会是负的,并且梯度下降法在更新参数的时候,相当于使得参数在慢慢增加,所以这样的迭代和梯度下降法会使得参数 逐渐变大,无论你初始化的位置是在左边还是右边,梯度下降法会朝着全局最小值方向移动。
梯度下降法的细节化说明(两个参数w、b):
当函数 有两个以上的变量(使用偏导数符号),说到底还是函数关于其中一个变量在对应点处的斜率。
在下一节课中,给出更多的微积分、导数的知识和解释。