目录标题
- 1. 上周回顾
- 2. 本周计划
- 3. 完成情况
- 3.1. 背景
- 3.2. 不确定性类别
- 3.3. 具体方法
- 3.3.1. Aleatoric Uncertainty
- 3.3.1. Epistemic Uncertainty
- 4. 存在的主要问题
- 5. 下一步工作
1. 上周回顾
这周开始写周报,此项为空。
2. 本周计划
总结不确定性在神经网络中的运用。
3. 完成情况
3.1. 背景
神经网络本质上就是一个函数(更一般的应该表述为映射),而神经网络的训练过程就是拟合一个拥有大量参数的函数。
f
θ
:
X
→
Y
f_{\theta}: \mathbf{X} \rightarrow \mathbf{Y}
fθ:X→Y
对于任意的样本
x
i
∈
X
x_i \in \mathbf{X}
xi∈X,总能得到一个确切的输出
f
θ
(
x
i
)
f_{\theta}(x_i)
fθ(xi)。其中,这会导致两种意外情况:
- 对于错误的预测类,模型预测的置信度很高。例如,在二分类问题中,(猫和狗),对于一个猫样本的预测为(0.1, 0.9),可以理解为有0.9的概率是狗,而且 0.9 ≫ 0.1 0.9 \gg 0.1 0.9≫0.1。这是我们不愿看到的。
- 对于从未见过的样本预测(在训练集中没有出现的样本,也叫OoD,Out-of-ditribution)。这种情况在现实中会很容易出现,因为在训练阶段很难包含所有的类别。这里,用刚才的二分类问题来举一个栗子,用训练好的猫狗分类器来预测一个鸭子,模型一定只会输出猫或者狗,但是都是错误的预测。
综上,我们希望模型能输出 uncertainty,辅助使用模型的人进行更好地决策。比如上面的例子中,我们希望对错误分类的样本、OoD样本,模型能够给出一个较高的uncertainty。这里注意的是,这里描述的不确定性属于模型预测不确定性,也叫认知不确定性(epistemic uncertainty),这一点在后面会讲到。
3.2. 不确定性类别
不确定性大致的可以分为三类。
-
approximation uncertainty
近似误差。它描述的是简单模型无法拟合复杂数据的所产生的误差(例如,线性模型拟合正弦曲线所产生的误差)。 -
aleatoric uncertainty
偶然不确定性。我理解的是标记数据中本身存在的误差,本质上是由于测量引入的误差。比如用直尺测量桌子,由于测量精度,每次测量的值不会总是一致,解决方法就是多次测量取平均,最终的测量结果表述为 125 cm ± 12 125 \text{cm}\pm 12 125cm±12。其中,12就可以理解为偶然不确定性。 -
epistemic uncertainty
认知不确定性。模型对于测试数据预测的不确定性,体现的是泛化误差。
3.3. 具体方法
approximation uncertainty
是描述模型太简单没法表述复杂数据导致的不确定性,这一点在当前大模型当道的如今,这个不确定性相关工作很少。因此,本次仅对后面的两个不确定性进行总结。
3.3.1. Aleatoric Uncertainty
偶然不确定性,体现在数据本身,与模型无关。
这里就要引出Homoscedasticity(同方差) 和Heteroscedasticity(异方差)。
在线性回归中,我们简单的使用最小化MSE损失或者最大似然来拟合直线,其实这里就是简单的将数据看作是同方差的。在非贝叶斯神经网络中,该方差通常作为模型的权重衰减的一部分被固定,并且被忽略。但是实际上,现实生活中的数据通常是异方差的。
这里通过推导最大化似然就可以引出异方差损失。
max
θ
log
p
(
y
∣
x
,
θ
)
=
max
θ
∑
i
=
1
N
log
p
(
y
i
∣
y
^
i
(
x
i
,
θ
)
,
σ
i
2
(
x
i
,
θ
)
)
=
max
θ
∑
i
=
1
N
log
N
(
y
^
i
,
σ
i
2
)
=
max
θ
∑
i
=
1
N
log
1
2
π
σ
i
2
exp
(
−
∥
y
i
−
y
^
i
∥
2
2
σ
i
2
)
=
max
θ
∑
i
=
1
N
{
−
∥
y
i
−
y
^
i
∥
2
2
σ
i
2
−
log
σ
i
2
2
−
log
2
π
2
}
\begin{aligned} & \max _\theta \log p(y \mid x, \theta) \\ & =\max _\theta \sum_{i=1}^N \log p\left(y_i \mid \hat{y}_i\left(x_i, \theta\right), \sigma_i^2\left(x_i, \theta\right)\right) \\ & =\max _\theta \sum_{i=1}^N \log \mathcal{N}\left(\hat{y}_i, \sigma_i^2\right) \\ & =\max _\theta \sum_{i=1}^N \log \frac{1}{\sqrt{2 \pi \sigma_i^2}} \exp \left(-\frac{\left\|y_i-\hat{y}_i\right\|^2}{2 \sigma_i^2}\right) \\ & =\max _\theta \sum_{i=1}^N\left\{-\frac{\left\|y_i-\hat{y}_i\right\|^2}{2 \sigma_i^2}-\frac{\log \sigma_i^2}{2}-\frac{\log 2 \pi}{2}\right\} \end{aligned}
θmaxlogp(y∣x,θ)=θmaxi=1∑Nlogp(yi∣y^i(xi,θ),σi2(xi,θ))=θmaxi=1∑NlogN(y^i,σi2)=θmaxi=1∑Nlog2πσi21exp(−2σi2∥yi−y^i∥2)=θmaxi=1∑N{−2σi2∥yi−y^i∥2−2logσi2−2log2π}
异方差损失函数:
ℓ
NN
(
θ
)
=
1
N
∑
i
=
1
N
1
2
σ
(
x
i
)
2
∥
y
i
−
f
(
x
i
)
∥
2
+
1
2
log
σ
(
x
i
)
2
\ell_{\text{NN}}(\theta) = \frac{1}{N}\sum_{i=1}^{N}\frac{1}{2\sigma(\mathbf{x}_i)^2}\|y_i-f(\mathbf{x}_i)\|^2+\frac{1}{2}\log\sigma(\mathbf{x}_i)^2
ℓNN(θ)=N1i=1∑N2σ(xi)21∥yi−f(xi)∥2+21logσ(xi)2
Note:
- 看到这里,应该和我有同样的疑问,现实数据不可能存在这个方差的,这些方差的数据没法获得,怎么才能作为标签。
Answer:
我尝试回答一次。首次,数据中的标签数据是不会给的,换句话来说,就是没法直接作为标签。那么怎么办呢?所以,实际上只会有 y i y_i yi作为标签,一个损失拟合两个方法 f ( ⋅ ) f(\cdot) f(⋅)和 σ ( ⋅ ) \sigma(\cdot) σ(⋅)。
当然,偶然不确定性还可以通过分位数损失来获得。这里就不再赘述,可以参看我的博客。
3.3.1. Epistemic Uncertainty
模型不确定性,直观的理解就是模型对于数据的不确定性。举个栗子,如果模型不知道是猫还是狗,那么模型不确定性就很大;相反,如果模型十分确定是猫,那么模型不确定性就很小。
对于模型不确定性的建模,主要是由Bayesian neural network(贝叶斯神经网络)来完成1。这里不展开解释,可以从点估计和区间估计来理解。原本的神经网络通过最大似然或者最小MSE损失来拟合函数,网络参数是常数,对应函数的预测值也是一个常数,相当于是点估计。而如果我们想预测一个置信区间,我们就需要贝叶斯神经网络,它的参数不是常数而是分布,其预测的也是一个分布,通过置信度计算,就可以变成一个置信度区间,相当于区间估计。
4. 存在的主要问题
- 对于Bayesian neural network的实际实现不太理解,其中涉及到变分推断的内容。
5. 下一步工作
深入理解BNN。
Alex Kendall and Yarin Gal. 2017. What uncertainties do we need in Bayesian deep learning for computer vision? In Proceedings of the 31st International Conference on Neural Information Processing Systems (NIPS’17). Curran Associates Inc., Red Hook, NY, USA, 5580–5590. ↩︎