全局优化与目标优化的异同

devtools/2024/10/21 9:45:45/

从porgo和optimtool的使用来解释

多模态问题中,多数全局优化算法是通过设置跳跃局部最优点的比率来完成全局最优的搜索,这类算法需要利用到一阶梯度的局部信息,以至于演进方向的分叉导致了算法的执行复杂度按照搜索次数倍增。首先,超线性的优化算法是采用一阶梯度、二阶海瑟,非精确解等方式来完成连续介质信息的演进,所以机器学习训练问题中,常用初始分布作为优化求解的起点,深度学习框架具备连续正态分布、伯努利离散分布等,大多数现实数据是从独立随机观测量中采样得到,因此适用默认的分布。

在所有机器学习优化问题中,优化求解器是优先配置且只适应编码层的序列值域,求解器接收的必选参数是拟合函数、微分参量(类与对象设计中常先存储)、初始点(深度学习框架常默认标准正态分布)。porgo和optimtool的调用训练算法接收的第一个必选参数是拟合函数,不同的是optimtool采用先序符号微分的办法减小整体运行时的复杂度,porgo使用时间累积的随机性来更新当前解值(从上一次演进后的数值组合启发)。

相同点是需要规定数值范围,不同点是全局优化从数值范围内搜索,目标优化算法从单组值开始启发全局的搜索,例如从初始化的分布开始拟合更精确的系数,所以复杂的拟合函数更适用于多模态和自然语言处理问题,其系数的个数和组合影响程度更高。目标优化算法的执行目的更多,相比于全局优化是搜索全局最优点,目标优化算法是受学习率直接影响的,研究复杂函数是第一步收敛,后几步受控制因子和时序(步序)信息调节来完成局部的跳跃,所以多数机器学习优化问题常采用目标优化算法,源于初启动内存的稳定和可控,密集过程的超线性收敛及全局收敛性。

数学中常用的梯度( d k d_k dk),人工智能中用 g r a d \mathrm{grad} grad;初始点用LaTex标记为 x 0 x_0 x0,人工智能常用 p a r a m s \mathrm{params} params;学习率在目标步序研究中记为 a l p h a \mathrm{alpha} alpha,人工智能中常用lr、learning_rate。所有的计算步都是一样,例如有zip打包数据更新,和循环步更新偏差( a l p h a ∗ d k \mathrm{alpha} * d_k alphadk l r ∗ g r a d \mathrm{lr * grad} lrgrad)是类似的,但是资源要共享可引,不可引则深复制在更新函数中做步。

import porgo
import optimtool.unconstrain as ou
from optimtool.base import np, sp, plt
objective_function_lambda = lambda x: (-13 + x[0] + ((5 - x[1])*x[1] - 2)*x[1])**2 + (-29 + x[0] + ((x[1] + 1)*x[1] - 14)*x[1])**2 + (-13 + x[2] + ((5 - x[3])*x[3] - 2)*x[3])**2 + (-29 + x[2] + ((x[3] + 1)*x[3] - 14)*x[3])**2
x = sp.symbols("x1:5")
objective_function = (-13 + x[0] + ((5 - x[1])*x[1] - 2)*x[1])**2 + (-29 + x[0] + ((x[1] + 1)*x[1] - 14)*x[1])**2 + (-13 + x[2] + ((5 - x[3])*x[3] - 2)*x[3])**2 + (-29 + x[2] + ((x[3] + 1)*x[3] - 14)*x[3])**2
bounds = [(-10, 10)] * 4 # [[-10, 10]] * 4objective = porgo.glos(objective_function_lambda, bounds) # mutation=0.5, recombination=0.9
objective.rand_pop(100) # init population
for i in range(3): # if need to execute 3 timesobjective.train_gen(1000)objective.result() # must be executedprint('porgo search global result: {}(times), {}, {}'.format(i, objective.mini, objective.fit_mini)) # the best converged result
x_0 = (4.5, 3.5, 4.5, 3.5)
print('optimtool search nearest result: {}'.format(ou.newton_quasi.bfgs(objective_function, x, x_0)))

http://www.ppmy.cn/devtools/57108.html

相关文章

ble 完整广播数据组成

BLE(Bluetooth Low Energy,低功耗蓝牙)的一条完整广播数据解析,通常涉及广播数据包的结构、内容及其格式。以下是一个基于BLE广播数据结构的详细解析: 一、BLE广播数据包概述 BLE广播数据包是在广播通道(…

牛皮!手写一个 RPC 框架

设计一个RPC(远程过程调用)框架是一个复杂的过程,涉及到网络通信、序列化与反序列化、服务发现、负载均衡、容错机制等多个方面。以下是设计RPC框架的一些基本步骤: 1. 需求分析: 确定RPC框架需要支持的特性&#xf…

磁盘管理与文件系统

目录 一、硬盘存储容量 1.1关键概念 1.2硬盘存储容量公式二、1.Linux 中使用的文件系统类型 1.1磁盘分区的表示 1.2文件系统 1.3其他文件系统三、fdisk 3.1fdisk -l 3.2交互模式中的常用指令 3.3实操建分区 3…

微信小程序怎样跳转页面?

在微信小程序中,页面跳转通常使用 wx.navigateTo、wx.redirectTo、wx.switchTab、wx.navigateBack 以及 wx.reLaunch 等API。这些API提供了不同的页面跳转方式,适用于不同的场景。 以下是这些API的详细代码示例和说明: 1.wx.navigateTo&…

程序化交易广告及其应用

什么是程序化交易广告? 程序化交易广告是以实时竞价技术即RTB(real-time bidding)为核心的广告交易方式。说到这里,你可能会有疑问:像百度搜索关键词广告还有百度网盟的广告,不也是CPC实时竞价的吗&#x…

网络物理隔离

网络物理隔离是网络安全领域中的一种基本策略,其核心目的是通过物理方式将网络或网络设备分隔开来,以确保数据安全、降低风险并提升系统的整体安全性。网络物理隔离不仅防止了未经授权的访问,也显著降低了来自外部或内部威胁的风险。以下是网…

Linux 生产消费者模型

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux初窥门径⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 前言 1. 生产消费者模型 1.1 什么是生产消…

Spring Boot中的分布式缓存方案

Spring Boot中的分布式缓存方案 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在Spring Boot应用中实现分布式缓存的方案,以提升系统…