凸函数
在机器学习和深度学习中,通常需要把目标函数设置或者假定为凸函数(Convex Function
),这样能够满足局部最小值就是全局最小值的特点,方便进行梯度计算
局部最小值和全局最小值
局部最小值:如果存在一个\(\varepsilon>0\),使得对于任意满足\(\left|x-x^{*}\right|<\varepsilon\)的\(x\)都有\(f\left(x^{*}\right) \leq f(x)\),就把点\(x^{*}\)对应的函数值\(f(x^{*})\)成为函数\(f\)的一个局部最小值。从函数图像上看,局部最小值就像是山谷的一个底部
全局最小值:如果\(x^{*}\)对于任意的\(x\)都满足\(f\left(x^{*}\right) \leq f(x)\),则称\(f(x^{*})\)为函数\(f\)的全局最小值
凸函数定义
凸函数是一个定义在某个向量空间的凸子集\(C\)上的实值函数\(f\),而且对于凸子集\(C\)中任意两个向量\(x_{1}\)、\(x_{2}\)有\(f\left(\left(x_{1}+x_{2}\right) /2\right) \leq\left(f\left(x_{1}\right)+f\left(x_{2}\right)\right) / 2\)成立
将凸子集改为某个区间\(I\),定义如下:设\(f\)为定义在区间\(I\)上的函数,若对\(I\)上任意两点\(x_{1}\)、\(x_{2}\)和任意的实数\(\lambda \in(0,1)\),总有\(f\left(\lambda x_{1}+(1-\lambda) x_{2}\right) \leq \lambda f\left(x_{1}\right)+(1-\lambda) f\left(x_{2}\right)\),则称\(f\)为\(I\)上的凸函数,若定义中的\(\leq\)改为\(<\)也成立,则称函数\(f\)为对应子集或区间上的严格凸函数
如下图所示
1 | from matplotlib.lines import Line2D |