深度学习4大激活函数

Posted 尤尔小屋的猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习4大激活函数相关的知识,希望对你有一定的参考价值。

如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出实际上都是上层输入的线性函数。

这样就使得无论神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,模型的表达力仍然不够。

我们决定引入非线性函数作为激励函数,这样深层神经网络才有意义(不再是输入的线性组合)。

本文将介绍深度学习中的4个常见的激活函数,从原函数公式、导数函数及二者的可视化来进行对比:

  • Sigmoid函数
  • Tanh函数
  • ReLu函数
  • Leaky ReLu函数

激活函数特征

  1. 非线性:激活函数满足非线性时,才不会被单层网络替代,神经网络才有了意义
  2. 可微性:优化器大多数是用梯度下降来更新梯度;如果不可微的话,就不能求导,也就不能更新参数
  3. 单调性:激活函数是单调的,能够保证网络的损失函数是凸函数,更容易收敛

Sigmoid函数

表示形式为tf.nn.sigmoid(x)

f ( x ) = 1 1 + e − x f(x)=\\frac11+e^-x f(x)=1+ex1

原函数

In [1]:

# import tensorflow as

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline
 

def sigmoid(x):
    """
    返回sigmoid函数
    """
    return 1 / (1 + np.exp(-x))

 
def plot_sigmoid():
    # param:起点,终点,间距
    x = np.arange(-10, 10, 0.2)
    y = sigmoid(x)
    plt.plot(x, y)
    plt.grid()
    plt.show()
 
 
if __name__ == '__main__':
    plot_sigmoid()

导数函数

该函数的导数为:

f ′ ( z ) = ( 1 1 + e − z ) ′ = e − z ( 1 + e − z ) 2 = 1 + e − z − 1 ( 1 + e − z ) 2 = 1 ( 1 + e − z ) ( 1 − 1 ( 1 + e − z ) ) = f ( z ) ( 1 − f ( z ) ) \\beginaligned f^\\prime(z) &=\\left(\\frac11+e^-z\\right)^\\prime \\\\ &=\\frace^-z\\left(1+e^-z\\right)^2 \\\\ &=\\frac1+e^-z-1\\left(1+e^-z\\right)^2 \\\\ &=\\frac1\\left(1+e^-z\\right)\\left(1-\\frac1\\left(1+e^-z\\right)\\right) \\\\ &=f(z)(1-f(z)) \\endaligned f(z)=(1+ez1)=(1+ez)2ez=(1+ez)21+ez1=(1+ez)1(1(1+ez)1)=f(z)(1f(z))

另一种求解方法:

步骤1:

d y   d x = − ( 1 + e − x ) − 2 ⋅ ( 1 + e − x ) ′ = − ( 1 + e − x ) − 2 ⋅ 1 ⋅ ( e − x ) ′ = − ( 1 + e − x ) − 2 ⋅ 1 ⋅ ( e − x ) ⋅ ( − x ) ′ = − ( 1 + e − x ) − 2 ⋅ 1 ⋅ ( e − x ) ⋅ ( − 1 ) = ( 1 + e − x ) − 2 ⋅ ( e − x ) = e − x ( 1 + e − x ) 2 \\beginaligned \\frac\\mathrmd y\\mathrm~d x &=-\\left(1+e^-x\\right)^-2 \\cdot\\left(1+e^-x\\right)^\\prime \\\\ &=-\\left(1+e^-x\\right)^-2 \\cdot 1 \\cdot\\left(e^-x\\right)^\\prime \\\\ &=-\\left(1+e^-x\\right)^-2 \\cdot 1 \\cdot\\left(e^-x\\right) \\cdot(-x)^\\prime \\\\ &=-\\left(1+e^-x\\right)^-2 \\cdot 1 \\cdot\\left(e^-x\\right) \\cdot(-1) \\\\ &=\\left(1+e^-x\\right)^-2 \\cdot\\left(e^-x\\right) \\\\ &=\\frace^-x\\left(1+e^-x\\right)^2 \\endaligned  dxdy=(1+ex)2(1+ex)=(1+ex)21(ex)=(1+ex)21(ex)(x)=(1+ex)21(ex)(1)=(1+ex)2(ex)=(1+ex)2ex

步骤2:

1 − y = 1 − 1 1 + e − x = 1 + e − x − 1 1 + e − x = e − x 1 + e − x 1-y=1-\\frac11+e^-x=\\frac1+e^-x-11+e^-x=\\frace^-x1+e^-x 1y=11+ex1=1+ex1+ex1=python 深度学习中的4种激活函数

Keras深度学习实战——深度学习中常用激活函数和损失函数详解

深度学习笔记:激活函数常见问题总结

深度学习笔记:激活函数常见问题总结

《Andrew Ng深度学习》笔记4

深度学习最常用的10个激活函数!(数学原理+优缺点)