梯度下降
上一节讲过,随机的寻找w和b使损失最小不是一种合适的方法,梯度下降算法就是解决解决这个问题的,它不仅可以用于线性回归,还可以用于神经网络等深度学习算法,是目前的通用性算法。
更加通用的梯度下降算法
之前二维关于w和b的损失函数(无特殊说明,均以均方误差成本函数为例)如下:,
但是在更多的例子里,或者说更加复杂的神经网络里面,w是很多个,目前很多模型都是超过几千亿参数:
已经无法使用随机法来解决最小化J这个损失,必须用更加通用的梯度下降算法来解决最小化损失的问题。
算法步骤
假设某一个模型的成本函数也就是Loss fuction如上(不是线性回归也不是均方误差):
如何从这里面找到J的最小值呢?方法如下:
- 设定w和b初始值。如图中左边这条线的起点。
- 从现在的位置旋转360度,找到J下降最快的点,向下走一步。(这意味着你走的是最快下山的路)
- 以下降后的位置,重复上述步骤,直到发现走到了一个局部最小的山谷底,也就是J的具备最小值。
梯度下降有意思的一件事情,假设随机选择的起始点是另外一个位置,比如右面这条线的起始点,那么找到的就是右边这个局部的最低点,这两个是完全不同的最低点。至于具体怎么实现算法留在下一节。