论文阅读Single-Model Uncertainties for Deep Learning
Posted 来日可期1314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文阅读Single-Model Uncertainties for Deep Learning相关的知识,希望对你有一定的参考价值。
@INPROCEEDINGSTagasovska2019QinputLoss,
title = Single-Model Uncertainties for Deep Learning,
author = Natasa Tagasovska and David Lopez-Paz,
booktitle = NIPS,
year = 2019,
pages = 6417--6428
1. 摘要
We provide single-model estimates of
aleatoric
andepistemic uncertainty
for deep neural networks.
To estimate aleatoric uncertainty, we propose Simultaneous Quantile Regression (
SQR
), a loss function to learn all the conditional quantiles of a given target variable.
These quantiles can be used to compute well-calibrated prediction intervals.
To estimate epistemic uncertainty, we propose Orthonormal Certificates (
OCs
), a collection of diverse non-constant functions that map all training samples to zero.
These certificates map out-of-distribution examples to non-zero values, signaling epistemic uncertainty.
Our uncertainty estimators are computationally attractive, as they do not require ensembling or retraining deep models, and achieve competitive performance.
Note:
- 本文研究的问题是量化深度神经网络的不确定性。其中,不确定性可以大致分为两种,一种是
aleatoric uncertainty
, 另外一种是epistemic uncertainty
。 - 本文针对两种不确定性,分别提出了两种量化方法,一种是Simultaneous Quantile Regression(
SQR
),另外一种是Orthonormal Certificates(OCs
)。
2. 前置知识
2.1. approximation uncertainty
近似误差
。它描述的是简单模型无法拟合复杂数据的所产生的误差(例如,线性模型拟合正弦曲线所产生的误差)。
2.2. aleatoric uncertainty
偶然不确定性
。我理解的是标记数据中本身存在的误差,本质上是由于测量导致的误差。
2.3. epistemic uncertainty
认知不确定性
。模型对于测试数据预测的不确定性,体现的是泛化误差。
3. 算法
训练数据包含非高斯噪声(蓝点)、预测中值(实线)、65%和80%分位数(虚线)、任意不确定性或95%预测间隔(灰色阴影,由SQR估计)和认知不确定性(粉色阴影,由QCs估计)。
3.1. SQR
普通的分位数损失
f
^
τ
∈
arg min
f
1
n
∑
i
=
1
n
ℓ
τ
(
f
(
x
i
)
,
y
i
)
(1)
\\hatf_\\tau \\in \\argmin_f\\frac1n\\sum_i=1^n\\ell_\\tau(f(x_i), y_i) \\tag1
f^τ∈fargminn1i=1∑nℓτ(f(xi),yi)(1)
普通的分位数损失只能拟合对应的分位数
τ
\\tau
τ, 注意拟合函数
f
f
f的入参只有训练数据
x
i
x_i
xi。
SQR Loss:
f
^
∈
arg min
f
1
n
∑
i
=
1
n
E
τ
∼
U
[
0
,
1
]
[
ℓ
τ
(
f
(
x
i
,
τ
)
,
y
i
)
]
(2)
\\hatf \\in \\argmin_f\\frac1n\\sum_i=1^n\\mathbbE_\\tau \\sim U[0, 1][\\ell_\\tau(f(x_i, \\tau), y_i)] \\tag2
f^∈fargminn1i=1∑nEτ∼U[0,1][ℓτ(f(xi,τ),yi)](2)
SQR Loss想拟合对应所有的分位数
τ
∼
U
[
0
,
1
]
\\tau \\sim U[0, 1]
τ∼U[0,1],注意此时拟合函数
f
f
f的入参有训练数据
x
i
x_i
xi和对应的分位数
τ
\\tau
τ。
置信区间
:
u
α
(
x
∗
)
:
=
f
^
(
x
∗
,
1
−
α
/
2
)
−
f
^
(
x
∗
,
α
/
2
)
(3)
u_\\alpha(x^*) := \\hatf(x^*, 1 - \\alpha/2) - \\hatf(x^*, \\alpha/2) \\tag3
uα(x∗):=f^(x∗,1−α/2)−f^(x∗,α/2)(3)
其中,
α
\\alpha
α表示显著性水平,
u
α
(
x
∗
)
u_\\alpha(x^*)
uα(x∗)表示置信度
1
−
α
1- \\alpha
1−α下,
x
∗
x^*
x∗的置信区间。例如,
α
=
0.05
\\alpha=0.05
α=0.05,也就是95%置信度下,
u
0.05
(
x
∗
)
:
=
f
^
(
x
∗
,
0.975
)
−
f
^
(
x
∗
,
0.025
)
u_0.05(x^*) := \\hatf(x^*, 0.975) - \\hatf(x^*, 0.025)
u0.05(x∗):=f^(x∗,0.975)−f^(x∗,0.025)。
3.2. QCs
QCs是为了量化认知不确定性(epistemic uncertainty)的技术。认知不确定性可以描述与我们的模型在特征空间的某些区域缺乏经验有关的错误。口水话就是说没见过的数据,就会存在认知不确定性,这种没见过体现在类别,如训练集只有猫狗,没见过猪; 也体现在数据变换,比如训练集有猫狗,但是没有见过进行了图像转化后的猫狗(旋转,裁剪,加噪声)。
针对上述的,论文中想将数据分为见过的,和没见过的,这里我理解的是变成了一个二分类的问题。特殊的是,这个二分类问题中,只会有正类(也就是见过的),不会有没见过的数据(因为训练集中训练后都会变成见过的),很神奇😑。
C ^ ∈ arg min C ∈ R h × k 1 n ∑ i = 1 n ℓ c ( C T ϕ ( x i ) , 0 ) + λ ⋅ ∥ C T C − I k ∥ (4) \\hatC \\in \\argmin_C \\in \\mathbbR^h \\times k\\frac1n\\sum_i=1^n\\ell_c(C^\\mathsfT\\phi(x_i), 0) + \\lambda \\cdot \\|C^\\mathsfTC - I_k\\| \\tag4 C^∈C∈Rh×kargminn1i=1∑nℓc(CTϕ(xi),0)+λ⋅∥CTC−Ik∥(4)
这里 ϕ ( x i ) \\phi(x_i) ϕ(xi)相当于是是一个特征转换层,转化后的特征维数是 h h h。 C ^ \\hatC C^相当于 k k k个度量是否见过当前数据(在训练集见过),见过就是0,训练集中没有标签为1的数据。正则项 ∥ C T C − I k ∥ \\|C^\\mathsfTC - I_k\\| ∥CTC−Ik∥是为了确保 k k k个分类器各自不同,保证多样性(diverse),这里就是简单的做了一次正交,保证线性无关。
最后计算认知不确定性公式: 当然可以从头读到尾,但是论文这么多时间划不来,而且适合的文章可能就一小部分,需要快速找到适合的文章,并对他进行精读
第
一
遍
是
做
海
选
;
第
二
遍
对
相
关
的
论
文
做
精
选
;
第
三
遍
重
点
研
读
一
些
论
文
\\colorred第一遍是做海选;第二遍对相关的论文做精选;第三遍重点研读一些论文
第一遍是做海选;第二遍对相关的论文做精选;第三遍重点研读一些论文。 这第一遍读下来,往往十几分钟的时间,但是你就能对一篇文章有了一个通盘的把握。第一遍,目的是就是为了了解哪些文章对我是重要的,这决定了你是否还要再继续读下去。 对整个文章过一遍【从标题一直往下读到最后】,知道每一块到底在干什么东西; 这时候不用太注意很多的细节,公式、特别的证明或者一些很细节的部分可以忽略掉。 主要是搞清楚重要的图和表:第一遍你瞄了一眼的图表,此时就需要一个字一个字弄清楚作者是怎么做的,算法流程图里面是怎么一步步实现的,作者提出的算法和原有方法之间有什么区别,改进在何处。 可能这一遍读还是不太能搞清楚论文的具体逻辑,尤其是对于刚进入一个领域的新人来说,但至少你熟悉了很多这个领域的专有名词,你可以去查阅每个名词的意思,帮助你更好地理解这篇文章。 关注经典文献: 这些被引用的文献很多都是该领域的奠基之作或有重大影响力的论文,这些论文就值得你圈出来,去用之前读第一遍的方式浏览一下。 第二遍读,目的就是厘清文章脉络,知道在讲什么、怎么做的、做的怎么样,同时也决定你是否要读第三遍。 第三遍读方法论最少,但实际上要求最高,要能对整篇文章达到一个烂熟于心的水平,让你去做这篇文章的分享,几乎能抵挡得住来自四面八方的提问。要能在合上文章之后脑海里清晰浮现每一个细节和难点,只有这样才能算真正读懂。 第三遍读,就在于真正读懂。 第一步:收集资源,并整合起来。 第二步:将你认为的与主题相关的任何资源进行深入研究。 这时候,你可以绘制一张表格。 具体来讲,最好的方式就是: 这时候,你的表格可能是这样。 吴恩达认为,要理解一篇论文,一次将一篇论文从第一个字读到最后一个字,可能并不是最佳方式。 正确的打开方式是,一篇论文至少要看三遍。 这一步主要是要把握论文中的关键信息,不光是导言和结论,还包括文章中任何小结论的总结,文中涉及的补充信息都跳过。 不过,如果你需要对这个专业领域有一个「深入」的理解,那就必须要搞懂那些公式术语了。 如何检测你对这篇文章的关键信息有了基本的了解?问自己问题吧! 吴恩达提供了一系列的问题,在阅读的时候询问自己。这里就摘取一部分。 Describe what the authors of the paper aim to accomplish, or perhaps did achieve. If a new approach/technique/method was introduced in a paper, what are the key elements of the newly proposed approach? What content within the paper is useful to you? What other references do you want to follow?
Learn
steadily
rather
than
short
burst
for
longevity.
\\colorred\\textbfLearn steadily rather than short burst for longevity.
Learn steadily rather than short burst for longevity. 以上是关于论文阅读Single-Model Uncertainties for Deep Learning的主要内容,如果未能解决你的问题,请参考以下文章
u
e
(
x
∗
)
:
=
∥
C
T
ϕ
(
x
∗
)
∥
=
∥
a
T
ϕ
(
x
∗
)
+
b
∥
u_e(x^*):=\\|C^\\mathsfT\\phi(x^*)\\| = \\|\\mathbfa^\\mathsfT\\phi(x^*)+\\mathbfb\\|
ue(x∗):=∥CTϕ(x∗)∥=∥a李沐
论文的结构一般是:
李沐
1. 第一遍:文章主要讲什么
1.1 看整体
1.2 看图表
2. 第二遍:文章每一部分讲什么
3. 第三遍:真正读懂
吴恩达
1.1 系统阅读论文集
对每种资源的理解程度,做一个实时的跟踪。
这样,就确保你已经对你所收集到的资源,有了足够的了解,并且还能准确的评估其相关性。
很好,
你
已
经
对
这
项
技
术
基
本
入
门
\\colorred你已经对这项技术基本入门
你已经对这项技术基本入门了。
吴恩达说:对
5
~
20
篇
\\colorred5~20篇
5~20篇的论文的理解,那么就说明你对这个领域以及研究进展有了
基
本
的
了
解
\\colorred基本的了解
基本的了解。
如果可以的话,还可以做一下笔记,用自己的话总结论文当中的关键发现、技术和研究。1.2 论文至少要看三遍
1.2.1 第一遍,仔细阅读论文中的标题、摘要和关键词。
1.2.2 第二遍,阅读文中的导言、结论以及图表,快速扫描一下论文剩下的内容。
1.2.3 第三遍,阅读论文的整个部分,但是要跳过任何可能陌生看不懂的数学公式,技术术语。
1.3 问自己问题
这篇论文作者的目标是什么,或者也许已经实现了什么。
如果文中引入了一种新方法/技术,那么这一新提出的方法/技术的关键要素是什么?
论文中,有哪些内容对你有用。
你还想关注哪些参考资料/文献?1.4 一些有用的在线资源
https://www.reddit.com/r/MachineLearning/
https://www.reddit.com/r/deeplearning/
https://paperswithcode.com/
https://www.researchgate.net/1.5 Learn steadily rather than short burst for longevity.
稳扎稳打,而不是短时的突击,才能长久的学习。这不光是对机器学习领域,还对整个学术领域有益。参考: