凸集与凸函数

2022-08-09 19:25:06 浏览数 (1)

凸函数在优化问题中有着很好的性质,本文记录相关概念。

凸集与凸函数

凸集
  • 定义:设集合 C⊂Rn ,若对 ∀x,y∈C ,有:

theta x (1-theta) y in C, theta in[0,1]

则称 C 为 凸集

  • 几何意义:若 x, y 属于凸集 C x y 连线上的所有点都属于凸集 C
  • 性质: 凸集关于加法、数乘和交运算都是封闭的。对于凸集 C_{1}, C_{2} in mathbb{R}^{n} , beta in mathbb{R} ,则: C_{1} C_{2}=left{x_{1} x_{2} mid x_{1} in C_{1}, x_{2} in C_{2}right} 是凸集
  • beta C_{1}=left{beta x mid x in C_{1}right} 是凸集
  • C_{1} cap C_{2} 是凸集
凸函数
  • 定义:设集合 C subset mathbb{R}^{n} 为非空凸集,函数 f: C rightarrow mathbb{R} 。若对 forall x, y in C ,有:
f(theta x (1-theta) y) leq theta f(x) (1-theta) f(y), theta in[0,1]
  • 几何意义:凸函数曲线上任意两点连线都在函数曲线之上:

判定方法

  1. 一阶判定条件 设集合 C⊂Rn 为非空开凸集, 函数 f:C→R 可微, 则:
    • f(x) 是凸函数当且仅当对∀x,y∈C 有:
f(y) geqslant f(x) g(x)^{mathrm{T}}(y-x)

f(x) 是严格凸函数当且仅当对∀x,y∈C,x≠y有:

f(y)>f(x) g(x)^{mathrm{T}}(y-x)
    1. 二阶判定条件 设集合 C⊂Rn 为非空开凸集, 函数 f:C→R 二阶连续可微, 则:
      • f(x) 是凸函数当且仅当对∀x∈C, Hesse矩阵 G(x) 半正定
      • 若对 ∀x∈C, Hesse矩阵 G(x) 正定,则 f 是严格凸函数。

凸函数判定条件证明

凸函数(一元)的定义是: 任意属于定义域的两个自变量x1和x2,且对于任意0≤θ≤1,如果函数f(⋅)满足:

fleft(theta x_{1} (1-theta) x_{2}right) leq theta fleft(x_{1}right) (1-theta) fleft(x_{2}right)

那么函数f(⋅)是凸函数。

直观的理解就是函数曲线上任意两点为短点的线段一定在函数曲线的上方。

  • 多变量函数可以把自变量写成一个向量 mathbf{x}=left[x_{1}, x_{2}, ldots, x_{n}right]^{T} ,同理对于定义域的任意两个 自变量 mathbf{ x } _ { 1 } mathbf{x }_ { 2} ,以及任意 0 leq theta leq 1 ,如果函数 f(cdot) 满足:
  • 那么函数 f(cdot) 是凸函数。
一阶判定条件充分性证明
  • 一阶条件的含义为(以一元函数为例):对于定义域内任意两个自变量 x_{1} x_{2} ,函数 f(cdot) 满足则函 fleft(x_{2}right) geq fleft(x_{1}right) f^{prime}left(x_{1}right)left(x_{2}-x_{1}right) f(cdot) 为凸函数。

直观的理解就是函数曲线始终位于任意一点的切线的上方。

  • 现在要证明的凸函数有 f ( x _ { 2 } ) geq f ( x _ { 1 } ) f ^ { prime } ( x _ { 1 } ) ( x _ { 2 } - x _ { 1 } ) 的性质。
  • 假设函数 f 在定义域上是凸函数,那么有:

  • 变形可以得到:
  • 令g(θ)=f(x2 θ(x1−x2)),则g(0)=f(x2),那么有

fleft(mathbf{x}_ { 1}right) geq fleft(mathbf{x}_ {2}right) frac{g(theta)-g(0)}{theta}
  • 趋近于0时,有:
lim _{theta rightarrow 0} frac{g(theta)-g(0)}{theta}=g^{prime}(0)

这一项也就是函数g(θ)在θ=0处的导数值,g(θ)实际是f(x)与x=x2 θ(x1−x2)的复合函数,容易求导得:

的复合函数,容易求导得:

frac{d g}{d theta}=frac{df}{dx}frac{dx}{dtheta}=left(mathbf{x}_ {1}-mathbf{x}_ {2}right) frac{d fleft(mathbf{x}_ {2} thetaleft(mathbf{x}_ {1}-mathbf{x}_ {2}right)right)}{d mathbf{x}}
  • 由于只要求在theta = 0处的导数值所以容易得
  • 代入回不等式即可得到:
fleft(mathbf{x}_ {1}right) geq fleft(mathbf{x}_ {2}right) nabla fleft(mathbf{x}_ {2}right) cdotleft(mathbf{x}_ {1}-mathbf{x}_ {2}right)
二阶判定条件充分性证明
  • 在凸函数的前提下,根据一阶条件可以得到:
fleft(mathbf{x}_ {1}right) geq fleft(mathbf{x}_ {2}right) nabla fleft(mathbf{x}_ {2}right) cdotleft(mathbf{x}_ {1}-mathbf{x}_ {2}right)
  • 将f在任一点x0泰勒展开:

fleft(mathbf{x}_ {0} t mathbf{d}right)=fleft(mathbf{x}_ {0}right) t nabla fleft(mathbf{x}_ {0}right) mathbf{d} frac{t^{2}}{2} mathbf{d}^{T} mathbf{H d} oleft(t^{2}right)
  • 其中 t 为长度(标量),d 为任意向量
  • 根据以上两个公式可得:
  • 该不等式在 t to 0 时仍然成立,而 t to 0 时有:
lim _{t rightarrow 0} frac{oleft(t^ {2}right)}{t^ {2}}=0
  • 因此有:
mathbf{d}^{T} mathbf{H d} geq 0
  • 即 Hessian 矩阵 mathbf{H} 必须半正定。

参考资料

  • https://blog.csdn.net/wxc971231/article/details/115275103
  • https://www.zhihu.com/question/40181086/answer/693868441

0 人点赞