神经网络中,常见的超参数调优方法有:网格搜索、随机搜索、贝叶斯优化以及谷歌的面包烘焙算法(未开源),本篇文章主要讨论贝叶斯优化算法和贝叶斯定理之间的关系

一、网格搜索

-- 网格搜索可能是最简单、应用最广泛的超参数搜索算法,它通过查找搜索范围内的所有的点来确定最优值。

二、随机搜索:

-- 随机搜索的思想与网格搜索比较相似,只是不再测试上界和下界之间的所有 值,而是在搜索范围中随机选取样本点。
-- 它的理论依据是,如果样本点集足够大,那么通过随机采样也能大概率地找到全局最优值,或其近似值    
    
三、贝叶斯优化算法    

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次迭代

六、从论文中找到贝叶斯定理与贝叶斯优化算法的具体关系

pytorch创建贝叶斯神经网络 贝叶斯网络 神经网络_搜索