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

sigmoid和softmax的异同以及对应的loss解析

一、综述

sigmoid和softmax都是激活函数,目的是让模型输出的数据进行非线性的变化然后输出,当训练时这个输出作为损失函数的输入,在损失函数中跟真实值进行计算得到loss值。反向传递时,框架会自动微分进行参数更新。那么这两个激活函数有什么区别与联系呢?

二、激活函数以及对应的loss解析

2.1 sigmoid

公式为:

图像为:

可以理解为通过sigmoid输出的值即为该位置的概率值,跟其他位置无关,这就使得sigmoid激活函数更适合用于二元分类的场景中,或者是多标签分类中,只看每个类别,而不管其他类别,搭配二元交叉熵使用。即:

Sigmoid 函数是独立地对每个类别的预测值进行激活,输出的每个值都表示该类别的 概率,但是每个类别的概率是独立计算的,不考虑其他类别的概率。这就意味着,所有类别的概率之和可以大于 1。

二元交叉熵计算损失的公式为:

其中,y 是标签(0 或 1),y_hat 是经过 Sigmoid 激活后的预测概率。

要求标签是硬标签one-hot,如果是该类,该类的位置即为1,其他类的位置即为0,计算loss并迭代,使得输出正确的位置的概率值尽可能大,错误的位置概率值尽可能小。

2.2 softmax

公式为:

输出是0到1的值,但所有值加起来会等于1。这会将模型输出的 logits 转换为每个类别的对数概率。然后,使用 软标签(可能是浮动的概率分布)来计算损失。用交叉熵可以记为soft_cross_entropy来计算损失,公式为:

其中,yi 是每个类别的标签(可以是浮动值),yi_hat 是通过 Softmax 得到的类别 iii 的预测概率。这里,标签 yi 不再是 0 或 1,而是类别的 概率值,这使得 soft_cross_entropy 可以处理更加平滑的标签分布。

soft_cross_entropy 损失函数是基于 交叉熵 来计算的,因此它假设标签是一个 概率分布,即每个类别的标签值是一个介于 0 和 1 之间的概率,用来衡量 预测的概率分布真实的标签分布 之间的差异,表示每个类别的置信度或可能性。而且为了使计算具有意义,标签中的概率值应该满足概率分布的基本属性——所有类别的概率之和为 1

如果标签的和不为 1,标签就不再代表一个有效的概率分布。这会导致损失计算时模型预测的概率分布与实际标签分布的差异无法准确度量。例如,交叉熵中的对数项要求标签值是概率值,如果标签值的和不为 1,计算出来的对数可能不是有效的概率对数,这会导致模型训练过程中的梯度更新变得不稳定或不合理。


http://www.kler.cn/a/405330.html

相关文章:

  • ROS之什么是Node节点和Package包?
  • 【Python TensorFlow】进阶指南(续篇三)
  • 深入理解TensorFlow中的形状处理函数
  • Wallpaper壁纸制作学习记录03
  • 【Maven】IDEA创建Maven项目 Maven配置
  • FIFO和LRU算法实现操作系统中主存管理
  • Java解析视频FPS(帧率)、分辨率信息
  • MySQL UPDATE语句执行链路解析
  • 攻克OCR手写识别难点!InkSight教程上线,实现高精度转写;iNatSounds数据集发布,含23万自然物种音频
  • K8S资源限制之LimitRange
  • VUE:基于MVVN的前端js框架
  • 如何使用tesseract的C++接口做字符识别
  • 一文详细了解websocket应用以及连接断开的解决方案
  • 【Kafka 实战】Kafka 如何保证消息的顺序性?
  • C/C++语言基础--C++检测内存泄露方法、RALL思想模型
  • RTPS通信使用的socket和端口
  • 从零开始:如何使用第三方视频美颜SDK开发实时直播美颜平台
  • 在 Swift 中实现字符串分割问题:以字典中的单词构造句子
  • 摸一下elasticsearch8的AI能力:语义搜索/vector向量搜索案例
  • GPU服务器厂家:为什么要选择 GPU 服务器?
  • 包装器与绑定器
  • 06、Spring AOP
  • Bug Fix 20241122:缺少lib文件错误
  • 低速接口项目之串口Uart开发(四)——UART串口实现FPGA内部AXILITE寄存器的读写控制
  • 历遍单片机下的IIC设备[ESP--0]
  • 浅谈新能源光储充一体化电站设计方案