CMU凸优化笔记--凸集和凸函数

结束了一段时间的学习任务,于是打算做个总结。主要内容都是基于CMU的Ryan Tibshirani开设的Convex Optimization课程做的笔记。这里只摘了部分内容做了笔记,很感谢Ryan Tibshirani在官网中所作的课程内容开源。也很感谢韩龙飞在CMU凸优化课程中的中文笔记,我在其基础上做了大量的内容参考。才疏学浅,忘不吝赐教。

1、凸集合

1.1 基本概念

定义:给定一个集合$C \subseteq \mathbb{R}^n $,满足下列条件则称为凸集

$x,y \in C  \Rightarrow tx+(1-t)y \in C $ 对于任意的 $ 0 \leq t \leq 1$

直观上看,可以利用下图帮助理解,假定我们的变量在二维空间中,$x,y$为二维空间变量,黑体线代表的向量为$tx+(1-t)y$,$t$取值范围为$[0,1]$,那么无论t怎么变化,向量$tx+(1-t)y$总会落在$x$和$y$张成的集合空间中。

那么从定义出发,我们也能知道非凸集的情况,下图左侧为凸集,右图为非凸集

一句话来概括凸集就是集合内任意两点间连线依旧在集合内。

1.2  凸集简单例子

  • 凸包(convex hull):给定集合内的任意$k$个元素$x_1,...,x_k \in \mathbb{R}^n$,任意的线性组合形式:

$\theta_1 x_1+...+\theta_k x_k,\theta_i \leq,i=1,...,k$ 并且$ \sum_{i=1}^{k}\theta_i=1$。称之为集合的convex hull,表示为$conv(C)$。convex hull总是凸的。可以直观认为凸包就是最外围的元素所围成的集合外壳,下图是两个凸包的例子:

  • 空集、点、线都是凸集合
  • 范数球(Norm ball): 半径为$r$的范数球为:$\left \{x:||x|| \leq r \right \}$
  • 超平面(Hyperplane): 给定任意$a,b$ ,$\left \{x:a^Tx=b \right \}$
  • 半空间(Half space): $\left \{x:a^Tx \leq b \right \}$
  • 仿射空间(Affine space):$\left \{x:Ax = b \right \}$
  • 多面体(Polyhedron):$\left \{x:Ax \leq b \right \}$,下图为多面体

Note:集合$\left \{x:Ax \leq b,Cx=d \right\}$也是一个Polyhedron吗?

Answer:是的。因为对于任意的$Cx=d$,都可写成$Cx \leq d$ 与$-Cx \leq -d$,这样就和$Ax \leq b $形式一致。

1.3  锥(Cone):

定义:给定$C \in \mathbb{R}^n $,满足$x \in C \Rightarrow tx\in C$ 对于任意$ t\geq 0$称之为锥。

凸锥(convex cone):$x_1,x_2 \in C \Rightarrow t_1 x_1+t_2 x_2 \in C $,对于任意$ t_1,t_2 \geq 0$都成立,那么称集合$C$为凸锥。显然凸锥是锥的一种。

例子:

范数锥(Norm cone):$\left \{(x,t):||x|| \leq t \right \}$,对于一范数和二范数成立。下图取定不同的$t$做出了三维情况下的图:

正规锥(Normal cone):给定任意集合$C$,集合内任意一点$x \in C$,定义:

$\mathbb{N}_c(x)=\left \{g:g^Tx \geq g^Ty ,for \quad any \quad y \in C \right \}$

其含义是指Normal cone中的点与集合$C$内的点的内积永远大于集合内任意点与Normal cone内点的内积。如下图所示:

1.4  凸集的一些特性

  • 可分离超平面理论(Separating hyperplane theorem):两个不相交的凸集总存在一个超平面能将两者分离,如果$C \bigcap D =  \varnothing $,那么总存在着$a,b$使得有:

$C \subseteq \left \{x:a^Tx \leq b \right \}$ ,$D \subseteq \left \{x:x^T \geq b \right \}$。如下图所示:

  • 支撑超平面理论(Supporting hyperplane theorem):凸集边界上的一点必然存在一个支撑超平面穿过该点,即如果$C$都是非空凸集,$ x_0 \in $ bd$(C) $,那么必然存在一个超平面$a$,使得, $C \subseteq \left \{x:a^Tx \leq a^T x_0 \right \}$。如下图:

1.5  保凸操作

  • 集合交(Intersection):任何凸集之交产生的集合依旧是凸集。
  • 缩放和平移(Scaling and translation):假设$C$为凸集,那么$aC+b=\left \{ax+b:x \in C \right \}$对于任意$a,b$也是凸的。
  • 仿射映射与预映射(Affine images and preimages):如果$f(x)=Ax+b$是凸集,那么$f(C)=\left \{f(c):x \in C \right\}$也是凸集,如果$D$为凸集,那么$f^(-1)(D)=\left \{x:f(x) \in D \right \}$也是凸的。

1.6  凸集与保凸操作相关例子

条件概率集合(conditional probability set):$U,V$分别为$\left \{1,...,n\right \}$与$\left \{1,...,m\right \}$上的两个随机变量集合。$ C \subseteq \mathbb{R}^{nm} $为$U,V$的联合分布集合。对于每个$p \in C$,定义联合概率分布 $p_{ij} = \mathbb{P}(U=i,V=j)$。D为对应的条件概率分布,对于每个$q \in D$定义 $q_{ij}=\mathbb{P}(U=i|V=j)$。假定$C$为凸集,那么D一定为凸集。简单证明可用保凸操作中的Affine images and preimages,$D=\{q\in\mathbb{R}^{nm}:q_{ij}={\textstyle\frac{p_{ij}}{\textstyle\overset n{\underset{k=1}{\sum p_{kj}}}}}\}$

2 、凸函数

2.1 基本概念

定义:给定映射$f:\mathbb{R}^n \rightarrow \mathbb{R}$ 并且 dom$(f) \subseteq \mathbb{R}^n$为凸集,那么

$f(tx+(1-t)y) \leq tf(x)+(1-t)f(y)$ 对于任意 $0 \leq t \leq 1$,且 任意$x,y \in dom(f)$。如下图:

从上图可以看出,$f$的函数值总是位于连接$f(x)$和$f(y)$之间的直线下方。

Note:

  • 严格凸(Strictly convex):对于任意$x \neq y$,且$0<t<1$,有$f(tx+(1-t)y)<tf(x)+(1-t)f(y)$。简而言之,就是$f$比线性函数要更弯曲
  • 强凸(Strongly convex):对于参数$m>0$:$f-\frac{m}{2}||x||^2_2$依旧是一个凸函数。简而言之就是$f$要比一般的二次函数要弯曲。
  • 强凸 $\Rightarrow$ 严格凸 $\Rightarrow$ 凸

2.2 凸函数例子

  • 单变量函数:

例如指数函数$e^{ax} $对于任意a都是凸的,幂函数$x^a$在$a\geq 1 或 a \leq 0$的时候为凸,当$0 \leq a \leq 1$的时候非凸,对数函数$log x$是非凸函数

  • 仿射函数(Affine function):

$a^Tx+b$既是凸函数又是非凸函数

  • 二次函数(Quadratic function):

$\frac{1}{2}x^TQx+b^Tx+c$当$Q \succeq 0$(半正定)的时候为凸

  • 最小平方损失函数(Least squares loss):

$||y-Ax||_2^2$总是凸的,因为展开后的$A^TA$总是半正定的

  • 范数(Norm):

$||x||$的任何范数总是凸的,$\ell_p$范数定义为:$\parallel x\parallel_p=(\overset n{\underset{i=1}{\sum x_i^p}})^{1/p}$,对于任意$p\geq1$,$\parallel x\parallel _{\infty} =max|x_i|$。

谱(spectral)范数:$\parallel X \parallel _{op}=\sigma_1(X)$,

核范数(nuclear):$||X||_{tr}=\sum_{i=1}^{r}\sigma_r(X)$。其中$\sigma_1(X)\geq...\geq\sigma(X)\geq0$为矩阵$X$的从大到小排序的奇异值。

  • 指示函数(Indicator function):

如果$C$为凸,那么其指示函数为:$I_C(x)=\left\{\begin{array}{lc}0&x\in C\\\infty&x\not\in C\end{array}\right.$为凸函数。

  • 最大值函数(Max function):

$f(x)=max\left\{x_1,...,x_n\right\}$为凸函数

2.3 凸函数的一些特性

  • 上镜特性(Epigraph characterization):函数$f$为凸函数当且仅当其上镜图$epi(f)=\left \{(x,t)\in dom(f)\times \mathbb{R}:f(x)\leq t\right\}$为凸集,如下图:

  • 一阶特性(First-order characterization):假设$f$处处可微,那么$f$为凸函数当且仅当$dom(f)$为凸,并且有:$f(y)\geq f(x)+\nabla f(x)^T(y-x)$对于所有$x,y\in dom(f)$。

Note:如何证明凸函数的一阶特性?

Answer:从凸函数定义出发,$f(ty+(1-t)x) \leq tf(y)+(1-t)f(x) \quad \Rightarrow \quad \\ f(t(y-x)+x)+f(x))\leq t(f(y)-f(x))+f(x) \quad \Rightarrow \quad \\ \frac{f(t(y-x)+x)-f(x)}{t(y-x)}\leq frac{f(y)-f(x)}{y-x} \quad \Rightarrow \quad \\ \lim_{t\rightarrow0} \frac{f(t(y-x)+x)-f(x)}{t(y-x)}=\nabla f(x) \quad \Rightarrow \quad  \\ \nabla f(x)(y-x) \leq f(y)-f(x) \quad \Rightarrow \quad \\ f(y) \geq f(x)+\nabla f(x)(y-x)$

  • 二阶特性:如果函数二阶可微分,则$f$为凸函数当且仅当$dom(f)$为凸,且对于所有$x \in dom(f)$ 都有$\nabla^2f(x)\succeq0$
  • Jensen不等式:假若$f$为凸,并且$X$由$dom(f)$所支持的随机变量,则有$f(\mathbb{E}[x])\leq\mathbb{E}[f(x)]$

2.4保凸操作

  • 非负线性组合

$f_1,...,f_m$均为凸函数,那么对任意$a_1,...a_m\geq0$均有$a_1f_1+...+a_mf_m$为凸。

  • 逐点最大化

如果$f_s$对于任意$s\in S$均为凸,那么$f(x)=max_{s\in S}f_s(x)$是凸函数。

  • 部分最小化

如果$g(x,y)$在任意$x,y$处为凸函数,并且$C$是凸的,那么$f(x)=min_{y\in C}g(x,y)$为凸函数。

2.5 证明凸函数例子

对数求和函数(Log-sum-exp function):“soft max”函数:对于给定$a_i,b_i,i=1,...,k$,$g(x)=log(\sum_{i=1}^{k}e^{a_i^Tx+b_i})$。其光滑近似为$max_{i=1,...,k}(a_i^Tx+b_i)$。

那么为了证明凸函数,首先我们知道仿射函数均是凸函数,并且对于求和函数可以看成是$f(x)=log(\sum_{i=1}^{n}e^{x_i})$与$h(x)=a_i^Tx+b_i$的复合函数。因此只需要证明$f(x)$为凸函数即可。

$\nabla _i f(x)=\frac{e^{x_i}}{\sum_{l=1}{n}e^{x_l}}\\$

$\nabla_{ij}^{2}f(x)=\frac{e^{x_i}}{\sum_{l=1}{n}}1\{i=j\}-\frac{e^{x_i}e^{x_j}}{(\sum_{l=1}^{n}e^{x_l})^2}\\$

将上式重写为$\nabla^2f(x)=diag(z)-zz^T$,其中$z_i=e^{x_i}/(\sum_{l=1}^{n}e^{x_l})$。这是一个对角占优矩阵,因此是半正定矩阵,因此满足二阶性质。原式为凸函数得证。

CMU Convex Optimization(凸优化)笔记1--凸集和凸函数的更多相关文章

  1. Convex optimization 凸优化

    zh.wikipedia.org/wiki/凸優化 以下问题都是凸优化问题,或可以通过改变变量而转化为凸优化问题:[5] 最小二乘 线性规划 线性约束的二次规划 半正定规划 Convex functi ...

  2. murongxixi的凸优化笔记

    http://www.cnblogs.com/murongxixi/p/3598645.html 在前两节里已经涉及到集合的相对内部与闭包的概念,这一节我们深入研究它们的性质和计算,之后介绍凸函数的连 ...

  3. convex optimization

    ##凸优化总结所有这些想法基本是来自于书籍[convex optimization](http://book.douban.com/subject/1888111/),主要包括凸优化的基本理论,主要的 ...

  4. 凸优化(Convex Optimization)浅析

    本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~ 在机器学习中, 很多情况下我们都需要求得一个 问题的全局最优值(global optimum) ...

  5. 在线学习和在线凸优化(online learning and online convex optimization)—凸化方法4

    一些在线预测问题可以转化到在线凸优化框架中.下面介绍两种凸化技术: 一些在线预测问题似乎不适合在线凸优化框架.例如,在线分类问题中,预测域(predictions domain)或损失函数不是凸的.我 ...

  6. 凸优化 Convex Optimization PDF 扫描文字识别版

    凸优化理论 Convex Optimization 清华大学出版社 王书宁许窒黄晓霖译 Stephen Boyd Lieven Vandenbergt原著 2013 年l 月第1 版 下载链接 链接: ...

  7. 凸优化简介 Convex Optimization Overview

    最近的看的一些内容好多涉及到凸优化,没时间系统看了,简单的了解一下,凸优化的两个基本元素分别是凸函数与凸包 凸集 凸集定义如下: 也就是说在凸集内任取两点,其连线上的所有点仍在凸集之内. 凸函数 凸函 ...

  8. 在线学习和在线凸优化(online learning and online convex optimization)—FTL算法5

    最自然的学习规则是使用任何在过去回合中损失最小的向量. 这与Consistent算法的精神相同,它在在线凸优化中通常被称为Follow-The-Leader,最小化累积损失. 对于任何t: 我们谈到了 ...

  9. 在线学习和在线凸优化(online learning and online convex optimization)—在线凸优化框架3

    近年来,许多有效的在线学习算法的设计受到凸优化工具的影响. 此外,据观察,大多数先前提出的有效算法可以基于以下优雅模型联合分析: 凸集的定义: 一个向量 的Regret定义为: 如前所述,算法相对于竞 ...

随机推荐

  1. Mybatis逆向工程和新版本MybatisPlus3.4逆向工程的使用

    Mybatis和MybatisPlus3.4的使用 目录 Mybatis和MybatisPlus3.4的使用 1 RESTFUL 2 逆向工程 2.1 tkMybatis逆向工程 2.1.1 导入依赖 ...

  2. centos7有关于防火墙的命令

    查看防火墙状态 firewall-cmd --state 开启防火墙 systemctl start firewalld.service 关闭防火墙 systemctl stop firewalld. ...

  3. 实现一个简单的侧边导航Winform程序框架

    目录 简介 实现导航面板 实现方法 使用方法 实现标题栏 窗体拖拽及最大化 自定义窗体按钮 标题显示 按钮设置 实现状态栏 整体使用 参考文章 简介 每次新项目都要想着界面怎么设计好,但想来想去上位机 ...

  4. WebXml文件与SpringMVC的联系

    WebXml文件与SpringMVC的联系 无论采用何种框架来进行Java Web的开发,只要是Web项目必须在WEB-INF下有web.xml,这是java规范. 当然,我们最早接触到Java We ...

  5. OpenGL思维导图

  6. Markdown数学公式

    1. 显示位置与大小 正文(inline)中的LaTeX公式用$...$定义, 显示在当前行内. $\sum_{i=0}^N\int_{a}^{b}g(t,i)\text{d}t$ \(\sum_{i ...

  7. SpringMVC 获得请求数据

    获得请求参数 客户端请求参数的格式是:name=value&name=value- - 服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数: 基本类型 ...

  8. 好程序员打造核心教培天团,着力培养IT高级研发人才

    随着数字化进程加快,各行各业数字化转型迫在眉睫,技术人才战略成为企业发力重点,IT高级研发人才已经成为企业的"核心资产",对企业发展起关键性作用,然而市场上高级研发人才极为稀缺.据 ...

  9. 【UE4 C++ 基础知识】<2> UFUNCTION宏、函数说明符、元数据说明符

    UFunction声明 UFunction 是虚幻引擎4(UE4)反射系统可识别的C++函数.UObject 或蓝图函数库可将成员函数声明为UFunction,方法是将 UFUNCTION 宏放在头文 ...

  10. 面试题系列:new String("abc")创建了几个对象

    new String("abc")创建了几个对象 面试官考察点猜想 这种问题,考察你对JVM的理解程度.涉及到常量池.对象内存分配等问题. 涉及背景知识详解 在分析这个问题之前,我 ...