本文先总结了凸函数、hessian矩阵、泰勒展开、拉格朗日乘子、对偶函数,随后介绍了最优化中常用的梯度下降法、牛顿法、共轭梯度法、线性搜索法、置信域方法,最后介绍了其他的一些流行的最优化方法,模拟退火法和爬山法、遗传算法、神经网络、支持向量机。

一、最优化基础:

1.  凸函数:

凸函数有很多优良的特性,而且在求解极大值极小值时,十分有用。先看一下凸函数的定义:凸函数:在函数的区间I上,若对任意x1和x2,任意0<t<1,都有

或者对任意x1,x2都有:

凸函数有很多优良的:

1. 凸函数任何极小值也是最小值。

2. 一元二阶的函数在区间上市凸的,当且仅当它的二阶倒数是非负的;如果一个函数的二阶导数是正数,那么函数也就是严格凸的。反过来不成立。多远二次可微的连续函数在凸集上是可微的,当且仅当它的hessian矩阵在凸集内部是半正定的。

3.   对于凸函数f,水平子集{x| f(x) <=a}和{x|f(x)<=a}是凸集。然而,水平子集是凸集的函数不一定是凸函数;这样的函数被称为拟凸函数。

4.  凸函数的求和、最大也是凸函数;如果g(x)是递增的,那么g(f(x))仍然是凸函数。

2.  hessian矩阵:

hessian(海瑟矩阵)就是所谓的二阶偏倒矩阵。对于一个临界点有一阶偏导等于零,然而凭借一阶偏导数无法确定这个点是鞍点、局部极大点还是局部极小点。而hessian矩阵可以回答这个问题。

若x0是f(x)的极值点,如果存在,则进一步设在一个邻域内所有二阶导数连续,H为在点x0的海瑟矩阵。而且x0是f(x)的极小值点时H>=0,即H的特征根均为非负。x0是f(x)的极大值点,H<=0, 即H的特征根均为非负。H>0,即H为正定矩阵,x0是f(x)的极小值点;H<0,即H为负定矩阵,x0是f(x)的极大值点;H的特征值有正有负,x0不是f(x)的极值点。

3.  正定矩阵:

设M是n阶方阵,如果对任何非零变量z,都有z'Mz>0,其中z'表示z的转置,就称M正定矩阵。

判定定理1:矩阵A的特征值全为正。

判定定理2:A的各阶主子式为正。

判定定理3:A合同于单位阵。

4.  泰勒展开:

泰勒公式可以用若干项加一起来表示一个函数。对于正整数n,若函数f(x)在闭区间[a,b]上n阶可导,切在(a,b)上面n+1阶可导数。任取a<=x<=b,则有:

拉格朗日余数:

请注意:泰勒展开在很多地方都有重要的应用,例如开方的计算。这里添加上牛顿迭代和泰勒级数展开求解根号的计算过程。另外我一直以为泰勒级数和牛顿迭代有一定关系,后来发现好像没有,不过可以把牛顿迭代看做仅取泰勒级数的一阶展开。

1). 使用泰勒级数求解根号2。此时我们可以得到f(x)=x^2-2;

取泰勒级数前两项,我们可以得到: f(x)=f(a) + f'(a)(x-a),令f(x)=0我们可以得到:

x=a-f(a)/f'(a); 其实我们可以把x看做是f(x)=0的解,使用这个式子多次迭代就可以得到根号的值。使用x(n+1)替换x,x(n)替换a,我们就可以得到:x(n+1)=x(n)-f(x(n))/f'(x(n))=x(n)-(x(n)^2-2)/2*x(n).

2). 牛顿迭代法:

如下图,已知(x0,y0) ,我们通过对f(x0)做切线,得到切线与x轴的交点(x1,0),然后根据(x1,f(x1))继续递推得到(x2,f(x2)):

那么对已知的(x0,y0),我们可以得到斜率:f'(x0)和点(x0,y0),那么我们可以得到直线:y-f(x0)=f'(x0)(x-x0)。再令y=0,我们可以得到:f(x)=x0-f(x0)/f'(x0)。其实我们已经得到了与泰勒级数展开相同的迭代公式。

5.  拉格朗日乘子:

拉格朗日乘子,就是求函数f(x1,x2,....)在g(x1,x2,....)=0的约束条件下的极值的方法。主要思想是通过引入一个新的参数λ,将约束条件和原函数联系到一起,从而求出原函数极值的各个变量的解。假设需要求极值的目标函数f(x,y),约束条件为φ(x,y)=M,然后我们得到新的函数: F(x,y,λ)=f(x,y)+λg(x,y),将新函数分别对x,y, λ求解即可得到原函数的极值。

6.  对偶函数:

一、最优化常见方法:

1.  牛顿法:

看了一些文章我的理解是牛顿法在最优化求解和前面的函数求解略有不同,此时是通过泰勒级数的二阶展开来进行计算的。展开泰勒级数的二阶形式:

当Δx 无限趋近于零时f(x+Δx )=f(x),然后可以得到(注意f''(x)Δx+1/2f''(x))Δx^2=0),然后将f'(x)和f''(x)看作常数,对Δx 再次求导即可得到如下公式:

继续迭代可以得到:

得出迭代公式:

对于高纬的情况,我们可以得到如下迭代公式(其中H是海瑟矩阵):

牛顿法引入了高阶导数,利用了曲线的额外信息,迭代次数更很少,更容易收敛,可是也引入了hessian矩阵的复杂性。下图为牛顿法和梯度下降法求解的一个例子,牛顿法为红色,梯度下降法沿梯度方向为绿色。其实牛顿法每次迭代都需要计算hessian矩阵,这极大增加了求解的复杂性,因而也有拟牛顿法和各种近似优化方法,避免了每次都需要进行迭代的方法。

2.  梯度下降法:

梯度下降法,若实值函数F(x)在点a处可微且有意义,那么函数F(x)在a点沿着梯度相反的方向下降最快。因而并且足够小时,我们从预估的F函数的局部极小值x0出发可以得到递推公式:

如果顺利的话,我们可以得到如下式子,并且xn会收敛到极值(注意可变):

如果满足条件,并且迭代收敛的话,我们就会沿着梯度下降的方向找到最小值。

3.  共轭梯度法:

共轭梯度法是结余最快下降法和牛顿法的一个方法,它仅需利用一阶导数信息,但克服了最快下降法收敛慢的缺点,又避免了牛顿法需要存储和计算hessian矩阵并求逆的缺点(这么牛逼的介绍,简直是集众多优点于一身呀。。。存储小、收敛快、稳定性高、不需要额外参数。。。看来还是需要深入研究)。

参考文献:

1. 泰勒级数、牛顿展开、求解根号: http://www.linuxidc.com/Linux/2012-09/71467.htm

2. 拉格朗日乘子:http://baike.baidu.com/view/2415642.htm?fr=aladdin

3. 深入理解拉格朗日乘子和KKT法:http://blog.csdn.net/xianlingmao/article/details/7919597

4. 拉格朗日对偶: http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495689.html

5. 牛顿法和梯度下降法:http://blog.csdn.net/luoleicn/article/details/6527049

6. 共轭梯度法: http://baike.baidu.com/view/2565822.htm?fr=aladdin

机器学习基础:最优化方法相关推荐

  1. 机器学习(1)机器学习基础 鸢尾花数据集

    目录 一.机器学习基础理论 1.机器学习过程 2.机器学习分类 3.数据集返回值介绍 二.鸢尾花数据集(实战) 1.首先是获取数据集 2.显示数据集信息(可以不要) 三.数据集划分 1.数据集划分AP ...

  2. 【直播】陈信达:零基础计算机视觉之机器学习基础

    零基础计算机视觉之机器学习基础 直播信息 分享嘉宾:陈信达,Datawhale成员,上海科技大学硕士. 直播时间:2021年07月30日 20:00 直播内容: 线性回归与指针读数识别 逻辑回归原理与 ...

  3. 资源 | Intel发布AI免费系列课程3部曲:机器学习基础、深度学习基础以及TensorFlow基础

    翻译 | AI科技大本营(公众号ID:rgznai100) 校对 | 成龙 编辑 | 明明 Intel于近期发布了三门AI系列的免费课程,分别是关于机器学习基础.深度学习基础.TensorFlow基础 ...

  4. python分类器鸢尾花怎么写_python机器学习基础教程-鸢尾花分类

    一: 环境准备: 1.导入的库: importnumpy as npimportmatplotlib.pyplot as pltimportpandas as pdimport mglearn 2.导 ...

  5. KNN算法的机器学习基础

    KNN算法的机器学习基础 https://mp.weixin.qq.com/s/985Ym3LjFLdkmqbytIqpJQ 本文原标题 : Machine Learning Basics with ...

  6. 机器学习基础(一)——人工神经网络与简单的感知器

    机器学习基础(一)--人工神经网络与简单的感知器 (2012-07-04 19:57:20) 转载▼ 标签: 杂谈 分类: machineのlearning 从最开始做数据挖掘而接触人工智能的知识开始 ...

  7. Python机器学习基础教程-第2章-监督学习之K近邻

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  8. 【机器学习实战】第1章 机器学习基础

    第1章 机器学习基础 机器学习 概述 机器学习就是把无序的数据转换成有用的信息. 获取海量的数据 从海量数据中获取有用的信息 我们会利用计算机来彰显数据背后的真实含义,这才是机器学习的意义. 机器学习 ...

  9. 1.3 机器学习基础-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.2 偏差/方差 回到目录 1.4 正则化 机器学习基础 (Basic "Recipe" for Machine Learning) 上节课我们讲的是如 ...

  10. 【NLP机器学习基础】从线性回归和Logistic回归开始

    古语常云:"大道至简",万事万物纷繁复杂,最终却归至几个最简单的道理.我常常在想,如今很火的AI领域是否也是如此.将AI真正学懂学会的过程就像一场遥不可及的漫长攀登,起始于晦涩难懂 ...

最新文章

  1. Ansible :一个配置管理和IT自动化工具
  2. newhope代码在vs2019的编译
  3. code换取微信openid_关于PHP如何获取微信的openID教程
  4. c语言解魔方程序,请哪位牛人告诉我怎样用C语言程序复原3阶魔方的
  5. 琥珀项目:较小的,面向生产力的Java语言功能
  6. Asp.net Ajax AlwaysVisibleControl使用方法
  7. 吴恩达机器学习3-无监督学习
  8. 【考研】2020年,计算机,考研,专业课(408)大纲,排版校对版
  9. Web前端面试指导(十七):一个满屏 品 字布局 如何设计?
  10. IIS故障问题(Connections_Refused)分析及处理
  11. 内存颗粒的逻辑bank理解
  12. Word 2010如何对论文中参考文献进行标注
  13. 数字鉴相器matlab,一种数字鉴相器的设计.pdf
  14. intel和ATT汇编格式区别
  15. 十大著名黑客-----李纳斯-托瓦兹
  16. 官方jdk各个版本下载地址
  17. vue中prop的用法
  18. Javascript 暂停/终止脚本
  19. 微信订阅号简单开发指引
  20. HTML5:移动端开发入门

热门文章

  1. ctf.show-萌新计划(1-7)
  2. MOCTF-Web-没时间解释了
  3. supervisor 守护多个进程_supervisor管理守护进程
  4. JS 原生实现复选框全选反选功能
  5. linux下线程绑定内核,多线程 – 无法将内核线程绑定到CPU
  6. 先学c语言还是先学java_是先学 java好还是先学c语言好
  7. python单选按钮重置_python – Tkinter单选按钮初始化错误
  8. java semaphore 等待时间_一个java同步工具类Semaphore的详解
  9. Python(5):循环
  10. element UI 制作带快捷选项的时间选择器