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

softmax函数计算时减去一个最大值的原因

本文参考:

干货|softmax函数计算时候为什么要减去一个最大值?_机器学习AI的技术博客_51CTO博客

 1、softmax概述

softmax用于多分类过程,它将多个神经元的输出映射到(0,1)之间。

2、存在问题

当运算比较小的值的时候是不会有什么问题的,但是如果运算的值比较打的时候,比如很大或者很小的时候,朴素的方式直接计算会上溢或者下溢,从而导致严重的问题。

举个例子,对于[3, 1, -3],直接计算是可行的,我们可以得到(0.88, 0.12, 0)。

但是对于[1000, 1000, 1000]和[-1000, -999, -1000]是不行的,会得到-inf。

目前浮点数只有64位,在计算指数函数的环节,exp{1000}=inf会发生上溢;exp{-1000}=0会发生下溢。

3、解决办法

函数曲线如下:

 

 

对任意a都成立,这意味着我们可以自由地调节指数函数的指数部分,一个典型的做法是取 中的最大值:a=max{x1,x2…xn}

这可以保证指数最大不会超过0,于是你就不会上溢出。即便剩余的部分下溢出了,加了a之后,你也能得到一个合理的值。

4、正确性证明

证明softmax不受输入的常数偏移影响,即
softmax(x)=softmax(x+c)
也就是证明加了偏移c之后,对整个softmax层的作用不起影响。

 

相关文章:

  • MogDB逻辑解码与pg_recvlogical
  • OS--学习笔记:进程管理
  • CentOS8 安装Yapi
  • Git 详细教程之四: Git 对 GitHub 的配置和基本操作
  • 海外众筹:产品出海kickstarter海外众筹流程
  • JVM阶段(4)-回收策略
  • 万字长文保姆级教你制作自己的多功能QQ机器人
  • 365天深度学习 | 第7周:咖啡豆识别
  • 深入剖析JavaScript(二)——异步编程
  • 工业智能网关BL110应用之七: 支持 Modbus ,MQTT,opc 等协议,上传到阿里华为云等LOT
  • c和指针-struct结构
  • 计算机网络 二、网络协议
  • 容器编排工具鉴赏- docker-compose 、Kubernetes、OpenShift、Docker Swarm
  • 【论文笔记】—低光图像增强—Supervised—URetinex-Net—2022-CVPR
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • CentOS7简单部署NFS
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Docker下部署自己的LNMP工作环境
  • echarts花样作死的坑
  • Git同步原始仓库到Fork仓库中
  • golang 发送GET和POST示例
  • golang中接口赋值与方法集
  • Redis的resp协议
  • supervisor 永不挂掉的进程 安装以及使用
  • 搭建gitbook 和 访问权限认证
  • 大主子表关联的性能优化方法
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端临床手札——文件上传
  • 日剧·日综资源集合(建议收藏)
  • 项目管理碎碎念系列之一:干系人管理
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (八)c52学习之旅-中断实验
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)基于IDEA的JAVA基础12
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)人的集合论——移山之道
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .net打印*三角形
  • .NET业务框架的构建
  • .NET中统一的存储过程调用方法(收藏)
  • @Autowired自动装配
  • @DataRedisTest测试redis从未如此丝滑
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [bzoj4240] 有趣的家庭菜园
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [HackMyVM]靶场 Quick3
  • [hdu 1711] Number Sequence [kmp]
  • [hdu 3652] B-number