• 凸优化算法之牛顿法


    原理

    对于求方程解问题,假设有函数 f  :R->R,我们希望找到满足 f(θ)=0 θ值. 这里θ是实数. 
    牛顿方法执行下面的更新
    这里写图片描述 
    求解过程如图所示

    简单的来说就是通过求当前点的导数得到下一个点.用到的性质是导数值等于该点切线和横轴夹角的正切值

    利用凸函数的性质,最值所在点 l'(θ)=0  f(θ)=l'(θ)
    这里写图片描述

    牛顿方法的一般化: 
    如果θ是一个向量,那么: 

    这里写图片描述 

    H称为海森矩阵(Hessian matrix),是一个n*n的矩阵,n是特征量的个数,并且这里写图片描述

    牛顿方法的收敛速度比批处理梯度下降快很多,很少次的迭代就能够非常接近最小值了;但是当n很大时,每次迭代求海森矩阵和逆代价是很大的。

    牛顿法是二阶收敛,梯度下降法是一阶收敛的,所以牛顿法看得更远,收敛更快。牛顿法的路径更符合最优路径。对于二阶凸函数能够一步到达。

    实际中常常先用梯度下降法,在离得比较近时使用牛顿法;由于牛顿法需要每次更新海森矩阵,所以使用拟牛顿法。


    举例
    求解问题   f(x1,x2) = -x14 - 2x24 + 2x1x2 + 2x2 + 6
    x1f =-4x13+2x2
    x2f = 2x1-8x23+2
    Hessian = [ -12x12, 2; 2, -24x22]

    迭代次数计数
            {
    [x1 ; x2 ] = [x1 ; x2 ] -Hessian 点乘  [x1f x2f ]
    }
    figure_1-5.png
    1. # -*- coding: utf-8 -*-
    2. """
    3. Created on Wed Apr 12 23:56:25 2017
    4. @author: LoveDMR
    5. 牛顿方法
    6. """
    7. import numpy as np
    8. import matplotlib.pyplot as plt
    9. delta = 0.25
    10. x1 = np.arange( -10 , 10 , delta )
    11. x2 = np.arange( -10 , 10 , delta )
    12. X1 , X2 = np.meshgrid( x1 , x2 )
    13. Y = 2*X1*X2+2*X2-X1**4-2*X2**4 + 6
    14. plt.figure()
    15. bg_fig = plt.contour(X1,X2,Y)
    16. theta = np.array([8,8])
    17. a , b = [] , []
    18. a.append(theta[0])
    19. b.append(theta[1])
    20. H = np.array([[2,3],[3,10]])
    21. Hi = np.linalg.inv(H)
    22. for i in xrange(1,50):
    23. t = np.array([theta[0]**3*(-4)+2*theta[1]**2 , (-8)*theta[1]**3+2*theta[0]+2])
    24. H = np.array([[(-12)*theta[0]**3,2],[2,(-24)*theta[1]**2]])
    25. Hi = np.linalg.inv(H)
    26. theta = theta - np.dot( Hi ,t )
    27. a.append(theta[0])
    28. b.append(theta[1])
    29. plt.plot(a , b)
    30. plt.title( "Newton's method" )
    31. plt.xlabel('x1')
    32. plt.ylabel('x2')
    33. plt.show()

  • 相关阅读:
    动态规划——Best Time to Buy and Sell Stock IV
    动态规划——Split Array Largest Sum
    动态规划——Burst Ballons
    动态规划——Best Time to Buy and Sell Stock III
    动态规划——Edit Distance
    动态规划——Longest Valid Parentheses
    动态规划——Valid Permutations for DI Sequence
    构建之法阅读笔记05
    构建之法阅读笔记04
    构建之法阅读笔记03
  • 原文地址:https://www.cnblogs.com/flyfatty/p/6702906.html
Copyright © 2020-2023  润新知