zoukankan      html  css  js  c++  java
  • 002梯度下降

    θ不一定完全可求出

    那么需要让机器一步一步的去试验

    比如下图,目前在一个中间点

    梯度下降:得到一个目标函数后,如何进行求解?(不一定能够直接求解出来,线性回归只是一个特例)

     

    对θ求偏导得到最陡的一个方向

    得到的偏导数,就是一个梯度

    正常的梯度是向上的,现在需要向下方向

    也就是梯度上升的反方向

    每次走一小点,一步一步往下走,走到最低点(第N步)就相当于这个事干完了

    相当于得到近似的最优解。

     

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

    如何优化:一步一步的完成整个迭代,每次优化一点点(通常优化1-10万次)

    如果参数多的话,那么就需要每次求一个参数的偏导进行更新,比如下图

    目标函数:

     

    寻找山谷的最低点,也就是目标函数的终点,也就是什么样的参数能够使目标函数达到极值点

    分几步方法:

    1,找到合适的方向。随机点都行。走一小步。

    2,只能走一小步,走快了有时候丢失精度,会直接跨过最小值点。

    3,按照方法与步伐大小来更新参数

     

     

     

     

    梯度下降的目标函数:,另一个名称叫做损失函数,损失越小不就是越好么?

    1,批量梯度下降:(带入所有的样本,可以得到最优解,计算量非常大,速度慢)

     

    2,随机梯度下降:(每次找到一个样本,迭代速度快,但不一定每次都朝着收敛方向)

     

    3,小批量梯度法:(每次选择一小部分数据样本来计算,相当于取前两个方法的中间方法,比较实用)

     

     

     

    学习率(步长):会对结果产生巨大的影响,一般选择小一点,步长也就是每次θ的差值,第一次与第二次θ的差值

     

    选大了速度快,精度低,选小了速度慢,精度高,用时间换空间

    如何选择:从小的时候选择,不行的话在小,0.1不行0.01

    学习率其实是可以变动的,刚开始的时候选择大一些,越接近底部就可以选择越小

    比如前多少条数据0.01,然后多少条数据0.005,然后0.001

    批量处理量:32,64,128都可以一般是2的幂(容忍程度内,越大越好),很多时候考虑内存效率。

     

     唐宇迪机器学习视频笔记——梯度下降算法

     

  • 相关阅读:
    Golang进阶实战之IO操作
    动态获取输入框光标在页面中的位置! || 动态添加 style标签 || 获取元素样式 || 获取元素在页面中的位置
    v-select插件
    各种创建数组的方法
    百度UEditor编辑器
    vue-router 各种守卫以及流程梳理
    Snipaste 一款好用的 windows截图工具
    ant-design-vue
    罕见的css样式
    vue图片点击放大预览v-viewer
  • 原文地址:https://www.cnblogs.com/Mjerry/p/9649878.html
Copyright © 2011-2022 走看看