深度神经网络,卷积的计算是乘加,属于线性变化,而各种目标函数是很复杂的非线性函数,需要引入非线性变化,使得深度神经网络能够拟合非线性函数变化。
因此,在深度神经网络中引入了激活层(activiation layer),而Sigmod就是其中非常主流的激活函数之一。然后Sigmod非线性计算不适合在AI计算单元中进行计算,需要针对他进行优化
常见的方案如下两个:
1. 基于泰勒展开来拟合非线性函数Sigmod,可以根据精度需求来决定展开深度,一般只需要做一次即可,另外展开后的计算为线性计算,符合嵌入式芯片加速的需求。
2. 基于查表法,sigmod函数本身满足一些限制,即当前x落入[-8,8]之外,sigmod函数的值域已经几乎不会变化。那么我们完全可以针对[-8,8]区间内函数取值进行建表,选择一定步长从而确定最终表的大小,比如步长为0.25,那么值得个数就有64个。
在实际业务场景下,这两个方案都可以在掉点较小的情况下,取得非常不错的性能收益。
