一个分布在多次Softmax后,会趋于相同

news/2024/11/20 21:30:13/

本文其实是我在知乎上无意中翻到的一条提问:softmax到底有哪些作用?,其中苏剑林大佬关于第四个问题的回复,给我产生了一些思考。为什么一个分布在多次Softmax之后,每个值会趋于相同?例如[1,100]在大约10次Softmax操作后会变成[0.5,0.5];[1,2,3,4]大约5次Softmax操作后会变成[0.25,0.25,0.25,0.25]

苏剑林大佬的原话是:“这其实是一个没什么实用价值的结果,因为对Softmax的结果再次进行Softmax没有什么物理意义”。不过我还是本着好奇的心态看完了他对于这个问题的证明,感兴趣的同学直接看原回答即可。实际上由于篇幅限制,苏剑林大佬的证明过程省略了不少步骤,因此这里我给出完整的证明流程

设第iii次迭代后的向量为(p1(i),p2(i),...,pn(i))(p_1^{(i)},p_2^{(i)},...,p_n^{(i)})(p1(i),p2(i),...,pn(i)),我们先证明n≥3n\ge 3n3的情形。不妨设其中最大值、最小值为pmax(i),pmin(i)p_{\text{max}}^{(i)},p_{\text{min}}^{(i)}pmax(i),pmin(i),则Softmax(p1(i),p2(i),...,pn(i))\text{Softmax}(p_1^{(i)},p_2^{(i)},...,p_n^{(i)})Softmax(p1(i),p2(i),...,pn(i))的最大值为

pmax(i+1)=epmax(i)∑j=1nepj(i)≤epmax(i)nepmin(i)=epmax(i)−pmin(i)np_{\text{max}}^{(i+1)}=\frac{e^{p_{\text{max}}^{(i)}}}{\sum_{j=1}^ne^{p_j^{(i)}}}\leq \frac{e^{p_{\text{max}}^{(i)}}}{ne^{p_{\text{min}}^{(i)}}}=\frac{e^{p_{\text{max}}^{(i)}-p_{\text{min}}^{(i)}}}{n} pmax(i+1)=j=1nepj(i)epmax(i)nepmin(i)epmax(i)=nepmax(i)pmin(i)

同理,最小值为

pmin(i+1)=epmin(i)∑j=1nepj(i)≥epmin(i)nepmax(i)=epmin(i)−pmax(i)np_{\text{min}}^{(i+1)}=\frac{e^{p_{\text{min}}^{(i)}}}{\sum_{j=1}^ne^{p_j^{(i)}}}\ge \frac{e^{p_{\text{min}}^{(i)}}}{ne^{p_{\text{max}}^{(i)}}}=\frac{e^{p_{\text{min}}^{(i)}-p_{\text{max}}^{(i)}}}{n} pmin(i+1)=j=1nepj(i)epmin(i)nepmax(i)epmin(i)=nepmin(i)pmax(i)

pmax(i+1)−pmin(i+1)≤epmax(i)−pmin(i)−epmin(i)−pmax(i)np_{\text{max}}^{(i+1)} - p_{\text{min}}^{(i+1)} \leq \frac{e^{p_{\text{max}}^{(i)}-p_{\text{min}}^{(i)}} - e^{p_{\text{min}}^{(i)}-p_{\text{max}}^{(i)}}}{n} pmax(i+1)pmin(i+1)nepmax(i)pmin(i)epmin(i)pmax(i)

ai=pmax(i)−pmin(i)a_{i}=p^{(i)}_{\text{max}} -p^{(i)}_{\text{min}}ai=pmax(i)pmin(i),则0≤ai+1≤eai−e−ain0\leq a_{i+1}\leq \frac{e^{a_i}-e^{-a_i}}{n}0ai+1neaieai,所以现在问题转化为证明lim⁡i→∞ai+1=0\lim\limits_{i\to \infty}a_{i+1}=0ilimai+1=0成立

ai+1a_{i+1}ai+1的定义,即pmax(i+1)−pmin(i+1)p_{\text{max}}^{(i+1)}-p_{\text{min}}^{(i+1)}pmax(i+1)pmin(i+1)(概率的差),所以0≤ai+10\leq a_{i+1}0ai+1很容易想到。接下来如果我们能够证明eai−e−ain\frac{e^{a_i}-e^{-a_i}}{n}neaieai收敛到0,那么通过夹逼定理就可以证得lim⁡i→∞ai+1=0\lim\limits_{i\to \infty}a_{i+1}=0ilimai+1=0

因为f(x)=ex−e−xnf(x) = \frac{e^x - e^{-x}}{n}f(x)=nexex是单调递增的,它只有一个不动点,只要初始值不大于0,那么迭代xi+1=f(xi)x_{i+1}=f(x_i)xi+1=f(xi)必然收敛到0。所以{ai}i=1∞\{a_i\}_{i=1}^\infty{ai}i=1也必然收敛到0

n=2n=2n=2时,上述放缩太宽了,也就是从1出发,迭代xi+1=f(xi)x_{i+1}=f(x_i)xi+1=f(xi)不收敛。我们可以直接考虑

pmin(i+1)≥epmin(i)−pmax(i)2=epmin(i)−(1−pmin(i))2=e2pmin(i)−12p_{\text{min}}^{(i+1)}\ge \frac{e^{p_{\text{min}}^{(i)}-p_{\text{max}}^{(i)}}}{2}=\frac{e^{p_{\text{min}}^{(i)}-(1-p_{\text{min}}^{(i)})}}{2}=\frac{e^{2p_{\text{min}}^{(i)}-1}}{2} pmin(i+1)2epmin(i)pmax(i)=2epmin(i)(1pmin(i))=2e2pmin(i)1

基于类似的过程,g(x)=e2x−12g(x)=\frac{e^{2x-1}}{2}g(x)=2e2x1单调递增并且只有一个不动点x=12x=\frac{1}{2}x=21,所以从0出发,pmin(i)p_{\text{min}}^{(i)}pmin(i)会收敛到12\frac{1}{2}21

Reference

  • softmax到底有哪些作用?

http://www.ppmy.cn/news/738.html

相关文章

LeetCode-50-Pow(x, n)

1、递归 我们最简单的思路就是使用递归,每次就让x乘上Pow(x, n-1)的值。但是这样做的缺点在于递归时间过长会导致超时,因此我们可以使用快速幂进行优化。 快速幂的思想在于我们在求x的N次幂时,不使用x∗xN−1x*x^{N-1}x∗xN−1,…

我们真的需要把训练集的损失降到零吗?

在训练模型的时候,我们需要将损失函数一直训练到0吗?显然不用。一般来说,我们是用训练集来训练模型,但希望的是验证机的损失越小越好,而正常来说训练集的损失降到一定值后,验证集的损失就会开始上升&#x…

Day2多种抓包工具介绍以及使用封包监听工具找到挑战数据包实现发送数据包进行挑战

工具相关证书安装指南 Charles https://blog.csdn.net/weixin_45459427/article/details/108393878 Fidder https://blog.csdn.net/weixin_45043349/article/details/120088449 BurpSuite https://blog.csdn.net/qq_36658099/article/details/81487491 Fiddler: 是一…

Markdown格式表情包大全最新整理分享

Markdown表情包一、前言❤️二、Emoji表情大全👮People(人物)❄️Nature(自然)🔔Objects(物体)🏠Places(地点)🔟Symbols(符…

前端面试题集锦(1)

1、 rem em vw vw 百分比区别 2、app怎么做适配的 3、bfc是什么,清除浮动的原理 4、简单的一个盒子移动到另一个盒子,你用什么方式实现动画效果 5、css 选择器有哪些,权重是什么样的 6、CSS选择符有哪些?哪些属性可以继承&am…

面试:Android中的HOOK方案

Hook方案很多 方案作用时机操作对象优点缺点要求APT编译时:java文件还未编译成class文件.java文件1.可以织入所有类;2.编译时代理,减少运行时消耗1.需要使用apt编译器编译;2.需要手动拼接代理代码(可以使用Javapoet弥补&#xff…

Python预测卡塔尔世界杯身价最高的英格兰要夺冠?!

文章目录🏳️‍🌈 1. 数据🏳️‍🌈 2. 绘图2.1 绘制表头2.2 绘制排名、球队以及国旗2.3 绘制身价柱状图2.4 绘制FIFA排名散点图2.5 设置背景2.6 设置标题🏳️‍🌈 3. 更多可视化项目源码数据:大…

vue 新增枚举类型栏位

dict-tag 标签新增枚举类型栏位 新增栏位数据字典 新增字典命名规范为coin_表字段名 新增字典枚举数据,key value Value标签格式为 值-key 如 1-成交 分别对应的新增为两张表: Sys_dict_type --字典类型 Sys_dict_data --字典数据 前端栏位 <el-form-item label…