• Addressing Failure Prediction by Learning Model Confidence


    这是一篇关于置信度的文章。https://arxiv.org/abs/1910.04851

            作者对模型置信度提出了一个新的目标指标。即TCP(true class probability),比起传统的MCP(maximum class probability)更加的合适。MCP即分类器输出最大后验概率作为最终的类别输出。因为在测试时候,真是的类别是未知的,所以我们提出在训练时后学习TCP指标,引入了一个特别的学习框架。

    1:引言

            本文主要解决深度神经网络错误误测的问题,模型通过加入置信度的方法,可以决定是否坚持最终的预测。

            在分类问题上,广泛使用的标准就是MCP,通过softmax层输出。但是他仍然有概念上的缺点。sofmax已知是非校准的,对对抗攻击比较敏感,也不足以监测那些out-of-distribution的例子。

    为什么softmax不是一个好的不确定测量方法

    回答1:因为softmax的类别输出的置信度过高,因为神经网络对他们的预测过于自信。所以softmax输出的概率不等于模型的置信度。

    回答2:

     

             在本文要解决的第二个问题,对置信度结果进行排位,对于错误的预测,MCP的排位是不准确的。因为其对于正确的和错误的划分会重叠。模型对于正确的和错误的划分置信度都比较高。

     如下图的a,而b,错误的置信度转移到左边,比较低。

     2:错误的预测通过学习模型置信度

            对于数据集D,里面有N个样本,

     输入x,网络对每一个类别分配一个概率,w是模型参数,模型的输出类别可以计算为:

    即第k个类别输出的概率最大值, 即为模型的预测类别。

    在训练过程中,我们通过减小预测分布和真实分布之间KL散度,在分类任务中通过更新参数,来最小化交叉熵损失。

     3:置信度指标用于错误的预测

    模型的置信度越高,模型对于他的预测就越确定。因此一个合适的置信度标准应该是错误的分类赋予一个低的置信度,正确的分类赋予一个高的置信度。

    注:x:输入

    y*真实类别

    yhat预测类别

    对于输入x,MCP:模型误分类的话,真实类别就会赋予一个很低的值。反映给模型让他知道自己误分类了。

     因此我们提出TCP:

     理论保证:

    当Y=真实类别的概率大于1/2,我们就推出预测的概率等于真实的概率。模型预测正确。

    当Y=真实类别的概率小于1/K,我们就推出预测的概率不等于真实的概率。模型预测错误。

    证明:k是标签的数量,x是一个sample,y*是对应的标签。模型正确分类的概率大于1/2。

    其中(2)是1减去所有其他分类的结果,就是正确分类的结果。所以y=任何一个概率的值都小于正确概率的值。

    公式(4)是错误分类的概率,如果正确的分类概率小于1/k,那么其余的其他种类的概率大于(k-1)/k。

            看最后一句话:至少存在一个k,Y=k的概率大于Y=y*的概率(k不等于y*)会导致预测结果不等于真实结果。即模型分类错误。也就是说如果有一个类别大于真实类别的概率,那么就是误分类。

    在[1/k,1/2]范围内,我们没有理论保证正确和错误的预测不会重叠。但是当我们使用深度神经网络,我们发现之间的重叠区域是非常小的。可能的原因是深度神经网络的输出预测过于自信。

    我们也提出了归一化的TCP,正确的预测将会赋值为1。错误的会在[0,1]之间。

     4:通过深度神经网络学习TCP

    我们提出在训练时候学习TCP,我们引入置信度神经网络,取名confidNet,带有参数o,输出置信度预测c(x,o),在训练时候我们寻找o,类似于c*(x,y*)。

     红色框框通过交叉熵损失学习参数w,他的分类层将会固定。

    5:置信度网络设计

    开始时候,模型提取复杂的特征输入到分类层,confidnet将提取的特征输送到一系列的dense layer最终由一个sigmoid激活函数,输出C_hat属于[0,1]。

    损失函数:使用l2损失训练confidNet,最终我们使用了一个rank loss。

     6:学习策略

    训练confidnet开始时候固定整个m,冻结参数w,通过损失函数学习o,下一步fine-tune模型的encoder,因为模型m是固定的,我们解耦特征encoder用来分类,和置信度预测。我们在训练的最后一个阶段会舍弃dropout layer。并且减少学习率。

  • 相关阅读:
    Python modbus_tk 库源码分析
    uni-app中返回顶部的方法
    Python 自定义函数的基本步骤
    硬件调试流程(工作总结)
    java——事务
    几种典型的深度学习算法:(CNN、RNN、GANS、RL)
    【微信小程序 | 实战开发】配置微信小程序APPID并快速接入
    FROZEN TRANSFORMERS IN LANGUAGE MODELS ARE EFFECTIVE VISUAL ENCODER LAYERS
    Shadowing Japanese(中上) Unit 2
    Vue源码篇
  • 原文地址:https://blog.csdn.net/qq_43733107/article/details/127440909