# 充分利用算力的精度

<br />

我们都知道现在的深度神经网络有大量的信息是冗余的，利用这个冗余进行提高效率的计数有，稀疏计算、低精度量化等等技术。

1. 乘法本来就是一种数学上的定义，可以理解成一种最简单的信息处理方法、公式
2. 硬件实现FP32单元实际上是按照数学定义的浮点计算去等价，
3. 神经网络不像科学计算，其在算法设计上就不需要这么高的精度表达
4. 神经网络算法本身就没有办法用到这么高的精度

可以从两个方面来看一下这个问题

1. 硬件为什么FP32就是浪费？
2. 为什么科学计算就是需要FP32甚至是FP64，而神经网络是没有办法？还是没有必要？

再进行一下推导为什么是数学乘法

1. 计算首先需要把信号进行量化，使用“数“来表示信号的量
2. 深度神经网络使用乘法，是因为主要使用`线性变换`和`梯度下降`这两个关键的数学支撑的计算方法
3. 线性变换本质上是在变换信息，梯度下降是在求解、回归
4. 计算精度对于神经网络模型的作用？
   1. 思维更敏感了
   2. 映射空间的精细度更高了，表达的信息更丰富了

如果提高计算精度是一个方向，那么为什么不采用？

1. 效率问题

   1. 精度的利用率是有上限的，边际效应，越高的精度越难以触碰/利用
   2. 利用多个低精度的计算进行等价是不是更高效？
2. 更难以训练和收敛

那么问题来了，有没有一种更适合硬件电路，数字电路特点的数学模型？

1. 使用`状态`，替代`量`
2. 使用`映射表`替代`计算`
3. 使用`模仿、逻辑推理`来替代`梯度下降`