q-Neurons: Neuron Activations based on Stochastic Jackson's Derivative Operators
Frank Nielsen, Ke Sun
cs.NE, cs.LG, stat.ML
2018-06-01
给任意激活函数套一层随机Jackson q导数,前向多调用一次激活。弯曲函数在MNIST CNN上到99.65%,CIFAR-10上q-ELU到82.9%;对ReLU几乎无效,λ固定0.02即可用。
标准神经网络的激活函数是确定性的。ReLU、tanh、ELU、softplus,同样的输入给出同样的输出。训练时的随机性主要来自小批量采样、dropout,或者往梯度里加噪声。Sony Computer Science Laboratories 的 Frank Nielsen 和澳大利亚 Data61 的 Ke Sun 把 1909 年 Jackson 提出的 q 导数放进激活层,做成一种在前向传播里就带噪声、梯度里又带着二阶信息的激活。
普通导数要取极限。Jackson 的 q 导数不取极限,直接做有限差分:函数在 x 和 qx 两点的差,再除以 (1−q)x。q 靠近 1 时,它退回普通导数。机器学习里几乎没人碰过这个工具,此前只有全局优化里用 q 梯度的初步实验。
任意激活 f,对应的 q 版本写成
gq(x) = [f(x) − f(qx)] / (1−q)
它等于 Jackson q 导数再乘回 x。q 是随机变量,期望设成 1。q 的方差趋于 0 时,gq(x) 回到的是 f'(x)·x,不是 f(x)。gq 自身对 x 的导数则趋于 f'(x) + f''(x)·x。
这是整篇真正改的东西:激活的形状本身。小噪声极限下,前向输出接近「导数乘输入」,反向梯度里多了一截二阶项。可以把它想成,每个神经元在 f(x) 和 f(qx) 之间抽一条弦,弦的斜率替代切线。
实验里 q 这样采样:先抽标准正态 ε,再令 q = 1 ± (λ|ε| + φ),符号由 ε 的正负决定。φ 固定成 10^{-3},避免除零。唯一要调的是尺度 λ。可以全程钉死在 0.02 或 0.1,也可以按 λ = λ0 / (1 + γ(T−1)) 随 epoch 退火。他们训 100 个 epoch、γ=0.5,末段 λ 大约落到 0.02 λ0。
实现是三行 Python:抽一个与 x 同形状的高斯,激活函数算两遍,做一次差分。没有新增可训练参数。相对原激活,多一次前向和一次采样。q 激活和 dropout 都改前向通路,实验里两种都做了有无对照。
分段线性的 ReLU 二阶导几乎处处为 0,gq 和原函数几乎重合,预期帮不上忙。弯曲的 ELU、tanh、softplus 才是适用对象。
数据是 MNIST 和 CIFAR-10,网络是浅 CNN 和两层 MLP,优化器是无动量 SGD,100 个 epoch。MNIST 的 batch 64、学习率 0.05;CIFAR 的 batch 32、学习率 0.01。每条曲线是 10 次独立运行的平均。对照是 tanh、ReLU、ELU、softplus 的确定性版本。
| 设置 | 原激活测试准确率 | 最好的 q 版本 |
| MNIST CNN,无 dropout,tanh | 99.57% | qtanh 退火 λ0=5,99.65% |
| MNIST CNN,有 dropout,ELU | 99.62% | qelu 固定 λ=0.1 或退火 λ0=5,99.65% |
| MNIST MLP,无 dropout,ELU | 99.04% | qelu 退火 λ0=5 或 9,99.17% |
| CIFAR CNN,无 dropout,tanh | 78.76% | qtanh 退火 λ0=5,80.63% |
| CIFAR CNN,有 dropout,ELU | 81.91% | qelu 退火 λ0=1,82.94% |
| CIFAR CNN,有 dropout,softplus | 70.64% | qsoftplus 固定 λ=0.1,80.14% |
MNIST 上 CNN 最好错误率 0.35%,由 q-ELU 和 q-tanh 打到。CIFAR-10 最好 82.9%,来自带 dropout 的 q-ELU。
ReLU 几乎不动。CIFAR 无 dropout 时原版 80.43%,q-ReLU 最好也只到 80.44%。论文写明:只在弯曲激活上用。
λ 不敏感。固定 0.02 或 0.1,多数已经好于原版,退火还能再挤一点。λ 太大容易欠拟合。有无 dropout 都能吃到增益。
CIFAR 上 softplus 的跳变最大:无 dropout 从 72.02% 到 78.40%,有 dropout 从 70.64% 到 80.14%。原版 softplus 在这个浅 CNN 上本身就弱,q 版本是把一个明显偏弱的激活拉回到能打的水平,不是在强基线上再刷纪录。
工程上这是即插即用的激活替换:改三行,调一个 λ。2018 年的结论写得很满,「几乎总该用 q 激活替换确定性版本」。今天看,它更接近一种把二阶信息和前向噪声捆在一起的正则,和 dropout、梯度噪声同一类,只是作用点在激活形状上。
还在用 ELU、tanh、softplus 的小模型、从零训练的设定,可以拿 λ=0.02 试一下,成本是多算一遍激活。已经换成 GELU、Swish、SiLU 的现代网络,这篇给不出证据。ReLU 家族可以直接跳过。
这是渐进改进。作者自己也说目的不是刷 SOTA,是看 q 神经元的效应和超参敏感度。CIFAR 82.9% 在 2018 年也只是一个浅 CNN 的合理数字,不是纪录。
实验停在 MNIST 和 CIFAR-10 的浅 CNN、两层 MLP。优化器是无动量 SGD,没有 ImageNet,没有 ResNet。MNIST 上的增益只有 0.05 到 0.1 个百分点,曲线是 10 次平均,方差没报。
q 导数没有通用链式法则,所以他们并没有用 q 导数替换反向传播,只是把 gq 当成普通可微函数交给自动微分。名字里的 q 来自 q-calculus,和量子计算无关,文中的「quantum version」只是历史叫法。
计算开销是激活调用翻倍,深网络里不一定免费。λ 过大欠拟合只在学习曲线里看得到,没有系统的失败案例。附录代码里的 q 是相对 1 的偏移量,和正文公式 (6) 的 Jackson q 差一个参数化,照抄要对齐。
2018 年之后主流激活已经换成 GELU 和 Swish,「几乎总该替换」没有在那些函数上验证过。