凸集的定义是:集合C内任意两点间的线段任然包含在集合中,则此集合称为凸集。形式化的方法描述:以任意一点作为原点,对于集合内任意两点x1⃗\vec{x_1}x1,x2⃗\vec{x_2}x2,和任意一个处于[0,1]的实数θ\thetaθ,都有:θx1⃗+(1−θ)x2⃗∈C\theta \vec{x_1}+(1-\theta)\vec{x_2}\in Cθx1+(1−θ)x2∈C
凸函数在优化中经常用到,这因为凸函数的局部最优点就是全局最优点。因此在机器学习中,我们的优化目标通常是凸函数。凸函数的定义域是凸集,类似于凸集的性质它满足:f(θx1+(1−θ)x2)≤θf(x1)+(1−θ)f(x2)f(\theta x_1+(1-\theta)x_2)\leq\theta f(x_1)+(1-\theta)f(x_2)f(θx1+(1−θ)x2)≤θf(x1)+(1−θ)f(x2)如下图所示:
这是一个典型的凸函数,f(x1)≤f(x2)且x1≤x2f(x_1)\leq f(x_2)且x_1\leq x_2f(x1)≤f(x2)且x1≤x2,所以有
f(x2)≥θf(x1)+(1−θ)f(x2)≥f(x1)f(x_2)\geq \theta f(x_1)+(1-\theta)f(x_2)\geq f(x_1)f(x2)≥θf(x1)+(1−θ)f(x2)≥f(x1)x2≥θx1+(1−θ)x2≥x1x_2\geq \theta x_1+(1-\theta)x_2\geq x_1x2≥θx1+(1−θ)x2≥x1,
所以有f(θx1+(1−θ)x2)≤θf(x1)+(1−θ)f(x2)f(\theta x_1+(1-\theta)x_2)\leq\theta f(x_1)+(1-\theta)f(x_2)f(θx1+(1−θ)x2)≤θf(x1)+(1−θ)f(x2)
此外凸函数还有两个重要导数性质:x1,x2x_1,x_2x1,x2是定义域上任意两个值,则有:f(x2)≥f(x1)+▽f(x)(x2−x1)f(x_2)\geq f(x_1)+\bigtriangledown f(x)(x_2-x_1)f(x2)≥f(x1)+▽f(x)(x2−x1)
凸函数二阶导还满足:▽2f(x)≥0\bigtriangledown^2f(x)\geq 0▽2f(x)≥0
我们可以通过凸函数性质来证明KL散度的非负性,KL散度表示为KL(p∣∣q)=−∑xp(x)log(p(x)q(x))KL(p||q)=-\sum_x p(x)log(\frac{p(x)}{q(x)})KL(p∣∣q)=−x∑p(x)log(q(x)p(x))表示两个分布的接近程度,越接近,KL散度越小。由于log是凸函数,所以有:
KL(p∣∣q)≥−log[∑xp(x)logp(x)q(x)]=−log(∑xq(x))=0KL(p||q)\geq-log[\sum_x p(x)log\frac{p(x)}{q(x)}]=-log(\sum_x q(x))=0KL(p∣∣q)≥−log[x∑p(x)logq(x)p(x)]=−log(x∑q(x))=0