标签平滑(label smoothing)

2023-11-03

目录

1.标签平滑主要解决什么问题?

2.标签平滑是怎么操作的?

3.标签平滑公式

4.代码实现


标签平滑(label smoothing)出自GoogleNet v3

关于one-hot编码的详细知识请见:One-hot编码

1.标签平滑主要解决什么问题?

传统的one-hot编码会带来的问题无法保证模型的泛化能力,使网络过于自信会导致过拟合。
全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难adapt。会造成模型过于相信预测的类别。而标签平滑可以缓解这个问题。
 

2.标签平滑是怎么操作的?

标签平滑是把one-hot中概率为1的那一项进行衰减,避免过度自信,衰减的那部分的自信被平均分到每一个类别中

例如:

一个4分类任务,label = (0,1,0,0)

labeling smoothing = (\frac{0.001}{4},1-0.001+\frac{0.001}{4}\frac{0.001}{4}\frac{0.001}{4})=(0.00025,0.99925,0.00025,0.00025)

 其中,概率加起来等于1。

3.标签平滑公式

交叉熵(Cross Entropy):H(q,p)=-\sum_{k=1}^{k}log(p_k)q_k

其中,q为标签值,p为预测结果,k为类别。即q为one-hot编码结果。

labeling smothing:将q进行标签平滑变为q',让模型输出的p分布去逼近q'

q'(k|x)=(1-\varepsilon )\delta _{k,y} +\varepsilon u(k),其中u(k)为一个概率分布,这里采用均匀分布u(k)=\frac{1}{k}),则得到q'(k|x)=(1-\varepsilon )\delta _{k,y} +\frac{\varepsilon }{k}

        其中,\delta _{k,y}为原分布q, ϵ ∈(0,1)是一个超参数。

        由以上公式可以看出,这种方式使label有 ϵ  概率来自于均匀分布 1−ϵ 概率来自于原分布。这就相当于在原label上增加噪声,让模型的预测值不要过度集中于概率较高的类别,把一些概率放在概率较低的类别。

故标签平滑后的交叉熵损失函数为:H(q',p)=-\sum_{k=1}^{k}logp(k)q'(k)=(1-\varepsilon )H(q,p)+\varepsilon H(u,p)

那这个公式是怎么得来的呢?

将q'(k|x)带入交叉熵损失函数:

H(q',p)=-\sum_{k=1}^{k}log(p_k)q'_k

=-\sum_{k=1}^{k}log(p_k)[(1-\varepsilon )\delta _{k,y}+\frac{\varepsilon }{k}]

=-\sum_{k=1}^{k}log(p_k)(1-\varepsilon )\delta _{k,y}+[-\sum_{k=1}^{k}log(p_k)\frac{\varepsilon }{k}]

=(1-\varepsilon )*[-\sum_{k=1}^{k}log(p_k)\delta _{k,y}]+\varepsilon *[-\sum_{k=1}^{k}log(p_k)\frac{1}{k}]

=(1-\varepsilon )*H(q,p)+\varepsilon *H(u,p)

这样就得到了标签平滑公式。

4.代码实现

class LabelSmoothingCrossEntropy(nn.Module):
    def __init__(self, eps=0.1, reduction='mean', ignore_index=-100):
        super(LabelSmoothingCrossEntropy, self).__init__()
        self.eps = eps
        self.reduction = reduction
        self.ignore_index = ignore_index

    def forward(self, output, target):
        c = output.size()[-1]
        log_pred = torch.log_softmax(output, dim=-1)
        if self.reduction == 'sum':
            loss = -log_pred.sum()
        else:
            loss = -log_pred.sum(dim=-1)
            if self.reduction == 'mean':
                loss = loss.mean()


        return loss * self.eps / c + (1 - self.eps) * torch.nn.functional.nll_loss(log_pred, target,
                                                                                   reduction=self.reduction,
                                                                                   ignore_index=self.ignore_index)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

标签平滑(label smoothing) 的相关文章

  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • 如何计算 pandas datetime 对象的均值和方差?

    如何计算 YYYY MM DD 形式的 python 日期时间对象的汇总统计数据 均值和标准差 我想对具有不同 ID 的不同日期时间对象组执行此操作 数据如下 import datetime as dt df pd DataFrame Da
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • VSCode Settings.json 丢失

    我正在遵循教程 并尝试将 vscode 指向我为 Scrapy 设置的虚拟工作区 但是当我在 VSCode 中打开设置时 工作区设置 选项卡不在 用户设置 选项卡旁边 我还尝试通过以下方式手动转到文件 APPDATA Code User s
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • GUI(输入和输出矩阵)?

    我需要创建一个 GUI 将数据输入到矩阵或表格中并读取此表单数据 完美的解决方案是限制输入表单仅允许float 例如 A 1 02 0 25 0 30 0 515 0 41 1 13 0 15 1 555 0 25 0 14 1 21 2
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • Django REST Framework - CurrentUserDefault 使用

    我正在尝试使用CurrentUserDefault一个序列化器的类 user serializers HiddenField default serializers CurrentUserDefault 文档说 为了使用它 请求 必须作为
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

    我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数 我的代码如下 X train X train reshape X train shape 0 1 X train shape 1 X test X test
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • Firebase Firestore:获取文档的生成 ID (Python)

    我可以创建一个新文档 带有自动生成的 ID 并存储对其的引用 如下所示 my data key value doc ref db collection u campaigns add my data 我可以像这样访问数据本身 print d
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • JSON:TypeError:Decimal('34.3')不是JSON可序列化的[重复]

    这个问题在这里已经有答案了 我正在运行一个 SQL 查询 它返回一个小数列表 当我尝试将其转换为 JSON 时 出现类型错误 查询 res db execute SELECT CAST SUM r SalesVolume 1000 0 AS

随机推荐

  • Java--==与equals()的区别

    一 使用的对象 基本数据类型 equals 引用数据类型 二 比较内容 是否为同一地址 equals 未重写 是否为同一地址 已重写 引用数据类型内容 三 重写 public boolean equals Objeat obj if thi
  • Python接单一个月,副业居然比主业收入要多?

    python爬虫肯定是可以当副业的 我身边一个伙伴就靠会python爬虫这一项技能一个月差不多能有一万多收入 他截图给我看的他的收入图是这样的 人家一个月就靠接单这个副业都比很多人主业收入要多 每个月除主业外还有一万多收入 财务就相对自由的
  • 学习笔记二:IBIS模型编辑报错纠正

    新建IBIS文件后 写好了相应的IBIS模型文件 写好文件后 最好要检查下是否符合ibis语法 注意 第一点 IBIS头文件的 File name 此处名称需要和文件名称相同 同时名称字符数需在12个字符之内 否则会报错 File name
  • 一个javaer面试Python

    Python初面 一 初面缘由 今天是2022年的6月18日 广州 中雨转阴 非天气预报 我怀揣着紧张而有激动的心情趁着周末悄悄去面试了一次 说是去面试 其实也和玩差不多 公司的工作氛围很不错 空调很凉 零食很多 但是我没有心情享用 附上一
  • HFSS 3D LAOUT PCB 裁剪,差分线,过孔仿真和优化

    我本身不是做天线设计的 所以HFSS这个软件给我主要还是做PCB级别的高速信号完整性仿真 一般2 5D的仿真软件无法对过孔和跨平面进行仿真 所以要借助三维电磁软件进行 今天就针对PCB进行裁剪 为什么要裁剪 以为如果把整个PCB一起仿真的话
  • 移动APP专项测试

    什么是移动端测试 移动端测试是指对移动应用进行的测试 即实体的特性满足需求的特性 简言之就是针对移动平台的软件进行的测试 比如针对手机 ipad等平台上的各种app功能和性能展开的测试 相较于传统的web端的测试 移动端的测试受手机屏幕大小
  • 127.0.0.1和localhost的区别

    要比较两个东西有什么不同 首先要弄清两者的概念 所以 我们从概念开始 localhost 也叫local 正确的解释是 本地服务器 127 0 0 1 在windows等系统的正确解释是 本机地址 本机服务器 我们再看看他们的工作原理 lo
  • 关于块元素和行元素之间的转换

    如何让块元素变成行元素 将块级元素设置为行内元素 inline 可以通过以下几种方式 1 display inline 这个是最直接的方式 通过设置display样式为inline 可以将块级元素变为行内元素 例如 css div disp
  • element的日期组件-两个的和单个的组件

    dateOne vue
  • 云计算技术基础第1章 云的概念以及类型

    章节安排 第一章 云的概念及类型 第二章 虚拟化技术 第三章 云计算的架构和国内外研究现状 第四章 云计算与大数据 第五章 海量数据存储技术 第六章 云平台应用 本章内容 计算模式的回顾 云计算概念与特征 云计算的分类 云计算的发展动因 云
  • Spring Cloud Alibaba 大型微服务项目实战

    作者介绍 程序员十三 多年一线开发经验 历任高级开发工程师 后端主程 技术部门主管等职位 同时也是开源项目的爱好者和贡献者 掘金优秀作者 CSDN 博客专家 实体图书作者 专栏作者 视频讲师 小册介绍 Spring Cloud Alibab
  • 利用Python通过频谱分析和KNN完成iphone拨号的语音识别

    最近这段时间 学校里的事情实在太多了 从七月下旬一直到八月底实验室里基本天天十二点或者通宵 实在是没有精力和时间来写博客 这周老师出国开会 也算有了一个短暂的休息机会 刚好写点有意思的东西 上周在天津的会议上碰到一个北交的姐们儿 她想利用小
  • IDEA集成Git操作

    IDEA集成Git操作 IDEA绑定Git仓库 在需要的工程目录下创建Git仓库并完成仓库基本设置 此时IDEA界面出现的变化 若出现此变化 说明IDEA绑定Git仓库成功 IDEA集成的Git操作 右上角选项为Git基本操作 懒人操作 文
  • EMQX v4 安装及组建集群、设置负载均衡

    准备工作 操作系统ubuntu 16 04 虚拟机VMware Workstation 12 Pro 一 安装EMQX 1 打开EMQ首页 https www emqx io cn 2 选择产品 gt EMQ X Broker 3 在ubu
  • 机试复试准备中--梦校(华科)真题

    一 矩阵转置 二 统计单词 写法一 读取一整行 写法二 依次读入每一个单词 三 二叉排序树 DFS 四 IP地址 五 特殊排序 六 a b 高精度加法 七 奇偶校验 八 最大的两个数 九 二叉树遍历 DFS 十 成绩排序 十一 守形数 十二
  • vue:webpack打包过程中的常见错误-加载CSS文件

    问题1 ReferenceError dirname is not defined 解决方法 将 dirname写为 dirname 注意是两条 问题2 npm ERR code ERESOLVE npm ERR ERESOLVE unab
  • C# 任意开次方,次幂, 开平方,开三次方,平方根, 三次方根

    double a 0 开任意次方的关键是 1 0 2 必须写 0 点零 如果不写 就永远等于1 具体原因不清楚 可以测试代码 a Math Pow 2 1 2 可以跟开平方对比一下 开平方 平方根 a Math Pow 2 1 0 2 开任
  • c# yield 用法

    返回类型必须为 IEnumerable IEnumerable
  • 洛谷 P3374 【模板】树状数组 1

    题目链接 https www luogu com cn problem P3374 include
  • 标签平滑(label smoothing)

    目录 1 标签平滑主要解决什么问题 2 标签平滑是怎么操作的 3 标签平滑公式 4 代码实现 标签平滑 label smoothing 出自GoogleNet v3 关于one hot编码的详细知识请见 One hot编码 1 标签平滑主要