R语言标签平滑是什么

R语言标签平滑是什么

这篇文章主要介绍“R语言标签平滑是什么”,在日常操作中,相信很多人在R语言标签平滑是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”R语言标签平滑是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

什么是标签平滑?

标签平滑是一种损失函数的修正,已被证明是非常有效的训练深度学习网络的方法。标签平滑提高了图像分类、翻译甚至语音识别的准确性。我们的团队用它来打破许多 FastAI 排行榜记录:

在我们的FastAI训练代码中调用了标签平滑

简单的解释是,它将神经网络的训练目标从“1”调整为“1-label smoothing adjustment”,这意味着神经网络被训练得对自己的答案不那么自信。默认值通常是 0.1,这意味着目标答案是 0.9(1 - 0.1)而不是 1。

例如:假设我们要将图像分类为狗和猫。如果我们看到一张狗的照片,我们训练 NN(通过交叉熵损失)向 1 表示狗,0 表示猫的方向移动。如果是一只猫,我们训练的方向正好相反,1 代表猫,0 代表狗。换句话说,这是一个 binary 或者说“hard”的答案。

然而,NN 有一个坏习惯,就是在训练过程中对预测变得“过于自信”,这可能会降低它们的泛化能力,从而在新的、看不见的未来数据上表现得同样出色。此外,大型数据集通常会包含标签错误的数据,这意味着神经网络在本质上应该对“正确答案”持怀疑态度,以减少一定程度上围绕错误答案的极端情况下的建模。

因此,标签平滑所做的就是通过训练 NN 向“1-adjustment”目标移动,然后在其余的类上除以这个 adjustment,从而使它对自己的答案不那么自信,而不是简单的设为 1。

对于我们的二分类猫/狗示例,0.1 的标签平滑意味着目标答案将是 0.90(90%确信)这是一个狗的图像,而 0.10(10%确信)这是一只猫,而不是先前的向 1 或 0 移动的结果。由于不太确定,它作为一种正则化形式,提高了它对新数据的预测能力。

可以看到,代码中的标签平滑有助于理解它如何比通常的数学运算更好地工作(来自 FastAI github)。ε 是标签平滑调整因子:

标签平滑的FastAI实现

标签平滑对神经网络的影响

现在我们进入文章的核心部分,直观地展示标签平滑对神经网络分类处理的影响。

首先,AlexNet 在训练中对“飞机、汽车和鸟类”进行分类。

左:没有使用标签平滑进行训练,右:使用标签标签平滑进行训练

验证集上的表现:

你可以看到的,标签平滑强制对分类进行更紧密的分组,同时强制在聚类之间进行更等距的间隔。

“河狸、海豚和水獭”的 ResNet 例子更能说明问题:


ResNet训练用于分类3个图像类别…请注意在聚类紧密性方面的巨大差异

ResNet验证集结果,标签平滑提高了最终的精度。请注意,在训练中,标签平滑会将激活值驱动到紧密的簇中,而在验证集中,它会在中心周围传播,并充分覆盖了预测的置信度范围

正如图像所显示的,标签平滑为最终的激活产生了更紧密的聚类和更大的类别间的分离。

这是为什么标签平滑可以产生更多的正则化和鲁棒的神经网络的主要原因,重要的是趋向于更好地泛化未来的数据。然而,除了得到了更好的激活值的中心,还有额外的好处。

标签平滑的隐式网络校正功能

在本文中,Hinton 等人从可视化过程出发,展示了如何在不需要手动调节温度的情况下,自动校准网络,减少网络校准误差。

以前的研究(Guo et al)表明,神经网络常常过于自信,相对于它们的真实准确性校准得很差。为了证明这一点,Guo 等人开发了一种名为 ECE(预期校准误差)的校准度量。通过使用这种度量方法,他们能够使用一种称为温度缩放的训练后的修改器来调整给定神经网络的校准值,并使网络更好地与它的真实能力保持一致(减少 ECE),从而提高最终精度。(在传递给 softmax 函数之前,通过将最终 logits 与温度标量相乘来执行温度缩放)。

这篇论文展示了一些例子,但是最好的例子是在 ImageNet 上使用和不使用标签平滑训练的 ResNet,并将这两个网络与温度调整网络进行了比较。

与未校准的网络相比,标签平滑极大地提高了置信度/准确率。其结果几乎与使用温度缩放进行手动调节相同。

正如你所看到的,使用标签平滑训练产生的网络具有更好的 ECE(预期校准误差),更简单地说,相对于它自己的精度有一个更理想的置信度。

实际上,经过平滑处理的标签网络并不是“过于自信”的,因此应该能够在未来的真实数据上进行泛化并表现得更好。

知识蒸馏(什么时候不使用标签平滑)

论文的最后一部分讨论了这样一个发现,即尽管标签平滑可以产生用于各种任务的改进的神经网络……如果最终的模型将作为其他“学生”网络的老师,那么它不应该被使用。

作者注意到,尽管使用标签平滑化训练提高了教师的最终准确性,但与使用“硬”目标训练的教师相比,它未能向学生网络传递足够多的知识(没有标签平滑化)。


标签平滑“擦除”了在hard目标训练中保留的一些细节。这样的泛化有利于教师网络的性能,但是它传递给学生网络的信息更少。

标签平滑产生的模型是不好的教师模型的原因可以通过初始的可视化或多或少的表现出来。通过强制将最终的分类划分为更紧密的集群,该网络删除了更多的细节,将重点放在类之间的核心区别上。

这种“舍入”有助于网络更好地处理不可见数据。然而,丢失的信息最终会对它教授新学生模型的能力产生负面影响。

因此,准确性更高的老师并不能更好地向学生提炼信息。

到此,关于“R语言标签平滑是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注恰卡编程网网站,小编会继续努力为大家带来更多实用的文章!

发布于 2022-04-11 21:11:55
收藏
分享
海报
0 条评论
36
上一篇:Springboot整合redis如何配置 下一篇:python单词大小写的示例分析
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码