2016-09-10

关于Softmax的一些想法

考虑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有多大的本质区别.
可能只是一些数据分布差异所带来的工程化处理/解决方案/方式/方法而已.




没有评论:

发表评论

爽文

去看了好东西. 坦白说,多少是带着点挑刺的味道去的. 毕竟打着爱情神话和女性题材的气质,多多少少是热度为先了. 看完之后倒是有些新的想法. 某种程度上来说,现在的年轻人或者说声音就像小叶. 只要说点贴心的话就能哄好. 也是那种可以不用很努力了. 留在自己的舒适区避难所小圈子抱团就...