考虑softmax = e^{x_k} / \sum e^{x_i} .
如果令y=e^x的话,则是一个较为一般的形式:
softmax = y / \sum y_i.
更一般的,假设y>0的话,则其实是一个类似percentage的东西.
比如y是一个投资份额/资金比例,那么\sum y就是每个个体的资本之和.
也就是总资本.
所以本质上来说,这种情况下更类似于一种dimension contribution的衡量方式.
那么,如果 考虑下数据分布呢?
一个极端的情况就是y=y_c,也就是所有y具有同一个值.
也就是说每个dimension的contribution区分度不会太大.
宽松一点来说,如果 y的variance的不大的话.
那么softmax的值也不会有太大的偏差.
再考虑一种情况.
即对于y来说,存在两个value group,y_a和y_b.
且y_a << y_b,或者宽松一点,y_a < y_b.
如果整体\sum y比较大,或者dimension比较多.
那么即使是y_b/ \sum y 的值可能也不会比 y_a/ \sum y的值来地更显著.
但从数据分布的人工直觉上来说,y_a和y_b的 contribution应该是存在有区分度的.
所以,单从这个角度来说,softmax对于高维度的feature vector来说,可能并不是一个很好的选择.
或者从某个层面上来说,更适合于一组互斥的feature set或者说classification/category.
如果去掉y>0的约束呢?
如果允许y<=0的话,那么直觉上就不太能将之于contribution做关联/联想了.
考虑坐下变化.
softmax=y / \sum y_i
->
softmax = (y/n) / mean(y)
对于给定的数据来说,n和mean(y)可以认为是一个常量.
那么这样的话,softmax实际上就是一个对于feature y的scalar function.
反过来说,对于每个特定的 feature set的 单个feature来说.
这个 scalar是在某种程度上encdoe/ embeded了n和mean(n)这个样本相关的信息的.
所以,从这个角度考虑的话,softmax更像是一种 relative measure.
而且是针对每个独立的feautre set的一种某种程度上来说是标准的映射/转换过程.
但,这种映射在不同的feature set/ vector之间是不是有可比性呢?
因为维度n是固定相同的.
所以,实际上就两张情况.
mean(y)相同或相近的情况自然不用说了.
考虑mean(y)差异比较大的情况.
假设mean_a(y) << mean_b(y).
那么,对于给定的y其对应的softmax的值对应的relative position就会有比较大的偏差了.
从直觉上来说,虽然可能再这些值当中存在着某种程度的structure/level.
但由于数值上的区分度差异或者说classification的需要.
这些差异信息就可能被从计量的层面上被抹掉.
所以,从信息完整程度上来说,softmax也不太适合这种差异比较大的情况.
当然,这个可能可以通过具体地再套一层 normalize function.
或者再加一层network layer去 project到更高的维度再做softmax.
但考虑y>0的情况的话,可能也不是一个好的解决方法.
某种程度上来说,就像softmax名字所说的,着重点在max,注意点在soft.
也就是针对某个单一 dominated的 feature的产生作用.
所以从这个角度考虑的话,也不是说DNN和NN有多大的本质区别.
可能只是一些数据分布差异所带来的工程化处理/解决方案/方式/方法而已.
没有评论:
发表评论