机器学习之梯度下降算法(二)

引入

当我们得到一个目标函数后,如何进行求解?直接求解?(不一定可解,线性回归可以当做是一个特例)

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

如何优化:每次优化一点点。

目标函数:
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 0 m ( h θ ( x i ) − y i ) 2 J(\theta_0,\theta_1) = \frac{1}{2m}\sum_{i=0}^m\Big(h_\theta(x^i)-y^i\Big)^2 J(θ0,θ1)=2m1i=0m(hθ(xi)yi)2
在这里插入图片描述

θ 0 \theta_0 θ0 θ 1 \theta_1 θ1一开始的随机初始化,寻找山谷的最低点,也就是我们目标函数的终点,什么样的参数能使得目标函数达到极值点

下山分几步走:

  1. 找到当前最适合的方向

  2. 走一小步

  3. 按照方向与步伐去更新我们的参数

梯度下降的三种常用方式

  • 批量梯度下降(GD): J ( θ ) = − 1 m ∑ i = 1 m ( y i − h θ ( x i ) ) x j i J(\theta)=-\frac{1}{m}\sum_{i=1}^m(y^i-h_\theta(x^i))x_j^i J(θ)=m1i=1m(yihθ(xi))xji θ 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_j^i θj=θj+m1i=1m(yihθ(xi))xji

    容易得到最优解,但是每个由于考虑所有的样本,速度很慢

  • 随机梯度下降(SGD): θ j + ( y i − h θ ( x i ) ) x j i \theta_j+(y^i-h_\theta(x^i))x_j^i θj+(yihθ(xi))xji

    每次找到一个样本,迭代速度快,但不一定每次都朝着收敛的方向

  • 小批次梯度下降(minbatch): θ 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}\big(h_\theta(x^k)-y^k)x_j^k θj=θjα101k=ii+9(hθ(xk)yk)xjk

    每次迭代选择一小部分数据来算,比较实用

学习率

  • 学习率(步长):对结果产生巨大的影响,一般小一些

  • 如何选择:从小的时候,不行再小,基本上以0.01开始

  • 批处理数量:32,64,128都可以,一般还得考虑内存和效率

    在这里插入图片描述

    minbatch越小,速度越快,但是精度不高,越大,速度越慢,精度越高。但minbatch等于1的时候,就相当于随机梯度下降

所有的努力都值得期许,每一份梦想都应该灌溉!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值