Numerical Optimization和Convex optimization 两本书的选择? - 知乎https://www.zhihu.com/question/49689245

Numerical Optimization和Convex optimization 两本书的选择?

关注问题 写回答

数学
计算机技术
优化
凸优化
数值计算

Numerical Optimization和Convex optimization 两本书的选择?

这两本书似乎主要都是讲凸优化的,请问这两本书有什么主要区别,应当如何选择呢?

关注者
703
被浏览
23194

关注问题 写回答
​5 条评论
​分享

​邀请回答 ​举报

11 个回答

默认排序​

Martin Tan
CUHK

296 人赞同了该回答

本人优化方向Phd一枚,两本书都很认真的读过。这两本都是很有名的优化入门书籍,都写的很棒,不需要太多基础就能读懂。怎么读看你的需求。

Numerical Optimization我认为是必读的。这本书讲了各种优化算法,对于经典的方法覆盖非常全面。相对于其他优化的入门著作,这本书理论比较少,但把每个算法原理都讲得很明白,而且讲了每种算法在使用中很多practical的问题,这是我认为这本书很好的一个方面(做优化的人大部分数学出身,大牛们一般不屑于去讨论practical issue,但真的用起来的时候,你就会发现这些问题是很重要的)。无论是针对以后做优化方向的研究工作的,还是只是需要应用优化算法的,我觉得都可以读这本书。

Convex Optimization这本书相对来说更加理论一些,介绍的算法比较少。虽然涉及到的理论都是比较初级的,但写的很清楚,例子非常多,如果认真读完并且做下后面的习题,可以帮你打下比较扎实的理论基础。我PhD刚入学时,老板就要求我们先把这本书前几章理论部分刷完。

接下来说一些具体的建议:

  1. 如果你想知道如何将问题formulate成优化问题、这个优化问题的性质是怎样的能否求到全局最优化、如何将你的问题转换成一个常见形式的优化问题(比如LP、SDP等)以便于利用现有的求解器求解,而并不关心优化算法本身的原理,那么请读Convex Optimization;
  2. 如果你已经知道了你的问题的数学形式,但想寻求更好的优化算法来有效的求解,那么请读Numerical Optimization;
  3. 如果你想对优化领域有比较完整的理解,那么这两本书都是要读的。如果这两本书都读完了,想更进一步,Nolinear Programming和Introductory Lectures on Convex Optimization等书会是你很好的选择。
编辑于 2017-02-22
296 ​36 条评论

​分享

​收藏 ​感谢

Esparami
工业与系统工程博士在读

114 人赞同了该回答

同优化phd一枚,本科数学背景。赶的巧,master学了convex optimization,phd一年级学了nonlinear optimization, 反正都死厚就对了。

课程设置上:
convex optimization 那本书当时只节选了第一部分theory和第三部分algorithms, 第二部分applications花了五分钟说个梗概就直接跳过了(傲娇的数学系。。)

numerical optimization 那本书略去了第十,十一,十三,十四章,多加了凸集凸函数,数值误差和对偶的内容。其它的章节都详略差不多的刷了一遍。

其它的章节,就默认我没翻过吧。。

ok, 现在来说对比:
convex optimization
1. 更偏技巧和建模,看完可以长不少见识,有很多将实际问题转化成具体优化问题的例子(现在留下印象最深的是多面体内最大体积球的一个例子,但有更多当时觉的很巧妙的例子)。
2. 全书不见一个定理,都是小标题混着正文冷不丁就证完一个结论,所以需要自己花些时间整理出重点。证明实用为主,是简化或强化假设之后的证明,但是很直观(凸集分离定理证明,第三章算法收敛性证明等)
3. 主要围绕凸优化,问题不局限于实数域变量,会有很多矩阵变量(log(detX)这种鬼)
4. 有很多感觉在其它地方很少看到,也不常用到的内容(Generalized inequalities, Quasiconvex, vector-optimization),可以直接跳过吧。
5. 强推凸集,凸函数和对偶三个章节和课后习题,直观清晰图文并茂的解释了一些并不是很容易理解的概念。课后习题是很好的拓展。
6. 真正的优化算法部分简略粗犷,只介绍了经典的算法框架和收敛结果,在这个部分建议跳入numerical optimization的坑。
7. 网上有Boyd本人和其TA的课程视频,课件内容基本照搬课本,可以观看。

numerical optimization
1. 默认已了解和熟悉基本优化算法。
2. 更偏理论和算法,看完会对数值优化有较为全面的认识(不覆盖全局优化算法,随机下降算法,和启发式算法),图示清楚明白(尽管有些图很乱),算法有详细的伪代码可以逐一实现和体会,更有叙述和讨论很直观的对算法思路和发展予以解释,非常值得阅读。基本不关注建模。
3. 全书结构清晰,章节内容大框架,定理算法例子讨论各有标识,相对很容易找到自己需要的部分。证明严谨全面递进,结论完整。
4. 主要围绕数值优化,包含凸优化中实数变量的部分,但基本不限定在凸优化的范围,处理更general的函数优化。对每一种算法框架都有深入的讨论和延伸。强推第二章无约束优化和第十二章约束优化以建立数值优化理论基础。
5. 在经典算法框架之外,增加很多practical章节以更加实际实用的方式来解决问题。
6. 部分习题略难,相当多的题目是为了完整书中的证明。不过可以找到习题答案,很详尽。
7. 好书好书好书。可以当字典来用。

如果我现在回头看的话,建议是精读convex optimization的第一部分(去掉某些不那么“重要”的内容),了解第三部分,然后转入numerical optimization,精读需要的章节,这是本字典。

题外强推Introductory Lectures on Convex Optimization: A basic course, 简单霸道的四大章,非线性优化,光滑优化,非光滑优化,结构优化。我只看到第二章,但必然是要读完的。这书从high-level来讨论优化问题,有很多“犀利”的观点和技巧,读完第一章已然获益匪浅。

关于随机下降算法,numerical optimization的作者之一Nocedal和其合作者有篇综述文章Optimization Methods for Large-Scale Machine Learning,干货满满,在今年的ICML上有一个tutorial,slides在这里Stochastic Gradient Methods For Large-Scale Machine Learning.

所有的这些书,都是完美精排可以免费下载的,这真是令人感动。
stanford.edu 的页面 convex optimization 730页,size 6M
agh.edu.pl 的页面 numerical optimization 651页,size 5.5M
psu.edu 的页面 Introductory Lectures on Convex Optimization 212页,size 845K

O 啦。

编辑于 2016-08-25
114 ​14 条评论

​分享

​收藏 ​感谢

收起

覃含章
Optimization, STAT learning, Buddhism

33 人赞同了该回答

题主提到了凸优化,boyd的convex optimization是一个更好的入门教科书,因为本书更好的组织了凸优化的知识体系,向你展示了凸优化理论背后的内涵(对偶理论,包括会给你打基本的凸分析的基础),凸优化广泛的实际应用(最小二乘,线性插值,假设检验,分类,各种几何问题)和针对不同凸优化问题的算法。

相比之下,nocedal和wright的numerical optimization确实对各类凸优化算法总结的更全,然而从对知识结构组织的角度来看我不认为这是一本好的教科书,而更是一本工具书,将各类算法机械的拼凑起来成为了一本字典。如果没有凸优化的big picture在心里,我会比较担心直接上手本书会lost在无边无际的detail中。

所以实际上还是要针对题主的需求。
(i)如果是想先打打知识基础(为做研究做准备),那么boyd的书是起步更好的选择(不过如果题主是想读优化方面PhD的话我觉得这本书不是一定要读的,bertsekas,bertsimas和yinyu ye的教科书都可以作为代替),后续可以考虑选择nemirovski和nesterov这两位优化界巨擘的凸优化讲义作为加深(我个人觉得这两位的讲义是把凸优化理论讲的最透彻的,没有之一);
(ii)另一方面,如果题主单纯只是有特定的应用问题需要求解,那么前面这些理论或许也是多余的,因为优化确实也有非常应用的一面,然而nocedeal的numerical optimization仍然不是必要的,因为如何建模实际上是更重要的,对凸问题我们完全可以在matlab/julia/C++中建模然后交给Gurobi/Mosek这些专业的solver来搞定,这比自己人为写一个内点算法或者一阶算法一般都是要快得多的;即使是问题有特定的结构需要用特定的算法来求解,我们也没必要翻那本numerical optimization一点一点拿个算法出来看(很多特定算法都有更好的单独note可以学习),更何况这本书并没有囊括最近的一些热门的凸优化算法,比如ADMM,对此boyd也有一篇非常好的monograph写的非常简单易懂,还有示范的code。

编辑于 2016-08-23
33 ​6 条评论

​分享

​收藏 ​感谢

周君豹
君子豹变: 学到知识却不点赞,这么鸡贼?

15 人赞同了该回答

从应用角度来回答。

Numerical optimization是讲述求解优化问题局部解的高效算法,包括各种一阶算法和(拟)二阶算法,比如最速梯度,共轭梯度,BB梯度,牛顿下降,拟牛顿法等。约束优化通常都是转化为一系列无约束优化问题SUMT来处理的,这里有很多的penalty和barrier技巧及对应的Lagrange理论。从每次迭代中确定步长与方向的先后顺序又分出,先确定方向后确定步长的线搜索法和先确定步长后确定方向的信赖域法。内容很庞杂,实际应用很需要经验。

Convex optimization这本书的前部分似乎理论很多,但其实这本书的目的既不在于介绍凸分析的理论,也不在于讲解求解凸问题的内点算法。这本书是面向应用的,重点是让读者学会识别和判断凸问题,或者说凸建模。在Boyd这本书里,讲解了大量的实际问题的凸模型,但都是点到即止,一旦一个问题被识别为是凸的,就基本认为已经解完了,具体的求解过程交给CVX软件和SDPT3、SEDUMI、SCS solver。识别一个凸问题的技巧大体分为三类,基本的凸集凸函数定义和对偶理论,标准的线性规划锥二次规划半定规划几何规划,和Disciplined convex programming(翻译为规范凸优化?就是各种保凸运算准则)。

以上是一个算法应用人员的学习总结,供参考。

编辑于 2016-08-21
15 ​添加评论

​分享

​收藏 ​感谢

王何宇
数学教师

15 人赞同了该回答

第二本书没读过,但从名字判断是一本比较深入的专著,应该对数学基础有一定要求,适合专业相关研究生看。第一本覆盖面广,起点低,内容深入到前沿,文字流畅,以实际算法为目标。推荐数学专业或数学基础好的理工专业高年级本科或研究生同学看。我选择这本书作为数学院本科优化课程的教材,但授课内容只包含其基础部分,其余留给同学自己查阅。
发布于 2016-08-17
15 ​2 条评论

​分享

​收藏 ​感谢

司徒功源
夜空中最亮的星,请照亮我前行

6 人赞同了该回答

学习过第一本,第二本正打算学,目前在回顾第一本作为预热。首先纠正一下题主,后面一本书才是真正讲凸优化的,凸优化只是优化问题的一种特例。前面一本包涵的面比较广,针对的是一般的优化问题,包括线性优化,非线性优化和凸优化,前一本书更适合做入门,可以帮助了解优化的一些基本理论,除了基本的微积分,线性代数,不需要太多的数学基础,前面一部分把一些常用的无约束优化算法讲得非常清楚,包括steepest descend,newton method,quasi-newton method,conjugate gradient method,而且对一些算法的收敛条件,收敛性做了一些分析(通常对优化问题作了一些简化处理),后面主要讲解有约束的优化问题,对局部极小值的条件讲解得也很到位。第二本书对数学基础要求高一些,最好学过数学分析,了解一些基本的概念比如开集,闭集,内点,infimum,supremum和一些基本定理如farkas lemma,Weierstrass theorem等,这本书最大的特色是面向实际问题,把很多问题转化成凸优化解决,缺点是很多定理的关键部分缺少来龙去脉,基础不够的话读起来会比较费劲,需要额外翻阅其他资料,不像第一本那么详细,推荐先读第一本,打好基础再读第二本,赞同楼上老师的建议。
发布于 2016-08-18
6 ​添加评论

​分享

​收藏 ​感谢

iyixiang
图像处理 / 跑步爱好者

8 人赞同了该回答

分享一下个人经历:我是先看Convex optimization,各种理论,简直不是人看的,不过还是坚持看完了理论部分。之后找到了Numerical Optimization,简直是柳暗花明又一村啊,感觉特别适合计算机系出身的。理论证明与算法的讲解分得很清楚,理论证明你可以简单浏览,算法步骤仔细看,还提供算法的伪代码,每个优化算法你完全可以coding实现,实现了你就不会感觉很虚。对于Convex optimization,说实在的敲不出一行代码,感觉很虚。
综上,对于计算机系出身的,个人推荐Numerical Optimization。
发布于 2016-08-18
8 ​5 条评论

​分享

​收藏 ​感谢

小猪儿啃地瓜
幻想爱好者

2 人赞同了该回答

numerical optimization这本书更容易读懂,而且会涉及到更多的求解方法,适合非数学专业的外行人。另外一本更像是数学专业读物,读起来比较生硬,但是更适合需要扎实基础的人士,例如数学系本科生。
最后,读完Numerical Optimization这本书,对于优化的基本理论的理解提升了,但具体怎么写程序还是不会。因此,这里讲一下,如果是外行,直接学些gams,ampl的用法去吧,不要再理论上纠结太多,大概看看就行了。不过请注意,区分局部优化与全局优化的区别。
编辑于 2016-08-21
2 ​5 条评论

​分享

​收藏 ​感谢

Accepted

1 人赞同了该回答

两本都看过,numerical optimization要容易理解的多,建议入门看numerical optimization.
发布于 2016-08-19
1 ​1 条评论

​分享

​收藏 ​感谢

Stiefel
老师

两本书方向不同,convex针对凸问题,偏重建模应用,numerical是非线性优化,求局部最优解,主要讲算法。
发布于 2017-05-22
0 ​添加评论

​分享

​收藏 ​感谢

看不完的景
我就是我

Numerical Optimization这本书有中文版的吗

发布于 2017-04-26
0 ​添加评论

​分享

​收藏 ​感谢

写回答

https://www.zhihu.com/question/49689245

Numerical Optimization和Convex optimization 两本书的选择?相关推荐

  1. 今天开始学Convex Optimization:引言、第1章基本概念介绍

    文章目录 引言 第1章 Introduction 凸优化问题 最小二乘问题 线性规划问题 一个优化问题例子:最佳灯源问题 Chebyshev逼近问题,转化成线性规划 参考资料 2020年我自己希望多看 ...

  2. 笔记:Tensor RPCA: Exact recovery of corrupted low-rank tensors via convex optimization

    Lu, C., et al., Tensor robust principal component analysis: Exact recovery of corrupted low-rank ten ...

  3. 对凸优化(Convex Optimization)的一些浅显理解

    ©作者 | 李航前 单位 | EPFL 研究方向 | 计算机图形学与三维视觉 最近学习了一些凸优化课程,整理笔记的同时写下一些自己的理解,向着头秃的道路上越走越远. 凸优化是应用数学的一个基本分支,几 ...

  4. 机器学习与深度学习神器!凸优化(Convex Optimization)学习必备

    Boyd的Convex Optimization是神书,真的想搞科研可以学一下这个书,但这个书理论多,侧重凸分析的基础,花了非常长的篇幅介绍函数的凸性.对偶等,但在机器学习中,至少在刚入门不久的阶段这 ...

  5. 今天开始学Convex Optimization:第2章 背景数学知识简述

    文章目录 第2章 背景数学知识简述 2.1 数学分析和微积分基础 函数性质 集合Sets Norms 线性函数.仿射函数 函数的微分(导数) 2.2 线性代数基础 Matrix Subspaces 正 ...

  6. 凸优化(convex optimization)第二讲:convex set

    Convex opt  第二讲(convex set) Affine set affine set 表示经过两点的一条线,这条线满足: 相较于后面我们要讨论的convex set,这里少了一些限制,是 ...

  7. 实用线性代数和凸优化 Convex Optimization

    If not specified, the following conditions are assumed. X∈Rn∗mA∈Rm∗nX \in R^{n*m} \\ A \in R^{m*n} X ...

  8. Convex Optimization介绍

    最近在看Stephen Boyd的<Convex Optimization>,其中涉及不少数学知识和习题,在此整理一下阅读此书的学习笔记. 因为书上的记号比较详尽,所以在博客中仅摘取一些自 ...

  9. 读convex optimization (Stephen Boyd):最优化 最小二乘 线性规划 凸优化 非线性规划 (intro part)

    for all x, y ∈ Rn and all α, β ∈ R with α + β = 1, α ≥ 0, β ≥ 0. Since any linear program is therefo ...

最新文章

  1. jSearch(聚搜) v1.1.0 发布,全新视觉体验
  2. python怎么读文件里的某一行-python如何读取文件中的某几行
  3. Java Web - 服务器中的过滤器和监听器
  4. RedisCluster读写分离改造
  5. 如何理解clone对象
  6. RabbitMQ(一):简介和基本概念
  7. 前端学习(3108):react-hello-组件和模块
  8. [解决方案]ln:无法创建符号链接‘ /usr/bin/python‘:权限不够
  9. 一个html页面上显示dopost,Java遇见HTML-servlet(一)
  10. c++ 测试串口速率_山西充放电测试设备实现多台仪器准确通
  11. 社交网络和物联网技术,拓展了数据采集技术渠道
  12. 网络监控解决方案及拓扑图
  13. Flutter 游戏引擎 flame
  14. 用Python 编写Logistics算法
  15. 朋友问我c++学到哪了 加愤怒的小鸟 要看到最后
  16. php开发框架_适用于开发人员的10个PHP框架-最佳
  17. vite hmr热更新
  18. 10则极具内涵的程序猿幽默
  19. cpu压测神器:cpuburn深度指南
  20. 记录第一次ANN跑BCI Competition iv 2a过程

热门文章

  1. Goldengate Monitor Agent 安装
  2. NovAtel 卫星接收机 718D 数据手册简介
  3. NetSpider 网络蜘蛛1.0 的简介
  4. github工具之OA综合利用python
  5. html谷歌浏览器3D效果 图片不出现,chrome浏览器图片无法显示怎么办 chrome浏览器显示不出图片的解决方法...
  6. Aspose.CAD库简介
  7. MIMO信道的信道容量
  8. Android 动态申请应用权限
  9. 8大底层逻辑,提升思维能力
  10. 网站密码明文传输解决方案js+java