激活函数

什么是激活函数
  • 激活函数(Activation functions)主要作用在神经元上,是神经网络模型去学习、理解非常复杂和非线性的函数来说起到非常重要的作用,它将非线性特性引入到神经网络中。将A-NN模型中负责将神经元的输入映射到输出端。

  • 如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,在神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等

常见的激活函数特点
sigmoid

函数公式及导数
在这里插入图片描述
函数图像

import matplotlib.pyplot as plt 
import numpy as np

x=np.linspace(-5,5,100)
y=1/(1+np.exp(-x))
plt.xlabel("x")
plt.ylabel("y")
plt.title("sigmoid function")
plt.plot(x,y,color='r',label="sigmoid")
plt.legend()
plt.grid(linewidth=1)

在这里插入图片描述
sigmoid的导数图像

import matplotlib.pyplot as plt 
import numpy as np

x=np.linspace(-5,5,100)
y=np.exp(-x)/pow((1+np.exp(-x)),2)
plt.title("sigmoid derivative image")
plt.plot(x,y,color='b',label="derivative")
plt.legend()
plt.grid(linewidth=1)

在这里插入图片描述

  1. sigmoid函数输出范围(0,1)
  2. sigmoid导数取值范围是[0, 0.25],通常我们会将权重初始值|W|初始化为为小于1的随机,随着网络层数的加深,求解的梯度会以指数级别的减小,出现梯度消失,使得网络学习较慢,无法收敛,当权重值w大于1时,反之梯度会以指数级别增长,出现梯度爆炸
tanh

函数公式
在这里插入图片描述

tanh函数图像

x=np.linspace(-5,5,100)
y=(1-np.exp(-2*x))/(1+np.exp(-2*x))
plt.xlabel('x')
plt.ylabel('y')
plt.title("Tanh function ")
plt.plot(x,y,color='r',label='Tanh')
plt.legend()
plt.grid(linewidth=1)

在这里插入图片描述
tanh导数图像

x=np.linspace(-5,5,100)
y=1-pow((1-np.exp(-2*x))/(1+np.exp(-2*x)),2)
plt.title("derivative image")

plt.plot(x,y,color='b',label='derivative')
plt.legend()
plt.grid(linewidth=1)

在这里插入图片描述

  1. tanh的输出范围时(-1, 1)

  2. tanh导数范围在(0, 1)之间,相比sigmoid的(0, 0.25),梯度消失问题会得到缓解,但仍然还会存在

relu

函数公式
在这里插入图片描述

函数图像

x=np.linspace(-4,4,100)
y=x*(x>0)
plt.xlabel('x')
plt.ylabel('y')
plt.title("Relu function")
plt.plot(x,y,color='r',label="Relu")
plt.legend()
plt.grid(linewidth=1)

在这里插入图片描述
导数

x=np.linspace(0,4)
y=np.linspace(1,1)
plt.title("derivative image")

plt.plot(x,y,color='b',label="derivative")
plt.grid(linewidth=1)
x=np.linspace(-4,0)
y=np.linspace(0,0)
plt.plot(x,y,color='b')

在这里插入图片描述

  1. ReLU在x>0下,导数为常数1,导数为常数1的好处就是在“链式反应”中不会出现梯度消失,

  2. ReLU在x<0下,输出置为0,可能会导致模型无法学习到有效特征,所以如果学习率设置的太大,就可能会导致网络的大部分神经元处于无效状态,所以使用ReLU的网络,学习率不能设置太大。另一方面,也起到到了一个去除噪音的目的,对于输入的大批量的样本数据,将其密集矩阵转化为稀疏矩阵,保留数据关键信息,使得模型更具鲁棒性

Leaky ReLU
  1. Leaky ReLU 保证在 x < 0 的时候,梯度仍然不为 0。理论上来说,Leaky ReLU 有 ReLU 的所有优点,但在实际操作中没有证明总是好于 ReLU,因此不常用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值