一、神经网络的超参数:
层数、每层神经元个数、激活函数、学习率(各种优化算法中包含的参数)、正则化参数、mini-batch大小。
优化难点:
超参数优化是组合优化问题
评估一组超参数配置的时间代价非常高
优化方法:
网格搜索,随机搜索、贝叶斯优化、动态资源分配、神经网络搜索。g
网格搜索grid search:
尝试所有超参数组合寻址合适的超参数配置。
随机搜索:
超参数对模型性能影响程度不一样。
采用网格搜索会在不重要的参数上进行不必要的尝试。
一种改进方法是对超参数进行随机组合,然后选取一个性能最好的配置,就是随机搜索。
贝叶斯优化
自适应的超参数优化方法。 根据已有的实验的超参数组合,来预测下一个可能带来最大收益的组合。根据当前已有试验的超参数组合,来预测下一个可能带来最大收益的组合。
🍇 假设超参数优化的函数f(x)服从高斯过程,则p(f(x)|x)为一个正态分布。
🍇 贝叶斯优化 根据已有的N组试验结果 l来建模高斯过程,并计算f(x)的后验分布 。
🍇 为使分布接近真实分布,需要足够多的采样,但成本高,常要求用少量的样本接近真实的分布,故定义一个受益函数来判断一个样本是否能给建模后验概率提供更多的收益。收益函数定义有多种方式,一个常用的就是期望改善。
一种常用的贝叶斯方法为时序模型优化(SMBO)。
迭代t次,每次取收益最大的x,将 x 与对应的 y' 更新到超参数集合。
GP回归的一个很好的应用是贝叶斯全局优化。这里的目标是优化机器学习算法的超参数,以在固定的验证数据集上表现良好。假设你有d个超参数要调优,那么你的数据集由d维向量xi∈Rd组成,其中每个训练点代表一个特定的超参数设置,标签yi∈R代表验证错误。不要感到困惑,这次向量xi对应的是超参数设置而不是数据。例如,在一个支持向量机与多项式内核有两个hyperparameters:正规化常数C(也经常λ)和多项式功率p。xi的第一个维度可能对应于一个值为C和第二个维度可能对应于一个值p。
首先,在一些随机超参数设置下训练分类器,并在验证集上评估分类器。这给你x1,…,xm加上标签y1,…,ym。你现在可以训练一个高斯过程来预测任何新的超参数设置下的验证错误。实际上,你得到一个平均预测yt=h(xt)和它的方差v(xt)。如果你有更多的时间,你现在可以探索一个新的点。最有希望的点是置信下限最低的点,即。
k >0权衡了你对那些因为你不确定(方差很大)而可能是好的点的探索程度,或者你对当前最佳点的了解程度,并完善到目前为止找到的最佳设置的程度。较小的κ会导致更多的开发,而较大的κ则会更积极地探索新的超参数设置。
动态资源分配
如果在较早的阶段可以判断出超参组合效果差,那么可以中止这组配置的评估。将更多的资源留给其他的配置。
将有限的计算资源,分配给更有价值的参数。
逐次减半获取最优的配置。
过拟合与正则化
❤️如何提高神经网络的泛化能力:
🍇 l1 、l2正则化。
深度学习正则化-参数范数惩罚(L1,L2范数)_wangheng673的博客-CSDN博客_二次惩罚项
正则化之所以能够降低过拟合的原因在于,正则化是结构风险最小化的一种策略实现。
给loss function加上正则化项,能使得新得到的优化目标函数h = f+normal,需要在f和normal中做一个权衡(trade-off),如果还像原来只优化f的情况下,那可能得到一组解比较复杂,使得正则项normal比较大,那么h就不是最优的,因此可以看出加正则项能让解更加简单,符合奥卡姆剃刀理论,同时也比较符合在偏差和方差(方差表示模型的复杂度)分析中,通过降低模型复杂度,得到更小的泛化误差,降低过拟合程度。
L1正则化和L2正则化(参数平方和):
L1正则化就是在loss function后边所加正则项为L1范数,加上L1范数容易得到稀疏解(0比较多)。
L2正则化就是loss function后边所加正则项为L2范数的平方,加上L2正则相比于L1正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于0(但不是等于0,所以相对平滑)的维度比较多,降低模型的复杂度。
🍇 earlystoping(提前停止)。 在另一篇博客有叙述。
🍇 dropout。
🍇 数据增强。
通过算法对图像进行转变、引入噪声、增加数据多样性以及训练数据量。
🍉旋转rotation 随机角度
🍉翻转flip 沿水平/竖直方向随机翻转一定角度
🍉缩放zoom in/out resize
🍉平移shift 沿水平/竖直平移一定步长。
🍉加随机噪声。