sigmoid、Relu、Tanh、softmax激活函数的比较, 以及交叉熵损失函数

目录

sigmoid:

relu:

softmax:

交叉熵Cross entropy:


  • sigmoid:

f(x) = \frac{1}{1+e^{-x}},它的导数f^{'}(x) = f(x)(1-f(x)),f(x)为单调递增函数。函数图像如下:

sigmoid、Relu、Tanh、softmax激活函数的比较, 以及交叉熵损失函数_第1张图片

sigmoid函数的导数图如下所示:

sigmoid、Relu、Tanh、softmax激活函数的比较, 以及交叉熵损失函数_第2张图片

f^{'}(x)\leq \frac{1}{4},当层数过多时,会产生过多的f_{'}^{i}(x)w_{i}相乘,如果W足够大,则梯度会呈指数型上升,则为梯度爆炸。如果W很小,则梯度会呈指数型衰减,则为梯度衰减。一般情况|W|<1,比较容易发生梯度消失的情况。

详情:sigmoid引起的梯度消失和爆炸问题:链接

  • relu:

f(x) = \left\{\begin{matrix} x ,&x>0 \\ 0,& x\leq 0 \end{matrix}\right.,即f(x) = max(0,x)。函数的图像如下:

sigmoid、Relu、Tanh、softmax激活函数的比较, 以及交叉熵损失函数_第3张图片

 导数f^{'}(x) = \left\{\begin{matrix} 1,&x>0 \\ 0,& x\leq 0 \end{matrix}\right.。当有多层时,中间每层输入都为max{0,w_{i}x_{i}+b},反向多次求导,导数都为一个常数W。

评判:relu 可以增加网络的非线性能力,从而拟合更多的非线性过程。ReLU在一定程度上能够防止梯度消失,但防止梯度消失不是用它的主要原因,主要原因是求导数简单。一定程度是指,右端的不会趋近于饱和(变为一条横线),求导数时,导数不为零,从而梯度不消失,但左端问题依然存在,一样掉进去梯度也会消失。所以出现很多改进的ReLU。

  • tanh

公式:f(x) = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}},导数f^{'}(x) = 1-[f(x)]^{2}

  • tanh关于原点对称,相比Sigmoid函数,其输出以0为中心,因此实际应用中 tanh 会比 sigmoid 更好,因为 tanh 的输出均值比 sigmoid 更接近 0。
  • 比Sigmoid函数收敛速度更快。
  • 但也含有sigmoid的缺点。

sigmoid、Relu、Tanh、softmax激活函数的比较, 以及交叉熵损失函数_第4张图片

  • softmax:

f(y_{i}|x) = \frac{e^{y_{i}}}{\sum_{c=1}^{n}e^{y_{c}}},对向量每个元素进行exp(),然后求和,归一化处理。目的是凸显其中最大的值并抑制远低于最大值的其他分量。Softmax函数的优势在于所有输出概率的总和为1。

  • 交叉熵Cross entropy:

f(x) = -\sum_{i=1}^{n}y_{i} log{\widehat{y_{i}}}。此处\widetilde{y_{i}}为概率值在(0,1)范围,y_{i}为真实标签,在tensorflow中以one-hot编码形式表示标签。在真实标签时,预测概率越接近1,ln值越接近0,最后的损失就越小,相反,则损失就越大。

你可能感兴趣的:(深度学习,机器学习)