数据学习
登录
注册
原创博客
期刊会议
学术世界
期刊出版社
领域期刊
SCI/SCIE/SSCI/EI简介
期刊列表
会议列表
所有期刊分区
学术期刊信息检索
JCR期刊分区查询
CiteScore期刊分区查询
中科院期刊分区查询
领域期刊分区
管理 - UTD24期刊列表
管理 - AJG(ABS)期刊星级查询
管理 - FMS推荐期刊列表
计算机 - CCF推荐期刊会议列表
高校期刊分区
南大核心(CSSCI)
合工大小核心
合工大大核心
AI资源仓库
AI领域与任务
AI研究机构
AI学术期刊
AI论文快讯
AI数据集
AI开源工具
AI模型
AI模型概览图
AI模型月报
AI基础大模型
AI预训练大模型
数据推荐
网址导航
我的网址导航
程序员必备网站
标签平滑(Label Smoothing)——分类问题中错误标注的一种解决方法
标签:
#深度学习#
时间:2019/06/25 17:27:24
作者:小木
交叉熵(Cross-Entropy)损失函数是分类模型中的一种非常重要的目标函数。在二分类问题中,交叉熵损失函数的形式如下: ```math -[y\log p +(1-y)\log(1-p)] ``` 如果分类准确,交叉熵损失函数的结果是0(即上式中p和y一致的情况),否则交叉熵为无穷大。也就是说交叉熵对分类正确给的是最大激励。换句话说,对于标注数据来说,这个时候我们认为其标注结果是准确的(不然这个结果就没意义了)。但实际上,有一些标注数据并不一定是准确的。那么这时候,使用交叉熵损失函数作为目标函数并不一定是最优的。 在早起的神经网络研究中,也有发现,一些非标准的交叉熵损失函数表现会更好一点。 对于这个问题,我们还可以这么去理解。在分类任务中,我们通常对类别标签的编码使用[0,1,2,...]这种形式。在深度学习中,通常在全连接层的最后一层,加入一个softmax来计算输入数据属于每个类别的概率,并把概率最高的作为这个类别的输入,然后使用交叉熵作为损失函数。这会导致模型对正确分类的情况奖励最大,错误分类惩罚最大。如果训练数据能覆盖所有情况,或者是完全正确,那么这种方式没有问题。但事实上,这不可能。所以这种方式可能会带来泛化能力差的问题,即过拟合。 在2016年,Szegedy等人提出了inception v2的模型(论文:Rethinking the inception architecture for computer vision.)。其中提到了Label Smoothing技术,用以减轻这个问题。 我们先来看一下原理。假设我们的分类只有两个,一个是猫一个不是猫,分别用1和0表示。Label Smoothing的工作原理是对原来的[0 1]这种标注做一个改动,假设我们给定Label Smoothing的值为0.1: ```math [0, 1] \times (1-0.1) + 0.1/2 = [0.05, 0.95] ``` 可以看到,原来的[0,1]编码变成了[0.05,0.95]了。这个label_smoothing的值假设为$\epsilon$,那么就是说,原来分类准确的时候,$p=1$,不准确为$p=0$,现在变成了$p=1-\epsilon$和$\epsilon$,也就是说对分类准确做了一点惩罚。 Label Smoothing在很多问题上对模型都有一定的提升。 在Tensorflow中使用方法时候只要在损失函数中加上label_smoothing的值即可,如下: ```python tf.losses.softmax_cross_entropy( onehot_labels, logits, weights=1.0, label_smoothing=0, scope=None, loss_collection=tf.GraphKeys.LOSSES, reduction=Reduction.SUM_BY_NONZERO_WEIGHTS ) ```
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
相关博客
最热博客