zoukankan      html  css  js  c++  java
  • [算法] 优化算法 梯度下降

    导数

    • 导数是一个数,函数y(x)在x0点的导数y'(x0)反应了在x0处y随x的变化快慢

    微分

    • 微分指函数值的微小变化
    • 在x0可微:在x0点y和x的微分成线性关系(只与该点函数值有关)
    • 导数可看做函数的微分与自变量的微分之商,故导数又称微商

    偏导数

    • 函数在一点处沿坐标轴的变化率

    方向导数

    • 函数在一点处沿射线方向的变化率
    • 偏导数是双侧的,方向导数是单侧的。函数f(x,y)在一点处对x偏导数等于沿x轴正向的方向导数

    梯度

    • 梯度是一个向量
    • 方向导数沿梯度方向取最大值,最大值为梯度的模,即沿梯度方向函数值变化最快
    • 方向导数沿与梯度垂直的方向值为0,即函数值无变化
    • 在极值点时梯度为零向量,方向导数亦为0

    无条件极值问题

    • 函数f(x)在x*有一阶、二阶连续偏导且无约束,则函数在x*取得局部极值的充分必要条件为:梯度为零,且Hesse矩阵正定

    Lagrange乘子法

    • 引入乘子,将条件极值为题转换为无条件极值问题

    K-T局部最优条件(必要条件)

    • 若x*为局优点,则不仅Lagrange函数的一阶偏导为零,且Lagrange乘子非负

    凸规划问题

    • 可用域为凸集,目标函数在可用域上为凸函数
    • 凸规划问题的局部极小值点为总体最小点
    • K-T条件是总体最小点的充要条件
    • 线性规划、二次规划(目标函数是半正定二次型且具有线性约束)都是凸规划
    • 对于一般的非线性规划,较难判断其是否为凸规划

    动态规划(DP)

    • 把多变量优化问题表示成为多个阶段串联体系的优化问题,其中每个阶段都是单变量优化问题,利用递推关系逐段求解从而达到整体最优
    • 最初用于与时间有关的动态过程

    梯度算法

    • 在连续变量优化设计方法中, 有一类利用函数导数的优化方法
    • 由于函数的导数反映了函数的发展、变化趋势, 根据函数的导数, 可以确定搜索最优解的最佳方向, 设计一定的算法沿该方向搜索, 往往可以得到较高的效率
    • 这类算法包括最速下降法、共轭梯度法、可行方向法、最佳矢量法、梯度投影法等

    批量梯度下降

    • 过对训练集上的所有可能样本的损失值求和得到的损失函数进行梯度下降

    存在问题

    • 局部极小值
    • 鞍点

    随机梯度下降

    • 通过计算仅仅一个随机抽样(不替换)例子的损失梯度来采取步骤
    • 所有单个损失函数的梯度可以并行计算,而使用随机梯度下降的时候,梯度的计算必须一个一个的顺序进行

    批梯度下降

    • 使用固定数量(例如 16、32 或者 128 个)的样本形成一个 mini-batch 来构建损失函数

    参考

    https://www.jianshu.com/p/c7e642877b0e

    https://blog.csdn.net/weixin_39445556/article/details/83661219

    https://blog.csdn.net/kwame211/article/details/80364079

    https://tech.sina.com.cn/roll/2018-07-15/doc-ihfhfwmv8903127.shtml

  • 相关阅读:
    elasticsearch + python
    Django中的监控组件Prometheus
    MySQL索引原理以及最左前缀原则
    Insert ignore,还是insert replace还是insert on duplicate key update区别
    PyTorch中Tensor与numpy数据之间时共享的条件:
    在Numpy中numpy.nan显示成-9223372036854775808的缘故
    mac上安装pil报错: ERROR: Could not find a version that satisfies the requirement pil (from versions: none):
    OSError: [Errno 48] Address already in use
    curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
    在实际项目中使用git推代码踩过的坑
  • 原文地址:https://www.cnblogs.com/cxc1357/p/11792501.html
Copyright © 2011-2022 走看看