首页 > 编程知识 正文

知识蒸馏和标签平滑,label smoothing作用

时间:2023-05-05 17:57:29 阅读:170392 作者:2659

标签平滑的作用是减小原始标签值的值域

原因:理论上即使是人工标记数据也可能不完全准确,因此受几个外部因素的影响会产生微小的偏差

因此,采用标签平滑来弥补这一偏差,减少模型对某些规律的绝对认知,防止过度拟合。 通过以下例子了解更多

标签平滑理论:

2016年,Szegedy等人提出了inception v2的模型(论文: rethinkingtheinceptionarchitectureforcomputervision.)。 为了减轻这个问题,提到了标签移动技术。

在transformer中,可以直接导入标签平滑工具包。 此工具用于标签平滑工具,代码如下:

#-*-coding : utf-8-*-frompyitcast.transformer _ utilsimportlabelsmoothingfromtorch.autogradimportvariableimportvableimpomporch #第一个参数size表示目标数据的词汇总数,它是在模型最后一级获得的ssdxc的最后一维大小。 #这里5表示目标词汇总数为5个。 第二个参数padding_idx表示将这些tensor的数字#替换为0。 通常,padding_idx=0表示不进行替换。 第三个参数smoothing表示标签的平滑度。 #原始标签的显示值为1时,平滑化后的值域为[1-smoothing, 1 smoothing ].crit=label smoothing (smoothing=0.5 ) #假设任何模型最终输出预测结果和真实结果的predict=variable (torch.float tensor ) 0 ) ) ) torch.float tensor ([ 0,0.2,0.7,0.1,0 ]、# [ 0,0.2,0.7,0.1,0 ]、# 0,0.2,0.7 )、0.7 0 ) ) ) print ) target.shape )将predict,target传递给对象target () (print (---------) ) # true 2.5 ) (即值域) )、2 smoothing=0.5 print (crit.true _ dist )、tensor ([ 0.0000,0.1667,0.5000,0.1667,0. 0.0000](#标签平滑图像绘制PLT.imshow(crit.true_dist ) plt.show ) #标签平滑图像分析:# )可知横跨横坐标的值域为标签平滑图像的约0.5至2.5 #相对于纵轴横穿的值域为标签平滑化后的负平滑值域,可知从-0.5到1.5。 总值域空间从原来的[ 0,2 ]变为[-0.5,2.5 ]。

我们先来看看原理。 假设我们只有两个分类。 一个不是猫和猫,而是分别用1和0表示。 Label Smoothing的工作方式是对原始[0 1]表示法进行更改。 假设标签smoothing的值为0.1 :

您可以看到原始的[ 0,1 ]代码为[ 0.05,0.95 ]。 假设该label_smoothing的值为,则原分类正确时,p=1,不正确时p=0,但现在p=1,也就是说对分类的正确性稍加处罚。

Label Smoothing在很多问题上提高了模型。

在Tensorflow中使用方法时,只需将label_smoothing的值添加到损失函数中即可,如下所示:

TF.losses.soft max _ cross _ entropy (one hot _ labels,logits,weights=1.0,label_smoothing=0,scope=None

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。