【数学视野】Softmax 函数和 Gibbs 分布之间的数学桥梁

Softmax 函数和 Gibbs 分布之间的数学桥梁

文章目录

  • 一、说明
  • 二、Softmax 函数的定义和组件
  • 三、从逻辑到多类的泛化
    • 3.1 连接到 Gibbs 分布
    • 3.2 统计力学背景
    • 3.3 切换到 Softmax 功能
  • 四、优化和计算稳定性
    • 4.1 Softmax 的梯度
    • 4.2 链接到信息论
  • 五、总结

在这里插入图片描述

一、说明

   softmax 函数是各种神经网络中的基本元素,尤其是那些为分类任务而设计的神经网络。它有效地将实值分数 (logits) 的向量从神经网络的最终线性输出转换为概率分布。softmax 输出的每个组件都表示输入属于特定类的概率。

二、Softmax 函数的定义和组件

   通过在机器学习中的softmax函数和物理学中的吉布斯分布之间建立相似之处,我们可以更好地理解控制这两个领域的基本原理。这些见解不仅增强了我们对神经网络行为的理解,而且还证明了指数族分布在不同科学学科中的普遍性。

   softmax 函数(表示为 σσ)应用于包含来自网络的原始分数的向量 z,并为每个分量 zi 定义如下:

在这里插入图片描述

其中 i 的范围为 1 到 n,是类的总数。

详细的成分分析
   z i z_i zi:这些是每个类的逻辑数,或神经网络最后一层的原始输出分数。
   e z i e^{z_i} ezi:将指数函数应用于每个 logit,将每个分数转换为正数。
   j = 1.. n e z j j = 1..n \; \; e^{z_{j}} j=1..nezj:这个归一化因子,即所有指数分数的总和,确保 softmax 输出的总和为 1,形成有效的概率分布。

三、从逻辑到多类的泛化

   Softmax 是逻辑函数的扩展,用于二元分类。虽然逻辑函数输出两个类的概率,但 softmax 扩展了这个框架以容纳多个类。

3.1 连接到 Gibbs 分布

   在统计力学中,softmax 公式类似于吉布斯分布,其中 e^zi 对应于能态 zi 的玻尔兹曼因子,分母的作用类似于分配函数,使分布归一化。

   softmax 函数和 Gibbs 分布之间的联系是机器学习和统计力学之间的一个引人入胜的交叉点。这种联系提供了对神经网络如何对概率建模以及物理学概念如何阐明复杂机器学习算法行为的深刻见解。让我们更深入地研究数学框架来理解这种关系。

3.2 统计力学背景

   在统计力学中,吉布斯分布(也称为玻尔兹曼分布)描述了系统在热平衡的一组可能状态中处于某种状态 i 的概率 Pi。系统处于状态 i 的概率由下式给出:

在这里插入图片描述

这里:

   Ei 是状态 i 的能量。
   β是反温度因子(通常定义为 β=1/(k_B。T),其中 k_B 是玻尔兹曼常数,T 是温度)。
   Z 是分区函数,它是一个归一化因子,确保概率之和为 1。它被定义为:
在这里插入图片描述

3.3 切换到 Softmax 功能

   为了查看与吉布斯分布的平行关系,将 softmax 函数中的 logits zi 视为类似于统计力学中的负能量状态 −Ei,并将逆温度β解释为设置为 1 以简单起见。然后,softmax 方程转换为类似于 Gibbs 分布的形式:
在这里插入图片描述

   在此配方中:

   zi 扮演的角色类似于 Ei,这意味着更高的 logits(更少的负“能量”)会导致更高的概率,反映了物理学中低能量状态的可能性更大。
softmax 函数分母中的总和类似于分区函数 Z,将输出归一化为概率分布。
熵和自由能

   在统计力学中,吉布斯分布是通过最小化亥姆霍兹自由能 F=E−TS 得出的,其中 E 是预期能量,T 是温度,S 是熵。这种最小化自由能的原理可以类比地应用于机器学习,在机器学习中,人们可能会认为最小化损失函数可以减少预测模型的一种“信息自由能”形式。

四、优化和计算稳定性

   指数变换确保以稳定的方式放大对数之间的差异。这对于保持非零梯度和确保有效的基于梯度的学习至关重要。

4.1 Softmax 的梯度

   了解 softmax 的梯度对于反向传播至关重要:
在这里插入图片描述

   其中 δij 是克罗内克三角洲。这显示了一个类的概率对 logit 变化的依赖性,这对于更新神经网络的权重至关重要。

4.2 链接到信息论

   将softmax与交叉熵损失相结合与信息论中的概念有关。交叉熵测量预测概率与实际分布之间的信息距离,指导模型最小化这种差异。

   从 Log-Sum-Exp 派生 Softmax
   Softmax 可以从 log-sum-exp 函数导出,这是一个平滑的最大函数近似:
在这里插入图片描述

将 LSE(z)LSE(z) 相对于 zizi 进行微分,可得到 softmax 函数:
在这里插入图片描述

   这个推导说明了softmax是如何从最大化似然函数和操纵对数尺度中的概率来实现数值稳定性的。

五、总结

   softmax函数是神经网络分类架构的基石,为输出归一化和概率计算提供了强大的机制。它的数学基础不仅促进了实用的学习算法,而且丰富了其理论理解。

   我邀请大家分享他们的见解或提出有关softmax的详细数学或其在各个领域的应用的问题。您的观点丰富了讨论,并加深了我们对高级神经网络技术的集体理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661690.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瘦身秘籍:如何使用 PyInstaller 打造超小型 Python 可执行文件

你是否曾经尝试过将你的 Python 程序打包成一个可执行文件,却发现生成的文件大得惊人?别担心,本文将教你如何使用 PyInstaller 尽可能减小生成的 onefile 大小,让你的程序轻盈如风! 1. 使用虚拟环境 首先&#xff0c…

MyBatis(XML映射器操作)

文章目录 XML映射器操作(XxxMapper.xml)文件目录1.基本介绍1.优点2.常用顶级元素 2.环境配置1.在原来的父模块下创建一个子模块2.删除没用的两个文件夹3.创建基本目录4.父模块的pom.xml5.jdbc.properties6.mybatis-config.xml7.测试使用MonsterMapperTes…

【JS篇之】异常

前言:在代码编写过程中,最常遇到的就是程序异常。其实异常并非坏事,它可以让开发人员及时发现、定位到错误,提醒我们做正确的事情,甚至在某些时候,我们还会手动抛出异常。 1.异常的分类 在JS中&#xff0…

考研英语作文---写作要义

应用文结构 例题 信件 ------第一段写法 第一段 第二段 第三段 第一段 第三段 第二段 强调句方式开头方式 练习

【Vue 2.x】学习vue之一基础部分

文章目录 Vue 一基础部分第一章1、git两个分支主分支子分支 使用方法方式1:采用命令的方式操作分支方式2:在idea中使用git的分支 向git远程仓库提交时忽略文件使用git时的一些冲突注意事项 2、Vue问题1:什么是Vue?问题2&#xff1…

数据库(MySQL)—— DML语句

数据库(MySQL)—— DML语句 什么是DML语句添加数据给全部字段添加数据批量添加数据 修改数据删除数据 什么是DML语句 在MySQL中,DML(Data Manipulation Language,数据操纵语言)语句主要用于对数据库中的数…

金融案例:统一查询方案助力数据治理与分析应用更高效、更安全

随着企业数据规模的增长和业务多元化发展,海量数据实时、多维地灵活查询变成业务常见诉求。同时多套数据库系统成为常态,这既带来了数据管理的复杂性,又加大了数据使用的难度,面对日益复杂的数据环境和严格的数据安全要求&#xf…

开发一个语音聊天社交app小程序H5需要多少钱?

社交,即时通讯APP系统。如何开发一个社交App||开发一个即时通信应用是一项复杂而充满挑战的任务,需要考虑多个技术、开发时间和功能方面的因素。以下是一个概要,描述了从技术、开发时间和功能角度如何开发这样的应用: 1. 技术要点…

Linux查看某一个程序的安装路径

前提 这一方法的前提条件是:必须是运行着的程序。 方法 这里以查找运行的nginx的安装目录为例。 查看nginx运行进程,查看当前进程的PID,例子中的PID就是7992。 nginps -aux|grep nginx执行ls -l /proc/进程号/exe,然后会打印…

十一、大模型-Semantic Kernel与 LangChain 的对比

Semantic Kernel 与 LangChain 的对比 Semantic Kernel 和 LangChain 都是用于开发基于大型语言模型(LLM)的应用程序的框架,但它们各有特点和优势。 基本概念和目标 Semantic Kernel 是一个由微软开发的轻量级 SDK,旨在帮助开发…

C++Day 7 作业

1、lambda #include <iostream>using namespace std;int main() {int a 100;int b 90;int temp;auto fun [&]()mutable->int {temp a;ab;btemp;};fun();cout<<a<<endl;return 0; } 2、vector #include <iostream> #include <vector>…

C#应用程序实现多屏显示

前言 随着业务发展&#xff0c;应用程序在一些特定场景下&#xff0c;只在一个显示器上展示信息已经不能满足用户需求。我们如何把主屏运行程序中多个窗体移动到各个扩展屏幕位置显示呢&#xff1f;C# 是通过什么方式来实现的&#xff0c;下面介绍 C# 使用 Screen 类的方式来实…