当前位置: 首页 > news >正文

Loss Margin的原理与推导

为何要加入margin

在SVM时代,margin(间隔)被认为是泛化能力的保证。而在神经网络中最常使用的损失函数softmax交叉熵损失中并没有显式的引入间隔项。其中softmax损失函数推导过程中经过了一个smooth化,其可以在类间引入一定的间隔,但是这个间隔与特征幅度和最后一个内积层的权重幅度有关,这种间隔的大小主要是由网络自行调整的,并不是人为指定的。网络自行调整的间隔并不一定是最优的。实际上,为了减小损失函数的值,margin为0甚至margin为负才是神经网络自认为正确的优化方向。所以需要softmax loss的基础上人为的加入marign来拉大类间距离,保证“类间距离大于类内距离”,能够帮助模型学习到更加辨别的特征,同时加强模型的泛化能力。

推导过程:

优化目标:输出c个分数,使目标样本的分数比最大的非目标分数更大,对应的损失函数为:

但是这样不仅难以优化,而且每次优化的分数过少,会使得网络收敛及其缓慢。下一步通过LogSumExp(max函数的smooth版本)取代max函数:

ReLU函数max(x,0)也有一个smooth版本,即softplus函数log(1+e^x), 继续替换之后得到:

这就是大家所熟知的softmax交叉熵损失函数了,经过了两步的smooth化之后,就将一个难以收敛的函数逐步改造成为了softmax交叉熵损失函数,解决了原始的目标函数难以优化的问题。

但是只是这样会使得模型的泛化性能比较差(因为在训练集上让z_y刚刚超过z_i就停止训练,测试集上很可能就不会超过),所以引入间隔m:

这个损失函数的含义是,使得目标分数比最大的非目标分数还要大m,从而提高模型的泛化性能。

但是这种smooth操作同时也带来了副作用:

也就是说 Softmax 交叉熵损失在输入的分数较小的情况下,并不能很好地近似目标函数。在使用 LSE(x) 对 max{z} 进行替换时, LSE(x) 将会远大于 max{z} ,不论 z_y(目标函数)是不是最大的,都会产生巨大的损失。稍高的LSE(z)可以在类间引入一定的间隔,提升模型的泛化能力。但过大的间隔同样是不利于分类模型的,这样训练出来的模型必然结果不理想。

所以,z 的幅度既不能过大、也不能过小,过小会导致近对目标函数近似效果不佳的问题;过大则会使类间的间隔趋近于0,影响泛化性能。

所以控制z幅度的一种方法是将特征x和权重w全部归一化,这样就将z从特征与权重的内积变成了特征与权重的余弦,余弦的范围是[-1,1],所以z的幅度就大致定下来了。再通过一个尺度因子来拉长z的幅度,保证输入到softmax中的分数在一个合适的范围,这样通过控制z的取值范围同时也能够方便设置参数m(防止z过大使得m无法起到作用):

简单总结来说就是:将输入值控制到一个给定范围内,保证margin的数值和输入值的大小可比。

接下来同样通过smooth技巧,将损失函数转化为:

其中m越大,就会强行要求目标样本与非目标样本分数拉开更大的差距。

相关文章:

  • 一天时间解决期末不挂科
  • 代码解读——ReferenceNet
  • 【位运算】消失的两个数字(hard)
  • STM32 PID控制
  • Hyperlane 框架详解与使用指南
  • shell打印图案
  • 常用的OceanBase调优配置参数
  • Maven 多仓库配置及缓存清理实战分享
  • 【Redis/1-前置知识】分布式系统概论:架构、数据库与微服务
  • vue的created和mounted区别
  • word嵌入图片显示不全-error记
  • Linux下制作Nginx绿色免安装包
  • 介绍一种直流过压保护电路
  • 中和农信创新引领“三农“金融服务新模式
  • vue实现气泡词云图
  • Elasticsearch增删改查语句
  • freeCAD 学习 step1
  • 金属工具制造企业如何做项目管理?数字化系统全面提升交付效率
  • vue的这两个特性:数据驱动视图 与 双向数据绑定的区别
  • 日志收集工具-logstash
  • 保山网站建设优化/百度指数怎么查
  • 网站优化一般怎么做/如何做网址
  • 项城做网站/网站怎么优化到首页
  • 网站建设同行友情链接/百度指数怎么下载
  • 公司内部网站开发/百度推广时间段在哪里设置
  • 银川网站设计公司/seo排名点击软件运营