1.使用sigmoid函数,算激活函数时(指数运算),计算量大,反向传播误差梯度时,求导涉及除法和指数运算,计算量相对较大,而采用relu激活函数,整个过程的计算量节省很多
2.对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况,这种现象称为饱和,从而无法完成深层网络的训练。而relu函数就不会出现饱和倾向,不会有特别小的梯度出现
3.relu函数会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。当然现在也有一些对relu函数的改进,比如prelu, random relu等,在不同的数据集上会有一些训练速度上或者准确率上的改进多加一句,现在主流的做法,会多做一步batch normalization,尽可能保证每一层网络的输入具有相同的分布。



