BNNs入门学习

暑研要用到的贝叶斯神经网络,权当学习笔记

BNNs学习入门

贝叶斯神经网络(Bayesian Neural Networks),相较于CNN之类的神经网络,输入单点数据、输出单点数据,贝叶斯神经网络可以输入一段概率分布,经过训练后可以生成一个输出的概率分布。所以采用贝叶斯的方式,模型训练后就可以变成——输入一个东西,而输出一个概率分布。在综述Bayesian Neural Networks: An Introduction and Survey中提到,概率方法(BNN)提供的输出分布有助于开发可信模型,因其能识别预测中的不确定性,这当然也有一个范围哈。本学习笔记考虑了几个Literature Survey和技术博客进行总结,非常感谢作者们的分享~

原文:Bayesian methods for performing regression with that of a simple neural network, and illustrates the importance of measuring uncertainty. While both methods perform well within the bounds of the training data, where extrapolation is required, the probabilistic method provides a full distribution of the function output as opposed to the point estimates provided by the NN. The distribution over outputs provided by probabilistic methods allows for the development of trustworthy models, in that they can identify uncertainty in a prediction. Given that NNs are the most promising model for generating AI systems, it is important that we can similarly trust their predictions.

Neural Networks(NNs)

基础架构

在讨论BNNs前还是先了解一下NN的结构。神经网络的基础架构——Multi-Layer Perceptron (MLP) network,现代网络结构(如卷积网络)都具有等效的多层感知表示形式。简单的MLP搭建如下,输入$\phi$和输出$f$分别如下:

$$ \phi_j = \sum_{i=1}^{N_1}a(x_iw_{ij}^1) \tag{1}\\ f_k = \sum_{j=1}^{N_2}g(\phi_jw_{jk}^2) $$

示意图如下,中间为隐藏层,每个节点代表一个神经元或执行输入状态求和与激活的状态,箭头表示神经元间连接强度的参数(权重):

用于二元分类或一维回归的具有单个隐藏层的神经网络架构示例

其中Activation function(激活函数),类似于第一个公式,仿射变换+非线性变换$\phi(.)$,曾经是由$sign(.)$函数来表示,后来逐渐被Sigmoid, Hyperbolic Tangent (TanH), Rectified Linear Unit (ReLU) 和 Leaky-ReLU这几个函数取代。激活函数是很重要的一个概念,其图示如下,蓝色表示函数,红色表示函数的数值导数,

激活函数,(a) Sigmoid; (b) TanH; (c)ReLU; (d) Leaky-ReLU

响应(Responding derivatives)

使用Sigmoid函数时,原表达式等价于逻辑回归,那么网络的输出成为多个逻辑回归模型的总和。
对于回归模型函数$g(.)$将是恒等函数;二元分类则采用Sigmoid函数。其实公式(1)用矩阵表达更简便,前向传播过程(Forward propagation)可以表示为

$$ \mathbf{\Phi} = a(\mathbf{X^T W^1}) \tag{2}\\ \mathbf{F} = g(\mathbf{\Phi W^2}) $$

权重(Weight)

反向传播实现成本函数化:基于当前参数设置计算模型输出值,再求得各参数对应的偏导数,随后利用这些导数对每个参数进行迭代更新,其中$\alpha$表示学习率,迭代过程可以描述为:

$$ w_{t+i} = w_t - \alpha\frac{ \partial J(x,y) }{ \partial w_t }. \tag{3} $$

Bayesian Neural Networks

后验分布 Posterior distribution

贝叶斯统计学派正是采用这种视角——将未知(或潜在)参数作为随机变量处理,并致力于通过训练数据中可观测的信息,学习这些参数的条件概率分布。

这句翻译其实就是BNN的核心思想,考虑到BNN的学习过程中要通过已知数据来推测未知权重,这属于逆概率问题,所以可以用贝叶斯定理解决,观测概率来表示这些权重 $\mathbf{\omega}$ 的分布,最终得到基于**观测数据 ** $D$ 的条件参数分布 $p(\omega | D)$ ,称之为后验分布(Posterior distribution)。

在训练之前,需要观测$\omega$和$D$的联合分布 $p(\omega, D)$, 似然函数为$p(D|\omega)$,与选定的network architecture、loss function有关,

$$ p(\omega, D) = p(\omega)p(D|\omega) \tag{4} $$

先验分布$p(\omega)$和似然函数确定后,基于贝叶斯定理,可得到模型权重的后验分布。

$$ \pi(\omega |D) = \frac{p(\omega)p(D|\omega)}{\int p(\omega)p(D|\omega)d\omega} = \frac{p(\omega)p(D|\omega)}{p(D)} \tag{5} $$

后验分布中的分母被称为marginal likelihood,或evidence,相对于未知模型权重而言是个常数,其作用是对后验分布进行归一化处理,确保其构成有效的分布。在后验分布中可以对变量、预测量进行预测,预测结果以期望形式呈现,唯一区别在于$f(\omega)$不同:

$$ E_{\pi}[f] = \int f(\omega)\pi (\omega |D)d\omega \tag{6} $$

因此,贝叶斯推理过程核心在于把未知的模型权重边缘化(积分)处理。

大部分情况后验分布计算还是比较费劲——主要因为边缘似然的问题。在非共轭模型或潜在变量呈非线性关系(如神经网络)的情况下,该量值可能无法通过解析方法求得;对于高维模型而言,该积分的数值近似计算量大。所以要对后验分布进行近似处理。

使用 Hugo 构建
主题 StackJimmy 设计