学习次模函数-第1章 引言

2024-03-25 19:12
文章标签 函数 学习 引言 次模

本文主要是介绍学习次模函数-第1章 引言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

许多组合优化问题可以被转换为集合函数的最小化,集合函数是在给定基集合V的子集的集合上定义的函数。同样地,它们可以被定义为超立方体的顶点上的函数,即\left \{ 0,1 \right \}^p,其中p是基集合V的基数-它们通常被称为伪布尔函数[27]。在这些集合函数中,次模函数起着重要的作用,类似于向量空间上的凸函数,因为在实际问题中出现的许多函数都是次模函数或其轻微的修改的,在计算机科学和应用数学的许多领域中有应用,例如机器学习[125,157,117,124],计算机视觉[31,96],运筹学[98,182],电气网络[162]或经济学[203]。由于次模函数可以精确最小化,并且在某些保证下近似地最大化,因此在多项式时间内,它们很容易为它们所应用的所有众多问题带来有效的算法。它们也出现在理论计算机的几个领域中科学,如拟阵理论[189]。

然而,对次模函数的兴趣并不限于离散优化问题。 事实上,次模函数的丰富结构及其通过Lovász扩展与凸分析的联系[135]和各种相关的多面体使它们特别适用于组合优化之外的问题,即作为信号处理和机器学习问题中的正则化器[38,7]。

实际上,许多连续优化问题表现出潜在的离散结构(例如, 基于链、树或更一般的图)和次模函数提供了有效和通用的工具来捕获这样的组合结构。

在这本专著中,次模函数的理论以一种独立的方式呈现,所有结果都是从机器学习中常见的凸分析的第一原理证明的,而不是依赖于组合优化和传统的理论计算机科学概念,如拟阵或流(见,例如, [72]有关这些方法的参考书)。 此外,我们提出的算法是基于传统的凸优化算法,如单纯形法线性规划,二次规划的有效集方法,椭球方法,切割平面,和条件梯度。 这些将详细介绍,特别是在次模函数最小化及其各种连续扩展的背景下。 假设具有良好的凸分析知识(见,例如, [30,28]),并在附录A中对重要概念进行了简短的回顾-更多详细信息,请见,例如, [95,第30、28、185页]。

各章大纲。分为几个章节,总结如下(在目录中,第一次阅读时可以跳过的章节用星星标记):

(1)定义:在第二章中,我们给予了次模函数及其相关多面体的不同定义,特别是基多面体和次模多面体,它们在次模分析中是至关重要的,因为许多算法和模型都可以用这些多面体自然地表示。

(2)Lovász扩展:在第三章中,我们将Lovász扩展定义为从定义在\left \{ 0,1 \right \}^p上的函数到定义在[0,1]^p上的函数的扩展(然后是\mathbb{R}^p),并给予它的主要性质,特别是给出了次模分析中的关键结果:Lovász扩展是凸的当且仅当集函数是次模的;此外,最小化次模集函数F等价于最小化[0,1]^p上的Lovász扩展。这意味着次模函数最小化可以在多项式时间内解决。最后,通过所谓的“贪婪算法”建立了Lovász扩展和次模多面体之间的联系:Lovász扩展是基多面体的支撑函数,并且可以以封闭形式计算。

(3)多面体:第四章将进一步研究伴随多面体,计算线性函数的支撑函数和伴随极大化子,我们还详细讨论了这种多面体的面结构,这在第五章中与Lovász扩展的稀疏诱导性质相关时将很有用。

(4)次模罚函数的凸松弛:虽然次模函数可以直接使用(用于集函数的最小化或最大化),但我们在第5章中展示了如何使用它们来惩罚向量的支撑集或水平集,由此产生的混合组合/连续优化问题可以使用Lovász扩展自然地松弛为凸优化问题。

(5)示例如下:在第6章中,我们介绍了次模函数的经典例子,以及在机器学习中的几个应用,特别是割,集合覆盖,网络流,熵,谱函数和拟阵。

(6)非光滑凸优化:在第七章中,我们回顾了经典的迭代算法,如次梯度法、椭球法、单纯法、割平面法、有效集法和条件梯度法,并特别注意在适用的情况下提供这些算法的原始/对偶解释。

(7)可分离优化-分析:在第八章中,我们考虑了由Lovász扩展w \mapsto f(w)正则化的可分优化问题,即形式为min_{w\in \mathbb{R}^p}{\sum_{k\in V}\psi _k(w_k)+f(w)}的问题,并证明了这如何等价于一系列次模函数极小化问题。这是与次模函数相关的组合优化问题和凸优化问题之间的关键理论联系,这将在后面的章节中使用。

(8)可分离优化-算法:在第9章中,我们提出了两套可分离优化问题的算法。 第一个算法是一个精确的算法,它依赖于一个有效的次模函数最小化算法的可用性,而第二组算法是基于现有的凸优化迭代算法,其中一些来与在线和离线的理论保证。 我们考虑有效集方法(“最小范数”算法)和条件梯度方法。

(9)次模函数最小化:在第10章中,我们介绍了各种次模函数最小化的方法。 我们简要介绍了精确次模函数最小化的组合算法,并专注于更深入地使用特定的凸优化问题,可以迭代求解,以获得近似或精确解次模函数最小化,有时理论保证和近似最优性证书。 我们考虑了次梯度法,椭球法,单纯形算法和解析中心割平面。 我们还展示了第8章和第9章中的可分离优化问题如何用于次模函数最小化。 第12章将对这些方法进行实证比较。

(10)次模块优化问题:在第11章中,我们提出了其他组合优化问题,可以部分解决使用次模分析,如次模函数最大化和次模函数的差异的优化,并将这些问题与非凸优化问题的次模多面体。 虽然这些问题通常不能在多项式时间内解决,但许多算法都具有基于次模性的近似保证。

(11)实验:在第12章中,我们提供了前面描述的优化算法的例子,用于次模函数最小化,以及凸优化问题(可分或不可分)。 所有这些实验的Matlab代码可以在http://www.di.ens.fr/~fbach/submodular/上找到。

在附录A中,我们回顾了凸分析的相关概念(如Fenchel对偶、对偶范数、规范函数和极集),而在附录B中,我们给出了与次模函数相关的几个结果,如保持次模性的运算。

已经有几本关于同一主题的书籍和专著文章,本专著中提供的材料依赖于这些[72,162,126]。 然而,为了以最简单的方式呈现材料,也使用了相关研究论文的思想,并更加强调凸分析和优化。

符号。 我们考虑集合V=\{1,2,3,\cdots,p \},其幂集为2^V,由V2^p个子集组成。 给定一个向量s\in{\mathbb{R}^p}s也表示定义为s(A)=\sum_{k\in A}s_k的模集函数。此外,A\subseteq B意味着AB的子集,可能等于B。 我们表示为\left | A \right |集合A的基数,并且,对于A\subseteq V=\{1,2,3,\cdots,p\}1_A\in \mathbb{R}^p表示集合A的指示向量。 若w\in \mathbb{R}^p,\alpha\in \mathbb{R},则\{w\geqslant \alpha\}表示V=\{1,2,3,\cdots,p\}定义为\{k\in V,w_k\geqslant \alpha\},我们称之为弱(或强)\alpha-超水平集。 类似地,如果v\in\mathbb{R}^p,我们记为\{w\geq v\}=\{k\in V,w_k\geqslant v_k\}

对于q\in{[1,\infty]},我们用\left \| w \right \|_q表示wq-范数,定义为\left \| w \right \|_q=(\sum_{k\in V}{\left | w_k \right |^q})^{1/q},其中q\in{[1,\infty)}\left \| w \right \|_\infty=max_{k\in V}\left | w_k \right |。最后,我们用\mathbb{R}_+表示非负实数集,用\mathbb{R}^*表示非零实数集,用\mathbb{R}_+^*表示严格正实数集。

这篇关于学习次模函数-第1章 引言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/845979

相关文章

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

MySQL中COALESCE函数示例详解

《MySQL中COALESCE函数示例详解》COALESCE是一个功能强大且常用的SQL函数,主要用来处理NULL值和实现灵活的值选择策略,能够使查询逻辑更清晰、简洁,:本文主要介绍MySQL中C... 目录语法示例1. 替换 NULL 值2. 用于字段默认值3. 多列优先级4. 结合聚合函数注意事项总结C

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错