用狄拉克函数来构造非光滑函数的光滑近似
文章目录狄拉克函数在机器学习中,我们经常会碰到不光滑的函数,但我们的优化方法通常是基于梯度的,这意味着光滑的模型可能更利于优化(梯度是连续的),所以就有了寻找非光滑函数的光滑近似的需求。事实上,本博客已经多次讨论过相关主题,比如《寻求一个光滑的最大值函数》、《函数光滑化杂谈:不可导函数的可导逼近》等,但以往的讨论在方法上并没有什么通用性。不过,笔者从最近的一篇论文《SAU: Smooth acti
在机器学习中,我们经常会碰到不光滑的函数,但我们的优化方法通常是基于梯度的,这意味着光滑的模型可能更利于优化(梯度是连续的),所以就有了寻找非光滑函数的光滑近似的需求。事实上,本博客已经多次讨论过相关主题,比如 《寻求一个光滑的最大值函数》、 《函数光滑化杂谈:不可导函数的可导逼近》等,但以往的讨论在方法上并没有什么通用性。
不过,笔者从最近的一篇论文《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)δ(x−y)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)φ(x−y)dy≈f(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πσe−x2/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)=π1a→0limx2+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+e−x),所以我们有 δ ( 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)=t→∞limdxdσ(tx)=t→∞lim(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(x−y))2et(x−y)tmax(y,0)dy∫0∞(1+et(x−y))2et(x−y)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−(x−y)2/2σ2max(y,0)dy∫0∞2πσe−(x−y)2/2σ2ydy21[xerf(2σx)+x+π2σe−2σ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)≈=x∫−∞∞2πσe−(x−y)2/2σ2θ(y)dyx∫0∞2πσe−(x−y)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,当且仅当存在n∈Z使得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]≈∫−∞∞φ(x−y)[y]dy=n=−∞∑∞n∫nn+1φ(x−y)dy
设 φ ( x ) \varphi(x) φ(x)的原函数为 Φ ( x ) \Phi(x) Φ(x),那么 φ ( x − y ) \varphi(x-y) φ(x−y)关于 y y y的原函数就是 − Φ ( x − y ) -\Phi(x-y) −Φ(x−y),于是有 [ ] [ 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[Φ(x−n)−Φ(x−n−1)]M,N→∞limn=−M∑N(n−1)Φ(x−n)−nΦ(x−n−1)+Φ(x−n)M,N→∞limNΦ(x−N−1)−(M+1)Φ(x+M)+n=−M∑NΦ(x−n)(14)
对于 Φ ( x ) \Phi(x) Φ(x)我们有 Φ ( − ∞ ) = 0 \Phi(-\infty)=0 Φ(−∞)=0和 Φ ( ∞ ) = 1 \Phi(\infty)=1 Φ(∞)=1,所以假设我们关心的范围满足 − M ≪ x ≪ N −M\ll x \ll N −M≪x≪N,那么 Φ ( x − N − 1 ) ≈ 0 \Phi(x-N-1)\approx 0 Φ(x−N−1)≈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]≈=−M−1+n=−M∑NΦ(x−n)n=−M∑0[Φ(x−n)−1]+n=1∑NΦ(x−n)(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函数的各种常见近似以及取整函数的一个光滑近似。
转载
本文转载自苏神的用狄拉克函数来构造非光滑函数的光滑近似
更多推荐
所有评论(0)