此篇教程将贝叶斯神经网络分解为贝叶斯神经网络和神经网络两部分。
贝叶斯推理是统计和概率机器学习的重要组成部分。它基于著名统计学家Thomas Bayes提出的贝叶斯定理。在贝叶斯推理中,假设概率随着更多的证据或信息的出现而更新。
神经网络可以被认为是一个端到端系统或一组模拟人脑的算法,并试图学习在数据集内复杂的表征,以提供输出。
首先将简要介绍神经网络,花费更多时间来解释我们将来要研究的概率机器学习部分。
脑类比
感知器是由著名心理学家Rosenblatt提出的一种数学模型,用来描述我们大脑中的神经元是如何工作的。根据Rosenblatt的说法,神经元采用一组二进制输入(附近的神经元),将每个输入乘以连续值权重(每个附近神经元的突触强度),如果sum足够大,这些权重输入的总和阈值输出为1,否则为0。
人工神经网络
受生物神经系统的启发,人工神经网络(ANN)的结构被开发用于处理类似于脑过程信息的信息。大量高度互连的处理元件(神经元)协同工作,使神经网络能够解决复杂的问题。就像人类通过实例学习一样,神经网络也是如此。在生物系统中学习涉及对突触连接的调整,类似于神经网络中的权重更新。
神经网络由三层组成:输入层将数据提供给模型以学习表征,隐藏层学习表征,输出层输出结果或预测。神经网络可以被认为是端到端系统,它可以在数据中发现复杂的模式,而这些模式是人类无法识别的,无法教给机器。
卷积神经网络
Hubel和Wiesel在他们的层次模型中提到了一个神经网络,在视觉皮层中具有层次结构。LGB(外侧膝状体)形成复杂细胞,演变成低阶超复杂细胞,最终形成高阶超复杂细胞。
此外,低阶超复杂细胞和高阶超复杂细胞之间的网络在结构上类似于简单细胞和复杂细胞之间的网络。在该层次结构中,较高阶的单元通常具有选择性地响应于刺激模式的更复杂特征的趋势,并且较低阶的单元响应于更简单的特征。此外,较高阶的细胞具有较大的感受野,并且对刺激模式的位置变化更不敏感。
与层次模型类似,神经网络起始层学习更简单的特征,如边和角,后续层学习复杂的特征,如颜色,纹理等。此外,较高的神经元具有较大的感受野,构建在起始层上。然而,与多层感知器不同,权重共享是卷积神经网络背后的主要思想。
示例:不是每个神经元对于输入图像的每个像素都有不同的权重(28 * 28个权重),而是神经元只有一小组权重(5 * 5),这些权重应用于相同大小的图像的所有小子集。
经过第一层的层以类似的方式工作,即吸收在之前隐藏的层中发现的局部特征,而不是像素图像,然后依次看到图像的较大部分,因为它们组合了关于图像的越来越大的子集的信息。最后,最后一层对输出类进行了正确的预测。
如果没有这样的约束,对于图像的每一部分,网络都要学习相同的简单知识,比如检测边缘、角落等,这需要大量的时间。但是由于存在约束,只有一个神经元需要学习每个简单的特征,并且总体上权重要少得多,它可以做得更快。
此外,由于这些特征的像素精确位置无关紧要,神经元基本上可以跳过图像的相邻子集(子采样,现在称为汇集类型),当应用权重时,进一步减少训练时间。添加卷积和汇集层,是普通旧神经网络与卷积神经网络(CNN / ConvNets)的主要区别。
概率机器学习
让我们把这个术语分解为概率论和机器学习。
机器学习只是开发一些算法,在给定某些数据的情况下执行某些任务。它包括电子邮件分类,语言理解,自动驾驶汽车。基于观察到的数据,通过机器学习方法进行一些推断。训练模型模型从观察到的数据(训练数据)中学习一些模式和假设,并对未观察到的数据(测试数据)进行推断。由于每个推理都带有预测置信度,因此得出结论。然而,由于输入数据噪声、感官噪声、测量误差、非最优超参数设置等诸多原因,该模型对预测具有不确定性。
机器学习中的概率模型指出,所有形式的不确定性不可能是一个真实的值,而更像是一个概率值,并使用概率论来回答一切问题。概率分布用于建模学习、不确定性和未观测状态。在观察数据之前,先定义一个先验概率分布,然后进行学习,一旦观察到数据,该分布就转换为后验分布。
不确定性在贝叶斯学习中起着重要作用,下面让我们详细研究不确定性的类型。
贝叶斯学习中的不确定性
网络中的不确定性是衡量模型对其预测确定程度的指标。在贝叶斯模型中,存在两种主要的不确定性类型:偶然不确定性(Aleatoric uncertainty)和认知不确定性(Epistemic uncertainty)。
偶然不确定性测量观测中固有的噪声。这种不确定性存在于数据采集方法中,如传感器噪声或沿数据集均匀分布的运动噪声。即使收集了更多的数据,也不能减少这种不确定性。
认知不确定性代表了模型本身造成的不确定性。给定更多数据可以减少这种不确定性,并且通常称为模型不确定性。
偶然不确定性可以进一步分为同方差不确定性,对于不同的输入保持不变,以及取决于模型输入的异方差不确定性,其中一些输入可能具有比其他输入更多的噪声输出。异方差的不确定性尤为重要,可以防止模型输出非常自信的决策。
不确定性可以通过在模型参数或模型输出上放置概率分布来估计。通过在模型的权重上放置先验分布,然后尝试捕获这些权重在给定数据的情况下变化多少来模拟认知不确定性。另一方面,偶然不确定性是通过在模型的输出上放置一个分布来建模的。
现在,概率机器学习基础,贝叶斯学习和神经网络的概念已经理清。将贝叶斯方法结合到神经网络看起来是一个有利的想法,但在实践中,很难训练贝叶斯神经网络。训练神经网络最流行的方法是反向传播,我们使用反向传播的贝叶斯训练贝叶斯神经网络。下面将详细介绍这些方法。
反向传播
神经网络的反向传播是Rumelhart在1986年提出的,是目前最常用的神经网络训练方法。反向传播是一种根据网络权重计算损失梯度的技术。
它分两个阶段运行:首先,输入特征通过网络向前传播,计算函数输出,从而计算与参数相关的损失。其次,关于权重的训练损失的导数从输出层传回输入层。这些计算出来的导数还用于更新网络的权重。这是一个连续的过程,每次迭代都会不断地更新权重。
尽管反向传播很受欢迎,但在基于反向传播的随机优化中存在许多超参数,需要特定的调整,例如学习速率,动量,权重衰减等。找到最佳值所需的时间与数据大小成比例。对于使用反向传播训练的网络,仅在网络中实现权重的点估计。结果,这些网络进行了过度自信的预测,并没有考虑参数的不确定性。缺乏不确定性会使网络过度拟合,需要进行正则化。
神经网络的贝叶斯方法弥补了反向传播方法的不足,贝叶斯方法自然地解释了参数估计中的不确定性,并且可以将这种不确定性传播到预测中。此外,对参数值求平均,而不只是选择单点估计值,使模型对过度拟合具有鲁棒性。
过去已经提出了几种用于贝叶斯网络学习的方法:Laplace approximation,MC Dropout,Variational Inference。我们使用反向传播的贝叶斯来完成我们的工作,接下来将对其进行解释。
反向传播的贝叶斯
反向传播的贝叶斯由Blundell等人引入,用于学习神经网络权重的概率分布。整个方法可归纳如下:
该方法不是训练单个网络,而是训练网络集合,其中每个网络的权重来自共享的、已学习的概率分布。与其他集合方法不同,该方法通常仅将参数的数量加倍,然后使用无偏的蒙特卡罗梯度估计来训练无限集合。
通常,对神经网络权重做精确的贝叶斯推断是非常困难的,因为参数的数量非常大,并且神经网络的函数形式不适合精确积分。我们采用变分近似而不是蒙特卡罗方案来求近似贝叶斯后验分布。
让我们再深入一点,因为这个方法构成了整个方法的基础。让我们首先理解为什么分布变得难以处理以及为什么需要近似它。让我们从贝叶斯定理开始:
贝叶斯定理
根据贝叶斯定理,如上所述,给定一些数据x,找到模型参数θ的概率,这被称为后验,我们想要计算它。现在分子的P(θ)是先验(在看到数据之前的估计),P(x |θ)是可能性并且显示数据分布。这两个值都很容易计算。分母P(x)是证据,它显示数据x是否由模型生成的。现在,这让情况变得棘手。我们只能通过整合所有可能的模型值来计算:
正如我们所看到的,这使得整个解决方案难以处理,解决它的唯一方法是近似。因此,我们将使用变分推理来近似函数形式。
还有其他方法可用于近似积分,而流行的方法是Markov Chain Monte Carlo和Monte Carlo Dropout。
变分推理
假设我们有任意密度函数,并且想估计它。首先选择一个分布(可以是高斯分布,因为它是最受欢迎的分布),然后继续改变,直到非常接近所需的函数,在这种情况下是后验。我们希望尽可能接近真正的分布,这是比较困难的,我们可以通过最小化两者之间的Kullback-Liebler(KL)散度来做到这一点。
我们有一个函数P(w | D)(上面的后验),我们想用另一个分布q(w | D)与一些变分参数θ来近似它。
KL散度使问题成为优化问题,可以被最小化为:
图表明确显示如何近似难处理的后验
但这没有结束。如果我们解决KL散度,由于存在积分函数,它再次给出一个难以处理的方程:
现在我们已经无法接近近似函数了。因此我们可以从近似函数Q(W | d)中取样,因为从近似函数Q(W | d)中取样权重比从难以处理的后验函数P(W | d)中取样容易得多。这样之后,我们就得到了一个如下所示的易于处理的函数:
这些取样的权重w用于神经网络的反向传播以学习后验分布。
现在,正如我们所看到的,可以通过反向传播的贝叶斯方法训练贝叶斯神经网络,贝叶斯神经网络自动合并正则化。我们将在接下来的博客中学习使用变分推理方法的贝叶斯卷积神经网络。我们在卷积中使用两种操作,因此与基于CNN的点估计相比,贝叶斯CNN的参数数量要多一倍。为了减少网络的参数,我们修剪了网络架构,让我们看看这是如何完成的。
模型权重修剪
模型修剪减少了深度神经网络中各种连接矩阵中的稀疏问题,从而减少了模型中表值参数的数量。模型修剪背后的想法是减少参数的数量而不会损失模型的准确性。这减少了使用正则化的大型参数化模型的使用,并促进了紧密连接的小型模型的使用。最近的一些工作表明,网络可以使模型尺寸的大幅缩减,同时达到一定的准确性。
模型剪枝在降低计算成本、缩短推理时间和降低能耗等方面具有一定的优势。得到的修剪模型通常具有稀疏连接矩阵。使用这些稀疏模型的有效推理需要能够加载稀疏矩阵和执行稀疏矩阵向量运算的专用硬件。但是,使用新的修剪模型可以减少总体内存使用。
有几种方法可以实现修剪模型,最常用的方法是将低贡献权重映射到零,并减少整体非零值权重的数量。这可以通过训练大型稀疏模型并进一步修剪来实现,这使其与训练小型密集模型相当。
通过应用L_0 (L-zero)范数,可以对大多数特征赋予零权重,而对只有重要特征赋予非零权值,因为它对所有非零权重施加恒定的惩罚。
L_0范数可以被认为是特征选择器范数,仅将非零值分配给重要的特征。然而,L_0范数是非凸性的,因此,不可微分使得它成为了NP-hard问题,只有当P = NP时才能有效求解。
L_0范数的替代方案是L_1范数,等于绝对值的总和。L_1范数是凸形的因此是可微分的,可以用作L_0范数的近似值。
系列教程第一篇:www.atyun.com/34877.html