zoukankan      html  css  js  c++  java
  • 梯度下降学习总结

    1.梯度的理解

    在机器学习过程中,经常使用梯度下降方法求解损失函数的最小值。梯度的值为函数在某一点,沿着各向量方向的偏导数。沿着梯度相反的方向,函数减小最快,更容易找到函数的最小值。

    2.梯度下降法的矩阵表示

    函数的表达式为$h_ heta(X)=X heta$,损失函数的表达式为$J( heta)=sum_{i=1}^m(h_ heta(x_i)-y_i)^2$,其矩阵表达式为$J( heta)=frac{1}{2}(X heta-Y)^T(X heta-Y)$,损失函数对于$ heta$向量的偏导数为$frac{partial}{partial heta}J( heta)=X^T(X heta-Y)$。

    3.权重计算:使用全部样本、使用部分样本

    全部样本算权重

    1 h = sigmoid(dataMatrix * weights)
    2 error = labelMat - h
    3 weight = weight + alpah * error * dataMatrix.transpose()

    一个样本算权重

    1 h = sigmoid(sum(dataMatrix[i] * weights))
    2 error = classLabel[i] - h
    3 weight = weight + alpha * error * dataMatrix[i]

     h是sigmoid函数的值,error是算出来的值与label之间的误差,然后使用alpha系数、误差、输入更新权重的值。

    此方法没有使用梯度的计算值,而是使用alpha、error、输入值,更新权重。

    4.数值梯度与解析梯度

    理论推导使用解析梯度,在工程计算中,常使用数值梯度进行计算。

    5.梯度下降的代数方式描述

    5.1损失函数

    假设函数表示为$h_ heta(x_1,x_2,...,x_n)= heta_0+ heta_1 x_1+...+ heta_n x_n$,其中$ heta_i(i=0,1,2,...,n)$为模型参数,$x_i(i=0,1,2,...,n)$为每个样本的n个特征值。这里增加一个特征$x_0 = 1$,即可表示为$h_ heta(x_0,x_1,...,x_n)=sum_{i=0}^m heta_ix_i$,对于上面的函数,损失函数如下。

    $$J( heta_0, heta_1,..., heta_n)=frac{1}{2m}sum_{j=0}^m(h_ heta(x_0^{(j)},x_1^{(j)},...,x_n^{(j)})-y_i)^2$$

    5.2相关参数

    主要参数为$ heta_0, heta_1,..., heta_n$,算法终止距离$epsilon$以及步长$alpha$。

    5.3算法过程

    1)确定梯度

    确定当前位置的损失函数的梯度,对于$ heta_i$,其梯度表达式为$frac{partial}{partial heta_i}J( heta_0, heta_1,..., heta_n)$

    2)步长乘以梯度

    用步长乘以损失函数的梯度,得到当前位置下降的距离,即

    $alphafrac{partial}{partial heta_i}J( heta_0, heta_1,..., heta_n)$,为梯度下降中的关键一步

    3)检查终止条件

    确定是否所有$ heta_i$梯度下降的距离都小于$epsilon$,如果小于$epsilon$则算法终止,当前所有$ heta_i(i=0,1,...,n)$即为最张结果,否则进行第4步。

    4)更新参数

    更新所有$ heta$,对于$ heta_i$,其更新方式为$ heta_i= heta_i-alphafrac{partial}{partial heta_i}J( heta_0, heta_1,..., heta_n)$

  • 相关阅读:
    ViewPager实现页卡的最新方法--简洁的TabLayout(谷歌支持包)
    Android 使用Fragment,ViewPagerIndicator 制作csdn app主要框架
    TelephonyManager
    Android之CookieStore的持久化
    Android中使用HTTP服务
    Android HttpClient基本使用方法
    Android Https相关完全解析 当OkHttp遇到Https
    告诉你月薪3万的程序员都避开了哪些坑?
    计算机上面常用的计算单位 & 个人计算机架构与接口设备
    计算机硬件的五大单元 & CPU的种类 & 计算机的运行流程
  • 原文地址:https://www.cnblogs.com/guesswhy/p/11272935.html
Copyright © 2011-2022 走看看