任意精度计算对机器学习有用吗?

机器算法验证 回归 机器学习 计算统计
2022-04-10 20:06:17

关于机器学习方法,但处理任意浮点精度。这对我来说听起来很酷,但我不确定这是否有用......

有没有人遇到过需要以极高精度执行逻辑回归任务的情况?能说得通吗?我正在寻找 ML 专家的意见。

编辑:如果不是任意高,也许四倍精度可能有用?

2个回答

不,这几乎从来不是问题。首先,存在测量误差——即使是物理学家也能解释这一点,而我们其他人很少能像他们一样幸运地进行精确测量。其次,您正在处理采样数据,因此由于采样而存在错误。最后,我们在数据中存在各种偏差和噪声。最后,我们通常远没有精确的数据,所以我们不需要比数据本身更精确的算法。

不仅如此,还有研究表明,您可以在不降低性能的情况下以低(8 位、2 位)精度训练神经网络一些人认为这甚至可能产生正则化效果。它可能在某种程度上可以扩展到其他模型。

是的,精度可能在多个方面存在问题。首先,回归本身通常接近一个平坦区域,例如抛物线的底部,回归的最小损失函数位于该区域。这通常会使损失函数中有效数字的数量减半,并且可能会降低模型任何参数的精度甚至更多。其次,为了计算一些超越函数,计算过程本身可能需要比该过程完成时函数值更高的精度。https://blogs.ubc.ca/infiniteseriesmodule/units/unit-3-power-series/taylor-series/maclaurin-expansion-of-sinx/例如,看看 sin(x) 的级数展开的中间项如何在 sin(12 弧度) 收敛之前达到较大的幅度

在此处输入图像描述

这表明虽然 sin(x) 上下界为±1, 个别项有时是±20000,所以如果我们不小心,这些项的绝对误差可能大于 1。现在确实可以转换该请求,而不是取 12 的正弦,以便在主体区域中执行计算正弦,其精度问题得到缓解(但未消除),然而,这里的要点是,为了保证函数的任何特定精度,计算期间可能需要比产生该函数答案时返回的精度更高的精度。

编辑:额外的 OP 编辑​​问题是四倍精度是否足够。正确的答案是有时。要查看需要什么精度,需要进行某种类型的误差传播分析另见不确定性的传播delta 方法如果您知道那是什么,那将告诉您拟合功能需要什么精度。然后必须考虑回归期间使用的损失函数的精度损失,大多数软件允许您指定它是什么。然后应该增加数据计算精度,以包括功能精度损失和回归精度损失。

在上面的正弦示例中,可以找到低精度下的最大绝对项幅度,我们称之为 Δ,然后将精度设置为D+log10(Δ), 在哪里D是所需的精度,然后才以更高的精度计算每个项值以供以后求和。一些软件例程在求和过程中自动增加精度,而另一些则不会,如果不是,那么来自求和的误差传播将被添加到精度请求中sin(x).

最后一个建议。计算哪个问题需要什么精度可能是令人生畏的,并且在某些情况下,算法没有很好地表征,例如,一些机器学习例程,是无法合理实现的。在这种情况下,可以通过提高精度来启发式地进行,直到它不再对答案中所需的精度产生影响。但是,如果结果证明有效数字的数量比没有进行此类测试的人猜测的要多,请不要感到惊讶。