激活函数是确定神经网络输出的数学方程式。

激活函数的作用:给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数。

1、附加到网络中的每个神经元,并根据每个神经元的输入来确定是否应激活。

2、有助于将每个神经元的输出标准化到1到0或-1到1的范围内。

常用非线性激活函数对比
激活函数 公式 函数图像 适合场景
Softmax 多分类任务输出层
Sigmoid 二分类任务输出层,模型隐藏层
Tanh
ReLU 回归任务,卷积神经网络隐藏层
Leaky ReLU

激活函数必须满足:

  • 可微,优化方法是基于梯度。
  • 单调,保证单层网络是凸函数。
  • 输出值范围,有限则梯度优化更稳定,无限则训练更高效(学习率需要更小)。

1、Softmax(也可视作激活函数)

常用且重要的一种归一化函数,其将输入值映射为0-1之间的概率实数,常用于多分类。

公式:

2、Sigmoid

使用范围最广的一种激活函数,具有指数形状。

公式:

优点:

在物理意义上最为接近神经元,输出是(0,1),可以被表示做概率或者用于输入的归一化,平滑的渐变,防止输出值“跳跃”。

缺点:

饱和性,从图中也不难看出其两侧导数逐渐趋近于0,可能导致梯度消失问题。

偏移现象,输出值均大于0,使得输出不是0的均值,这会导致后一层的神经元将得到上一层非0均值的信号作为输入。

梯度消失:导数值变得接近于0,导致反向传播的梯度也变得非常小,此时网络参数可能不更新。

3、Tanh(双曲正切

公式:

优点:输出均值为0,使其收敛速度比较快,减少了迭代更新的次数。

缺点:饱和性,容易导致梯度消失。

4、ReLU(Rectified Linear Units

公式:

优点:缓解sigmoid和tanh的饱和性,当x大于0时不存在饱和性问题,计算效率高,允许网络快速收敛。

缺点:神经元死亡偏移现象影响网络收敛性

神经元死亡:随着训练,部分输入会落入硬饱和区(小于0的区域),导致权重无法更新。

5、Leaky ReLU

公式:

优点:通过在小于0部分添加参数α,解决硬饱和问题。

缺点:不稳定,结果不一致,无法为正负输入值提供一致的关系预测(不同区间函数不同)。

图像绘制代码(Python):

import math
from matplotlib import pyplot as plt
import numpy as npdef softmax(x):return np.exp(x)/np.sum(np.exp(x), axis=0)def sigmoid(x):return 1. / (1 + np.exp(-x))def tanh(x):return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))def relu(x):return np.where(x < 0, 0, x)def prelu(x):return np.where(x < 0, 0.1 * x, x)'''
def sigmoid(x):result = 1 / (1 + math.e ** (-x))return result
'''
def plot_softmax():x = np.linspace(-10, 10, 200)y = softmax(x)plt.plot(x, y, label="softmax", linestyle='-', color='blue')plt.legend()plt.savefig("softmax.png")#plt.show()def plot_sigmoid():fig = plt.figure()ax = fig.add_subplot(111)x = np.linspace(-10, 10)y = sigmoid(x)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data', 0))ax.set_xticks([-10, -5, 0, 5, 10])ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data', 0))ax.set_yticks([-1, -0.5, 0.5, 1])plt.plot(x, y, label="Sigmoid", linestyle='-', color='blue')plt.legend()plt.savefig("sigmoid.png")#plt.show()def plot_tanh():x = np.arange(-10, 10, 0.1)y = tanh(x)fig = plt.figure()ax = fig.add_subplot(111)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.spines['left'].set_position(('data', 0))ax.spines['bottom'].set_position(('data', 0))ax.plot(x, y, label="tanh", linestyle='-', color='blue')plt.legend()plt.xlim([-10.05, 10.05])plt.ylim([-1.02, 1.02])ax.set_yticks([-1.0, -0.5, 0.5, 1.0])ax.set_xticks([-10, -5, 5, 10])plt.tight_layout()plt.savefig("tanh.png")#plt.show()def plot_relu():x = np.arange(-10, 10, 0.1)y = relu(x)fig = plt.figure()ax = fig.add_subplot(111)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.spines['left'].set_position(('data', 0))ax.plot(x, y, label="relu", linestyle='-', color='blue')plt.legend()plt.xlim([-10.05, 10.05])plt.ylim([0, 10.02])ax.set_yticks([2, 4, 6, 8, 10])plt.tight_layout()plt.savefig("relu.png")#plt.show()def plot_prelu():x = np.arange(-10, 10, 0.1)y = prelu(x)fig = plt.figure()ax = fig.add_subplot(111)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.spines['left'].set_position(('data', 0))ax.spines['bottom'].set_position(('data', 0))ax.plot(x, y, label="leaky-relu", linestyle='-', color='blue')plt.legend()plt.xticks([])plt.yticks([])plt.tight_layout()plt.savefig("leaky-relu.png")#plt.show()if __name__ == "__main__":plot_softmax()plot_sigmoid()plot_tanh()plot_relu()plot_prelu()

常用激活函数activation function(Softmax、Sigmoid、Tanh、ReLU和Leaky ReLU) 附激活函数图像绘制python代码相关推荐

  1. 深度学习激活函数总结(sigmoid,tanh,ReLU,Leaky ReLU,EReLU,PReLU,Softmax,Swish,Maxout,Softplus)

    摘要 本文总结了深度学习领域最常见的10中激活函数(sigmoid.Tanh.ReLU.Leaky ReLU.ELU.PReLU.Softmax.Swith.Maxout.Softplus)及其优缺点 ...

  2. 常用激活函数:Sigmoid、Tanh、Relu、Leaky Relu、ELU优缺点总结

    1.激活函数的作用 什么是激活函数? 在神经网络中,输入经过权值加权计算并求和之后,需要经过一个函数的作用,这个函数就是激活函数(Activation Function). 激活函数的作用? 首先我们 ...

  3. 【Deep Learning 三】神经网络中的非线性激活函数之间的优缺点:sigmoid、tanh、ReLu、Leaky ReLu...

    1 什么是激活函数? 激活函数,并不是去激活什么,而是指如何把"激活的神经元的特征"通过函数把特征保留并映射出来(保留特征,去除一些数据中是的冗余),这是神经网络能解决非线性问题关 ...

  4. 激活函数(sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Maxout)

    sigmoid函数 公式: 图像: sigmoid可以将数据压缩到[0,1]范围内,可看作神经元的饱和放电率.在历史上,sigmoid函数非常有用,这是因为它对神经元的激活频率有很好的解释:从完全不激 ...

  5. 激活函数ReLU、Leaky ReLU、tanh(双曲正切函数Hyperbolic tangent function)

    深度学习的激活函数 :sigmoid.tanh.ReLU .Leaky Relu.RReLU.softsign .softplus - 程序员大本营 https://www.pianshen.com/ ...

  6. 激活函数(sigmoid、tanh、ReLU、leaky ReLU)

    为了保证神经元的计算包含简洁性和功能性,神经元的计算包括线性计算和非线性计算. 今天主要讲集中非线性计算(即激活函数),包括: sigmoid tanh ReLU leaky ReLU 1.sigmo ...

  7. PyTorch | 激活函数(Sigmoid、Tanh、ReLU和Leaky ReLU)

    PyTorch | 激活函数(Sigmoid.Tanh.ReLU) 1. 简介 2. 函数饱和性 3. 以零为中心 3.1 收敛速度 3.2 参数更新 3.3 更新方向 3.4 以零为中心的影响 4. ...

  8. 激活函数 sigmoid、tanh、ReLu、Leaky ReLu、ELU、Maxout

    1. sigmoid sigmoid 是逻辑函数,常见的 sigmoid 函数定义为: S(x)=11+e−xS(x)=\frac{1}{1+e^{-x}}S(x)=1+e−x1​ dS(x)dx=e ...

  9. 激活函数 activation function

    文章目录 激活函数 activation function Sigmoid Sigmoid 反向传播 Tanh ReLU Dead ReLU Problem 产生的原因 激活函数 activation ...

最新文章

  1. 刚看完 Kafka 源码,各位随便问!
  2. 想知道人工智能的发展史?看完这篇文章你会赞叹科技的力量!
  3. fanuc机器人cm格式文件_了解发那科智能机器人自动化物流拆垛
  4. MobaXterm的使用
  5. 显示mac电脑中隐藏的文件和文件夹
  6. C++文件操作之get/getline(待学)
  7. java 垃圾回收 新生代_Java垃圾回收
  8. 用Java通讯录字母排序,按所有Catorgories显示联系人数据库标记,然后按字母顺序排序| PHP SQL...
  9. 完成一个分析H264码流的工具
  10. 计算机网络医院拓扑图方案设计,【方案】某医院计算机网络综合布线系统设计...
  11. JSP标准标签购物车项目
  12. 投诉百度快照对排名的影响
  13. Windows API一日一练(25)CreateSolidBrush FillRect函数-创建黑色的背景色
  14. 【STM32学习笔记-03】ESP8266 访问心知天气API获取实时天气信息
  15. visual fortran run-time error can45_64.dll
  16. 国外长高书籍内有详细锻炼方法
  17. ABAQUS学习之路
  18. xilinx与altera
  19. 《How Tomcat Works》读书笔记(三)--Connector(连接器)
  20. Lesson Forty-Seven A cup of coffee. 一杯咖啡.

热门文章

  1. 2021-2027全球与中国音圈马达驱动市场现状及未来发展趋势
  2. 小米mix2鸿蒙系统,小米MIX 2配置详解:小米终于有了8GB内存
  3. 系统架构设计师-总结说明
  4. Cisco AP胖瘦切换
  5. 海思系列平台编译器安装及配置
  6. Ensp测试配置两个ip段互通
  7. Vue过渡效果之CSS过渡
  8. [人生]一些人生智慧
  9. 论文阅读笔记(二)——牛的人脸识别,能做到吗?
  10. 介绍几个在线画流程图的工具