算法理论笔记

算法理论笔记

    • 最优化方法
    • 正则化
    • EM算法
    • 偏差方差
    • 马尔科夫链蒙特卡罗法
    • 矩阵子空间
    • 主成分分析
    • 决策树
    • boost
    • 支持向量机
    • 朴素贝叶斯
    • 神经网络
    • 卷积神经网络
    • 循环神经网络
    • 推荐系统

最优化方法

  1. 微分方法
    根据极值必要条件,求 f ′ ( x ) = 0 {f}'(x)=0 f(x)=0的根

  2. 梯度下降法
    设 参 数 为 w , 当 前 点 的 梯 度 为 ∂ L ∂ w , 学 习 率 为 η , 则 设参数为w,当前点的梯度为\frac{\partial L}{\partial w},学习率为\eta,则 wwLη
    w = w − η ∂ L ∂ w w = w - \eta \frac{\partial L}{\partial w} w=wηwL
    往梯度的负方向走来迭代求根,即极小值点(正方向即为极大值点)

    1. 批量梯度下降法 BGD

      每次迭代利用所有的样本计算梯度

    2. 随机梯度下降法 SGD

      每次迭代利用一个样本计算梯度

    3. 小批量梯度下降法 MBGB

    每次迭代利用部分样本计算梯度

    缺点:如果梯度没有指向极值点,那么搜索效率就会很低(在等高线上呈“之”字形移动)

  3. 梯度下降法的改造

    1. Momentum
      设 冲 量 ( 速 度 ) 为 ν , 冲 量 系 数 为 α ( 相 当 于 摩 擦 力 或 阻 力 ) , 则 设冲量(速度)为\nu ,冲量系数为\alpha (相当于摩擦力或阻力),则 ()να
      v = α v − η ∂ L ∂ w v = \alpha v - \eta \frac{\partial L}{\partial w} v=αvηwL
      w = w + v
      每个参数都有一个对应的v值,v初始值可以赋0

    越是一直往梯度的某个方向上前进,则在该方向上的速度越快(前进距离越多),比如在梯度的某个方向上一直是正数,则迭代时在该方向上前进的距离越多。相反则正反方向抵消,前进的距离越小。

    1. AdaGrad
      h = h + ∂ L ∂ w ∗ ∂ L ∂ w 矩 阵 对 应 位 置 相 乘 h = h + \frac{\partial L}{\partial w} * \frac{\partial L}{\partial w} 矩阵对应位置相乘 h=h+wLwL
      w = w − 1 h η ∂ L ∂ w w = w - \frac{1}{\sqrt{h}} \eta \frac{\partial L}{\partial w} w=wh 1ηwL
      h记录了随着迭代,每个参数对应偏导数的平方和,即梯度的每个数值的平方和。
      每个参数都有一个对应的h值,h初始值可以赋0

    与梯度下降相比,多了一个系数来调整学习率的值。随着迭代,某一个参数对应的偏导数(即梯度中对应的分量)越大,则该参数的学习率越小。一般来说,随着迭代,h的值越大越大,所以参数的学习率也就会越来越小

    1. RMSProp
      h = a h + ( 1 − a ) ∂ L ∂ w ∗ ∂ L ∂ w 矩 阵 对 应 位 置 相 乘 h = ah +(1-a) \frac{\partial L}{\partial w} * \frac{\partial L}{\partial w} 矩阵对应位置相乘 h=ah+(1a)wLwL
      w = w − 1 h η ∂ L ∂ w w = w - \frac{1}{\sqrt{h}} \eta \frac{\partial L}{\partial w} w=wh 1ηwL

    AdaGrad的改良版,越接近当前期的梯度平方和权重越大,越之前的则越小。实际上就是指数平滑,让梯度平方和的权重呈指数衰减

    1. Adam

      结合了Momentum和RMSProp算法,通常会有比较好的效果

  4. 牛顿法
    求f(x)导数的一阶泰勒展开(切线)=0的根,以迭代的方法近似求f(x)导数=0的根

    • 前提

      1. 任何一点二阶可微(任何一点的二阶偏导数连续)
      2. 一元函数二阶导数 > 0,函数为凹函数
        多元函数海森矩阵正定(正定即对角线元素>0,即各维度的二阶偏导数>0,各维度为凹函数)
        凹函数保证极值点只有一点,且为极小值点,且为最小值点,即局部最优点就是全局最优点
    • 优点

      1. 考虑了二阶导数的信息(一阶导数的变化率),二次收敛,收敛速度快(二次函数只需要一步)
    • 缺点

      1. 需要计算海森矩阵和其逆矩阵,计算量大
      2. 海森矩阵规模为N方,当N很大时,海森矩阵变得很大
      3. 受初始点影响大
        • 驻点, f ′ ′ ( x ) {f}''(x) f(x)=0,分母不能为0
        • f ′ ( x ) = x 1 3 {f}'(x)=x^{\frac{1}{3}} f(x)=x31,迭代的x点越来越远离0
        • f ′ ( x ) = ∣ x ∣ 1 2 {f}'(x)=|x|^{\frac{1}{2}} f(x)=x21,迭代的点不断地循环震荡
      • 有多个极值的函数f(x),即 f ′ ( x ) {f}'(x) f(x)有多个零点,根据初始值不同,会收敛到不同的极值点
  5. 拟牛顿法
    满足拟牛顿条件下,求一个正定矩阵作为海森矩阵的近似,避免直接求海森矩阵

    1. DFP算法

      通过迭代的方式构造D矩阵作为海森矩阵的逆矩阵的近似矩阵

      D k + 1 = D k + Δ D K = D k + α u u T + β

你可能感兴趣的:(算法,机器学习,人工智能,深度学习,神经网络)