优化问题---凸优化基本概念

article/2025/10/16 22:39:34

目录

1.凸优化到底是什么?

1.1 基本概念

1.2 凸优化和非凸优化

2、集合概念

2.1 仿射集、仿射包、仿射组合

2.2 凸集、凸包、凸组合

2.3 锥、凸锥

3.凸函数与非凸函数

4.总结


1.凸优化到底是什么?

1.1 基本概念

凸优化就是优化问题的一个特例,我们所知道的优化问题就是在一定的限制条件下求得目标函数最优值,可以是最大值也可以是最小值,那么在经济学上面就是在有限的资源下面寻求资源的最大利用效益。

那么,优化问题按照不同的分类可以得到很多中细分类,比如线性规划与非线性规划等等。

凸优化就是优化问题的一个特例,其固有的形式如下:

很多非凸问题也可以通过某种形式转化成凸优化问题来求解其近似解(一般在找不到原问题的解或求解原问题所需的时间复杂度太大的情形下使用)。这是解决一类问题的一种技巧,在深度学习的一些模型中经常用到。这是一种逼近的思想。

1.2 凸优化和非凸优化

在最小化(最大化)的优化要求下,目标函数是凸函数且约束条件所形成的可行域集合是一个凸集的优化方法,因此凸优化的判定条件有两个

  • 函数定义域是凸集
  • 目标函数是凸函数

2、集合概念

2.1 仿射集、仿射包、仿射组合

 (1)仿射集(Affine set)

仿射集(Affine set)是包含过两个不同的点的直线的所有点。(“所有点”的集合)

 比如,我们举一个小例子:

(2)仿射组合(affine combination)

 仿射集包含了集合内点的所有仿射组合。

(3)仿射包(affine hull)

 (4)仿射集合的子集

2.2 凸集、凸包、凸组合

(1)凸集

凸集是包含两个不同点之间的直线的所有点。(“所有点”的集合)

所有仿射集都是凸的,因为它包含集合中任意不同点的所有直线。

都是对集合本身性质的描述,但是有所不同,否则就拥有一样的名字了,不同点就在于\theta数值的取值范围:仿射集对集合的要求包括了凸集对集合的要求,因此可以说仿射集比凸集要求更高,不仅要满足凸集的定义(\theta在区间[0,1]之间),还要满足 \theta在区间[0,1]之外)。

①仿射集的概念:一个集合是仿射集,当且仅当集合中经过任意两点的直线(而不是线段)上的点仍在集合中。

②凸集的概念:一个集合是凸集当且仅当该集合中任意两点的连线上的所有点(即线段)仍然属于该集合。

  • 判定条件上,凸集比仿射集更弱,只对系数大于0的线性组合作出要求。换句话说,判定集合是凸集的判定条件判定集合是仿射集的判定条件的子集
  • 从具体的点集来说,是仿射集的一定是凸集,反之不然。换句话说,所有仿射集的集合所有凸集的集合的子集
  • 从点集的包的角度来说,一个点集的凸包这个点集的仿射包的子集

 (2)凸组合(构建凸集合的具体模型)

 (3)凸包(构建凸集合的方法)(convex hull)

(4)仿射包(affine hull)、凸包(convex hull)

 这两个概念是对已有集合生成新的集合的方法,定义如下:

对于空间中的两点,其仿射集是过这两点的直线,其凸集是连接两点的线段,线段应该是直线的子集。所以这里描述的直线和线段应该分别是这两点组成的集合的仿射包和凸包。因此有:

 注意:从集合的角度来看和从包的角度来看是不一样的。

2.3 锥、凸锥

(1)锥

 (2) 凸锥

即集合C如果既是凸集也是锥,那么这样的集合就叫凸锥,凸锥也一定包含原点。 

(3)锥组合

 (4)锥包(cone hull)

3.凸函数与非凸函数

通常将函数分为凸函数和非凸函数。凸函数的几何意义在于,定义域中任意两点连线组成的线段都在这两点的函数曲线(面)上方。凸函数是有且只有全局最优解的,而非凸函数可能有多个局部最优解。

因此,当很多模型不是凸函数时,我们往往尝试绞尽脑汁去将其变换为凸函数和拟凸函数。

3.1 强凸函数

强凸函数有三种定义:

3.2 严格凸函数

3.3 拟凸函数

 

3.4 凸函数判定方法:(非常重要)

3.4.1 凸函数判定条件

(1)一阶充要条件(不常用)

(2)二阶充要条件(常用)

3.4.2 凸优化判定条件

判定一个优化是不是凸优化,有下面的凸优化判定条件:

    ①对于一元函数f(x),首先必须定义域是凸集,其次通过其二阶导数f′′(x) 的符号来判断。如果函数的二阶导数总是非负,即f′′(x)≥0 ,则f(x)是凸函数。
    ②对于多元函数f(X),首先必须定义域是凸集,其次通过其Hessian矩阵(Hessian矩阵是由多元函数的二阶导数组成的方阵)的正定性来判断。如果Hessian矩阵是半正定矩阵,则是f(X)凸函数。

4.总结

总结来看:

  • 凸函数判定中首先要保证定义域为凸集合,且保证目标函数为凸函数;关键在于判定凸函数。
  • 一般的凸优化函数形式是min f(x)的形式,那么这时取得的局部极小点就是全局最小点;有时候凸优化(convex)的函数形式为maxf(x)的形式,此时可以将其转换为minf(x)的形式,那么原来的形式只要是凹函数(concave)即可求得局部极大值即全局最大值;
  • 无约束优化问题,如果是一个凸优化问题,那么极值点就是全局最大或者最小点;


http://chatgpt.dhexx.cn/article/tL4WK3Rt.shtml

相关文章

toLower toUpper

2019独角兽企业重金招聘Python工程师标准>>> 1.根据二进制规律很容易就发现 char toLower(char x) {if (x > A && x < Z)return (x | 0x20);return x; }char toUpper(char x) {if (x > a && x < z)return (x & 0xDF);return …

C++ Reference: Standard C++ Library reference: C Library: cctype: toupper

C官方参考链接&#xff1a;https://cplusplus.com/reference/cctype/toupper/ 字符转换功能两个在字母大小写之间转换的函数&#xff1a; 函数toupper int toupper ( int c ); 将小写字母转换为大写字母 如果c是一个小写字母并且具有一个大写字母的等价物&#xff0c;则将c…

c语言中toupper函数作用,C语言中toupper 是什么?

牛魔王的故事 toupper&#xff0c;是一种计算机用语&#xff0c;用来将字符c转换为大写英文字母。C语言原型extern int toupper(int c);用法#include 功能将字符c转换为大写英文字母说明如果c为小写英文字母&#xff0c;则返回对应的大写字母&#xff1b;否则返回原来的值。扩展…

sqlite下载安装

安装教程 第一步&#xff1a;首先先到官网下载:https://www.sqlite.org/download.html 第二步&#xff1a;选择与自己电脑合适的系统 第三步&#xff1a;下载成功&#xff0c;全部解压 第四步&#xff1a;配置变量 我的电脑右击->属性->高级系统设置->高级->…

sqlite expert(sqlite数据的第三方工具)64位下载安装

官网太慢&#xff0c;这里从腾讯软件中心下载. https://pc.qq.com/search.html#!keywordsqliteexpert 如图&#xff0c;选择64位&#xff0c;普通下载(不用安装腾讯软件管家)即可: 之后&#xff0c;点击 SQLiteExpertPersSetup32-5.3.3.389.exe 一直下一步即可。 也可以从官网…

【SQLite预习课1】SQLite简介——MySQL的简洁版

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;浙江某公司软件工程师&#xff0c;负责开发管理公司OA、CRM业务系统&#xff0c;全栈领域优质创作者&#xff0c;CSDN学院、蓝桥云课认证讲师&#xff0c;开发过20余个前后端分离实战项目&#xff0c;主要发展方向为Vue…

SQLite数据库管理工具,可视化工具GUI/SQLiteExpert/SQLiteStudio/SQLiteBrowser

1、Navicat Premium【商业软件&#xff0c;大而全】 Navicat Premium 是一套数据库开发工具&#xff0c;让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库。 Navicat Premium | 以单一的 GUI 同时连接不同类型的数据…

SQLite——Java使用SQLite初体验

文章目录 前言依赖版本SQLite 操作工具类(自写)建立连接建表DDL插入数据、查询数据、删除数据 DML删除数据表 DDL查看db文件工具 前言 SQLite相比大多数数据库而言&#xff0c;具有免安装等优势&#xff0c;广泛应用于测试、Android等领域。 通过一个.db文件就能实现数据库连接…

Android 中SQLite数据库的使用详解

博主前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住也分享一下给大家&#xff0c; &#x1f449;点击跳转到网站 Android SQLite数据库相关API的介绍可以看这篇文章 Android SQLite数据库中基础的增删改查操作以及API的详…

Android Studio使用SQLite数据库

文章目录 零、本讲学习目标一、导入二、讲解&#xff08;一&#xff09;SQLite数据库1、SQLite构成2、SQLite数据类型3、SQLite数据库特点 &#xff08;二&#xff09;使用SQLiteDatabase类操作数据库1、创建安卓应用2、准备图片素材3、字符串资源文件4、主布局资源文件5、主界…

Sqlite的下载与安装

首先&#xff0c;下载Sqlite&#xff0c;或者直接下载群文件中的Sqlite文件下载完成之后解压在电脑的某个路径之下&#xff0c;C盘、D盘等等都可以&#xff0c;创建新的文件夹“sqlite”&#xff0c;把压缩包解压到文件夹中&#xff0c;如图所示紧接着我们需要在我们电脑上配置…

Android SQlite基本用法

一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库&#xff0c;是遵守ACID的关联式数据库管理系统&#xff0c;它的设计目标是嵌入 式的&#xff0c;而且目前已经在很多嵌入式产品中使用了它&#xff0c;它占用资源非常的低&#xff0c;在嵌入式设备中&#xff0c;可能…

安卓使用sqlite

搭建环境 // Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {maven{ url https://maven.aliyun.com/repository/google}maven{ url https://maven.aliyun.com/repository/gradle-plugin}maven{…

SQLite

一、android内的数据库的基础知识介绍 1.用了什么数据库 android中采用的数据库是SQLite这个轻量级的嵌入式开源数据库&#xff0c;它是用C语言构建的。相关简介可以从链接查看。 2.数据库基本知识观花 对于一些和我一样还没有真正系统学习数据库技术的同学来说&#xff0c;把S…

Android SQlite数据库使用详解

目录 概述SQLite使用SQLite数据库创建增加数据删除数据更新数据查询数据 完整代码 概述 SQLite 一个非常流行的嵌入式数据库&#xff0c;它支持 SQL 语言&#xff0c;并且只利用很少的内存就有很好的性能。此外它还是开源的&#xff0c;任何人都可以使用它。 查看模拟器数据库…

SQLite数据库

目录 SQLite数据库 在Android中的使用 SQLiteOpenHelper中的方法 增删改查 添加数据 insert() 查询数据 query(),rawQuery() 查询和添加案例 数据库帮助类&#xff1a; MainActivity&#xff1a; Activity_main.xml: SQLite数据库 SQLite是一个轻量级的嵌入数据库&…

SQLite 安装与使用

在 Windows 上安装 SQLite 什么是SQLite SQLite是一款非常轻量级的关系数据库系统&#xff0c;支持多数SQL92标准。SQLite在使用前不需要安装设置&#xff0c;不需要进程来启动、停止或配置&#xff0c;而其他大多数SQL数据库引擎是作为一个单独的服务器进程&#xff0c;被程序…

【Android】SQLite

1&#xff0c;概述 android端提供的轻量级数据库&#xff0c; 2&#xff0c;实例I &#xff08;1&#xff09;创建SQLiteOpenHelper public class DBHelper extends SQLiteOpenHelper {private static DBHelper sDBHelper;public static void init(Nullable Context contex…

Android之SQLite数据库的使用

SQLite是比较小而功能比较全的关系型数据库&#xff0c;下面介绍一下SQLite数据库的使用方法&#xff0c;及增删改查操作。 创建一个Android项目&#xff1b; 首先我们需要创建一个DatabaseHelper这个助手类&#xff0c;源码&#xff1a; package cn.android.sword.sqlite.db…

android使用SQLite

文章目录 1.SQLite的特点2.SQLite的使用2.1数据库的创建2.2新增&#xff08;insert)2.3修改&#xff08;update)2.4删除(delete)2.5查询(query) 3.使用SQL语句进行数据库操作4.SQLite事务 1.SQLite的特点 SQLite是一个轻量级数据库&#xff0c;它设计目标是嵌入式的&#xff0…