用 AI 检查 GELU 的负半轴:输入更负,输出为何反而靠近零
如果AI把GELU解释成“平滑一点的ReLU”,接着就说负数全部变成零,这个解释已经过头了。用几个负输入和一条独立计算式,既能检查输出,也能看出它不是处处单调上升的函数。
AI模型生成的概念插图:平滑曲线在基线下形成浅谷,再向右上方延伸;无精确坐标,不是框架绘图或实测曲线。
先算概率权重,再乘回输入
精确定义是GELU(x)=x×Φ(x),其中Φ是标准正态分布的累积分布函数。Φ(x)介于0与1之间,但最终输出还乘了x;不能把Φ的范围直接当成GELU输出的范围。这里“精确”指使用这一数学定义,数值计算仍有浮点舍入。
对x=-1,Φ(-1)约0.158655254,所以输出约-0.158655254。对x=-2,Φ(-2)约0.022750132,乘-2后约-0.045500264。-2比-1更小,但其输出更接近零;把这两点画在纸上,便足以否定“输入越小,GELU输出必然越小”的说法。
零输入输出为0。正输入1和2分别约得到0.841344746与1.954499736。它们也不是直接返回1和2,只是在较大的正数区域逐渐接近恒等映射。若AI对所有正数都原样通过、负数都归零,它实际上算的是ReLU。
输出权重小于一,不代表斜率也小于一
对乘积求导,局部斜率是Φ(x)+x×φ(x),φ为标准正态密度。在x=-1处约为-0.083315471,确实为负;在x=1处约1.083315471,反而大于1。虽然前向是把x乘一个0到1之间的权重,权重本身也随x改变,求导不能只留下Φ(x)。
可以让AI用中心差分补做核验:固定x,分别算GELU(x+0.00001)与GELU(x-0.00001),相减后除以0.00002。比较解析斜率时保留容差,不用先四舍五入后的输出继续相减。这里是在检查局部算式,并非测量某个神经网络的梯度表现。
近似选项要写在结果旁边
PyTorch还提供tanh近似,其式子为0.5x乘以“1+tanh[√(2/π)×(x+0.044715x³)]”。在x=-1时约为-0.158808009,与精确定义相差约0.000152755。两个结果很接近,但逐位完全相同并不是合理验收要求。
读者可让AI为[-2,-1,0,1,2]建立一张计算卡,分别交出Φ、精确定义输出、tanh近似输出和二者差值,再挑-1与1做差分斜率。这样能识别误用标准正态密度代替累积分布、漏乘x、把近似当精确等不同错误。
最后保留两个边界:数值接近零不等于数学上恒为零;几个点的近似误差也不代表整个实数轴上的最大误差。选择哪种激活或近似是否影响实际任务,仍需在具体模型与数据上检验,本例只提供函数层面的可复算依据。
资料核对日期:2026年10月2日。算例为原创教学设定,已用独立Python计算复核,不代表真实模型训练或性能测试。


