ReLU/GeLU/Swish的一个恒等式
By 苏剑林 | 2025-08-16 | 27162位读者 |今天水一点轻松的内容,它基于笔者这两天意识到的一个恒等式。这个恒等式实际上很简单,但初看之下会有点意料之外的感觉,所以来记录一下。
基本结果 #
我们知道$\newcommand{relu}{\mathop{\text{relu}}}\relu(x) = \max(x, 0)$,容易证明如下恒等式
\begin{equation}x = \relu(x) - \relu(-x)\end{equation}
如果$x$是一个向量,那么上式就更直观了,$\relu(x)$是提取出$x$的正分量,$- \relu(-x)$是提取出$x$的负分量,两者相加就得到原本的向量。
一般结论 #
接下来的问题是GeLU、Swish等激活函数成立类似的恒等式吗?初看之下并不成立,然而事实上是成立的!我们甚至还有更一般的结论:
设$\phi(x)$是任意奇函数,$f(x)=\frac{1}{2}(\phi(x) + 1)x$,那么恒成立 \begin{equation}x = f(x) - f(-x)\end{equation}
证明该结论也是一件很轻松的事,这里就不展开了。对于Swish来说我们有$\phi(x) = \tanh(\frac{x}{2})$,对于GeLU来说则有$\phi(x)=\mathop{\text{erf}}(\frac{x}{\sqrt{2}})$,它们都是奇函数,所以成立同样的恒等式。
意义思考 #
上述恒等式写成矩阵形式是
\begin{equation}x = f(x) - f(-x) = f(x[1, -1])\begin{bmatrix}1 \\ -1\end{bmatrix}\end{equation}
这表明以ReLU、GeLU、Swish等为激活函数时,两层神经网络有退化为一层的能力,这意味着它们可以自适应地调节模型的实际深度,这与ResNet的工作原理异曲同工,这也许是这些激活函数为什么比传统的Tanh、Sigmoid等更好的原因之一。
转载到请包括本文地址:https://www.kexue.fm/archives/11233
更详细的转载事宜请参考:《科学空间FAQ》
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!
如果您需要引用本文,请参考:
苏剑林. (Aug. 16, 2025). 《ReLU/GeLU/Swish的一个恒等式 》[Blog post]. Retrieved from https://www.kexue.fm/archives/11233
@online{kexuefm-11233,
title={ReLU/GeLU/Swish的一个恒等式},
author={苏剑林},
year={2025},
month={Aug},
url={\url{https://www.kexue.fm/archives/11233}},
}










August 16th, 2025
苏神,收到您的启发,制作了一个激活函数:
$$ \text{ReLAF}(x) = x + \alpha \cdot \tanh(\beta \cdot x) $$
您觉得这个激活函数怎么样?
(初始化时把$\alpha$初始化成0)
(或者很小的数)
需要配合梯度裁剪使用
搞错了,是$$ \text{ReLAF}(x) = x \cdot \sigma(\beta x + b) $$
初始化beta是0,b是3.5
好像也没看出跟本文的关联呀。
August 16th, 2025
之前有一个类似的经典问题用两层的神经网络构造abs(x) 就是利用 y=abs(x) = relu(x) + relu(-x),这个任务其他激活函数不好解。
苏神是这样理解的吧
呃,是倒是,但好像也跟本文没啥直接联系的样子~
August 17th, 2025
如果有人和我一样没看懂,可以听GPT解释一下。两层退化为一层”的更一般形式
取任意矩阵 $U,V$,把第一层做成“$+U$ 和 $-U$”的并列,第二层做成“$+V$ 和 $-V$”的并列:
$$
\underbrace{\begin{bmatrix}V & -V\end{bmatrix}}_{\text{线性 2}}
\;\; f\!\left(
\underbrace{\begin{bmatrix}U\\-U\end{bmatrix}}_{\text{线性 1}}
x\right)
= V\,\big(f(Ux)-f(-Ux)\big)
= V(Ux)
= (VU)\,x .
$$
第二个等号由文中上述$f$的性质保证。中间那层非线性被完全“抵消”掉了,所以两层(线性→激活→线性)等价于一层线性 $VU$。这就是文中“有退化为一层的能力”的意思。
是这个意思。当然也可以部分地“抵消”,所以说这是一个自主控制深度的性质(直观感觉就是1.5层这样)。
还需要加什么技巧用于训练,然后训练后,根据这个技巧裁剪网络深度呢
这只是一种理解,我倾向于很难用于裁剪,除非引入更多的inductive bias。
提问,模型中实际做激活的是$ϕ(\cdot)$,但是按你的理解是用$f(\cdot)$来做激活了,为什么可以这样理解呢?
激活函数是$f(x)$,$\phi(x)$是构造$f(x)$的一部份。
August 21st, 2025
真巧妙
September 3rd, 2025
请教大佬两个问题:
1. 把GLU代入这个性质:特定情况下,GLU是不是刚好能抵消掉激活函数,并退化成一层线性变换?
2. 以前诞生的激活函数有一部分被弃用,也许只是因为凑巧不符合本文规律?
比如LReLU:
\[\text{LReLU}(x) = \max(0, x) + \alpha \min(0, x)\]
也许本来应该是这样的?
\[\text{LReLU}(x) = (1-\alpha)\max(0, x) + \alpha \min(0, x)\]
1、GLU想要退化为一层linear更简单了,只要gate那边退化为一个常数就行;
2、这个就没那么绝对了,只是说满足本文的性质可能会有一点点理论好处,但也不是绝对的优势条件。