笔记 | 梯度下降

梯度下降

假设预测函数

在这里插入图片描述

其中,θ 是模型参数,x 是输入变量(特征)

该预测函数的损失函数(平方误差函数、代价函数)为

在这里插入图片描述

其中,y 是输出变量(目标),J(θ) 是损失,注意这里(x,y)是已知样本,变量是 θ 参数

目标:解出 让 J(θ) 最小化 的 θ (直接求导=0的方法也行,但是多维的不好解甚至可能解不出来,所以可以用梯度下降,不失为一个好方法)

方法:给定一些 θ 的初始值,然后改变 θ 值让 J(θ) 的值变小,不断重复改变 θ 使 J(θ) 变小的过程,直至 J(θ) 约等于最小值。

具体来说:

  • 把 J(θ) 看做一座山,我们要下山,到最低点
  • 下山最快的方法就是走最“陡峭”的地方,走一步再以更新后的位置为基准,重新找最“陡峭”的地方,当“陡峭程度” =0 的时候就到山下了。
  • 最“陡峭”的方向就是该点的 梯度(梯度是高中知识,不懂的话自己复习一下),对每个 θ 求偏导,得到当前这一轮的梯度:
    笔记 | 梯度下降_第1张图片
  • 我们从梯度相反的地方下山,为什么是相反呢,因为梯度方向是切线向上增长的方向!别混了!得反过来!(这就是下面公式用减号的原因)
  • 加上学习率 α (就是一个控制以多大幅度来更新参数的数,太小梯度下降可能很慢,太大可能会越过最低点甚至无法收敛,同样以下山为例,迈的步子太大可能就跨过了最低点),得到梯度下降公式:
    在这里插入图片描述
  • ​按照这个公式一直更新 θ 值,直到 θ 不变了收敛了,梯度也为 0 了,到山下了!!

如果涉及了全部的训练样本,即批量梯度下降BGD

每次更新都遍历训练集中所有的样本,以它们的预测误差之和为依据更新。

缺点:迭代速度很慢,而且计算代价太大啦!

因此进行优化:

随机梯度下降 SGD

方法:在每次更新的时候随机使用一个样本来表示所有样本,而不是用所有样本,进行梯度下降,来调整 θ

你可能感兴趣的:(机器学习,机器学习)