ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

坐标下降法&块坐标下降法(CD&BCD)

2022-08-21 11:33:30  阅读:189  来源: 互联网

标签:right mathbf 函数 BCD 下降 CD 坐标 left


前言

本文简要介绍两种非梯度优化方法:坐标下降法和块坐标下降法。二者用于求解无约束优化问题,属于直接法。

我一直没太搞清楚坐标下降和坐标轮换的区别,但感觉应该是一个东西?都是循环沿单一维度进行线性搜索直至函数收敛,只是看很多坐标轮换法的介绍文章,提到该方法无需知道目标函数的解析式,但其实二者本质应该是一样的吧。另外,坐标下降和坐标上升是一对,前者用于求解最小化问题,后者用于求解最大化问题。

一、坐标下降法(Coordinate Descent)

  • 基本思想:每次迭代只沿单一维度搜索,得到当前维度的极小值之后再循环沿其它维度搜索,最终收敛得到目标函数的极小值。也就是每次迭代只对一个变量进行优化,而固定其它变量的值。

  • 算法原理:

    对于目标函数 \(f(\mathbf{x})\) ,\(\mathbf{x}=\{x_1,x_2,\cdots,x_n\}\) ,利用 CD 法求解该函数的最小值过程可以表示为:

    repeat

    \[\begin{aligned} &x_{1}^{(k)}=\underset{x_{1}}{\arg \min } f\left(x_{1}, x_{2}^{(k-1)}, x_{3}^{(k-1)}, \ldots x_{n}^{(k-1)}\right) \\ &x_{2}^{(k)}=\underset{x_{2}}{\arg \min } f\left(x_{1}^{(k)}, x_{2}, x_{3}^{(k-1)}, \ldots ,x_{n}^{(k-1)}\right) \\ &\ldots \\ &x_{n}^{(k)}=\underset{x_{n}}{\arg \min } f\left(x_{1}^{(k)},x_{2}^{(k)}, x_{3}^{(k)}, \ldots ,x_{n}\right) \end{aligned} \]

    until convergence

    其中,\(k\) 代表第 \(k\) 次迭代,每次对单变量求最小值时,若该函数可微,则可以令 \(\partial f(\mathbf{x})/\partial x_i=0\) 求解;若不可微,则可以利用黄金分割法、进退法等一维搜索方法求解。

  • 算法特点:

    1. 无需计算梯度,逻辑简单,但计算效率低,适用于低维优化问题;

    2. 搜索方向的顺序是任意的,可选择 \(\{1,2,\cdots,n\}\) 的任意排列;

    3. 收敛程度很大程度上取决于目标函数等值线的形状;

      • 等值线为椭圆族,其长短轴与坐标轴平行时,收敛很快,即 \(\mathbf{x}\) 的维度步数即可收敛;

      • 当椭圆族的长短轴与坐标轴斜交时,迭代次数将大大增加,收敛速度慢;

      • 当目标函数等值线出现“脊线”时,沿坐标轴方向搜索不能使得函数值有所下降,坐标轮换法在求优过程中将失败,这类函数对于坐标轮换法就是病态函数。

        CD法与目标函数等值线的关系

    4. 只能得到局部极小值,为得到更好的解,需要选择多个初始点求解再选择。

    5. 若变量间的相关性很高,收敛过程会非常缓慢,可以利用主成分分析法(Principle Components Analysis,PCA)获得尽可能独立的变量进行优化。

二、块坐标下降法(Block Coordinate Descent,BCD)

BCD 法是 CD 法的一般化,用于解决 CD 法效率低下的问题。

  • 基本思想:每次迭代对变量的子集进行优化,即每次沿着多个坐标轴的方向(超平面)取极值。其下降过程中子集的更新顺序可以是确定的也可以是随机的。子集的更新方法可参考: 非线性规划:坐标下降&&块坐标下降 一文。

  • 算法通用框架:

    优化问题:\(\underset{\mathbf{x}}{\operatorname{minimize}} F\left(\mathbf{x}_{1}, \cdots, \mathbf{x}_{s}\right) \equiv f\left(\mathbf{x}_{1}, \cdots, \mathbf{x}_{s}\right)+\sum_{i=1}^{s} r_{i}\left(\mathbf{x}_{i}\right)\)

    其中,\(\mathbf{x}_1,\mathbf{x}_2,\cdots,\mathbf{x}_s\) 都是变量 \(\mathbf{x}\) 的子集。

    BCD算法通用框架

参考链接

标签:right,mathbf,函数,BCD,下降,CD,坐标,left
来源: https://www.cnblogs.com/hjd21/p/16609630.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有