返回

激活函数

列举常用的激活函数,描述激活函数特点、图像、公式、导数、Pyhton代码实现

Sigmoid

介绍

Sigmoid函数也叫Logistic函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。

公式

$$ \sigma(x)= \frac{1}{1+e^{-x}} $$

导数

$$ \sigma'(x)=\frac{e^{-x}}{(1+e^{-x})^2}=\sigma(x)(1-\sigma(x)) $$

图像

Sigmoid函数

Sigmoid函数导数

Python代码实现

import numpy as np


def sigmoid(Z):
    """ sigmoid函数计算 """
    return 1/(1+np.exp(-Z))


def sigmoid_derivatice(Z):
    """ sigmoid函数导数计算 """
    return sigmoid(Z)*(1-sigmoid(Z))


Tanh

介绍

双曲正切函数(hyperbolic tangent function)是双曲函数的一种。双曲正切函数在数学语言上一般写作tanh,也可简写成th。

公式

$$ tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} $$

导数

$$ tanh'(x)=1-tanh^2(x) $$

图像

Tanh函数

Tanh函数导数

Python代码实现

import numpy as np


def tanh(Z):
    """ tanh函数计算 """
    return (np.exp(Z)-np.exp(-Z))/(np.exp(Z)+np.exp(-Z))


def tanh_derivative(Z):
    """ tanh函数导数计算 """
    return 1-tanh(Z)**2


ReLU

介绍

线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数,通常指代以斜坡函数及其变种为代表的非线性函数。

公式

$$ f(x)=max(0, x) $$

导数

$$ f'(x)=\begin{cases} 0 \quad x< 0 \\ 1 \quad x>0\end{cases} $$

图像

ReLU函数

ReLU函数导数

Python代码实现

import numpy as np


def relu(Z):
    """ relu函数计算 """
    return np.where(Z < 0, 0, Z)


def relu_derivative(Z):
    """ relu函数导数计算 """
    return np.where(Z < 0, 0, 1)

LeakyReLU

介绍

带泄露线性整流函数(Leaky Rectified Linear Unit, LeakyReLU), 在输入值 为负的时候,带泄露线性整流函数(Leaky ReLU)的梯度为一个常数 ,而不是0。在输入值为正的时候,带泄露线性整流函数和普通斜坡函数保持一致。

公式

$$ f(x)=\begin{cases} \alpha x \quad x< 0 \\ x \quad x\ge0\end{cases} $$

导数

$$ f'(x)=\begin{cases} \alpha \quad x< 0 \\ 1 \quad x>0\end{cases} $$

图像

说明

$ 以下图像中\alpha = 0.01 $

leaky relu 函数

leaky relu 函数导数

Python代码实现

import numpy as np


def leaky_relu(Z, a):
    """ leaky relu 函数计算"""
    return np.where(Z < 0, a, Z)


def leaky_relu_derivative(Z, a):
    """ leaky relu 函数导数计算 """
    return np.where(Z < 0, a, 1)

ELU

介绍

指数线性单元(Exponential Linear Unit, ELU),该激活函数由Djork等人提出,被证实有较高的噪声鲁棒性,同时能够使得使得神经元的平均激活均值趋近为 0,同时对噪声更具有鲁棒性,由于需要计算指数,计算量较大。

公式

$$ f(x)=\begin{cases} \alpha(e^{x}-1) \quad x< 0 \\ x \quad x\ge0\end{cases} $$

导数

$$ f'(x)=\begin{cases} \alpha e^{x} \quad x< 0 \\ 1 \quad x> 0\end{cases} $$

图像

说明

$ 以下图像中\alpha=1 $

ELU函数

ELU函数导数

Python代码实现

import numpy as np


def elu(Z, a):
    """ ELU函数计算 """
    return np.where(Z<0, a*(np.exp(Z)-1), Z)


def elu_derivative(Z, a):
    """ ELU函数导数计算 """
    return np.where(Z<0, a*np.exp(Z), 1)

SoftPlus

介绍

公式

$$ f(x)=log(1+e^x) $$

导数

$$ f'(x)=\frac{1}{1+e^{-x}} $$

图像

SoftPlus函数

SoftPlus函数导数

Python代码实现

import numpy as np


def softplus(Z):
    """ SoftPlus函数计算 """
    return np.log(1+np.exp(Z))


def softplus_derivative(Z):
    """ SoftPlus函数导数计算"""
    return 1/(1+np.exp(-Z))

Softmax

介绍

在数学,尤其是概率论和相关领域中,归一化指数函数,或称Softmax函数,是逻辑函数的一种推广。它能将一个含任意实数的K维向量z“压缩”到另一个K维实向量σ(z)中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。该函数多于多分类问题中。

公式

导数

图像

Python代码实现