Summary
不管你用什么路径,也不是什么追踪,到达最大或最小的目标就行
graph LR C[Optimizer] --> e((Better Value)) --> env[/Objective Function/] --> i((Current Value)) i --> C
静态规划(Static Planning)静态规划算法-CSDN博客
不确定优化入门:用简单实例讲明白随机规划、鲁棒优化和分布鲁棒优化 - 知乎
深度学习时代的不确定性优化(包含多阶段优化与learning-while-optimizing范式) - 知乎
线性规划
史上最详细单纯形法—从理解到计算(带约束规划问题) - 知乎
单纯形法

二次规划
莫罗包络
优化器:非线性规划
非线性规划(一):定义与数值优化方法(梯度法、牛顿法、拟牛顿法、变尺度法)变尺度法的原理-CSDN博客
优化器(Optimizer) - 知乎
优化器 (Optimizer) - MyEdgeTech
深度学习--优化器篇(超保姆级+附代码包含常用各种优化器)深度学习优化器-CSDN博客
class 优化器:
步长增益 = 学习率 # 前进的胆量
def 前进(self, 当前位置) -> 下个位置:
if 传统:
return 梯度指向(当前位姿)
if 启发:
return 采样选取(当前位姿)
基于梯度的方法
梯度下降
需要函数的具体梯度
class GD:
def __init__(self, function, learning_rate=0.01):
self.learning_rate = learning_rate
self.function = function
def grad(self, position):
return self.function.精确梯度(position)
def learning_rate(self):
return self.learnning_rate
def update(self, position):
return position - self.learning_rate() * self.grad(position)
随机梯度下降
随机选择一个样本点来计算梯度
class SGD(GD):
@override
def grad(self, position):
return self.function.随机采样求出坡度来估计梯度(position)
Adagrad
根据参数的历史梯度方和根来调整学习率,参数频繁出现则学习率逐渐减小
class SGD(GD):
grad_addup = 1
@override
def update(self, position):
self.grad_addup = self.grad_addup + grad_precise**2
self.learnning_rate = self.learnning_rate() / math.sqrt()
return super().update(position)
动量随机梯度下降
给目标点赋予惯性质量
基于二阶梯度的方法
牛顿法
高斯牛顿法
鸟群算法(粒子群)
人工智能结课作业-遗传算法/粒子群寻优/蚁群算法解决TSP问题 - roadwide - 博客园
Question
或许可以视为动量随机梯度下降的集群化
- 有很多鸟。
- 飞来飞去……
- 慢慢向优。
鸟怎么飞?
vᵢᵈ = w × vᵢᵈ + c₁ × r₁ × (pbestᵢᵈ - xᵢᵈ) + c₂ × r₂ × (gbestᵈ - xᵢᵈ)
c是学习因子(学习率),r是随机数。这个公式包含三个部分:
- 惯性部分 (w × vᵢᵈ): 保持粒子先前运动的趋势。
- 自身认知部分 (c₁ × r₁ × (pbestᵢᵈ - xᵢᵈ)): 粒子向自身历史最佳位置学习的倾向。
- 社会认知部分 (c₂ × r₂ × (gbestᵈ - xᵢᵈ)): 粒子向群体历史最佳位置学习的倾向。