zoukankan      html  css  js  c++  java
  • 梯度下降法原理

    求解机器学习算法的模型参数,常用两种方法:梯度下降,最小二乘法。此外还有牛顿法和拟牛顿法。

    1. 梯度

    对多元函数参数求偏导,把求得的偏导写成向量形式。比如:f(x,y)对x,y求偏导,梯度就是(∂f/∂x, ∂f/∂y)T

    2. 梯度下降法详解

    梯度下降法有代数法和矩阵法两种表示形式。

    2.1 代数法

    1. 先决条件:确认模型的假设函数和损失函数

    线性回归假设函数:

    线性回归损失函数:

    2. 参数初始化

    初始化θ0,θ1...θn,算法终止距离ε,步长α。一般将所有的θ初始化为0,步长为1。

    3. 算法过程

    (1)、求当前位置损失函数的梯度。

    (2)、步长乘以梯度,得到当前位置下降距离。

    (3)、确定是否所有的θi,梯度下降的距离都小于ε,如果小于ε算法终止。当前所有θi(i = 1,2...n)为最终结果。否则进入步骤4.

    (4)、更新所有的θ,更新完进入步骤1.

    线性回归的例子:

    损失函数:

    按步骤1对θi求偏导:

    由于样本中没x0,所以上式令所有为1。

    步骤4中θi更新表达式为:

    注意:第3节讲梯度下降法的变种,主要区别是对样本选取的方法不同,这里采用所有样本

    2.2 矩阵法

    1. 先决条件:确认模型的假设函数和损失函数

    线性回归假设函数:

    线性回归损失函数:

    2. 参数初始化

    初始化θ向量为默认值,算法终止距离ε,步长α。一般将所有的θ初始化为0,步长为1。

    线性回归的例子:

    θ向量求偏导数:

    θ向量的更新表达式为:

    2.3 梯度下降法调优

    1. 步长选择。步长太大,迭代会过快,可能错过最优解;步长太小,迭代过慢。

    2. 初始值选择。初始值不同,最小值可能不同,因为梯度下降法求得的是局部最小值。

    3. 归一化。不同特征取值范围不一样,减少特征取值的影响,对数据归一化。

    对每个特征x,求它的期望和标准差std(x),然后转化为:

    这样得到新期望为0,新方差为1。

    3. 梯度下降法(BGD,SGD,MBGD)

    3.1 批量梯度下降法(Batch Gradient Descent)

    更新参数θi用所有样本进行更新。

    3.2 随机梯度下降法(Stochastic Gradient Descent)

    更新参数θi仅用一个样本j进行更新。

    3.3 小批量梯度下降法(Mini-batch Gradient Descent)

    小批量梯度下降法是批量梯度下降法和随机梯度下降法的折中, 对于m个样本,用x个样本来更新。

     来自:刘建平

    hθ(x0,x1,...xn)=i=0nθixi

  • 相关阅读:
    如何判断单链表是否存在环
    语法面试等题目汇总
    数据分析师常见的10道面试题解答
    Python 的函数
    Python 的错误和异常处理
    Python 的条件语句和循环语句
    Python 的基本运算和内置函数
    Python 的数据表示
    Python 基础
    关于 Python
  • 原文地址:https://www.cnblogs.com/keye/p/10855497.html
Copyright © 2011-2022 走看看