模型校准
在神经网络模型的应用中经常遇到指定准确率或者召回率的情况,大家都希望可以不调整模型,只调整阈值就满足指定准确率或者召回率,但是有时调整阈值时可以发现,当我们把阈值从0.5调整为0.6,0.7,0.8,0.9时,会发现模型准确率提高并没有按照线性提升。探查结果分布可以发现,模型的置信概率多分布在[0,0.1],[0.9,1]范围内,这种情况被称之为模型过度自信。随着模型复杂度的增加,模型的过度自信现象也会越发明显。
因此本文中的模型校准是指将模型的预测概率和真实置信度之间的差距缩小,并不会改变模型本身的精度,只是会使其更容易使用。下面会介绍几种模型校准方法,将模型的置信度和准确率之间的偏差缩小。
校准二分类模型
我们先介绍下使用校准二分类(标签结果 y i ∈ { 0 , 1 } y_i\in \{0,1\} yi∈{0,1})方法的背景,为了简单,我们默认模型的输出是正例的置信概率,由此我们可以使用下列方式表示整个模型。 x i x_i xi表示输入的第i个样本, p i p_i pi表示模型预测 x i x_i xi结果y=1的预测概率, z i z_i zi表示模型根据输入得到的非概率输出或logit。预测概率可以通过 p i = σ ( z i ) p_i=\sigma(z_i) pi=σ(zi)得到。二分类校准就是使用 y i , p i , z i y_i,p_i,z_i yi,pi,zi来得到校准概率 q i q_i qi。下面我们介绍下几种常用的二分类校准方法。
Histogram binning
将未经校准的预测概率 p i p_i pi分配到M个箱体中 ( B 1 , B 2 , . . . , B M ) (B_1,B_2,...,B_M) (B1,B2,...,BM),每个箱体具有相同的长度间隔或具有相同的采样点数目。每个箱体分配一个校准后的得分 θ m \theta_m θm.在测试时,如果预测概率 p i p_i pi落入到箱体 B M B_M BM中,则校正概率 p i p_i pi为 θ m \theta_m θm.
每个箱体的校准得分
θ
i
\theta_i
θi通过最小化如下公式得到:
min
θ
1
,
.
.
.
,
θ
M
∑
m
=
1
M
∑
i
=
1
n
I
(
a
m
≤
p
i
<
a
m
+
1
)
(
θ
m
−
y
i
)
2
\min\limits_{\theta_1,...,\theta_M}\sum^M_{m=1}\sum^n_{i=1}\mathbb{I}(a_m\leq p_i<a_{m+1})(\theta_m-y_i)^2
θ1,...,θMminm=1∑Mi=1∑nI(am≤pi<am+1)(θm−yi)2
上式中
I
\mathbb{I}
I表示指示函数,
p
i
p_i
pi为模型预测概率,
θ
m
\theta_m
θm为校准得分,
y
i
y_i
yi为真实结果。
Isotonic regression
此方法可以视为Histogram binning的推广,在Histogram binning中使用固定的箱体边界,而在此处,优化函数为箱体边界和校正得分联合最小化。
min
M
θ
1
,
.
.
.
,
θ
M
a
1
,
.
.
.
,
a
M
+
1
∑
m
=
1
M
∑
i
=
1
n
I
(
a
m
≤
p
i
<
a
m
+
1
)
(
θ
m
−
y
i
)
2
\min_{\substack{M\\ \theta_1,...,\theta_M\\a_1,...,a_{M+1}}} \sum_{m=1}^M\sum^n_{i=1}\mathbb{I}(a_m\leq p_i<a_{m+1})(\theta_m-y_i)^2
Mθ1,...,θMa1,...,aM+1minm=1∑Mi=1∑nI(am≤pi<am+1)(θm−yi)2
其中
0
=
a
1
≤
a
2
≤
.
.
.
≤
a
M
+
1
=
1
,
θ
1
≤
θ
2
≤
.
.
.
≤
θ
M
0=a_1\leq a_2\leq...\leq a_{M+1}=1,\theta_1\leq\theta_2\leq...\leq \theta_M
0=a1≤a2≤...≤aM+1=1,θ1≤θ2≤...≤θM,M是箱体个数,
a
1
,
a
2
.
.
.
a
M
+
1
a_1, a_2...a_{M+1}
a1,a2...aM+1是箱体边界,
θ
1
,
.
.
.
,
θ
M
\theta_1,...,\theta_M
θ1,...,θM代表函数值。
Platt scaling
和前面介绍的几种方法不同,Platt scaling方法是一种参数化方法,在本方法中引入了参数a和b。通过在验证集上使用NLL loss学习参数a和b,我们可以得到经过校准后的概率输出 q i = σ ( a z i + b ) q_i=\sigma(az_i+b) qi=σ(azi+b)。 σ \sigma σ为sigmoid激活函数, z i z_i zi是神经网络中的非线性输出或logit。
NLL全称为Negative log likelihood,在Bengio 2015年的Deep Learning中被叫做交叉熵。给定一个概率模型
π
^
(
Y
∣
X
)
\hat{\pi}(Y|X)
π^(Y∣X)和n个样本,我们可以使用如下公式定义NLL:
L
=
−
∑
i
=
1
n
log
(
π
^
(
y
i
∣
x
i
)
)
L=-\sum_{i=1}^n\log(\hat{\pi}(y_i|x_i))
L=−i=1∑nlog(π^(yi∣xi))
多分类模型扩展
对于
K
≥
2
K\geq 2
K≥2的多分类模型,我们仍可以和二分类中介绍一样,将样本
x
i
x_i
xi输入模型得到一个预测得分
p
i
p_i
pi。因为二分类中我们默认预测得分
p
i
p_i
pi是预测正例的概率,所以类别会默认为
y
=
1
y=1
y=1,但在
k
≥
2
k\geq2
k≥2的多分类中会需要额外预测类别
y
^
i
\hat y_i
y^i.在这种情况下,
z
i
z_i
zi从标量变成一个向量,
y
^
i
\hat y_i
y^i可以通过
y
^
i
=
a
r
g
m
a
x
i
=
1
k
(
z
i
(
k
)
)
\hat y_i=argmax_{i=1}^k(z_i^{(k)})
y^i=argmaxi=1k(zi(k))得到,同时计算
p
i
p_i
pi的激活函数也调整为softmax:
σ
S
M
(
z
i
(
k
)
)
=
exp
(
z
i
(
k
)
)
∑
j
=
1
K
exp
(
z
i
(
j
)
)
,
p
i
=
m
a
x
σ
S
M
(
z
i
(
k
)
)
\sigma_{SM}(z_i^{(k)})=\frac{\exp(z_i^{(k)})}{\sum_{j=1}^K\exp(z_i^{(j)})},\\ p_i=max\ \ \sigma_{SM}(z_i^{(k)})
σSM(zi(k))=∑j=1Kexp(zi(j))exp(zi(k)),pi=max σSM(zi(k))
因此多分类校准就是使用 p i , y i , y ^ i 和 z i p_i,y_i,\hat y_i和z_i pi,yi,y^i和zi来得到经过校准的概率 q i q_i qi以及可能变化的类别预测 y ^ i ′ \hat y_i' y^i′。
Extension of binning methods
在上文提到的Histogram binning、Isotonic regression、Bayesian Binning into Quantiles想要扩展到多分类模型使用,一种直观的思路是将k分类问题转换为k个 k i v s k j ≠ i k_i \ \ vs\ \ k_{j\neq i} ki vs kj=i的二分类问题,即认为正例标签是 k i k_i ki,其他标签均为负例,由此得到关于标签 k i k_i ki的二分类概率校准。通过这种方式我们可以得到k个校准模型,每个模型都是针对特定类别的校准模型。在测试时,我们会得到一个校准概率的向量 [ q i ( 1 ) , . . . , q i ( K ) ] [q_i^{(1)},...,q_i^{(K)}] [qi(1),...,qi(K)], q i ( k ) q_i^{(k)} qi(k)是针对类别k校准得到的校准概率。新的类别 y ^ i ′ \hat y_i' y^i′预测为这个校准向量 [ q i ( 1 ) , . . . , q i ( k ) ] [q_i^{(1)},...,q_i^{(k)}] [qi(1),...,qi(k)]中最大值所对应的类别,新的校准概率 q i q_i qi为其中最大值除以 ∑ k = 1 K q i ( k ) \sum_{k=1}^Kq_i^{(k)} ∑k=1Kqi(k)。
Matrix and vector scaling
上一小节我们没有提到Platt scaling,这里我们介绍下Platt scaling的多分类扩展方法。类似二分类,我们将之前使用的放缩参数a由标量变为向量W,使用类似的方式完成线性转换:
q
i
=
max
σ
S
M
(
W
z
i
+
b
)
y
^
i
′
=
a
r
g
m
a
x
σ
S
M
(
W
z
i
+
b
)
q_i=\max \ \ \sigma_{SM}(Wz_i+b)\\ \hat y_i'=argmax\ \ \sigma_{SM}(Wz_i+b)
qi=max σSM(Wzi+b)y^i′=argmax σSM(Wzi+b)
参数W和b可以使用NLL在验证集上进行优化。另外由于W参数量随着K以平方数量增加,此处定义一种使用对角线矩阵的变体W。
Temperature scaling
Platt scaling还可以用更简单的方式扩展到多分类概率校准中,只需引入一个大于0的标量参数T.结合模型的logit输出
z
i
z_i
zi,我们进行如下计算得到校准概率
q
i
q_i
qi
q
i
=
max
σ
S
M
(
z
i
T
)
q_i=\max \ \ \sigma_{SM}(\frac{z_i}{T})
qi=max σSM(Tzi)
T被称作temperature,当T>1时可以平滑softmax的输出。具体而言,当
T
→
∞
T\rightarrow \infty
T→∞,softmax时,
q
i
q_i
qi值接近
1
K
\frac{1}{K}
K1,而当
T
→
0
T\rightarrow 0
T→0时,
q
i
q_i
qi的值会逼近1。当T=1时,则回归到softmax的原始概率
p
i
p_i
pi。
在验证集上通过NLL函数优化参数T,因为参数T的引入仅改变输出概率,不会改变预测类别,所以校准后预测类别 y ^ i ′ \hat y_i' y^i′和 y ^ i \hat y_i y^i保持一致。
在模型蒸馏中也会使用带有温度参数的softmax来平滑输出,便于学生模型进行学习。
参考论文:
On Calibration of Modern Neural Networks
Obtaining well calibrated probabilities using bayesian binning
Calibrated Structured Prediction
PREDICTING GOOD PROBABILITIES WITH SUPERVISED LEARNING