用狄拉克函数来构造非光滑函数的光滑近似


在机器学习中,我们经常会碰到不光滑的函数,但我们的优化方法通常是基于梯度的,这意味着光滑的模型可能更利于优化(梯度是连续的),所以就有了寻找非光滑函数的光滑近似的需求。事实上,本博客已经多次讨论过相关主题,比如 《寻求一个光滑的最大值函数》《函数光滑化杂谈:不可导函数的可导逼近》等,但以往的讨论在方法上并没有什么通用性。

不过,笔者从最近的一篇论文《SAU: Smooth activation function using convolution with approximate identities》学习到了一种比较通用的思路:用狄拉克函数来构造光滑近似。通用到什么程度呢?理论上有可数个间断点的函数都可以用它来构造光滑近似!个人感觉还是非常有意思的。
注:部分积分的计算可以参考常见积分求解

狄拉克函数

在很早之前的文章《诡异的Dirac函数》中,我们就介绍过狄拉克函数了。在现代数学中,狄拉克函数被定义为一个“泛函”而不是“函数”,但对于大多数读者来说,将它当作函数来理解是比较容易接受的。

简单来说,狄拉克函数 δ ( x ) \delta(x) δ(x)满足:

1、 ∀ x ≠ 0 , δ ( x ) = 0 \forall x\ne0,\delta(x)=0 x=0,δ(x)=0
2、 δ ( 0 ) = ∞ \delta(0)=\infty δ(0)=
3、 ∫ − ∞ ∞ δ ( x ) = 1 \int_{-\infty}^{\infty}\delta(x)=1 δ(x)=1

直观来看, δ ( x ) \delta(x) δ(x)可以看成一个连续型的概率密度函数,采样空间为全体实数 R \mathbb{R} R,但是只有 x = 0 x=0 x=0处概率非零,也即均值为 0 0 0、方差也为 0 0 0,所以从中采样必然只能采样到 0 0 0,因此成立如下恒等式: ∫ − ∞ ∞ f ( x ) δ ( x ) d x = f ( 0 ) (1) \int_{-\infty}^\infty f(x)\delta(x)dx=f(0)\tag{1} f(x)δ(x)dx=f(0)(1)或者 ∫ − ∞ ∞ f ( y ) δ ( x − y ) d y = f ( x ) (2) \int_{-\infty}^\infty f(y)\delta(x-y)dy=f(x)\tag{2} f(y)δ(xy)dy=f(x)(2)
这可谓是狄拉克函数最重要的性质,也是我们后面主要用到的恒等式。

光滑近似

如果我们能找到 δ ( x ) \delta(x) δ(x)的一个光滑近似 φ ( x ) ≈ δ ( x ) \varphi(x)\approx \delta(x) φ(x)δ(x),那么根据(2),我们就有 g ( x ) = ∫ − ∞ ∞ f ( y ) φ ( x − y ) d y ≈ f ( x ) (3) g(x)=\int_{-\infty}^{\infty}f(y)\varphi(x-y)dy\approx f(x)\tag{3} g(x)=f(y)φ(xy)dyf(x)(3)
由于 φ ( x ) \varphi(x) φ(x)是光滑的,所以 g ( x ) g(x) g(x)也是光滑的,这也就是说, g ( x ) g(x) g(x)就是 f ( x ) f(x) f(x)的一个光滑近似!这便是借助狄拉克函数的光滑近似来构建 f ( x ) f(x) f(x)的光滑近似的核心思路了,在这个过程中,对 f ( x ) f(x) f(x)的形式和连续性都没有太多限制,比如允许 f ( x ) f(x) f(x)有可数个间断点(如取整函数 [ x ] [x] [x])。

那么狄拉克函数的光滑近似有哪些呢?现成的也有不少,比如: δ ( x ) = lim ⁡ σ → 0 e − x 2 / 2 σ 2 2 π σ (4) \delta(x) = \lim_{\sigma\to 0} \frac{e^{-x^2/2\sigma^2}}{\sqrt{2\pi}\sigma}\tag{4} δ(x)=σ0lim2π σex2/2σ2(4) δ ( x ) = 1 π lim ⁡ a → 0 a x 2 + a 2 (5) \delta(x)=\frac{1}{\pi} \lim_{a \to 0}\frac{a}{x^2+a^2}\tag{5} δ(x)=π1a0limx2+a2a(5)
简单来说,就是找一个像正态分布那样钟形曲线的非负函数,想办法让钟形的宽度逐渐趋于0,但保持积分为1。还有另一个思路是留意到 ∫ − ∞ x δ ( t ) d t = θ ( x ) = { 1 ,    ( x > 0 ) 0 ,    ( x < 0 ) (6) \int_{-\infty}^x \delta(t)dt = \theta(x) = \left\{\begin{aligned}1,\,\, (x > 0) \\ 0,\,\, (x < 0)\end{aligned}\right.\tag{6} xδ(t)dt=θ(x)={1,(x>0)0,(x<0)(6)
也就是说,狄拉克函数的积分是“单位阶跃函数” θ ( x ) \theta(x) θ(x),如果我们能找到 θ ( x ) \theta(x) θ(x)的光滑近似,那么将它求导就得到狄拉克函数的光滑近似。而 θ ( x ) \theta(x) θ(x)的光滑近似,就是所谓的“S形”曲线了,比如sigmoid函数 σ ( x ) = 1 / ( 1 + e − x ) \sigma(x)=1/(1+e^{-x}) σ(x)=1/(1+ex),所以我们有 δ ( x ) = lim ⁡ t → ∞ d d x σ ( t x ) = lim ⁡ t → ∞ e t x t ( 1 + e t x ) 2 (7) \delta(x) = \lim_{t\to \infty} \frac{d}{dx}\sigma(tx) = \lim_{t\to \infty} \frac{e^{tx}t}{(1+e^{tx})^2}\tag{7} δ(x)=tlimdxdσ(tx)=tlim(1+etx)2etxt(7)
常用的就是式(4)和式(7)两个近似。

Relu激活

现在,我们就以上述思路为工具,推导ReLU激活函数 m a x ( x , 0 ) max(x,0) max(x,0)的各种光滑近似。

比如利用式(7),得到 max ⁡ ( x , 0 ) ≈   ∫ − ∞ ∞ e t ( x − y ) t ( 1 + e t ( x − y ) ) 2 max ⁡ ( y , 0 ) d y =   ∫ 0 ∞ e t ( x − y ) t y ( 1 + e t ( x − y ) ) 2 d y = log ⁡ ( 1 + e t x ) t (8) \begin{aligned} \max(x,0)\approx&\, \int_{-\infty}^{\infty} \frac{e^{t(x-y)}t}{(1+e^{t(x-y)})^2} \max(y,0) dy\\ =&\,\int_0^{\infty} \frac{e^{t(x-y)}ty}{(1+e^{t(x-y)})^2}dy=\frac{\log(1+e^{tx})}{t} \end{aligned}\tag{8} max(x,0)=(1+et(xy))2et(xy)tmax(y,0)dy0(1+et(xy))2et(xy)tydy=tlog(1+etx)(8)
当t=1时,这便是SoftPlus激活函数。
如果换用式(4),那么结果是 max ⁡ ( x , 0 ) ≈   ∫ − ∞ ∞ e − ( x − y ) 2 / 2 σ 2 2 π σ max ⁡ ( y , 0 ) d y =   ∫ 0 ∞ e − ( x − y ) 2 / 2 σ 2 y 2 π σ d y =   1 2 [ x   erf ( x 2 σ ) + x + 2 π σ e − x 2 2 σ 2 ] (9) \begin{aligned} \max(x,0)\approx&\, \int_{-\infty}^{\infty} \frac{e^{-(x-y)^2/2\sigma^2}}{\sqrt{2\pi}\sigma} \max(y,0) dy\\ =&\,\int_0^{\infty} \frac{e^{-(x-y)^2/2\sigma^2} y}{\sqrt{2\pi}\sigma}dy\\ =&\,\frac{1}{2} \left[x \,\text{erf}\left(\frac{x}{\sqrt{2} \sigma}\right)+x+\sqrt{\frac{2}{\pi }} \sigma e^{-\frac{x^2}{2 \sigma^2}}\right] \end{aligned}\tag{9} max(x,0)==2π σe(xy)2/2σ2max(y,0)dy02π σe(xy)2/2σ2ydy21[xerf(2 σx)+x+π2 σe2σ2x2](9)
这个ReLU的光滑近似貌似还没被研究过。

当然,如果仅仅是ReLU函数的光滑近似,那么还有更简单的思路,比如留意到 m a x ( x , 0 ) = x θ ( x ) max(x,0)=x\theta(x) max(x,0)=xθ(x),这里的θ(x)就是前面提到的单位阶跃函数,所以问题可以转变为求θ(x)的光滑近似,我们已经知道sigmoid便是其中之一,所以很快得到 max ⁡ ( x , 0 ) ≈ x σ ( t x ) \max(x,0)\approx x\sigma(tx) max(x,0)xσ(tx)
t = 1 t=1 t=1时,这便是Swish激活函数。而如果用(4)进行计算 θ ( x ) \theta(x) θ(x)的光滑近似,那么就得到 max ⁡ ( x , 0 ) ≈   x ∫ − ∞ ∞ e − ( x − y ) 2 / 2 σ 2 2 π σ θ ( y ) d y =   x ∫ 0 ∞ e − ( x − y ) 2 / 2 σ 2 2 π σ d y = 1 2 [ x + x   erf ( x 2 σ ) ] (11) \begin{aligned} \max(x,0)\approx&\, x\int_{-\infty}^{\infty} \frac{e^{-(x-y)^2/2\sigma^2}}{\sqrt{2\pi}\sigma} \theta(y) dy\\ =&\,x\int_0^{\infty} \frac{e^{-(x-y)^2/2\sigma^2}}{\sqrt{2\pi}\sigma}dy =\frac{1}{2}\left[x + x\,\text{erf}\left(\frac{x}{\sqrt{2}\sigma}\right)\right] \end{aligned}\tag{11} max(x,0)=x2π σe(xy)2/2σ2θ(y)dyx02π σe(xy)2/2σ2dy=21[x+xerf(2 σx)](11)
σ = 1 \sigma=1 σ=1时,就是GeLU激活函数。
在这里插入图片描述

取整函数

可能读者觉得还不够意思,毕竟上面推导出来的都是现成的东西,而且不借助狄拉克函数也能推导出来。现在我们就来补充一个不怎么平凡的例子:取整函数的光滑近似。

取整函数分上取整和下取整两种,它们定义上有所不同,但是没有本质区别,这里以下取整为例子,我们记为 [ x ] = n ,    当且仅当存在 n ∈ Z 使得 x ∈ [ n , n + 1 ) (12) [x] = n, \,\,\text{当且仅当存在}n\in\mathbb{Z}\text{使得}x\in[n, n + 1)\tag{12} [x]=n,当且仅当存在nZ使得x[n,n+1)(12)
假设 φ ( x ) \varphi(x) φ(x)为狄拉克函数的某个光滑近似,那么 [ x ] ≈ ∫ − ∞ ∞ φ ( x − y ) [ y ] d y = ∑ n = − ∞ ∞ n ∫ n n + 1 φ ( x − y ) d y [x]\approx \int_{-\infty}^{\infty} \varphi(x-y)[y]dy = \sum_{n=-\infty}^{\infty}n\int_n^{n+1} \varphi(x-y)dy [x]φ(xy)[y]dy=n=nnn+1φ(xy)dy
φ ( x ) \varphi(x) φ(x)的原函数为 Φ ( x ) \Phi(x) Φ(x),那么 φ ( x − y ) \varphi(x-y) φ(xy)关于 y y y的原函数就是 − Φ ( x − y ) -\Phi(x-y) Φ(xy),于是有 [ ] [ x ] ≈   ∑ n = − ∞ ∞ n [ Φ ( x − n ) − Φ ( x − n − 1 ) ] =   lim ⁡ M , N → ∞ ∑ n = − M N ( n − 1 ) Φ ( x − n ) − n Φ ( x − n − 1 ) + Φ ( x − n ) =   lim ⁡ M , N → ∞ N Φ ( x − N − 1 ) − ( M + 1 ) Φ ( x + M ) + ∑ n = − M N Φ ( x − n ) (14) \begin{aligned}[] [x]\approx&\,\sum_{n=-\infty}^{\infty}n\big[\Phi(x-n) - \Phi(x-n-1)\big]\\ =&\,\lim_{M,N\to\infty}\sum_{n=-M}^{N}(n-1)\Phi(x-n) - n\Phi(x-n-1) + \Phi(x-n)\\ =&\,\lim_{M,N\to\infty} N\Phi(x-N-1) - (M+1)\Phi(x+M) + \sum_{n=-M}^{N} \Phi(x-n) \end{aligned}\tag{14} [][x]==n=n[Φ(xn)Φ(xn1)]M,Nlimn=MN(n1)Φ(xn)nΦ(xn1)+Φ(xn)M,NlimNΦ(xN1)(M+1)Φ(x+M)+n=MNΦ(xn)(14)
对于 Φ ( x ) \Phi(x) Φ(x)我们有 Φ ( − ∞ ) = 0 \Phi(-\infty)=0 Φ()=0 Φ ( ∞ ) = 1 \Phi(\infty)=1 Φ()=1,所以假设我们关心的范围满足 − M ≪ x ≪ N −M\ll x \ll N MxN,那么 Φ ( x − N − 1 ) ≈ 0 \Phi(x-N-1)\approx 0 Φ(xN1)0 Φ ( x + N ) ≈ 1 \Phi(x+N)\approx 1 Φ(x+N)1,所以此时: [ ] [ x ] ≈   − M − 1 + ∑ n = − M N Φ ( x − n ) =   ∑ n = − M 0 [ Φ ( x − n ) − 1 ] + ∑ n = 1 N Φ ( x − n ) (15) \begin{aligned}[] [x]\approx&\, -M-1 + \sum_{n=-M}^{N} \Phi(x-n)\\ =&\,\sum_{n=-M}^0 \big[\Phi(x-n)-1\big] + \sum_{n=1}^N \Phi(x-n) \end{aligned}\tag{15} [][x]=M1+n=MNΦ(xn)n=M0[Φ(xn)1]+n=1NΦ(xn)(15)
Φ ( x ) = σ ( t x ) \Phi(x)=\sigma(tx) Φ(x)=σ(tx)作为例子,取 t = 10 , M = 5 , N = 10 t=10,M=5,N=10 t=10,M=5,N=10,结果如下:
在这里插入图片描述
可以看到,确实与 [ x ] [x] [x]蛮近似的,增大 t t t能进一步提高近似程度。

文章小结

本文介绍了一种利用狄拉克函数来构造光滑近似的方法,其特点是比较通用,对原函数没有太严格的要求。作为例子,我们利用它导出了ReLU函数的各种常见近似以及取整函数的一个光滑近似。

转载

本文转载自苏神的用狄拉克函数来构造非光滑函数的光滑近似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值