没有系统学过数学优化,但是机器学习中又常用到这些工具和技巧,机器学习中最常见的优化当属凸优化了,这些可以参考Ng的教学资料:http://cs229.stanford.edu/section/cs229-cvxopt.pdf,从中我们可以大致了解到一些凸优化的概念,比如凸集,凸函数,凸优化问题,线性规划,二次规划,二次约束二次规划,半正定规划等,从而对凸优化问题有个初步的认识。以下是几个重要相关概念的笔记。
凸集的定义为:
其几何意义表示为:如果集合C中任意2个元素连线上的点也在集合C中,则C为凸集。其示意图如下所示:
常见的凸集有:
n维实数空间;一些范数约束形式的集合;仿射子空间;凸集的交集;n维半正定矩阵集;这些都可以通过凸集的定义去证明。
凸函数的定义为:
其几何意义表示为函数任意两点连线上的值大于对应自变量处的函数值,示意图如下:
凸函数的一阶充要条件为:
其中要求f一阶可微。
二阶充要条件为:
其中要求f二阶可微,表示二阶导数需大于0才是凸函数。
常见的凸函数有:指数函数族;非负对数函数;仿射函数;二次函数;常见的范数函数;凸函数非负加权的和等。这些可以采用上面2个充要条件或者定义去证明。
凸优化问题(OPT)的定义为:
即要求目标函数是凸函数,变量所属集合是凸集合的优化问题。或者目标函数是凸函数,变量的约束函数是凸函数(不等式约束时),或者是仿射函数(等式约束时)。
对于凸优化问题来说,局部最优解就是全局最优解。
常见的凸优化问题包括:
线性规划(LP):该问题是优化下面的式子:
其中那个不常见的奇怪符号表示按元素小于等于,后面出现类似符号可以类似理解。
二次规划(QP):该问题是优化下面的式子:
二次约束的二次规划(QCQP):该问题是优化下面的式子:
半正定规划(SDP):该问题是优化下面的式子:
按照文章说SDP在机器学习领域应用很广,最近很流行,不过我好像没太接触到过。
参考资料: