如何确定神经网络预测的置信度?


22

为了说明我的问题,例如,假设我有一个训练集,其中输入具有一定程度的噪声,但输出却没有噪声。

# Training data
[1.02, 1.95, 2.01, 3.06] : [1.0]
[2.03, 4.11, 5.92, 8.00] : [2.0]
[10.01, 11.02, 11.96, 12.04] : [1.0]
[2.99, 6.06, 9.01, 12.10] : [3.0]

如果无噪声(不是实际的梯度),那么这里的输出就是输入数组的梯度。

训练网络后,对于给定的输入,输出应类似于以下内容。

# Expected Output
[1.01, 1.96, 2.00, 3.06] : 95% confidence interval of [0.97, 1.03]
[2.03, 4.11, 3.89, 3.51] : 95% confidence interval of [2.30, 4.12]

我的问题是如何创建神经网络,使其返回预测值和置信度(例如方差或置信区间)?


3
如果您正在寻找一个包含未来实现的区间,那么您正在寻找一个与不可观察参数有关的预测区间,而不是置信区间。这常常令人困惑。
S. Kolassa-恢复莫妮卡

Answers:


20

听起来您好像在寻找一个,即一个包含预先确定的未来实现百分比的间隔。(查看标签Wiki的以了解差异。)

您最好的选择可能是直接与不输出单点预测但输出整个预测分布的 NN体系结构直接配合。然后,您可以直接从这些分布中提取所需的预测间隔(或均值或中点预测)。我和其他人一直在争论预测分布比点预测更有用,但是老实说,尽管我一直睁大眼睛,但我还没有看到很多关于神经网络的预测分布的工作。本文听起来可能有用。您可能想稍微搜索一下,也许还使用“预测分布”或“预测密度”之类的其他关键字。

也就是说,您可能需要研究Michael Feindt的 NeuroBayes算法,该算法使用贝叶斯方法来预测预测密度。


1
这可能是另一个有用的论文-神经网,学习分布:google.com/...
临Q

@Stephan:链接已消失:(
Matthew Drury

@MatthewDrury:您的意思是哪个链接?这三个对我来说都很好。
S. Kolassa-恢复莫妮卡

您能否带我们介绍一个使用NN Predictive Distributions的简单Ternsorflow演示/示例?
MartinThøgersen

@MartinThøgersen:对不起,不,我不使用Tensorflow ...
S. Kolassa-恢复莫妮卡

5

我不确定您是否可以为单个预测计算出置信区间,但是实际上您可以为整个数据集的错误率计算出置信区间(您可以泛化准确性和要评估的任何其他度量)。

如果是你的错误率,而一些数据分类š大小的Ñ,用于家庭的错误率95%置信区间由下式给出: é ± 1.96 Ë小号ñ

˱1.96Ë1个-Ëñ

(请参阅《汤姆·米切尔的《机器学习》一书,第5章。)

编辑

猜我应该说明更一般的情况下,它是: 下表列出 了zN的常见选择:

˱žñË1个-Ëñ
žñ
confidence level    80%    90%    95%    98%    99%
values of zN       1.28   1.64   1.96   2.33   2.58

1
这将要求渐近分布是正态的
user2879934

4
对于大样本量(这在ML中很常见),通常可以认为是安全的。没必要ti downvote,只是要求澄清一下,但是哦。
mp85

4

非参数回归和分类问题(例如神经网络,SVM,随机森林等)中的预测区间(PI)难以构建。我很乐意听取其他意见。

但是,据我所知,共形预测(CP)是构建用于在非参数回归和分类问题中进行预测的校准PI的唯一原理方法。有关CP的教程,请Shfer&沃夫克(2008),J。的机器学习研究 9,371-421 [PDF]


3

我不知道有什么方法可以准确地做到这一点。

μσX一世ÿ一世-日志ñÿ一世-μX一世σX一世μX一世ÿ一世σX一世

ÿ一世-μX一世σX一世ñ01个


1
σ+

有没有人看到过使用对数似然性进行训练的使用NN输出分布参数的具体示例?
帕尔默小姐

3

我还没有听说过为神经网络预测提供置信区间的任何方法。尽管缺乏正式的方法论,构建一个方法论似乎是可行的。由于需要计算能力,因此我从未尝试过这样做,我对此也没有任何主张,但是一种方法可能适用于小型神经网络(或者具有极快的GPU功能,它可能适用于中等大小的网络。 )将对训练集进行重新采样,并使用相同的参数和初始设置构建许多类似的网络(例如10,000次),并根据每个自举网络的预测来建立置信区间。

例如,在如上所述训练的10,000个网络中,一个人可能会得到9,000次(在对神经网络回归预测进行四舍五入后)为2,000,因此您将以90%的CI预测2.0。然后,您可以为所做的每个预测构建一个CI数组,然后选择要报告的模式作为主要CI。


2
我很好奇为什么这个建议被否决了,因为它实际上是以一种稍微不同寻常的方式进行引导(问题的四舍五入使我们很容易检查神经网络对预测的信心)。我真的不介意投反对票,如果有人投反对票可以解释为什么这不是所提出问题的有效解决方案。我正在学习自己,希望能得到反馈!
托尼·S

1
我没有投反对票,但是据我了解,建议的方法将输出捕获模型预测值的间隔,这与捕获真实值的间隔不同。
帕尔默小姐

3

在直接输出预测间隔方面,2011年有一篇论文《基于神经网络的预测间隔全面回顾》。

他们比较了四种方法:

1:增量法2:贝叶斯方法3:平均方差估计4:引导程序

同一作者继续开发了用于构建基于神经网络的预测区间的下界估计方法,该方法直接从NN输出下界和上限。不幸的是,它不适用于反向传播,但是最近的工作使“深度学习的高质量预测间隔”成为可能。

作为直接输出预测间隔的替代方法,贝叶斯神经网络(BNN)对NN参数中的不确定性进行建模,从而在输出中捕获不确定性。很难做到这一点,但是流行的方法包括在预测时运行MC Dropout集成


1
使用贝叶斯深度学习实际上很容易做到。例如见edwardlib.org/tutorials/bayesian-neural-network
DeltaIV


1

不可能,所有的ML模型都不是关于现象的理解,它是希望“可行”的内插方法。从这样的问题开始,信心,对噪声的鲁棒性就没有答案。

因此,请使用各种应用科学和基础科学来得出某些结论:

  • 使用控制(并假设动力学)

  • 使用凸优化(在函数上有一些附加条件)

  • 使用数学统计(对分布的初步假设)

  • 使用信号处理(在某些假设下,信号受频带限制)

科学家使用一些初步假设(称为公理)来推导某些东西。

没有任何初步假设就无法给出任何置信度,因此DL方法不是问题,但是在没有任何初步假设的情况下尝试插值的任何方法都存在问题-没有假设就无法通过代数智能地推导某些东西。

NN和各种ML方法用于快速原型创建“某物”,这似乎可以通过交叉验证“某种方式”检查。

甚至更深的回归拟合E [Y | X]或它的估计值绝对是无法解决的问题(也许y点处的pdf = E [Y | X]具有最小值,而不是最大值),并且有很多这样的细微之处的东西。

还让我提醒一下AI / ML中两个无法解决的问题,这些问题可能由于某些原因而被遗忘在美丽口号之后:

(1)它是插值方法,而不是外推法-它无法处理新问题

(2)没有人知道任何模型如何处理非同一分布的数据(穿着香蕉服装的人用于行人定位)


如何将训练数据集的错误建模为“预测”错误以进行推理?
Jacko

甚至假设它是加法的“ predict_for_mean” +“ predict_for_error”。您可以想象任何方案分别预测信号和错误。但是又有一次-如果我们仅“插值”,我们就不能自信地说些什么。我们预测表面温度。是的,您可以说我的预测为“ 20”,错误预测为“ 5”。因此,它说我认为真正的反应在于[20-5,20 + 5],但是要真正理解它的含义,我们需要了解真正的现象和数学模型。ML与两者无关。其他领域做了一些初步假设。
bruziuz18年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.