优化|流形优化系列(一)

在这里插入图片描述

简介

流形优化是非线性优化的一个分支,它主要关注在特定的几何结构下进行优化。在流形优化中,优化问题通常是在黎曼流形上进行的,而非欧几里得空间。黎曼流形是带有黎曼度量的流形,该度量为流形上的每个点都定义了一个内积。这种内积结构提供了流形上测量长度和角度的方式,这在优化过程中非常重要,因为它允许我们定义梯度和Hessian等概念,并进行相应的优化操作。在流形优化的背景下,流形通常是解的约束集。例如,当解必须是正交矩阵、单位范数向量或其它特殊结构时,这些集合都可以被看作流形。对于连续优化,讨论多面体是考虑线性优化问题的基础,而在欧几里得空间中的微积分被用于发展非线性欧几里得优化理论。同样地,黎曼流形上的微积分,借助微分几何学(尤其是黎曼几何学)得以促进,对于黎曼流形上的优化是至关重要的。

流形优化相对于传统欧几里得空间上的优化方法,优势在于:

  1. 在黎曼流形上迭代,减少建模误差,提高一些非线性问题的表示能力;
  2. 充分利用目标函数的内在几何结构,通过选取合适的黎曼度量可将一些非凸优化问题转化为凸优化问题;
  3. 保持最优化问题的尺度不变性。

在各个应用领域的需求牵引下,相关学者的研究工作极大地促进了黎曼流形优化理论的发展与工程应用,如Hermitian 特征值问题、自适应正则化、迹范数、相机位姿估计、经济负载分配、对称特征值问题、低秩矩阵填充等,其技术成果已成功应用于相关学科,如航空航天、理论物理、无线通信、医学成像、自动控制、计算机视觉等。

推荐感兴趣的同学阅读参考文献中的书目。

流形优化基础知识

从黎曼流形的概念开始,用 M \mathcal{M} M表示一个有限维的黎曼流形,并用 T p M T_p\mathcal{M} TpM 表示 M \mathcal{M} M 在点 p p p处的切平面。在 M \mathcal{M} M的每一点 p p p上,都有一个内积 ⟨ ⋅ , ⋅ ⟩ p \langle \cdot, \cdot \rangle_p ,p定义在切空间 T p M T_p\mathcal{M} TpM上。黎曼度量 ⟨ ⋅ , ⋅ ⟩ p \langle \cdot , \cdot \rangle_p ,p 相关的范数记作 ∥ ⋅ ∥ p \|\cdot\| _p p。用 $l(\gamma) $来表示分段光滑曲线 γ : [ a , b ] → M \gamma : [a, b] \rightarrow \mathcal{M} γ:[a,b]M的长度。
流形优化的基本问题形式为:
min ⁡ x ∈ M f ( x ) \min_{x \in \mathcal{M}} f(x) xMminf(x)

其中$f: \mathcal{M} \to \mathbb{R} , , \mathcal{M}$是一个黎曼流形。

常见流形

以下是一些在流形优化中常用的流形例子:

  1. 球面流形 (Sphere Manifold):

    考虑单位球面 S n − 1 S^{n-1} Sn1 R n \mathbb{R}^n Rn 中,定义为:
    S n − 1 = { x ∈ R n : ∥ x ∥ 2 = 1 } S^{n-1} = \{ x \in \mathbb{R}^n : \|x\|_2 = 1 \} Sn1={xRn:x2=1}
    此流形上的点是具有单位范数的 R n \mathbb{R}^n Rn 中的向量。这是一个常见的约束,特别是在需要正则化或单位范数约束的优化问题中。

  2. 正交流形 (Stiefel Manifold):

    考虑所有有 n n n行和 p p p 列的列正交矩阵的集合。它可以表示为:
    S t ( n , p ) = { X ∈ R n × p : X T X = I p } St(n, p) = \{ X \in \mathbb{R}^{n \times p} : X^T X = I_p \} St(n,p)={XRn×p:XTX=Ip}
    其中 I p I_p Ip p × p p \times p p×p的单位矩阵。这种流形在子空间迭代和降维技术中很有用。

  3. 正定锥流形 (Positive Definite Manifold):

    考虑所有 n × n n \times n n×n正定矩阵的集合。这是一个在半正定编程和统计中非常重要的约束集。

  4. Grassmann 流形:

    定义为 n n n 维空间中所有 p p p 维线性子空间的集合。与 Stiefel 流形相比,Grassmann 流形不考虑子空间的基的选取,只考虑子空间本身。

基础概念

当我们考虑流形优化问题时,特别是在黎曼流形上,优化的算法需要考虑流形的几何结构。为此,我们引入一些特定的概念,如黎曼梯度、收缩映射(retraction)和向量传输(vector transport)。以下是这些概念的定义:

  1. 黎曼梯度 (Riemannian Gradient):

    对于定义在流形 M \mathcal{M} M上的实值函数 f f f,其在点 p p p处的黎曼梯度,记作 grad p f \text{grad}_p f gradpf,是流形 M \mathcal{M} M上的一个切向量,与欧氏梯度 ∇ f ( p ) \nabla f(p) f(p)在该点的内积最大。数学上,它满足以下关系:
    ⟨ grad p f , v ⟩ p = D v f ( p ) , ∀ v ∈ T p M \langle \text{grad}_p f, v \rangle_p = D_v f(p),\quad \forall v\in{T_p}\mathcal{M} gradpf,vp=Dvf(p),vTpM

其中 D v f ( p ) D_vf(p) Dvf(p)是函数 f f f在点 p p p处沿着方向 v v v的方向导数,而 ⟨ ⋅ , ⋅ ⟩ p \langle \cdot, \cdot \rangle_p ,p 是点 p p p处的黎曼度量。

  1. 收缩 (Retraction):

    让我们从流形上的一点 p p p开始,并考虑一个从该点出发的切向量 v v v。收缩映射 R p ( v ) R_p(v) Rp(v) 提供了一个近似的方法来移动到流形上另一点,从而在某种意义上对黎曼指数映射进行了近似。
    严格地说,对于给定的点 p p p和切向量 v v v,收缩映射 R p : T p M → M R_p: T_p\mathcal{M} \to \mathcal{M} Rp:TpMM 满足以下两个条件:

    - R p ( 0 ) = p R_p(0) = p Rp(0)=p

    - R p R_p Rp 0 0 0处是连续的

  1. 传输 (Transport):

传输定义了如何将流形上一点的切空间中的向量“移动”到另一点的切空间中,而不改变其“方向”。设 T p M T_p\mathcal{M} TpM T q M T_q\mathcal{M} TqM 分别是流形 M \mathcal{M} M 上点 p p p q q q的切空间,传输是一个映射:
T p ( v ) : T p M → T q M T_p(v) : T_p\mathcal{M} \to T_q\mathcal{M} Tp(v):TpMTqM
其中流形优化中两种常用的传输方式是:平行传输(parallel transport)和向量传输(vector transport)。

常见算法

有了上面提及的这些概念,类似欧式空间中的梯度下降法更新公式 x k + 1 = x k + t k d k x^{k+1} = x^k + t^kd^k xk+1=xk+tkdk,我们可以简单的得到流形上的梯度下降算法的更新公式
x k + 1 = R x k ( − t k grad x k f ) x^{k+1} = R_x^{k}(-t^k \text{grad}_{x^{k}} f) xk+1=Rxk(tkgradxkf)
其中 t k t^k tk是步长, R x k R_x^{k} Rxk是在点 x k x^{k} xk的收缩映射。

流形上的梯度下降法的关键在于如何正确地“移动”在流形上。由于流形的几何约束,我们不能简单地进行线性更新,而是需要利用流形的几何结构进行更新。黎曼梯度和收缩映射是这个过程中的核心组成部分。

近年来多种传统优化算法已成功地被扩展到流形优化领域,包括梯度下降,共轭梯度法,随机梯度下降法,牛顿法,信赖域法,内点法,BFGS和ADMM等。需要注意的区别是,流形上的梯度及Hessian矩阵信息也与流形本身有关(黎曼梯度和黎曼Hessian矩阵),同时更新过程也将依赖于收缩映射和传输,这些操作确保算法在流形的几何约束内进行迭代,并保持算法的稳定性和收敛性。因此,对流形及其相关知识的深入了解和熟悉变得尤为重要。

流形优化计算工具

Manopt

Manopt 是一个专门为研究人员和工程师设计的优化工具箱,旨在简化和推动定义在流形上的优化问题的解决过程。Manopt 提供了一系列工具和算法,帮助用户轻松地在各种流形结构上设置和解决优化问题。Manopt 的优势在于它的灵活性和易用性。它支持多种流形结构,如正定对称矩阵、Stiefel流形和球面流形等。此外,它的设计目标是为用户提供一个简单、直观的接口,使用户无需深入了解流形优化的复杂性就可以轻松应用。此外,Manopt 还拥有丰富的文档和教程,帮助新手快速上手,同时为经验丰富的研究者提供高级功能和自定义选项。

PyManopt是Manopt的Python版本,Manopt.jl是为Julia编程语言设计的Manopt版本。

实例

我们考虑Manopt官方给出的实例。计算对称矩阵 A ∈ R n × n A \in \mathbb{R}^{n\times n} ARn×n 的主要特征向量。设 λ 1 ≥ ⋯ ≥ λ n \lambda_1 \geq \cdots \geq \lambda_n λ1λn 是其特征值。最大的特征值, λ 1 \lambda_1 λ1,是以下优化问题的最优值:
max ⁡ x ∈ R n , x ≠ 0 x ⊤ A x x ⊤ x . \max\limits_{x\in\mathbb{R}^n, x \neq 0} \frac{x^\top A x}{x^\top x}. xRn,x=0maxxxxAx.
问题可以改写为:
min ⁡ x ∈ R n , ∥ x ∥ = 1 − x ⊤ A x . \min\limits_{x\in\mathbb{R}^n, \|x\| = 1} -x^\top A x. xRn,x=1minxAx.
函数及其在 R n \mathbb{R}^n Rn 中的梯度为:
f ( x ) = − x ⊤ A x , ∇ f ( x ) = − 2 A x . \begin{align} f(x) & = -x^\top A x, \nonumber\\ \nabla f(x) & = -2Ax. \nonumber \end{align} f(x)f(x)=xAx,=2Ax.
向量 x x x 的约束要求 x x x 具有单位2-范数,即 x x x 是球面上的一点:
S n − 1 = { x ∈ R n : x ⊤ x = 1 } . \mathbb{S}^{n-1} = \{x \in \mathbb{R}^n : x^\top x = 1\}. Sn1={xRn:xx=1}.
这是我们应用 Manopt 解决问题所需要的所有信息。

函数 f f f S n − 1 \mathbb{S}^{n-1} Sn1 上是光滑的。它在 S n − 1 \mathbb{S}^{n-1} Sn1 x x x 处的黎曼梯度 是 x x x 处球的切线向量。它可以计算为从常规梯度 ∇ f ( x ) \nabla f(x) f(x) 到该切线空间的投影,使用正交投影器 P r o j x u = ( I − x x ⊤ ) u \mathrm{Proj}_x u = (I-xx^\top)u Projxu=(Ixx)u
g r a d f ( x ) = P r o j x ∇ f ( x ) = − 2 ( I − x x ⊤ ) A x . \mathrm{grad}\,f(x) = \mathrm{Proj}_x \nabla f(x) = -2(I-xx^\top)Ax. gradf(x)=Projxf(x)=2(Ixx)Ax.
这是欧几里得梯度 ∇ f \nabla f f 与黎曼梯度 g r a d f \mathrm{grad}\,f gradf 之间的数学关系的一个示例,我们通常已经知道如何从微积分课程中计算 ∇ f \nabla f f,并且为优化需要 g r a d f \mathrm{grad}\,f gradf。在 Manopt 中,转换是在后台通过一个名为 egrad2rgrad 的函数完成的,我们只需要计算 ∇ f \nabla f f

以下是使用Manopt 中的信赖域法解决这个优化问题的代码:

    % 生成随机问题数据n = 1000;A = randn(n);A = .5*(A+A.');% 创建问题结构manifold = spherefactory(n);problem.M = manifold;% 定义问题成本函数及其欧几里得梯度。problem.cost  = @(x) -x'*(A*x);problem.egrad = @(x) -2*A*x;% 注意 'e' 在 'egrad' 中代表欧几里得% 数值检查梯度一致性(可选)checkgradient(problem);% 解决[x, xcost, info, options] = trustregions(problem);% 显示一些统计数据figure;semilogy([info.iter], [info.gradnorm], '.-');xlabel('迭代次数');ylabel('f 的梯度的范数');

运行结果:

在之后的系列中,我们会对上述提到的流形优化中的常见基本概念和算法进行详细的分析。

参考文献

  1. Absil P A, Mahony R, Sepulchre R. Optimization algorithms on matrix manifolds[M]. Princeton University Press, 2008.
  2. Boumal N. An introduction to optimization on smooth manifolds[M]. Cambridge University Press, 2023.
  3. Sato H. Riemannian optimization and its applications[M]. Berlin: Springer, 2021.
  4. 潘汉,黎曼流形优化及其应用, 北京, 科学出版社, 2020
  5. 刘浩洋, 户将, 李勇锋,文再文,最优化:建模、算法与理论, 第二版草稿, 7.4 流形约束优化算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/601855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv5改进 | 2023注意力篇 | MSDA多尺度空洞注意力(附多位置添加教程)

一、本文介绍 本文给大家带来的改进机制是MSDA(多尺度空洞注意力)发表于今年的中科院一区(算是国内计算机领域的最高期刊了),其全称是"DilateFormer: Multi-Scale Dilated Transformer for Visual Recognition"。MSDA的主要思想是通过线性投影得到特征图X的相应查…

APP自动化测试工具:八款推荐解析

如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。 uiautomator2 github地址:github.com/openatx/uia… UiAutomator 是 Google 提供的用来做安卓自动…

linux虚拟机网络不通,如何配置ip解决网络问题

续接前文 Hyper-V创建linux虚拟机,共享wifi网络-CSDN博客 创建虚拟机后,网络都正常,可以使用,今天的一次异常关机后(电源不小心拔掉了),再次打开这个虚拟机,网络都失效了。。。。 …

C++: 求1+2+3+...+n

int i 1; int sum 0; class Sum { public:Sum(){sum i;i;} };class Solution { public:int Sum_Solution(int n) {Sum a[n]; //调用n次sum的构造函数return sum;} };

云服务器安装mysql全流程

一、下载安装包 官网链接:MySQL :: Download MySQL Community Server 选择适合自己版本和操作系统 二、安装包上传服务器 在本地终端执行scp命令 三、服务器上使用安装包 卸载旧版本 #检查是否之前安装过mysql服务 [lighthouseVM-24-3-opencloudos software]# r…

基于Java SSM框架实现固定资产管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现固定资产管理系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

面向对象软件设计与分析40讲(35)软件开发过程模型之瀑布模型

文章目录 1 定义2 **缺点**3 **优点**1 定义 瀑布模型是一种软件开发过程模型,它将软件开发过程划分为一系列阶段,并且每个阶段必须按照顺序完成,前一个阶段完成后才能进入下一个阶段,形如瀑布流水,最终得到软件产品。这些阶段通常包括需求分析、设计、编码、测试和维护等…

lombok注解 @Data使用在继承类上时出现警告解决

一、警告问题 1、Data注解 Data 包含了 ToString、EqualsAndHashCode、Getter / Setter和RequiredArgsConstructor的功能。 当使用 Data注解时,则有了 EqualsAndHashCode注解(即EqualsAndHashCode(callSuperfalse)),那么就会在此…

uniapp中uview组件库CircleProgress 圆形进度条丰富的使用方法

目录 #内部实现 #平台差异说明 #基本使用 #设置圆环的动画时间 #API #Props 展示操作或任务的当前进度,比如上传文件,是一个圆形的进度环。 #内部实现 组件内部通过canvas实现,有更好的性能和通用性。 #平台差异说明 AppH5微信小程…

Vue2 - computed 和 method 的原理区别

目录 1,简单对比2,原理的不同1,method 的处理2,computed 的处理实现缓存触发更新 3,触发更新时的问题 1,简单对比 computed 当做属性使用,method 当做方法使用。computed 可以提供 getter 和 s…

Java研学-web操作crud

一 思路 1 组件 页面显示:JSP   接受用户请求:Servlet   和数据库交互:MyBatis 2 基础准备 ① 创建 web 项目,导入需要依赖的 jar 包,放入 web/WEB-INF/lib目录中 ② 创建数据库表 CREATE TABLE employee( id bigint(11)…

P12 音视频复合流——TS流讲解

前言 从本章开始我们将要学习嵌入式音视频的学习了 ,使用的瑞芯微的开发板 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《Linux C应用编程(概念类)_C…

限制选中指定个数CheckBox控件(1/2)

限制选中指定个数CheckBox控件(1/2) 实例需求:工作表中有8个CheckBox控件(下文中简称为控件),现在需要实现限制用户最多只能勾选4个控件。 Dim OnDic As Object Sub CheckboxeEvent()Dim oCB As CheckBox…

OpenSource - File Preview 文件预览组件

文章目录 file-preview-spring-boot-starterkkFileView file-preview-spring-boot-starter https://github.com/wb04307201/file-preview-spring-boot-starter https://gitee.com/wb04307201/file-preview-spring-boot-starter 一个文档在线预览的中间件,可通过简…

乐理燥废笔记

乐理燥废笔记 文章目录 终止式小调音阶转调不协和和弦进行大小转调1251 1451转调我的霹雳猫阿诺三全音代理五声音阶又怎样和弦附录:压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换…

Golang高质量编程与性能调优实战

1.1 简介 高质量:编写的代码能否达到正确可靠、简洁清晰的目标 各种边界条件是否考虑完备异常情况处理,稳定性保证易读易维护 编程原则 简单性 消除多余的重复性,以简单清晰的逻辑编写代码不理解的代码无法修复改进 可读性 代码是写给人看…

金山云升级全栈云计算体系,做人工智能时代云上“助力者”

随着云原生、AIGC、大模型等新兴技术的迅速发展,智能化时代开启。云计算也正全面步入3.0时代,即云计算和人工智能深度融合的阶段。在这个阶段,人工智能技术成为云计算进一步释放潜力的核心推动力。 2024年1月4日,金山云举办了「云…

水母目标检测数据集VOC格式500张

水母,一种美丽而神秘的海洋生物,以其独特的形态和生态习性而备受瞩目。 水母的体型呈伞状,身体透明,有各种颜色和花纹。它们没有骨骼,身体由胶状物质组成,非常柔软和脆弱。水母通过触手上的刺细胞释放毒素…

TypeScript 从入门到进阶之基础篇(四) symbol类型篇

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇 持续更新中… 文章目录 …

win10关闭打开文件安全警告

1.使用场景 在流水线上,因车间刷软件的程序不能下发到每一台电脑上,会使用共享文件夹的形式来共享程序。每次打开会弹出一下窗口,影响员工生产。 需要将安全警告关闭。2.解决步骤 1.winR键打开运行窗口,输入gpedit.msc&#xff…