凸优化课程-0
凸优化的重要性
首先,在现实生活中,如果对实际问题进行建模,直接符合凸优化条件的问题很少很少,少的可怜,我们在机器学习中、深度学习中所谓的模型正好符合凸优化模型的情况是经过无数先辈几十年的沉淀转化而来的,现今的机器学习、深度学习,所谓的智能,其实也只是数据进行建模,kNN、贝叶斯、决策树、SVM做超平面分隔、k聚簇等等只是在使用统计学的方法来做决策,其实只是概率(对已发生事件的频率统计)选择来进行决策而已,而解决这些问题的过程当中,存在着无数约束条件:等式+不等式。求解?(x),使得等式+不等式符合条件,经过先辈们的改善、切合,发现转化为凸优化可以解决这类问题。但是还有着大量的问题没法解决,例如NP问题,目前是无解的,因为它涉及的约束条件、可能性太多,计算过于复杂。我们没法直接将它转化为凸优化。
其次,凸优化的重要在于它是一个相对而言被嚼烂的数据模型,对凸优化的问题我们在基础数学上面已经有了很多解决方法,例如可以将凸优化问题Lagerange做对偶化,然后用Newton、梯度下降算法求解等等。再次,现有的优化方法不是都解决了的,还是有很多问题是没有解决的,例如NP问题,如果转化为可解问题,如何对这些问题做近似优化处理,这就需要遇到具体问题的时候具体去分析,而且建立一个近似可解的优化模型需要我们对优化本身理解透彻。一个对水墨、颜料都不懂的画家如何能够创造出新颖的画风?
最后,回答末尾一个问题,凸优化的作用在于思维方式的转变,跟计算机思维方式一样,计算机从业人员在遇到问题的时候习惯了通过电脑去协助解决问题,而他们的价值不在于知道听得懂别人告诉他如何解决问题,而是遇到现实问题的时候都会将问题拆分成机器可以实现的方式去解决:例如遇到购物,阿里巴巴建立了网站、app、c/s系统、b/s系统,用互联网建立信息流,建立帝国。遇到查询问题,百度建立了搜索引擎。这种思维方式才是最重要的。。同样,凸优化的价值也在于思维转变,遇到现实生活问题的时候,我们必然要对问题进行建模,然后抽象问题,利用机器去帮助我们解决问题,那么,当问题的计算量接近无穷大的时候我们如何去解决?这就需要我们抽离问题抽象结构,想办法将转换成“凸优化问题”,因为凸优化已经被嚼烂,所以只要问题转化成凸优化,我们就可以分布迭代去运算,于是才有了机器学习、深度学习这一门门的交叉科学。凸优化是数学领域的重要分支,而计算机科学仅仅是数学这门基础科学的延伸而已,基础科学才是王道!!! C#、Java固然是被封装成了便于人类使用的高级语言,但是总有些功能是“已有实现”没有封装好的,这时就需要我们回归更加原始语言C、汇编去编程。。深究底层、精通基础科学才是从容面对所有问题的解决王道,学会别人解决过的问题只能让你解决相同的问题,现实是无限可能的,总有未解决过的问题等着你,凸优化,你值得拥有
凸优化斯坦福课程网站
国内视频下载链接,与我个人进行的字幕翻译
链接:https://pan.baidu.com/s/1o9z2YXs 密码:pq20
字幕翻译github项目
https://github.com/zangzelin/convex_optimization_subtitle_file