tanh(z)=ez−e−zez+e−z效果严格地比sigmoid函数好,因为该函数的对称中心在(0,0),具有将数据归一化为0均值的效果。当然,二分类的输出层的**函数还是一般用sigmoid(z),因为sigmod函数能将输出值映射到0∼1之间(概率值)
Relu(z)=max(0,z)出现后,神经网络默认都用Relu函数(rectified linear)来作为**函数。此时一般默认z>0
leaky(z)=max(0.01z,z)可以避免z<0时斜率为零的情况 输出层有时也用线性**函数(房价预测)
1. Sigmoid activation function
图1.1 **函数-sigmoid a=g(z)=11+e−z(1-1)
g′(z)=ddzg(z)=e−z1+e−z=11+e−z(1−11+e−z)=g(z)(1−g(z))=a(1−a)(1-2)
2. Tanh activation function
图2.1 **函数-tanh a=g(z)=ez−e−zez+e−z(2-1)
g′(z)=ddzg(z)=e−z1+e−z=(ez+e−z)2−(ez−e−z)2(ez+e−z)2=1−(g(z))2=1−a2(2-2)
3. ReLU and Leaky ReLU
图3.1 **函数-ReLU ReLU: a=g(z)=max(0,z)(3-1)
g′(z)=ddzg(z)={0if z<01if z≥0(3-2)
Leaky ReLU:
图3.2 **函数-Leaky ReLU a=g(z)=max(0.01z,z)(3-3)
g′(z)=ddzg(z)={0.01if z<01if z≥0(3-4)
4.选择**函数的准则
- 如果处理的问题是二分类问题,输出为0和1,那么输出层选择sigmoid函数,其他神经元选择ReLU(有时也可用tanh),理论上Leaky ReLU比ReLU好,但是实践中差不多。