神经网络中,常见的超参数调优方法有:网格搜索、随机搜索、贝叶斯优化以及谷歌的面包烘焙算法(未开源),本篇文章主要讨论贝叶斯优化算法和贝叶斯定理之间的关系
一、网格搜索
-- 网格搜索可能是最简单、应用最广泛的超参数搜索算法,它通过查找搜索范围内的所有的点来确定最优值。
二、随机搜索:
-- 随机搜索的思想与网格搜索比较相似,只是不再测试上界和下界之间的所有 值,而是在搜索范围中随机选取样本点。
-- 它的理论依据是,如果样本点集足够大,那么通过随机采样也能大概率地找到全局最优值,或其近似值
三、贝叶斯优化算法
1、贝叶斯优化算法通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数。
-- 具体来说,它学习目标 函数形状的方法是,首先根据先验分布,假设一个搜集函数;
-- 然后,每一次使用 新的采样点来测试目标函数时,利用这个信息来更新目标函数的先验分布;
-- 最后,算法测试由后验分布给出的全局最值最可能出现的位置的点。
-- 对于贝叶斯优 化算法,有一个需要注意的地方,一旦找到了一个局部最优值,它会在该区域不 断采样,所以很容易陷入局部最优值。
-- 为了弥补这个缺陷,贝叶斯优化算法会在 探索和利用之间找到一个平衡点
-- 探索就是在还未取样的区域获取采样点;
2、机器学习中的贝叶斯算法(P(yi|x) = (P(x|yi)P(yi))/P(x))
实现步骤如下:
-- 即是用几个已知的条件概率(P(x|yi)、P(yi)、P(x)),计算出未知的条件概率(P(yi|x))
-- 而这些已知概率,也可以被称为先验概率、或者“上个节点概率”
a、对于某个样本x = {a1,a2,...,am}
b、有类别集合C = {y1,y2,...,yn}
c、计算P(y1|x),P(y2|x),...,P(yn|x)
既是计算x属于y1分类的概率、x属于y2分类的概率,...,x属于yn的概率
1)、统计训练集合中样本的各个特征属性,比如计算a1特征属性对于y1...yn的条件概率估计:P(a1|y1),P(a2|y1)..,p(am|y1)
2)、P(a1|y1)的计算方法:统计y1分类中,a1特征数占总体特征数的比例
3)、P(yi)的计算方法:既是yi分类的样本数占总体样本数的比例
4)、P(x)的计算方法:既是x样本数占总体样本数的概率
5)、P(yi|x) = (P(x|yi)P(yi))/P(x)(规律:分子分母正反)
-- 这个公式计算的是样本x属于类别yi的概率
P(x|yi) = P(a1|yi)*P(a2|yi)*...*P(am|yi)
-- yi属于样本特征x的概率,等于样本yi属于样本x包含的每个特征的概率
-- 样本x中每个属性的取值,就是一个特征 ,而不是属性是一个特征
d、若p(yk|x)最大,则将pyk作为x的类别;
3、为什么说贝叶斯优化算法是当前的预测会基于上一次的预测结果:
-- 因为我们第一次会选用一个模型,对所有的已知参数样本集合,进行拟合
-- 这个模型一般会选用高斯模型,此时会得到一个初始模型
-- 然后循环选参数T次,每次选出xi,把这个参数在放进模型中,计算出模型结果yi
-- 最后把这次的预测结果(xi,yi)更新进原有数据集D中(其实是和原来的D取并集)
-- 再进行下一次预测
-- 这样当前的预测会基于上一次的预测结果了
四、返回头理解贝叶斯优化算法中的Acquisition Function(采集函数)
【深度学习|神经网络超参数调优中贝叶斯定理深究】-- 这个函数的作用是用来选择超参数样本,即是x
-- 注意上面的x表示的是超参数,而不是输入数据。以图像分类任务为例,x可以是学习率,batch size等超参数的设置。而为了避免全文符号太多,所以将输入数据隐去了,换句话说f(x)等价于f(x|img)
-- 这个采集函数的作用即是根据计算出来的假设模型(比如高斯分布),然后选出符合要求的超参数X
-- 一句话:采集函数的作用是可求出基于高斯分布的满足要求的x
五、怎么联系贝叶斯定理和贝叶斯优化算法再次理解贝叶斯:
再次理解贝叶斯:
-- 用数学语言表达就是:支持某项属性的事件发生得愈多,则该属性成立的可能性就愈大。
贝叶斯定理和贝叶斯优化算法的关系
-- 贝叶斯优化即是贝叶斯定理的T次迭代
-- 相关论文:http://www.jos.org.cn/html/2018/10/5607.htm#outline_anchor_2
六、从论文中找到贝叶斯定理与贝叶斯优化算法的具体关系
文章图片
推荐阅读
- 深度学习|深度学习神经网络之超参数(hyper-parameter)
- 神经网络|贝叶斯优化神经网络参数_贝叶斯超参数优化(神经网络,TensorFlow,相预测示例)
- java|pytorch贝叶斯网络_使用贝叶斯优化快速调试pytorch中的超参数的快速教程
- pytorch|pytorch入门(三)——minist手写体数字识别案例
- 深度学习|(小土堆)PyTorch深度学习
- 人脸识别|yolov5人脸识别(yolov5-facenet-svm)
- 各专栏目录|pytorch 学习笔记目录
- YOLOv5解析|YOLOv5解析 | 第二篇(用YOLOv5训练自己的数据集(超级详细完整版))
- 算法|工程详细记录(超准确人脸检测(带关键点)YOLO5Face C++)