互联网科技大数据大数据,机器学习,人工智能

Pytorch_第九篇_神经网络中常用的激活函数

2020-08-26  本文已影响0人  沁泽呀

神经网络中常用的激活函数


Introduce

理论上神经网络能够拟合任意线性函数,其中主要的一个因素是使用了非线性激活函数(因为如果每一层都是线性变换,那有啥用啊,始终能够拟合的都是线性函数啊)。本文主要介绍神经网络中各种常用的激活函数。

以下均为个人学习笔记,若有错误望指出。


各种常用的激活函数

早期研究神经网络常常用sigmoid函数以及tanh函数(下面即将介绍的前两种),近几年常用ReLU函数以及Leaky Relu函数(下面即将介绍的后两种)。torch中封装了各种激活函数,可以通过以下方式来进行调用:

torch.sigmoid(x)
torch.tanh(x)
torch.nn.functional.relu(x)
torch.nn.functional.leaky_relu(x,α)

对于各个激活函数,以下分别从其函数公式、函数图像、导数图像以及优缺点来进行介绍。

(1) sigmoid 函数:

sigmoid函数是早期非常常用的一个函数,但是由于其诸多缺点现在基本很少使用了,基本上只有在做二分类时的输出层才会使用。

sigmoid 的函数公式如下

sigmoid(x) = {1 \over (1+exp(-x))}
sigmoid函数的导数有一个特殊的性质(导数是关于原函数的函数),导数公式如下:

sigmoid'(x) = sigmoid(x)*(1-sigmoid(x))
sigmoid 的函数图形如下

image

sigmoid 的导数图形如下

image

sigmoid 优点:

sigmoid 缺点:

(2) tanh 函数

tanh是双曲正切函数。(一般二分类问题中,隐藏层用tanh函数,输出层用sigmod函数,但是随着Relu的出现所有的隐藏层基本上都使用relu来作为激活函数了)

tanh 的函数公式如下

tanh(x) = {exp(x)-exp(-x) \over exp(x)+exp(-x) }
其导数也具备同sigmoid导数类似的性质,导数公式如下:

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

tanh 的函数图形如下

image

tanh 的导数图形如下

image

tanh 优点:

tanh 缺点:

(3) ReLU 函数

ReLU (Rectified Linear Units) 修正线性单元。ReLU目前仍是最常用的activation function,在隐藏层中推荐优先尝试!

ReLU 的函数公式如下

ReLU = max(0,x)

ReLU 的函数图形如下

image

ReLU 的导数图形如下

image

ReLU 优点:

ReLU 缺点:

(4) Leaky Relu 函数(PRelu)

Leaky Relu 的函数公式如下

PRelu(α,x)=max(αx,x)

以下以α为0.1的情况为例,通常α=0.01,这边取0.1只是为了图形梯度大一点,画出来比较直观。

Leaky Relu 的函数图形如下

image

Leaky Relu 的导数图形如下

image

Leaky Relu 优点:

对于Leaky Relu 的缺点笔者暂时不了解,但是实际应用中,并没有完全证明Leaky ReLU总是好于ReLU,因此ReLU仍是最常用的激活函数。


本文参考-1

本文参考-2

本文参考-3

上一篇 下一篇

猜你喜欢

热点阅读