本文其实是我在知乎上无意中翻到的一条提问: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没有什么物理意义”。不过我还是本着好奇的心态看完了他对于这个问题的证明,感兴趣的同学直接看原回答即可。实际上由于篇幅限制,苏剑林大佬的证明过程省略了不少步骤,因此这里我给出完整的证明流程
设第i次迭代后的向量为(p_1^{(i)},p_2^{(i)},...,p_n^{(i)}),我们先证明n\ge 3的情形。不妨设其中最大值、最小值为p_{\text{max}}^{(i)},p_{\text{min}}^{(i)},则\text{Softmax}(p_1^{(i)},p_2^{(i)},...,p_n^{(i)})的最大值为
同理,最小值为
则
设a_{i}=p^{(i)}_{\text{max}} -p^{(i)}_{\text{min}},则0\leq a_{i+1}\leq \frac{e^{a_i}-e^{-a_i}}{n},所以现在问题转化为证明\lim\limits_{i\to \infty}a_{i+1}=0成立
由a_{i+1}的定义,即p_{\text{max}}^{(i+1)}-p_{\text{min}}^{(i+1)}(概率的差),所以0\leq a_{i+1}很容易想到。接下来如果我们能够证明a_{i+1}= \frac{e^{a_i}-e^{-a_i}}{n}收敛到0,那么通过夹逼定理,就可以证得\lim\limits_{i\to \infty}a_{i+1}=0
因为f(x) = \frac{e^x - e^{-x}}{n}是单调递增的,它只有一个不动点,只要初始值不大于0,那么迭代x_{i+1}=f(x_i)必然收敛到0。所以\{a_i\}_{i=1}^\infty也必然收敛到0
当n=2时,上述放缩太宽了,也就是从1出发,迭代x_{i+1}=f(x_i)不收敛。我们可以直接考虑
基于类似的过程,g(x)=\frac{e^{2x-1}}{2}单调递增并且只有一个不动点x=\frac{1}{2},所以从0出发,p_{\text{min}}^{(i)}会收敛到\frac{1}{2}