机器学习中是否有需要双精度浮点的任务?

计算科学 机器学习 精确
2021-11-25 00:01:54

与单精度计算相比,双精度计算明显更慢或更昂贵。例如,在双打上表现良好的 NVidia Tesla 比普通 GPU 贵得多。

同时,我不知道真正需要双精度的机器学习案例。目前我认为模型需要 64 位浮点数,以防它过度拟合。换句话说,只有泛化能力差的“坏”模型才需要双精度数。

2个回答

我不是机器学习方面的专家,但我可以概述相关的考虑因素。

机器学习中的数值计算通常是线性代数——求解线性系统或线性最小二乘。对于这两种类型的问题,都有众所周知的后向稳定方法,所以我假设您使用的是后向稳定算法。那么你应该期望一个大约为 的错误,其中是问题的条件数,是单位舍入。κϵκϵ

对于线性系统,你有的条件数对于最小二乘问题,条件数可以落在范围内的任何位置;详情参见 Trefethen & Bau 的文本。Ax=bκ=AA1=κ(A)A[κ(A),κ2(A)]

因此对于线性系统,只要远小于 ,单精度就足够了。对于最小二乘法,当时,您可能已经遇到了麻烦。对于大型数据集,这些不是很大的条件数。因此,您可能需要双精度似乎是合理的。κ(A)107κ(A)103104

我认为你是对的,通常不需要双精度。

作为代理,Apple 的 Metal 框架根本不支持 double,它被宣传为具有 Apple 提供的机器学习功能的计算框架。

关于金属数据类型的信息:https ://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf