softmax 函数在机器学习中无处不在:它假设似然函数在远离分类边界时具有修正的指数尾部。
但是新数据可能不适合训练数据中使用的z值范围。 如果出现新的数据点,softmax会根据指数拟合确定其误分类的概率; 不能保证错误分类的机会遵循其训练范围之外的指数(不仅如此 – 如果模型不够好,它只能将指数拟合到根本不是指数的函数中)。 为避免这种情况,将 softmax 函数包装在范围受限的线性函数中(将其概率限制为 1/n 和 1-1/n)可能会有所帮助,其中 n 是训练数据中的样本数:
但我们将通常的 softmax 函数视为最佳拟合曲线而不是似然函数,并根据(离散)高斯统计计算其误差(首先针对两个类):
简化此后 表达式,我们得到:
我们绘制原始函数以及 n=50,500,10000,1000000 的新高斯 softmax 函数:
我们看到函数仅在 n<500 左右不同(它是 log(n- 1)/2). 不是真的,我们绘制了 n = 100 万的函数的对数:
虽然通常的 softmax 函数在概率上是无限的,并且可以使用 100 万个数据点快速达到 1/10¹² 的精度,但新的 Gaussian softmax 函数根据样本数量稳定在 10⁶ 以上。
将初始线性缩放的 softmax 函数与 n = 100 万的高斯 softmax 函数进行比较(我们查看对数图,因为它们在线性图上看起来相同):
它可以是 可以看到,虽然两者都接近1/10的极限,但是它们的同质化率相差很大,线性逼近达到最高精度的速度大约是高斯softmax函数的两倍。
最后,我们绘制了 n = 50 的所有三个函数:
由于 链式法则:
贝叶斯和证据神经网络等不同的高级技术用于计算使用深度学习做出的预测的实际概率。 但在很多情况下,softmax函数的输出仍然被用作预测准确的概率。 本文提出了一种基于最小误差界和高斯统计的softmax函数的安全快速扩展,在某些情况下可以作为softmax的替代
如何将其扩展到两个以上的类?
扩展到两个以上的类在数学上很简单,只需将 1-sigma Gaussian 替换为单个 sigma 上的高斯总和即可。 以 n-1 为底,找到 1/n 的下限和 (n-1)/n 的上限,并且可以通过对所有中间 sigma 求和以封闭形式计算导数。 但在下面的情况下:有 11 个类,一个(称为 A)的 sigma 为 0,另一个 sigma 为 0.1,我们可以认为它是 1/n,使用通常的 softmax 将以概率 0 返回 A,而高斯 softmax 返回 1 /(10*n^(1/10))。 由于我们不确切知道它是什么(各个类别的概率相当“平均”),并且由于 n < 100 万返回大约 0.04,其他类别返回 0.095(因为 N 对值不太敏感),这意味着 基于真正看到内容的不确定性,有明显的溢出效应。
因此,Gaussian softmax 不适用于具有许多彼此非常接近的类别(例如猫品种)和彼此相距很远的类别(例如猫 vs 船等)的数据。 ). 但是Gaussian softmax还是可以用于一些“我不确定”可以进行后处理的情况,比如推荐用户进一步收集数据。
作者:亚历克斯·罗伯茨