🗒️优化理论
2024-5-22
| 2024-9-7
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password

最速下降法(梯度下降法)

  • 梯度下降法又称最速下降法。函数 在某点 的梯度 是一个向量, 其方向是 增长最快的方向。显然,负梯度方向是 减少最快的方向。在梯度下降法中,求某函数极大值时,沿着梯度方向走,可以最快达到极大点; 反之,沿着负梯度方向走,则最快地达到极小点。
  • 对于任意点 ,可以定义 点的负梯度搜索方向的单位向量为:
    • 点出发,沿着 方向走一步,步长为 , 得到新点 表示为:
      因此,在新点 ,函数 的函数值为:
      所有的 组成一个序列,该序列由迭代算法生成 。该序列在一定条件下收敛于使得 最小的解 。而迭代公式为
  • 关键问题:如何设计步长?
    • 如果选得太小,则算法收敛慢,如果选得太大,可能会导致发散。
  • 梯度法的迭代过程
      1. 选取初始点 ,给定允许误差 ,并令
      1. 计算负梯度 及其单位向量
      1. 检查是否满足条件 ,若满足则转 8,否则继续
      1. 计算最佳步长
      1. 令:
      1. 计算并检验另一判据:,满足转 8,否则继续;
      1. ,转 2;
      1. 输出结果,结束。

牛顿法

  • 求解无约束极值问题得最古老算法之一,已发展成为一类算法:Newton 型方法。在局部,用一个二次函数近似代替目标函数 ,然后用近似函数的极小点作为 的近似极小点。
  • 泰勒公式是把函数在 处计算该函数的 n 阶导数,则有 Taylor 展开:
    • 若非线性目标函数 具有二阶连续偏导 的一个近似极小点,则在 点泰勒展开:
      • 求导得 ,并令 若 Hessian 矩阵 正定,即 ,则 ,此时有
        上式则为 Newton 迭代公式。
    • 算法过程
        1. 给定初始点 ,精度
        1. 计算 可逆时,
        1. 由方程组 解出
        1. ,停止,有 ;否则,令 ,转到 2。
    改进牛顿法——给原来牛顿法的迭代量上加了个步长
    notion image
      当 不可逆时,可采用伪逆矩阵?
      对于一个 m×n 的矩阵 A,如果存在一个 n×m 的矩阵 B,使得 AB=I(m×m 单位矩阵)和 BA=I(n×n 单位矩阵),那么 B 称为 A 的伪逆矩阵。
    notion image
      伪逆矩阵
      与最小二乘法的关系——线性回归
      当 满秩矩阵 (full-rank matrix)或正定矩阵(positive definite matrix) 时,令 ,得

    DFP——拟牛顿法

    • 拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的 海森矩阵的逆矩阵的缺陷,它使用正定矩阵来近似 海森矩阵的逆,从而简化了运算的复杂度。拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化, 构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。
    • 牛顿法的迭代公式:。所谓拟牛顿法,是指用梯度差分或一个近似矩阵 去代替 ,以克服 Newton 法中需计算 的缺点的一种计算方法,不同的构造 的方法,就产生不同的拟牛顿法。
    • 我们有 ,如果令 ,则海森矩阵 ,或者
    • 由于对于二次函数,上式精准成立,所以一般情况下,我们希望海森矩阵近似满足 或者 拟牛顿条件)其中
    • 个人理解:我们以梯度差分的方法去看,有 ,则
      对上面式子的仔细说明
      利用泰勒展开式,忽略高于二次以上的项,并进行求导得:
      令 ,得:
      牛顿迭代中,要求Hessian矩阵的逆,计算量增大,而拟牛顿法是用Hessian矩阵的逆矩阵来代替Hessian矩阵。 即如下迭代式

    DFP

    DFP算法原理

      在 DFP 算法中,假设有如下迭代:
      其中 均为实数, 均为 维向量,那么带入上述的拟牛顿方程中,有如下推导:
      那么进一步有
      接下来,重新标记符号,设
      那么得到
      现在只要我们求出了,那么问题也就解决了。那么为了更容易看出结论,继续作如下变换:
      那么只需要如下几个条件成立就可以了
      带入原式得

    DFP 算法步骤

    1. , 选择初始点 , 任选一个对称正定实矩阵
    1. 如果 停止迭代, 否则令 ,其中 表示梯度,雅各比矩阵
    1. 使用一维搜索(只要一维搜索是精确的, 近似矩阵 就都是正定的)计算
    1. 计算
    1. , 回到第2步
      ‍
      对于二次型问题 成立
      只要 正定, 一定正定。
      当处理一些规模较大的非二次型问题是, DFP可能被卡住, 主要原因在于这时的 接近奇异矩阵。

    BFGS

    BFGS 算法原理

      假设迭代如下:
      这样最终得到迭代式如下

    凸集等一些前导知识

    • 凸集定义:设集合 ,对任意的 与任意的 ,则称集合 是凸集。
      • 凸集的几何意义是:若两个点属于此集合,则这两点连线上的任意一点均属于此集合。
        assets/image-20220718152608-nlyrlay.png
    • 梯度定义:设 元函数 对自变量 的各分量 的偏导数 都存在,则称函数 处一阶可导,并称向量
      • 为函数 处的一阶导数或梯度,记为 (列向量)
    • Hessian (海森)矩阵定义:设 元函数 对自变量 的各分量 的二阶偏导数 都存在,则称函数 在点 处二阶可导,并称矩阵
      • 处的二阶导数或 Hessian (海森)矩阵,记为 ,若 各变元的所有二阶偏导数都连续,则 ,此时 为对称矩阵。
    • 多元实值函数凹凸性判定定理:
      • 是非空开凸集,,且 上二阶连续可微,如果 的 Hessian 矩阵 上是正定的,则 上的严格凸函数。
     

    泰勒级数展开

    • 一元函数 在点 处的泰勒展开式为:
    • 二元函数 在点 处的泰勒展开式为:
    • 元函数 在点 处的泰勒展开为:
      根据泰勒公式,求函数导数的前向差分公式可以写成:
      以类似的方式,可以写出后向差分公式:
      利用前向差分公式和后向差分公式,可以导出中心差分公式为
      因为计算函数导数的中心差分公式是二阶的,所以它比前/后差分法更精确。 再一次利用前向和后项差分公式,将二阶导数用下列式子表示:
      对于某些函数,如,在时,两者都是。在这种情况下,人们必须寻找更高阶的导数,而 ,它是非零的。如果第一个非零高阶导数由表示,那么如果是奇数,则是拐点(或鞍点),如果 是偶数,则 是局部最优。因此,是函数的拐点,因为第一个非零高阶导数是奇数(三阶导数)。类似地,可以证明函数 有局部最小值。
      利用二元函数 在点 处的泰勒展开式得:
      同理,可以利用 元函数 在点 处的泰勒展开式推广。

    Powell Method

      Powell与1964年提出方向加速法,也是一种共轭方向法,针对的问题也是考虑正定二次函数的无约束最优化问题。Powell方法主要有三部分构成,即基本搜索、加速搜索和调整搜索方向。
    基本搜索:包括从基点出发沿着已知的 个线性无关的搜索方向进行一维搜索,确定一个新的基点;加速搜索:指这将第一轮起点和新确定的基点相连构成新的方向,进行一维搜索使得函数值下降;调整搜索:将这一轮方向组的第一个方向去掉,新的方向补充在最后构成新的方向组,进行下一轮迭代。
    • 共轭方向
      • 共轭方向法是介于最速下降法与牛顿法之间的一类方法。 它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了存储和 计算牛顿法所需要的二阶导数信息。
      • 的对称正定矩阵,对于 中的两个非零向量 ,若有 ,则称 关于 共轭。
        • 中一组非零向量,如果它们两两关于 共轭,即 ,则称这组方向是关于 共轭的,也是称他们是一组 的共轭方向。
          如果 是单位矩阵,则 **** ,则可以认为共轭是正交的推广,正交是共轭的特殊形式。 ——不会相互影响的基方向。在优化中,构成优化空间的基不一定是两两正交的,例如也能构成一个解空间,但是这两个基向量却不是正交的。因此,我们弱化正交的性质。而共轭则是这样的推广。在后续讲解的共轭梯度法,类似于“坐标下降法”,每次只优化一个变量,这在维的解空间中,我们经过次就能将问题优化完成。
      • 我们把从点 出发,依次沿着某组共轭方向进行一维搜索 来求解无约束最优化问题的方法称为共轭方向法
      • 共轭方向法的几何意义
        • 设有二次函数 ,其中 对称正定矩阵, 是一个定点。则函数 的等值面 是以 为中心的椭球面。由于 ,而 ,因为 正定,所以 ,因此 的极小值。
      • 是在某个等值面上的一点, 中的一个方向, 沿着 以最优步长搜索得到点 ,则 是点 所在等值面的切向量。该等值面在点 处的法向量为 ,则 正交,即 ,令 ,所以 ,即等值面上一点处的切向量与由这一点指向极小点的向量关于 共轭。
        • notion image
      • 性质
        • 是正定矩阵, 中非零向量组 共轭的,则这 个向量线性无关的。
        • 中线性无关的向量组,若 与每个 都正交,则

    PSO(粒子群优化)——Guided Random Search Methods

      对于粒子群优化算法,其中最重要的部分是速度更新公式(包括方向和大小)。该公式一共包含三个部分,分别是惯性部分、个体认知部分、群体(社会)认知部分,具体更新公式如下:
      ‍
      我们寻着这个更新公式,自上而下,慢慢补全相关知识。

    速度更新公式的参数定义

    1. :粒子群规模; :粒子序号, ;
    1. :粒子维度; :粒子维度序号, ;
    1. :迭代次数;
    1. :惯性权重;
    1. :个体学习因子; :群体学习因子;
    1. :区间 内的随机数,增加搜索的随机性;
    1. :粒子 在第 次迭代中的前进位移向量,其形式为;
    1. :粒子 在第 次迭代中的位置向量,其形式为;
    1. :在第 次迭代后, 第 个粒子(个体)搜索得到的最优解(在解空间中的位置),其形式为;
    1. :在第 次迭代后, 整个粒子群体中的最优解,其形式为

    补充参数

    1. 个粒子搜索到的最优位置的适应值 (优化目标函数的值) 为: (个体历史最优适应值)
    1. 群体搜索到的最优位置的适应值为: (群体历史最优适应值)

    算法流程图

    notion image
    notion image

    算法参数的详细解释——参考上述提到的文章

    粒子群规模:

      一个正整数,推荐取值范围:,简单问题一般取 ,较难或特定类别的问题可以取 。较小的种群规模容易陷入局部最优;较大的种群规模可以提高收敛性,更快找到全局最优解,但是相应地每次迭代的计算量也会增大;当种群规模增大至一定水平时,再增大将不再有显著的作用。

    粒子维度:

      粒子搜索的空间维数即为自变量的个数

    迭代次数:

      推荐取值范围:,典型取值:;这需要在优化的过程中根据实际情况进行调整,迭代次数太小的话解不稳定,太大的话非常耗时,没有必要。

    惯性权重:

      1998年,Yuhui Shi和Russell Eberhart对基本粒子群算法引入了惯性权重(inertia weight) ,并提出动态调整惯性权重以平衡收敛的全局性和收敛速度,该算法被称为标准PSO算法(本文所介绍)。

    参数意义

      惯性权重 表示上一代粒子的速度对当代粒子的速度的影响,或者说粒子对当前自身运动状态的信任程度,粒子依据自身的速度进行惯性运动。惯性权重使粒子保持运动的惯性和搜索扩展空间的趋势。 值越大,探索新区域的能力越强,全局寻优能力越强,但是局部寻优能力越弱。反之,全局寻优能力越弱,局部寻优能力强。较大的 有利于全局搜索,跳出局部极值,不至于陷入局部最优;而较小的 有利于局部搜索,让算法快速收敛到最优解。当问题空间较大时,为了在搜索速度和搜索精度之间达到平衡,通常做法是使算法在前期有较高的全局搜索能力以得到合适的种子,而在后期有较高的局部搜索能力以提高收敛精度,所以 不宜为一个固定的常数。
      当 时,退化成基本粒子群算法,当 时,失去对粒子本身经验的思考。推荐取值范围:,典型取值:

    改善惯性权重

      在解决实际优化问题时,往往希望先采用全局搜索,使搜索空间快速收敛于某一区域,然后采用局部精细搜索以获得高精度的解。因此提出了自适应调整的策略,即随着迭代的进行,线性地减小 ω 的值。这里提供一个简单常用的方法——线性变化策略:随着迭代次数的增加,惯性权重ω不断减小,从而使得粒子群算法在初期具有较强的全局收敛能力,在后期具有较强的局部收敛能力。
       :最大惯性权重; :最小惯性权重;:当前迭代次数; :最大迭代次数。

    学习因子:

      也称为加速系数或加速因子(这两个称呼更加形象地表达了这两个系数的作用)
    • 表示粒子下一步动作来源于自身经验部分所占的权重,将粒子推向个体最优位置 的加速权重;
    • 表示粒子下一步动作来源于其它粒子经验部分所占的权重,将粒子推向群体最优位置 的加速权重;
    • :无私型粒子群算法,"只有社会,没有自我",迅速丧失群体多样性,易陷入局部最优而无法跳出;
    • :自我认知型粒子群算法,"只有自我,没有社会",完全没有信息的社会共享,导致算法收敛速度缓慢;
    • 都不为0:完全型粒子群算法,更容易保持收敛速度和搜索效果的均衡,是较好的选择。
      低的值使粒子在目标区域外徘徊,而高的值导致粒子越过目标区域。 推荐取值范围:;典型取值: ,针对不同的问题有不同的取值,一般通过在一个区间内试凑来调整这两个值。

    Genetic algorithms(遗传算法)——Guided Random Search Methods

      注意:遗传算法中的编码

    确定编码位长

      根据我们需要的精度 和搜索空间(单变量 的大小去计算编码位长:
      例如,以书本上的为例,精度为 ,搜索空间范围 ,则
      这里是向下取整还是向上取整呢?书上是按向下取整,取 为编码位长,但是这样就会有个问题,我们的精度为 ,这样就不满足精度了,即。 我的理解是只取前面的,不管后面是多少。
      可以使用均匀随机数生成器来生成 之间的随机数。如果随机数值小于 ,我们将位值取为 ;否则取 。每个个体的每一位基因都这样生成, 位基因就重复 次。重复上述整个流程,生成指定人口数量的个体。

    适应值评估(Fitness Evaluation)

      因为,我们将数值进行了二进制编码,因此在计算的时候,需要将其转换为数值,再带入适应值函数,得到对应的是适应值。二进制解码公式如下:
      其中 是变量 的下界和上界,是字符串的解码值, 是用于编码第 个参数的字符串长度。
      例如,二进制编码 的解码过程如下:
      此字符串的变量值为
      接下来,就是评估适应值,将解码得到的适应值,带入适应值方程中:

    繁殖(reproduction)

      好的和坏的染色体是基于它们的适应度值来识别的。好的染色体被复制,坏的染色体淘汰!!!对染色体进行筛选,有轮盘赌或锦标赛等方法。这里介绍轮盘赌。
    notion image
      轮盘赌算法:
    1. 确定适应值是否有负值。如果有,将适应值进行放大,例如适应值为 放大为
    1. 适应下列式子,转换适应值
      1. 小思考:我觉得这个式子可以有其他的形式。书上的优化例子是最小化,因此将适应值放到分母,同时为了避免有除零的情况,在分母上加
        然后根据转换后的值,计算每个适应值所在比例,例子如下:
        notion image
        notion image
    1. 将我们得到的饼图,转换为下列的图样式。然后,生成10个随机数(对应于总体大小),并选择这些随机数位于插槽中的相应字符串。因此,如图,串S-2、S-7和S-8各复制两份,串S-4、S-5、S-6和S-10各复制一份。这些字符串将参与交叉和变异操作。
      1. notion image

    交叉和变异(Crossover and Mutation)

      交叉(单点)就是从交配池(也就是上一步得到的样本集合)随机选取两个样本作为父母,然后沿着字符串长度随机生成交叉位置,交换两者的交叉部分。
    notion image
      这里有个问题,这里只是简单地描述随机选取两个样本。我觉得这里应该用某种机制,在种群刚开始的时候,保证尽量是不同的样本。不过,感觉随机实现起来简单明了,效果应该不会差。
      突变就很直观,变异运算以很小的概率将位 更改为 ,反之亦然。突变用来保持种群的多样性。
    notion image
     

    📎 参考

        LLM 环境基础配置23 种设计模式
        Loading...
        目录