Go最新代理模型优化算法_高斯克里金模型(1),灵魂一问-如何彻底防止APK反编译

12 篇文章 0 订阅
12 篇文章 0 订阅

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

代理优化,或者叫代理模型,指在分析和优化设计过程中可替代那些复杂而费时的模型的近似学习模型。最早,代理模型的雏形是多项式响应面模型(用的人很多,其实往往你已经在采用代理模型的思维方式,只是你自己没有意识到)。随着技术的发展,代理模型不再仅仅是简单的替代,而是构成了一种基于历史数据来驱动样本点加入,以逼近全局最优解的优化机制。同时,复杂多维问题的代理模型不必在整个设计空间都具有高近似度,而是只需要在全局最优解附近实现高近似度[1]。

代理模型目前已经发展出多项式响应面、多项式插值、克里金插值、径向基函数插值、神经网络、支持向量机回归等多种方法。

这其中,多项式响应面、多项式插值接近于回归拟合领域,比较简单。支持向量机回归(相对于分类支持向量机)其应用较少,在此不做讨论。

神经网络作为一套独立的体系,应该说其对原模型的近似程度最高,随着节点和隐含层的增多,实现模型的完美逼近。不过其运算速度也不会很快,且可解释性差,很多网络本身就是一个黑箱。最终,你用一个黑箱,逼近了另一个黑箱。

克里金插值和径向基函数插值是目前应用较多的两种方法。克里金模型又称高斯随机过程模型。我在之前的一篇文章中已经做了较详细的描述。(功能强大的回归模型——高斯过程回归)为啥名称有差别?我个人的理解是克里金的叫法强调插值的思路,高斯过程回归强调回归的思路。在强大的“高斯过程核(比如matern核)”的作用下,插值和回归的区别已经不那么显著了。

本文主要介绍径向基函数代理优化算法(以下简称代理优化)。

首先需要注意的是:代理优化算法必须具有边界约束。如果所求问题不具有边界约束,则可以选择以-1000到1000作为默认边界。目标函数不一定非要是平滑的,但当目标函数是连续的时,算法的效果最好。代理优化的目的是尝试仅使用很少次的目标函数计算,来寻找目标函数的全局最小值。为此,算法将试图在“探索”和“速度”两个目标之间平衡本次优化过程。

代理优化算法分为串行算法和并行算法。其中串行算法是基础和核心,本文只介绍串行代理优化。

算法将在两个阶段之间交替进行。以下是简述版步骤:

(1)构造代理阶段:首先在边界范围内,创建数个随机的点(较少),并在这些点上计算目标函数。通过这些点,插值一个径向基函数来构造目标函数的一个“代理函数”。

(2)搜索最小值阶段:在边界范围内,随机抽样较多个点。根据这些点的“代理值”以及它们与目标函数已知的点之间的距离,来估计一个优值函数(merit function)。以优值函数的全局最优点作为“候选点”。在“候选点”计算目标函数。并称之为“适应点”。以此值更新代理,并再次搜索。在一定条件下,进行“代理重置”,返回步骤(1)

以下是算法的详细内容:

一、术语

(1)目标函数:真实的模型。代理优化最终的目的,还是要求目标函数的全局最优值。代理优化和其它模型最大的不同,就是目标函数是未知的,或者虽然可以求解,但计算起来昂贵、费时。

(2)代理函数(Surrogate function,“S”):目标函数的“代理”,化繁为简。此处采用径向基插值函数作为代理函数。

(3)当前值:目标函数最近一次被计算过的点。

(4)在职点(Incumbent point):在最近的一次“代理重置”后,目标函数值最小的点。这个翻译是我暂译的。Incumbent point是理解模型的关键概念。

(5)最优点:算法开始以来所有计算目标函数值中的最小的点。算法结束时的最优点就是我们最终的全局最优解。

(6)初始点:在算法开始之前,你传递给算法的一些已知目标函数值的点,初始点不是必须的。

(7)随机点:构造代理阶段,算法将在这些点计算目标函数。一般来说,算法会从伪随机序列中获取这些点,并进行缩放和位移。以保证在边界的要求范围内。特别的,当变量极多时(往往需要超过500个),算法将从拉丁超立方体序列中获取点。(关于拉丁超立方体,请看实验设计方法(二)——拉丁超立方体简介

(8)自适应点:即“搜索最小值”阶段的点。在此处,算法对目标函数求值。

(9)优值函数(merit function):后面详细介绍。这个翻译是我暂译的。

(10)已计算点:或者叫已知值点,即目标函数已知的所有点,包括初始点、构造代理点和搜索最小值阶段计算过的点。

(11)采样点:即算法在最小值搜索阶段对“优值函数”求值的点,这些点计算过的是优值函数,而不是目标函数。

(12)比例(scale):搜索最小值阶段的一个量化参数。

二、算法步骤
算法将在两个阶段之间交替进行。

1、构造代理阶段

算法首先会在边界内选择一些准随机点。如果你有一些初始点,那么算法会用上这些点。获得总共N个点(这个数也是由你设置的),随后,算法将在这些点上计算目标函数。因为计算目标函数的代价高昂,因此N并不需要选择太大。

径向基函数代理优化算法采用径向基函数(RBF)插值器,以构造目标函数的插值代理。常用的径向基函数均可以在代理优化模型中选择。比如:

img

但Matlab选了最适合的一个。其使用的是一个带有线性尾部的立方RBF,此函数使得图像颠簸的程度最小化。读到这里大家已经有一个疑问了。为什么要选RBF函数呢?因为RBF有几个方便的属性,使他是最适合构建代理的函数。

(1)RBF插值器在任意维数、任意点数的情况下,都使用相同的定义公式。

(2)在被计算的点一定可以取到指定的值。意思就是这些点一定可以用RBF进行插值拟合。

(3)计算一个RBF插值器在时间上的花费极少。

(4)当你已经有了一个RBF插值器,那么在已有插值表达式中添加一个点所需要的时间相对较少。

(5)构造一个RBF插值器将涉及到求解一个N*N的线性系统方程组。其中N是代理点的数量。对于RBF,该系统有唯一解。

img

构造代理阶段的示意图(1)在边界内以伪随机方式取点(2)在这些点计算目标函数 (3)使用插值创建“代理”

2、搜索最小值阶段

算法通过一个局部搜索的过程,来搜索目标函数的最小值。“比例(scale)”类似于模式搜索中的“半径”或者“网格”的大小。Matlab里,比例的初始值一般设置为0.2。算法会从“在职点”开始进行。在职点是最近一次代理重置以来,目标函数的最小值所在点。

算法搜索“优值函数”的最小值。优值函数是一个同时关联代理和已搜索值的距离的函数,以平衡“最小化代理”和“搜索空间(广泛度)”两个任务。

算法将成百上千个长度为比例(比如0.2)的伪随机向量。加在在职点上。以得到样本点。这些向量为正态分布的,再在每个维度上依据边界进行移动和缩放。如果的采样点掉到了边界外,算法将会改变采样点。使它们保持在边界内。

然后,算法在这些样本点,计算优值函数。

上一步中,优值函数最低的点被称为自适应点。算法将在自适应点计算目标函数值,并用该值更新“代理”。如果“自适应点”处的目标函数值低于在职点,则算法认为本次搜索“成功”。并将自适应点设为新的在职点。否则,算法认为搜索失败,不会改变在职点。(好吧,在职点这个翻译真的不怎么样,大家将就一下,记住英文Incumbent point)

当满足以下条件时,算法将改变“比例”的值。

(1)自上一次比例变化以来,已经进行了累计三次成功的搜索。此时将比例加倍。直到最大比例,其长度为边界所框定的箱型大小的0.8倍。

(2)在上一次比例变化后,已有max(5,n)次不成功的搜索(n为变量维度)。此时,将比例减半。直到最小比例长度为边界所框定的箱型大小的0.00001倍。

如此反复,随机搜索将最终集中在目标函数值最小的在职点附近。并且最终比例将减小到最小规模。

需要注意的是,算法不会计算任何与已知值点距离在一定范围内的优值函数。而当所有的样本点都在已知值点的这个特定范围内时,算法从搜索最小值阶段重新切换到构造代理阶段。这就叫做“代理重置”。通常这种重置发生在算法的scale缩小以后,因此所有的样本点都紧紧聚集在在职点的周围。

img

搜索最小值阶段的示意图(1)在在职点周围取样 (2)计算优值函数 (3)在自适应点计算目标函数 (4)更新插值代理和比例

三、优值函数(merit function)简介
优值函数是代理优化的重要概念。优值函数同时关联代理和已搜索值的距离的函数,以平衡“最小化代理”和“搜索空间(广泛度)”两个任务。优值函数fmerit(x)是以下两项的加权组合:

(1)“比例化代理”:定义Smin为采样点之间的“最小代理值”。Smax为采样点之间的“最大代理值”。Sx为x处的代理值。则比例化代理S(x)为:

img

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值