凸优化算法之牛顿法

原理

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

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

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

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

这里写图片描述  

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

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

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

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


举例
求解问题   f(x 1,x 2) = -x 1 4 - 2x 2 4 + 2x 1x 2 + 2x 2 + 6
x1f =-4x 1 3+2x 2
x2f = 2x 1-8x 2 3+2
Hessian = [ -12x 1 2, 2; 2, -24x 2 2]

迭代次数计数
          {
[x1 ; x2 ] =  [x 1  ; x 2  ] - Hessian   点乘  [ x1 f   x2 f  ]
}
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()

转载于:https://www.cnblogs.com/flyfatty/p/6702906.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值