LogSumExp

来自testwiki
跳转到导航 跳转到搜索

Template:NoteTA LogSumExp(LSE,也称RealSoftMax[1]或多变量softplus函数是一个平滑最大值——一个对极值函数的光滑近似,主要用在机器学习算法中。[2] 其定义为参数的指数的和的对数

LSE(x1,,xn)=log(exp(x1)++exp(xn)).

性质

LogSumExp函数的定义域nTemplate:Link-en),共域是实数线)。 它是对极值函数maxixi的近似,同时有如下的界限:

max{x1,,xn}LSE(x1,,xn)max{x1,,xn}+log(n).

第一个不等式n=1以外的情况是严格成立的,第二个不等式仅在所有元素相等时取等号。 (证明:令m=maxixi,则exp(m)i=1nexp(xi)nexp(m)。将不等式取对数即可。)

另外,我们可以将不等式缩放到更紧的界限。考虑函数1tLSE(tx)。然后,

max{x1,,xn}<1tLSE(tx)max{x1,,xn}+log(n)t

(证明:将上式xit>0txi替换,得到

max{tx1,,txn}<LSE(tx1,,txn)max{tx1,,txn}+log(n)

由于t>0

tmax{x1,,xn}<LSE(tx1,,txn)tmax{x1,,xn}+log(n)

最后,同除t得到结果。)

此外,如果我们乘上一个负数,可以得到一个与min有关的不等式:

min{x1,,xn}log(n)t1tLSE(tx)<min{x1,,xn}.

LogSumExp函数是凸函数,因此在定义域上严格递增[3] (但并非处处都是严格凸的[4]。)

𝐱=(x1,,xn)偏导数为:

xiLSE(𝐱)=expxijexpxj,

表明LogSumExp的梯度softmax函数

LogSumExp的凸共轭Template:Link-en

对数域中的log-sum-exp计算技巧

当通常的算术计算在对数尺度上进行时,经常会遇到LSE函数,例如对数概率[5]

类似于线性尺度中的乘法运算变成对数尺度中的简单加法,线性尺度中的加法运算变成对数尺度中的LSE:

LSE(log(x1),...,log(xn))=log(x1++xn)

使用对数域计算的一个常见目的是在使用有限精度浮点数直接表示(在线性域中)非常小或非常大的数字时提高精度并避免溢出问题.[6]

不幸的是,在一些情况下直接使用 LSE 依然会导致上溢/下溢问题,必须改用以下等效公式(尤其是当上述“最大”近似值的准确性不够时)。 因此,IT++等很多数学库都提供了LSE的默认例程,并在内部使用了这个公式。

LSE(x1,,xn)=x*+log(exp(x1x*)++exp(xnx*))

其中x*=max{x1,,xn}

一个严格凸的log-sum-exp型函数

LSE是凸的,但不是严格凸的。我们可以通过增加一项为零的额外参数来定义一个严格凸的log-sum-exp型函数[7]

LSE0+(x1,...,xn)=LSE(0,x1,...,xn)

This function is a proper Bregman generator (strictly convex and differentiable). It is encountered in machine learning, for example, as the cumulant of the multinomial/binomial family.

Template:Link-en中,这是Template:Link-en的和。

参见

参考资料

Template:Reflist Template:Refbegin


Template:Refend