参数优化算法

介绍

深度学习中,参数优化是一个很重要的概念,为什么这么说?首先你需要指导你的预测结果跟你实际结果的偏差吧?那么你想要保证你的偏差最小,如何保证你的偏差最小,就需要优化算法。一般流程是什么,我们可以叫优化算法是正向传播过程,每次正向传播完,我们都反向传播算去他们的梯度,之后继续循环,直到目标函数条件满足,停止,得到目前的权重参数。

一、梯度下降(SGD)

深度学习之神!我称之为,大部分我所看到的用的基本都是这个

规定:必须为凸函数(实际就是一个凹着的函数)(标准定义:给定任意两个点,函数的取值在两点之间的取值,总是小于此两点),否则可能造成局部最优解的问题。维度不能太高,不然会出现“维度灾难”得问题。

公式:

\theta_{i+1} = \theta_i - \alpha \nabla J(\theta_i)

这个公式什么意思呢,首先梯度,主要指的是在某一点下降最快的方向,在这里\alpha指的是每一步跨出去的大小,\theta_i为上一步的位置,那么i+1指的是下一步的位置,在这里不难看出为什么要求函数是凸函数了,如果你不是凸函数,那么当梯度为0时,那么\theta_{i+1} = \theta_i - 0,不难看出梯度将不再更新。图示的话就是下面这个图,你会看到梯度从A点逐渐下降下降到了最终B点,这样损失就会最小。

但是这种我前面也说了需要保证,函数是凸函数,如果不是凸函数那怎么办?

一般四种方式,1. 把非凸函数变成凸函数,2. 去探寻新的算法(momentum),3.使用周期性的学习率调整、或者自适应学习率(AdaGrad、 RMSprop、终极缝合怪Adam) 4.你的初始位置规定好一点直接把这个区域给跨过去(网格搜索),

如果数据量很高怎么办?一般利用mini-batch(常用)、随机梯度下降、批量梯度下降来解决证问题。

二、非凸优化问题

2.1 动量法

为什么提出动量法,譬如之前我的坡度很大,那么这时候下降就很快,但由于我不知道前面的路是什么样的,如果说这个时候突然坡度变缓,那么他将走的非常缓慢,不敢向前走。动量法是什么,他记住了你之前走的路径的方向,他现在走的路实际就是上一步我走的方向跟下面本来要走的方向进行向量加和,最终得到真实的下一步方向。

数学理论:

v_{t+1} = \gamma v_t + \eta \nabla J(\theta_t)   (1)

\theta_{t+1} = \theta_t - v_{t+1}   (2)

从公式也不难理解,公式(1)跟图上所示一致,则不难根据原始梯度下降公式(2)

三、自适应学习率

2.3 AdaGrad

该算法借鉴了L2正则化的思想,每次迭代时,自适应地调整每个参数的学习率.

式子看着有点复杂,这里的\sqrt{S(t)}指的是梯度的内积开方,\varepsilon这里就是一个小偏差,可以自己设定,本质上该式子\sqrt{S(t)}就是之前学习到所有的梯度的方均根,接下来就不难看出,如果历史数据梯度小,那么\frac{\eta}{\sqrt{s(t)}+\varepsilon }同样的就会变大,如果历史比较大,那么现在你就比较小。

具体机理:

优点:适合稀疏数据

问题:同一个参数的梯度固定差不多,但事实并不一定,但我们希望,同一个参数同一方向

也可以动态调整

2.2 RMSProp(该方法没有论文)

就是在上面方法基础上增加一个学习率,通过调整学习率,来确定她是看重还是轻视之前的历史梯度。

2.3 Adam(自适应学习率(RMSprop)+梯度方向优化(动量法)

本质上就是个缝合怪,集成了上面俩的优点。你可以自行看论文,目前最常用的,在这里不用细说。

四、超参数设置方法

4.1 网格搜索(GridSearchCV)

网格搜索即网格搜索和交叉验证。网格搜索,搜索的是参数,即在指定的参数范围内,按步长依次调整参数,利用调整的参数训练学习器,从所有的参数中找到在验证集上精度最高的参数,这其实是一个训练和比较的过程。

  GridSearchCV可以保证在指定的参数范围内找到精度最高的参数,但是这也是网格搜索的缺陷所在,他要求遍历所有可能参数的组合,在面对大数据集和多参数的情况下,非常耗时。

        Grid Search:一种调参手段,本质上就是穷举搜索:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。但耗费算力巨大,所以网格搜索适用于三四个(或者更少)的超参数(当超参数的数量增长时,网格搜索的计算复杂度会呈现指数增长,这时候则使用随机搜索),用户列出一个较小的超参数值域,这些超参数至于的笛卡尔积(排列组合)为一组组超参数。网格搜索算法使用每组超参数训练模型并挑选验证集误差最小的超参数组合。

4.2 随机搜索(RandomizedSearchCV)

基本跟上面网格搜索差不多,不同点在于RandomizedSearchCV随机在超参数空间中搜索几十几百个点,探寻其中比较小的值。(随机搜索从指定分布中抽取固定数量的参数设置)

4.3 蒙特卡洛树搜索(可以研究,美赛可以用)

4.4 对抗搜索(可以研究,美赛可以用)

4.5 贝叶斯优化

(牛!基本直接无脑用)贼难理解,哥们建议直接用。

五、高数据量问题

4.1小批量梯度下降(mini-batch)

本质上是批量梯度下降与随机梯度下降结合版,随机采样m(batch_size)个样本来近似损失在一个数据集上进行多次 epoch。

公式就是上面这俩,在这个过程中为了防止,一直在震荡,收敛很慢(非凸函数)的情况,一般可以采用自适应性学习率的方式来进行迭代优化(相关概念可查看文末链接)。

普遍性规律:batch_size在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快,但是要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。当Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化,也可能会超出内存容量。

文末:给大家推荐一个大佬的GitHub写的很棒!

https://enzo-miman.github.io/#/

参考链接:

深度学习之 8 深度模型优化与正则化_梯度方向优化和自适应学习率_水w的博客-CSDN博客

正则化项L1,L2以及weight decay在SGD,Adam中的理解 (mengtingxu1203.github.io)

2021 - 类神经网络训练不起来怎么办(一) 局部最小值 (local minima) 与鞍点 (saddle point)_哔哩哔哩_bilibili

Adam:https://arxivorg/pdf/1412.6980.pdf【技术干货】超参数优化专题:贝叶斯优化|BayesOpt|HyperOpt|Optuna|自动化调参|高斯过程|TPE|机器学习_哔哩哔哩_bilibili人工智能导论:08搜索求解算法:蒙特卡洛树搜索|AI入门必学课程_哔哩哔哩_bilibili

  • 29
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
机理模型是指使用已知的物理或化学规律来描述系统行为的模型。参数辨识是指确定模型中的未知参数,以使模型能够准确地描述实际系统行为。PSO(粒子群优化)是一种基于群体智能的优化算法,可以用于求解参数辨识问题。 具体来说,使用PSO进行机理模型的参数辨识可以分为以下几个步骤: 1. 定义目标函数:目标函数是指模型输出结果与实验数据之间的误差,通常使用均方误差(MSE)或最大似然函数(MLE)等指标来衡量误差大小。 2. 初始化粒子群:粒子群是指一组具有特定参数值的粒子,每个粒子代表模型中的一个参数。初始时,需要随机生成一定数量的粒子,并为每个粒子随机生成初始位置和速度。 3. 更新粒子位置和速度:根据PSO算法的原理,每个粒子的位置和速度会随着迭代不断更新,以寻找最优解。具体更新公式可以参考PSO算法的原理,如下所示: $v_{i,j}^{t+1} = wv_{i,j}^{t} + c_1r_1(p_{i,j} - x_{i,j}^{t}) + c_2r_2(g_{i,j} - x_{i,j}^{t})$ $x_{i,j}^{t+1} = x_{i,j}^{t} + v_{i,j}^{t+1}$ 其中,$v_{i,j}^{t}$表示第i个粒子在第j个维度上的速度,$x_{i,j}^{t}$表示第i个粒子在第j个维度上的位置,$p_{i,j}$表示第i个粒子历史上最好的位置,$g_{i,j}$表示所有粒子历史上最好的位置,$w$是惯性权重,$c_1$和$c_2$是加速度常数,$r_1$和$r_2$是随机因子。 4. 计算适应度函数:根据模型输出结果和实验数据计算适应度函数,并更新每个粒子的历史最佳位置和全局最佳位置。 5. 判断终止条件:根据设定的终止条件,判断PSO算法是否需要继续迭代。通常的终止条件可以是达到最大迭代次数或误差达到设定阈值等。 6. 输出结果:PSO算法迭代完成后,输出最优的参数组合,即可完成机理模型的参数辨识。 需要注意的是,PSO算法的结果具有一定的随机性,不同的初始条件和参数设置可能会得到不同的结果。因此,需要在多次运行中取平均值来获得较为稳定和可靠的结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值