凸优化学习(三)——凸函数

2023-11-17

注意,本文内容来自于吴恩达老师cs229课堂笔记的中文翻译项目:https://github.com/Kivy-CN/Stanford-CS-229-CN 中的凸优化部分的内容进行翻译学习。

3. 凸函数

凸优化的一个核心要素是凸函数的概念。

定义 3.1 3.1 3.1 我们称一个函数 f : R n → R f:R^n\rightarrow R f:RnR是一个凸函数,需要满足其定义域(记作 D ( f ) \mathcal{D}(f) D(f))是一个凸集,同时给定任意 x , y ∈ D ( f ) x,y\in \mathcal{D}(f) x,yD(f)以及 θ ∈ R , 0 ≤ θ ≤ 1 \theta\in R,0\le\theta\le 1 θR,0θ1,满足:

f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta x +(1-\theta) y)\le \theta f(x)+(1-\theta)f(y) f(θx+(1θ)y)θf(x)+(1θ)f(y)

(译者注:注意这里函数的凸凹性和我们本科《高等数学》上册里面微分中值定理与导数应用章节中曲线的凸凹性是相反的,不过这里定义的凸凹的方向在机器学习中更常见)

直观地,考虑这个定义的方法是如果我们在凸函数的图上取任意两点并在两点之间画一条直线,那么函数在这两点之间的部分就会在这条直线下面。这种情况如图 2 2 2^2 22所示。

2 不要太担心 f f f的定义域是凸集的要求,这个要求仅仅是在技术上保证 f ( θ x + ( 1 − θ ) y ) f(\theta x +(1-\theta) y) f(θx+(1θ)y)有定义(如果定义域 D ( f ) \mathcal{D}(f) D(f)不是凸集,则即使 x , y ∈ D ( f ) x,y\in\mathcal{D}(f) x,yD(f) f ( θ x + ( 1 − θ ) y ) f(\theta x +(1-\theta) y) f(θx+(1θ)y)也有可能没有意义)

如果在定义 3.1 3.1 3.1的基础上增加严格的不等的条件 x ≠ y x\ne y x̸=y 0 &lt; θ &lt; 1 0&lt;\theta&lt;1 0<θ<1,则可以说一个函数是严格凸函数。如果 f f f是凸函数则我们可以得到 − f -f f凹函数, 同理如果 f f f是严格凸函数则 − f -f f严格凹函数。

3.1 凸性的一阶条件

假设函数 f : R n → R f:R^n\rightarrow R f:RnR可微(即其梯度 3 ∇ x f ( x ) ^3\nabla_xf(x) 3xf(x)在函数 f f f的定义域内处处存在)。则 f f f是一个凸函数,只要满足 D ( f ) \mathcal{D}(f) D(f)是一个凸集,同时对所有的 x , y ∈ D ( f ) x,y\in\mathcal{D}(f) x,yD(f),有:

3 回忆一下梯度定义为 ∇ x f ( x ) ∈ R n , ( ∇ x f ( x ) ) i = ∂ f ( x ) ∂ x i \nabla_xf(x)\in R^n,(\nabla_xf(x))_i=\frac{\partial f(x)}{\partial x_i} xf(x)Rn,(xf(x))i=xif(x)。有关梯度和海森函数的知识,请参阅前面关于线性代数的部分的章节笔记。

f ( y ) ≥ f ( x ) + ∇ x f ( x ) T ( y − x ) f(y)\ge f(x)+\nabla_xf(x)^T(y-x) f(y)f(x)+xf(x)T(yx)

函数 f ( x ) + ∇ x f ( x ) T ( y − x ) f(x)+\nabla_xf(x)^T(y-x) f(x)+xf(x)T(yx)称为函数 f ( x ) f(x) f(x)在点 x x x处的一阶近似(first-order approximation)。 直觉上来说,这个函数可以近似的认为是函数 f f f在点 x x x处的切线。凸性的一阶条件就是阐明了, f f f是凸函数当且仅当该函数的切线是一个全局下估计(global underestimator)。换句话说,如果我们根据函数的特性在任意一点绘制该函数的切线,那么这条直线上的每一点将低于函数 f f f在相应位置的点。

与凸性的定义类似,当严格不等条件成立时 f f f是严格凸函数,当不等式符号颠倒时 f f f是凹函数,当颠倒的不等式的严格不等条件成立时 f f f是严格凹函数。

3.2 凸性的二阶条件

假设函数 f : R n → R f:R^n\rightarrow R f:RnR二阶可微(即其海森矩阵 4 ∇ x 2 f ( x ) ^4\nabla_x^2f(x) 4x2f(x)在函数 f f f的定义域内处处存在)。则 f f f是一个凸函数,只要满足 D ( f ) \mathcal{D}(f) D(f)是一个凸集,同时对所有的 x , y ∈ D ( f ) x,y\in\mathcal{D}(f) x,yD(f),有:

4 回忆一下海森矩阵定义为 ∇ x 2 f ( x ) ∈ R n × n , ( ∇ x 2 f ( x ) ) i j = ∂ 2 f ( x ) ∂ x i ∂ x j \nabla_x^2f(x)\in R^{n\times n},(\nabla_x^2f(x))_{ij}=\frac{\partial^2 f(x)}{\partial x_i\partial x_j} x2f(x)Rn×n,(x2f(x))ij=xixj2f(x)

∇ x 2 f ( x ) ⪰ 0 \nabla_x^2f(x)\succeq 0 x2f(x)0

当符号“ ⪰ \succeq ”在这里与矩阵结合使用时,指的是正半定矩阵,而不是分量不等式(componentwise inequality) 5 ^5 5。在一维中,这等价于二阶导数 f ′ ′ ( x ) f&#x27;&#x27;(x) f(x)总是非负的(即函数始终为绝对的非负值(positive non-negative))。

5 与对称矩阵 X ∈ S n X\in S^n XSn类似, X ⪯ 0 X\preceq 0 X0代表 X X X是负定矩阵。对于向量不等式来说,有时可以用符号‘ ≤ \le ’和‘ ≥ \ge ’代替符号‘ ⪯ \preceq ’和‘ ⪰ \succeq ’。尽管这里的符号类似向量的符号,但是意义非常不一样。特别的,矩阵 X ⪰ 0 X\succeq 0 X0并不意味着对于所有矩阵的元素下标 i , j i,j i,j都有元素 X i j ≥ 0 X_{ij}\ge 0 Xij0

同样,与凸性的定义以及一阶条件类似,如果海森矩阵是正定的,则函数 f f f是严格凸函数,如果是半负定则函数是凹函数,是负定则函数是严格凹函数。

3.3 Jensen不等式

假设我们从凸函数的基本定义中的不等式开始:

f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) 其 中 0 ≤ θ ≤ 1 f(\theta x +(1-\theta) y)\le \theta f(x)+(1-\theta)f(y)\quad 其中\quad 0\le\theta\le 1 f(θx+(1θ)y)θf(x)+(1θ)f(y)0θ1

使用归纳法,这可以相当容易地扩展到多个点的凸组合:

f ( ∑ i = 1 k θ i x i ) ≤ ∑ i = 1 k θ i f ( x i ) 其 中 ∑ i = 1 k θ i = 1 , θ i ≥ 0 ∀ i f(\sum_{i=1}^k\theta_ix_i)\le\sum_{i=1}^k\theta_if(x_i)\quad 其中\quad\sum_{i=1}^k\theta_i=1,\theta_i\ge 0\quad\forall i f(i=1kθixi)i=1kθif(xi)i=1kθi=1,θi0i

事实上,这也可以推广到无穷和或积分。在后一种情况下,不等式可以写成:

f ( ∫ p ( x ) x d x ) ≤ ∫ p ( x ) f ( x ) d x 其 中 ∫ p ( x ) x d x = 1 , p ( x ) ≥ 0 ∀ i f(\int p(x)xdx)\le\int p(x)f(x)dx\quad 其中\quad\int p(x)xdx=1,p(x)\ge0\quad\forall i f(p(x)xdx)p(x)f(x)dxp(x)xdx=1,p(x)0i

由于 p ( x ) p(x) p(x)积分为 1 1 1,通常把它看作概率密度,在这种情况下,前面的方程可以用期望来表示:

f ( E [ x ] ) ≤ E [ f ( x ) ] f(E[x])\le E[f(x)] f(E[x])E[f(x)]

最后一个不等式叫做Jensen不等式,后面的课上会讲到。 6 ^6 6

6 事实上,这四个方程有时都被称为Jensen不等式,因为它们都是等价的。但是,对于这门课,我们将使用该术语来具体指这里给出的最后一个不等式。

3.4 水平集

凸函数产生一种特别重要的凸集称为 α − s u b l e v e l \alpha-sublevel αsublevel集。 给出了凸函数 f : R n → R f:R^n\rightarrow R f:RnR和一个实数 α ∈ R \alpha\in R αR α − s u b l e v e l \alpha-sublevel αsublevel集被定义为:

{ x ∈ D ( f ) : f ( x ) ≤ α } \{x\in\mathcal{D}(f):f(x)\le\alpha\} {xD(f):f(x)α}

换句话说, α − s u b l e v e l \alpha-sublevel αsublevel集是所有满足 f ( x ) ≤ α f(x)\le\alpha f(x)α的点 x x x的集合。

为了证明这是一个凸集,考虑任意 x , y ∈ D ( f ) x,y\in\mathcal{D}(f) x,yD(f),并且 f ( x ) ≤ α , f ( y ) ≤ α f(x)\le\alpha,f(y)\le\alpha f(x)α,f(y)α,则:

f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) ≤ θ α + ( 1 − θ ) α = α f(\theta x +(1-\theta) y)\le \theta f(x)+(1-\theta)f(y)\le\theta\alpha+(1-\theta)\alpha=\alpha f(θx+(1θ)y)θf(x)+(1θ)f(y)θα+(1θ)α=α

3.5 凸函数判断的实例

我们从几个单变量凸函数的简单例子开始,然后继续讨论多元函数。

  • 指数函数是凸函数。有函数 f : R → R f:R\rightarrow R f:RR,任意 a ∈ R a\in R aR使得 f ( x ) = e a x f(x)=e^{ax} f(x)=eax。为了证明 f f f是凸函数,我们可以简单的考虑二阶导数 f ′ ′ ( x ) = a 2 e a x f&#x27;&#x27;(x)=a^2e^{ax} f(x)=a2eax,对于所有 x x x都是正的。

  • 负对数函数是凸函数。函数 f : R → R , f ( x ) = − l o g x f:R\rightarrow R,f(x)=-logx f:RR,f(x)=logx,有定义域 D ( f ) = R + + \mathcal{D}(f)=R_{++} D(f)=R++(这里的 R + + R_{++} R++代表严格正实数的集合 { x : x &gt; 0 } \{x:x&gt;0\} {x:x>0})。则对于所有的 x x x都满足 f ′ ′ ( x ) = 1 / x 2 &gt; 0 f&#x27;&#x27;(x)=1/x^2&gt;0 f(x)=1/x2>0

  • 仿射函数。函数 f : R → R , f ( x ) = b T x + c f:R\rightarrow R,f(x)=b^Tx+c f:RR,f(x)=bTx+c,满足 b ∈ R n , c ∈ R b\in R^n,c\in R bRn,cR。在这种情况下对于所有的 x x x,该函数的海森矩阵 ∇ x 2 f ( x ) = 0 \nabla^2_xf(x)=0 x2f(x)=0。应为零矩阵即是半正定也是半负定矩阵,因此函数 f f f即是凸函数,也是凹函数。事实上,这种形式的仿射函数是唯一既凸又凹的函数。

  • 二次函数。函数 f : R → R , f ( x ) = 1 2 x T A x + b T x + c f:R\rightarrow R,f(x)=\frac12x^TAx+b^Tx+c f:RR,f(x)=21xTAx+bTx+c,系数的对称矩阵为 A ∈ S n , b ∈ R n A\in S^n,b\in R^n ASn,bRn以及 c ∈ R c\in R cR。在先前线性代数笔记中,我们展示了这个函数的海森函数为:

∇ x 2 f ( x ) = A \nabla^2_xf(x)=A x2f(x)=A

因此,函数 f f f的凸性或非凸性完全取决于A是否为半正定矩阵:如果 A A A为半正定,则函数为凸函数(严格凸、凹、严格凹函数同样类比);如果 A A A是不定的矩阵,那么 f f f既不是凸函数也不是凹函数。

注意,平方欧几里得范数 f ( x ) = ∥ x ∥ 2 2 = x T x f(x) = \parallel x\parallel^2_2=x^Tx f(x)=x22=xTx是二次函数的一个特例,其中 a = I , b = 0 , c = 0 a = I, b = 0, c = 0 a=I,b=0,c=0,因此它是一个严格凸函数。

  • 范数函数是凸函数。函数 f : R → R f:R\rightarrow R f:RR R n R^n Rn上的某个范数。然后根据三角不等式和正范数的同质性,对于 x , y ∈ R n , 0 ≤ θ ≤ 1 x,y\in R^n,0\le\theta\le 1 x,yRn,0θ1,有:

f ( θ x + ( 1 − θ ) y ) ≤ f ( θ x ) + f ( ( 1 − θ ) y ) = θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta x +(1-\theta) y)\le f(\theta x)+f((1-\theta)y) =\theta f(x)+(1-\theta)f(y) f(θx+(1θ)y)f(θx)+f((1θ)y)=θf(x)+(1θ)f(y)

这是一个凸函数的例子,由于范数不是处处可微的(例如, 1 1 1范数, ∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \parallel x\parallel_1 = \sum_{i=1}^n|x_i| x1=i=1nxi,在任意 x i = 0 x_i = 0 xi=0的点上都是不可微的),因此无法根据二阶或一阶条件证明凸性。

  • 凸函数的非负加权和是凸函数。令 f 1 , f 2 , … , f k f_1,f_2,\dots,f_k f1,f2,,fk是凸函数,并且有 w 1 , w 2 , … , w k w_1,w_2,\dots,w_k w1,w2,,wk都是非负实数,则:

f ( x ) = ∑ i = 1 k w i f i ( x ) f(x) = \sum_{i=1}^kw_if_i(x) f(x)=i=1kwifi(x)

是一个凸函数,因为:

f ( θ x + ( 1 − θ ) y ) = ∑ i = 1 k w i f i ( θ x + ( 1 − θ ) y ) ≤ ∑ i = 1 k w i ( θ f i ( x ) ) + ( 1 − θ ) f i ( y ) ) = θ ∑ i = 1 k w i f i ( x ) + ( 1 − θ ) ∑ i = 1 k w i f i ( y ) = θ f ( x ) + ( 1 − θ ) f ( x ) \begin{aligned} f(\theta x +(1-\theta) y)&amp;=\sum_{i=1}^kw_if_i(\theta x +(1-\theta) y) \\ &amp;\le\sum_{i=1}^kw_i(\theta f_i(x))+(1-\theta)f_i(y)) \\ &amp;=\theta\sum_{i=1}^kw_if_i(x)+(1-\theta)\sum_{i=1}^kw_if_i(y) \\ &amp;=\theta f(x) + (1-\theta)f(x) \end{aligned} f(θx+(1θ)y)=i=1kwifi(θx+(1θ)y)i=1kwi(θfi(x))+(1θ)fi(y))=θi=1kwifi(x)+(1θ)i=1kwifi(y)=θf(x)+(1θ)f(x)

下一篇:凸优化学习(四)——凸优化问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

凸优化学习(三)——凸函数 的相关文章

  • 【最新最详细】SQL Server 2019 安装教程

    最新最详细 SQL Server 2019 安装教程 引言 今天又双叒搞新电脑的环境 对于我这个 Net程序员 那就肯定离不开安装 SQL Server 了 网上没有找到很详细的教程 所以决定自己再写一份 下面直接进入主题 下载SQL Se
  • 基于 Matlab 的 RLS 算法进行时间序列预测

    基于 Matlab 的 RLS 算法进行时间序列预测 时间序列分析在许多领域中都具有重要的应用价值 例如金融 经济 气象等 时间序列预测是其中的一个关键问题 其目的是根据过去一段时间的观测值来预测未来一段时间的值 在本文中 我们将介绍如何使
  • Vue中安装less-loader报错处理

    Vue中使用less 需要安装less loader 1 安装命令 npm install less loader 需要注意的是less loader版本需要和webpack版本对应 版本不对会报错 webpack 4 使用 less lo
  • 【ML on Kubernetes】第 10 章:构建、部署和监控模型

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 从主机备份ubuntu到虚拟机的坑

    系统用的是16 04 1 备份过程 直接采用这个方法 不过我是直接用的镜像 data放在U盘 没有做成启动U盘 参考链接1 问题就来了 直接挂载镜像使用的是CD ROM 可能出现权限问题无法修改 记住要提前把必要的文件保存在虚拟机的系统下

随机推荐

  • Python自动化测试专栏——选择元素基本方法之CSS选择器

    CSS选择器选择元素 1 根据 tag名选择元素 选择 所有的tag名为div的元素 wd find elements by css selector div 2 根据id属性选择元素 wd find element by css sele
  • tensorflow如何更新到最新的版本

    背景 前面在anaconda中使用tensorflow时 在深度学习目标检测的那方面出现了问题 提示 no op 当你在百度上百度这个错误的时候 很多的CSDN博主会告诉你是因为你的tensorflow版本过低 准备 那就是更新tensor
  • MySQL——习题:每个部门当前员工最高薪水

    有一个员工表dept emp简况如下 有一个薪水表salaries简况如下 获取所有部门中员工薪水最高的相关信息 给出dept no emp no以及其对应的salary 按照部门编号升序排列 以上例子输出如下 解法1 SELECT d1
  • 移植Qt4.8.4项目到QT5.2上时遇到的一些问题

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 问题1 Qt 5 2 使用原来的QT4 8 4项目时QWebView QWebFrame等类无法编译通过 出现原因 QWebView QWebFrame QWebPage
  • OJ: 蛇形矩阵 螺旋矩阵

    题目描述 题目说明 在一个N N的方阵中 填入1 2 N共N个数 并要求构成如下的格式 N lt 10 例 输入描述 多组数据 每行读入一个N 输出描述 对应输出N N的蛇形矩阵 每个数字占3格子 每个蛇形矩阵之间用空行分割 输入样例 3
  • 【Git】git pull总是要输入账号和密码

    git config global credential helper store 之后再次执行git push 或者git pull这时候只需要在输入一次用户名和密码下次就不需要了 这个命令则是在你的本地生成一个账号密码的记录 这样就不用
  • Python中执行MySQL语句, 遇到同时有单引号, 双引号处理方式 !r, repr()

    SQL语句 insert cmd INSERT INTO 0 SET 1 format db conn firmware info table join 0 1 r format k str v for k v in info dict i
  • linux读取按行读写文本文件

    include
  • 迪杰斯特拉算法浅析

    所谓的迪杰斯特拉算法 就是一个用来求一个图中某点到其它点的最短路径的算法 大致方法 遍历所有节点 找到离起点最近的一个点 那么这个点到起点的最小距离肯定是起点到这个点的这条边的权值 然后标记这个点被使用过了 以1中的那个点为中继 更新其它节
  • 进程和线程的区别

    简介 进程 进程是计算机中运行程序的实例 是操作系统进行资源分配和调度的基本单位 每个进程都有独立的内存空间和系统资源 不同进程之间相互独立 彼此不能直接访问对方的内存 进程之间的通信需要通过操作系统提供的特定机制 如管道 共享内存等 个人
  • nginx 之安全配置

    前言 看官网官网 一 控制并发连接数 1 在默认发布目录新建一个目录并保存一张图片 传送文件到server1 打开浏览器就能看到图片 2 测试 查看日至情况 cat usr local nginx logs access log http状
  • 时间计时android程序,Android实现时间倒计时功能

    本文实例为大家分享了Android实现时间倒计时功能展示的具体代码 供大家参考 具体内容如下 效果展示 MainActivity 主页面代码 public class MainActivity extends Activity privat
  • Nacos配置中心落地与实践

    一 背景 目前 我们公司各团队配置中心使用各异 电商使用的是 Spring Cloud Config 支付使用的是 Apollo APP 团队使用的是 Apollo Nacos 为了更好地应对公司业务的发展 统一基础设施技术栈必不可少 图片
  • ChatGPT-Next-Web:Vercel 和 Cloudflare 的快速部署

    项目地址 GitHub Chanzhaoyu chatgpt web 用 Express 和 Vue3 搭建的同时支持 openAI Key 和 网页 accessToken 的 ChatGPT 演示网页 依赖安装 1 安装node cur
  • BI-SQL丨行列转换

    行列转换 行列转换 在SQL Server中属于常见的基本操作 无论是搭建数仓 还是通过PowerBI进行数据分析 我们总会接触到各式各样的数据源 而在这些数据源中 除了标准的大型数仓外 我们很少能够拿到标准规范的数据表结构 接触最多的 往
  • 最熟悉的陌生人:ListView 中的观察者模式

    http blog csdn net u011240877 article details 52683711 RecyclerView 得宠之前 ListView 可以说是我们用的最多的组件 之前一直没有好好看看它的源码 知其然不知其所以然
  • tar分卷压缩解压

    1 使用tar分卷压缩 格式 tar cvzf filedir split d b 50m filename 样例 tar cvzf dir split d b 10m dirname tar gz 将 dir 打包 并切割为 10m 的包
  • python——*和**

    python中 和 的使用分两个方面 一个是计算 另一个是参数传递过程中元素的打包和解包 计算中的运用 和 在python中最常见的作用分别是 相乘 和 乘幂 如下 gt gt gt a 2 gt gt gt b 3 gt gt gt c
  • 20个Android游戏源码,…

    原文地址 分享20个Android游戏源码 希望大家喜欢哈 作者 我算哪根葱 分享20个 Android 游戏源码 希望大家喜欢哈 http www apkbus com android 21834 1 1 html Android 疯狂足
  • 凸优化学习(三)——凸函数

    注意 本文内容来自于吴恩达老师cs229课堂笔记的中文翻译项目 https github com Kivy CN Stanford CS 229 CN 中的凸优化部分的内容进行翻译学习 3 凸函数 凸优化的一个核心要素是凸函数的概念 定义