各种函数的hard与soft形式

max 与 logsumexp

一个常见的误解是:softmaxmax 的 soft 版本,但其实稍微想一下就知道这是不对的——max 函数的输出是一个实数,而 softmax 的输出是一个向量,一个向量怎么可能去近似一个实数呢?

事实上,max 函数的 soft 版本是 logsumexp 函数logsumexp(x;τ)=τlogi=1nexp(xi/τ) 其中温度系数 τ 越小,logsumexp 越接近 max.

证明:由于 τlogi=1nexp(xi/τ)τlogi=1nexp(xmax/τ)=τlog(nexp(xmax/τ))=τlogn+xmaxxmax(τ0)τlogi=1nexp(xi/τ)τlog[exp(xmax/τ)]=xmax 所以根据夹逼定理, limτ0logsumexp(x;τ)=limτ0τlogi=1nexp(xi/τ)=xmax

类似的,添加一个负号,logsumexp 成为 min 的平滑近似: logsumexp(x;τ)=τlogi=1nexp(xi/τ)

说句题外话,在许多科学计算包中,logsumexp 已经被封装为了一个函数,为了避免数值计算问题应尽可能调用它而不是自己从头写一遍。

onehot 与 softmax

考虑到 softmax 是一个概率向量,即所有维度相加为一,因此它的 hard 版本自然是 [0,,1,,0] 的形式,也即 onehot 向量。因此,softmaxonehot(argmax) 的平滑近似softmax(x;τ)i=exp(xi/τ)j=1nexp(xj/τ) 其中温度系数 τ 越小,softmax 越接近 onehot.


另外,softmaxlogsumexp 有如下关系: logsoftmax(x;τ)i=xi/τlogj=1nexp(xj/τ)=xi/τlogsumexp(x;τ)

argmax

鉴于 是一个臭名昭著的不可导操作,我们非常希望找到它的可导 soft 形式。由于 可以写作: 利用上一小节的结论,将 替换为 得到: 即用 向量对下标做加权平均。

relu 与 softplus

由于 可以用 写出来,因此利用 的平滑近似 ,我们可以推导出 的平滑近似,称为

References

  1. 苏剑林. (May. 02, 2015). 《寻求一个光滑的最大值函数 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/3290 ↩︎
  2. 如何理解与看待在cvpr2020中提出的circle loss? - 王峰的回答 - 知乎 https://www.zhihu.com/question/382802283/answer/1114719159 ↩︎
  3. 苏剑林. (May. 20, 2019). 《函数光滑化杂谈:不可导函数的可导逼近 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/6620 ↩︎

各种函数的hard与soft形式
https://xyfjason.github.io/blog-main/2022/07/25/各种函数的hard与soft形式/
作者
xyfJASON
发布于
2022年7月25日
许可协议