机器学习入门 --- 梯度下降原理(公式推导)

梯度下降概述

梯度下降是机器学习中的一种真正的求解的思路(优化算法)

引入

当我们得到了一个目标函数后,如何进行求解?直接求解?
并不一定可解,线性回归可以当做是一个特例,在所有的机器学习问题当中,除了线性回归中可以直接求解,其他问题是无法直接解出最终的真实答案

常规套路

机器学习的套路就是交给机器一堆数据,然后告诉它以什么样的学习方式是对的(目标函数),然后让它朝着这个方向去做

如何优化

求当前位置梯度方向、根据梯度方向的反方向一步步走,完成迭代,直到损失值趋于稳定

参数更新方法

定义目标函数:
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) J(\theta _0,\theta _1) = \frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)}) J(θ0,θ1)=2m1i=1m(hθ(x(i))y(i))
此目标函数显示, θ 0 \theta _0 θ0, θ 1 \theta _1 θ1 都会对求解有影响,所以对 θ 0 \theta _0 θ0, θ 1 \theta _1 θ1 都要进行优化,由于数据样本是独立的, θ 0 \theta _0 θ0, θ 1 \theta _1 θ1 具有独立性,所以要对 θ 0 \theta _0 θ0, θ 1 \theta _1 θ1 分别进行优化,优化的目标就是寻找最低点,也就是我们目标函数的终点。

更新参数的步骤:

  1. 找到当前最合适的梯度方向
  2. 根据梯度方向的反方向走一小步
  3. 按照方向与步伐去更新我们的参数

进行梯度下降时,不能一步走的太长了,可能会出现收敛不好的结果

定义目标函数:
J ( θ ) = 1 2 m ∑ i = 1 m ( y i − h θ ( x i ) ) J(\theta) = \frac{1}{2m}\sum_{i=1}^{m}(y^i-h_\theta(x^i)) J(θ)=2m1i=1m(yihθ(xi))
求偏导:
∂ J ( θ ) θ j = − 1 m ∑ i = 1 m ( y i − h θ ( x i ) ) x j i \frac{\partial J(\theta)}{\theta_j} = -\frac{1}{m}\sum_{i=1}^{m}(y^i-h_\theta(x^i))x^i_j θjJ(θ)=m1i=1m(yihθ(xi))xji

  1. 批量梯度下降:
    θ j ′ = θ j + 1 m ∑ i = 1 m ( y i − h θ ( x i ) ) x j i {\theta}'_j = \theta_j+\frac{1}{m}\sum_{i=1}^{m}(y^i-h_\theta(x^i))x^i_j θj=θj+m1i=1m(yihθ(xi))xji
    优点:容易得到最优解
    缺点:但是由于每次考虑所有样本,速度很慢
  2. 随机梯度下降:
    θ j ′ = θ j + ( y i − h θ ( x i ) ) x j i {\theta}'_j = \theta_j+(y^i-h_\theta(x^i))x^i_j θj=θj+(yihθ(xi))xji
    随机梯度下降是每次找一个样本,迭代速度快,但可能在训练集中有个别数据会出现问题,所以不一定每次都朝着收敛的方向,不太可控。
  3. 小批量梯度下降:
    θ j ′ = θ j + α 1 10 ∑ k = i i + 9 ( h θ ( x ( k ) ) − y ( k ) ) x j ( k ) {\theta}'_j = \theta_j+\alpha \frac{1}{10}\sum_{k=i}^{i+9}(h_\theta(x^{(k)})-y^{(k)})x^{(k)}_j θj=θj+α101k=ii+9(hθ(x(k))y(k))xj(k)
    每次更新选择一小部分数据进行迭代(设置batch值)

优化参数设置

学习率(步长):对结果会产生巨大的影响,一般小一些,常见的值0.001、0.0001
如何设置学习率:从小数值开始,例如0.001,再根据训练效果进行调整
批处理数量(batch):32,64,128都可以,一般围绕 2 n 2^n 2n 进行设置,有时还得考虑内存和效率

普遍情况下,机器学习都是使用优化算法进行求解,而不是像线性回归那样直接求解,梯度下降是最常用、最经典的优化方法。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值