最近被迫学习了凸优化理论,感觉还是有点东西的,个人感觉机器学习的内核就是优化,如果该优化问题还能转成或者近似成凸优化那将是一个巨大的突破,因为凸函数的性质非常优秀,(拟)凸优化的理论研究也已经比较成熟。不过遗憾的是,我们的非凸优化问题理论尚不完,而在现在这个深度学习开始野蛮生成的时间点,显然非凸问题更加常见。不过非凸近似或者转换为凸问题也不失为一个不错的策略,所以凸优化理论的重要性不言而喻,特此对最近的学习作一记录,由于刚刚入门,如有错误,还请批评指正。
凸函数定义
关于凸函数的定义,个人总结了2种定义:
1、如果函数
的上镜图
为凸集则,函数
为凸函数。(来自于convex analysis)
这里又引申出2个问题,什么是函数上镜图;凸集是什么?
首先,凸集的定义,对于集合S,如果满足:
则S为凸集。直观的理解就是凸集内的点通过加法和乘法无法逃出这个集合;或者说
2个点构成的线段上任意一点还在该集合内。
然后关于什么是上镜图这个问题我也还没有搞清楚,留作标记。百度上说是值大于函数值的点构成的区域为该函数的上镜图,但关于convex analysis这本书上的定义还是有点搞不懂。
2、第二种定义直接数学表达式比较粗暴。首先函数
,
为凸集, 如果有:
则函数
为凸函数。虽然直接给表达式比较简单粗暴,但要想理解它还是比较困难的,简单理解就是取
, 则函数上
的中点函数值不大于
之间连线中点的值。也就是说对于凸函数而言函数曲线会位于其任意2点之间连的直线。
严格凸和强凸
1、严格凸,凸函数不等式去个等于号就是严格凸了,也就是去掉了函数曲线在2点之间是直线的情况。
2、强凸,强凸函数的定义将涉及函数的二阶偏导数,即Hessian矩阵,这也与凸函数的性质息息相关,放在下篇博客给出。下篇博客将给出强凸函数的定义和凸函数的各种良好性质。