梯度下降是机器学习的优化算法中的一种,常用于机器学习和人工智能当中用来递归性地逼近最小偏差模型。
梯度的引入
[z=y^2-x^2
]
从公式中可以看出 ,当沿着x轴运动时,偏导数为(frac{partial z}{partial x})=-2x,与 y无关,当沿着 Y轴运动时, (frac{partial z}{partial y})=2y,与x轴无关。
梯度(
abla f =(frac{partial f}{partial x_1},frac{partial f}{partial x_2},......frac{partial f}{partial x_n}))
将函数f(x,y) = (−(cos^2x + cos^2y)^2)的梯度描绘为在底面上投影的向量场。可以看出,函数的增加与梯度的大小有关。
梯度下降公式:$$x = x-ηpartial f$$
看下图,一开始的时候我们随机站在一个点,把他看成一座山,每一步,我们都以下降最多的路线来下山,那么,在这个过程中我们到达山底(最优点)是最快的,而上面的η,它决定了我们“向下山走”时每一步的大小,过小的话收敛太慢,过大的话可能错过最小值)。这是一种很自然的算法,每一步总是寻找使x下降最“陡”的方向(就像找最快下山的路一样)。
随机梯度下降(SGD)与批量梯度算法
批量梯度下降是,求出一个维度中所有的数据,取个平均来当做每一次梯度下降的step.这样做虽然准确,但是每次要计算一个维度的所有数据的梯度,花费资源较大.所以才有了随机梯度下降的思想:每次只随机取一个维度中的一条数据求梯度