【卷积神经网络】12、激活函数

2023-10-31

本文主要介绍卷积神经网络中常用的激活函数及其各自的优缺点

在这里插入图片描述

最简单的激活函数被称为线性激活,其中没有应用任何转换。 一个仅由线性激活函数组成的网络很容易训练,但不能学习复杂的映射函数。线性激活函数仍然用于预测一个数量的网络的输出层(例如回归问题)。

非线性激活函数是更好的,因为它们允许节点在数据中学习更复杂的结构 。两个广泛使用的非线性激活函数是 sigmoid 函数和 双曲正切 激活函数。

在这里插入图片描述

一、Tanh

在这里插入图片描述

Tanh 函数公式如下,数值范围在 (-1, 1),导数范围为 (0, 1]

Tanh 函数的优点:

  • 以 0 为中心,能够达到正负平衡,避免出现梯度的不稳定性

Tanh 函数的缺点:

  • 会导致梯度消失问题!

二、Sigmoid

在这里插入图片描述

Sigmoid 函数公式如下,数值范围为 (0, 1),导数范围为 (0, 0.25]:

  • f ( x ) = 1 1 + e − z f(x) = \frac{1}{1+e^{-z}} f(x)=1+ez1

sigmoid 函数优点:

  • 可以把输入映射到 (0, 1)区间,可以用来表示概率,在物理意义上最为接近生物神经元

sigmoid 函数缺点:

  • 梯度消失问题 :由于 sigmoid 的导数 f′(zl) 区间为 (0, 0.25],所以其极易落入饱和区,导致梯度非常小,权重接近不变,无法正常更新
  • sigmoid 的输出并不是均值为 0 的,所有输出数据的大于0,会增加梯度的不稳定性
  • 当输出接近饱和或剧烈变化时,对输出范围的这种缩减往往会带来一些不利影响

三、ReLU

在这里插入图片描述

f ( x ) = max ( 0 , x ) f(x) = \text{max}(0, x) f(x)=max(0,x)

ReLU 函数的优点:

  • 摒弃了复杂的计算, 比 sigmoid/tanh 收敛的更快 (大概快 6x)
  • 其导数在其权重和(z) 大于 0 的时候为 1,不存在梯度消失现象权重可以正常更新,但也要防止 ReLU 的梯度爆炸

ReLU 函数的缺点:

  • 小于 0 的输出经过 ReLU 之后会全都变成 0,梯度值为0,从而权重无法正常更新
  • 输出具有偏移现象,即输出均值恒大于零
  • 当使用了较大的学习速率时,易受到饱和的神经元的影响。

四、Leaky ReLU

在这里插入图片描述

公式如下:

  • f ( x ) = α x ,   x < 0 f(x) = \alpha x, \ x<0 f(x)=αx, x<0
  • f ( x ) = x ,   x > = 0 f(x) = x, \ x>=0 f(x)=x, x>=0

为了防止模型 dead 的情况,出现了很多 ReLU 的改进版本,如 Leaky ReLU,在 0 右侧和 ReLU 一样,左侧从全零变成了一个斜率很小的直线

优点:

  • 避免了小于零的特征被处理为 0 导致特征丢失的情况,同时左右两侧梯度都是恒定的,不会出现梯度消失现象

缺点:

  • Leaky ReLU中的 α \alpha α 为常数,一般设置 0.01。这个函数通常比 ReLU 激活函数效果要好,但是效果不是很稳定,所以在实际中 Leaky ReLU 使用的并不多。

五、ELU

在这里插入图片描述

在这里插入图片描述

ELU(Exponential Linear Unit,指数线性单元)尝试加快学习速度。基于ELU,有可能得到比ReLU更高的分类精确度。

优点:

  • 解决了 ReLU 可能导致的网络 dead 的问题

缺点:

  • 计算量较大

六、SiLU

在这里插入图片描述

f ( x ) = x ∗ sigmoid ( β x ) f(x) = x *\text{sigmoid}(\beta x) f(x)=xsigmoid(βx) β = 1 \beta=1 β=1 时就是 SiLU

优点:

  • 相比 ReLU 增加了平滑性的特点

缺点:

  • 引入了指数计算,增加了计算量

七、Mish

在这里插入图片描述

f ( x ) = x ∗ tanh ( ln ( 1 + e x ) ) f(x) = x * \text{tanh}(\text{ln}(1+e^x)) f(x)=xtanh(ln(1+ex))

优点:

  • 平滑、非单调、无上界、有下界

缺点:

  • 引入了指数函数,增加了计算量

绘图代码:

import matplotlib.pyplot as plt
import numpy as np
import math
#
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


## sigmoid
def sigmoid(x):
    return 1 / (1 + np.exp(-x))
x1 = np.arange(-10.0, 10.0, 0.1)
y1 = sigmoid(x1)
plt.plot(x1, y1, color='purple', label='sigmoid')
plt.legend()

## ReLU
def ReLU(x):
    return np.maximum(0, x)  # ReLU函数的定义
x2 = np.arange(-10.0, 10.0, 0.1)
y2 = ReLU(x2)
plt.plot(x2, y2, color='orange', label='ReLU')
plt.legend()


## tanh
def tanh(x):
    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
x3 = np.arange(-10.0, 10.0, 0.1)
y3 = tanh(x3)
plt.plot(x3, y3, color='yellow', label='Taanh')
plt.legend()


## Leaky ReLU
def Leaky_ReLU(xx):
    return [x if x > 0 else 0.1 * x for x in xx]
x4 = np.arange(-10, 10.0, 0.1)
y4 = Leaky_ReLU(x4)
plt.plot(x4, y4, color='black', label='Leaky ReLU(alpha=0.1)')
plt.legend()

## ELU
def ELU(xx):
    return [x if x > 0 else 1 * (np.exp(x) - 1) for x in xx]
x5 = np.arange(-10.0, 10.0, 0.1)
y5 = ELU(x5)
plt.plot(x5, y5, color='green', label='ELU(alpha=1)')
plt.legend()

# silu
def SiLU(xx):
    return [x * (1 / (1 + np.exp(-x))) for x in xx]
x6 = np.arange(-10.0, 10.0, 0.1)
y6 = SiLU(x6)
plt.plot(x6, y6, color='red', label='SiLU')
plt.legend()

## Mish
def Mish(xx):
    return [x * tanh(np.log(1 + np.exp(x))) for x in xx]
def tanh(x):
    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
x7 = np.arange(-10.0, 10.0, 0.1)
y7 = Mish(x7)
plt.plot(x7, y7, color='pink', label='Mish')
plt.legend()

# 获得当前的axis
ax = plt.gca()
# 设置图像的上边、右边axis为无色
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 设置x轴坐标在下部
ax.xaxis.set_ticks_position('bottom')
# 设置x轴位于图像y=0处
ax.spines['bottom'].set_position(('data', 0))
# 设置x轴坐标在左部
ax.yaxis.set_ticks_position('left')
# 设置y轴位于图像x=0处
ax.spines['left'].set_position(('data', 0))
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【卷积神经网络】12、激活函数 的相关文章

  • mysql -n_mysql top n 问题

    日常工作中 经常要查询分组的前几名或查询数据的前几条记录 第5条到第十条 等 TOP N分析法就是通过TOP N算法从研究对象中得到所需的N个数据 并从排序列表中选取最大或最小的N个数据 这就是一个TOP N算法 mysql中用limit
  • (6/300)一阶线性非齐次常微分方程的通解

    一阶线性非齐次常微分方程的通解 首先应该认识方程的形式 dy dx P x y Q x 然后就来思考怎么去解这个方程了 我们最终希望是得到一个y f x 的形式 怎么解呢 先通过线性代数的知识进行引入 求AX b的通解 那么我们先求得A 0

随机推荐

  • MATLAB 信号处理仿真入门实验

    MATLAB 信号处理仿真入门实验 实验目的 熟悉 Matlab 工具的基本用法 掌握 Matlab 代码编写方法 理解序列的离散时间傅里叶变换 理解 DFT 结果的频谱能量泄露 理解 DFT 和 DTFT 的对应关系 理解信号加窗的作用
  • ReactNative入门(一)——环境搭建及第一个RN项目—HelloWorld

    ReactNative入门 本篇以及接下来的几篇有关RN的文章 是默认你对前端相关知识如Node React 以及原生移动端Android可以熟练使用的情况下 最起码达到了解会用的程度 为前提的 不然你就需要先去了学习前端 React为主
  • 图片加载框架-Picasso最详细的使用指南

    写在前面 Android 中有几个比较有名的图片加载框架 Universal ImageLoader Picasso Glide和Fresco 它们各有优点 以前一直用的是ImageLoader 做项目中的图片加载 由于作者宣布ImageL
  • 全国职业技能大赛云计算--高职组赛题卷⑤(容器云)

    全国职业技能大赛云计算 高职组赛题卷 容器云 第二场次题目 容器云平台部署与运维 任务2 基于容器的web应用系统部署任务 15分 任务3 基于容器的持续集成部署任务 15分 任务4 Kubernetes容器云平台部署与运维 15分 本任务
  • 目标检测算法部署网页web端2-点击按钮加载本地图像

    上一篇写了页面的html 目标检测算法部署网页web端1 这篇加个如何点击图像加载按钮 显示在页面上 效果如下 代码如下 b b
  • 【Three.js】第十二章 Materials 材质

    12 Materials 材质 介绍 材质用于为几何体的每个可见像素着色 决定每个像素颜色的算法属于着色器中编写的 编写着色器是 WebGL 和 Three js 最具挑战性的部分之一 但不要担心 Three js 有许多带有预制着色器的内
  • 005 python连接hive

    环境安装 hive hive 安装包配置 python配置hive环境pip install sasl pip install thrift pip install thrift sasl pip install PyHive 注 安装sa
  • CVE-2021-31956提权漏洞分析与利用

    声明 以下内容 来自先知社区的任意门作者原创 由于传播 利用此文所提供的信息而造成的任何直接或间接的后果和损失 均由使用者本人负责 长白山攻防实验室以及文章作者不承担任何责任 漏洞介绍 CVE 2021 31956是发生在NTFS sys中
  • 如何使用Git从网站上拉代码文件

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 Github项目 二 复制文件下载链接 三 将文件下载到我们自己的文件夹中 总结 前言 很多时候我们想从Github网站找到一个想要的项目文件 想要下载下
  • antdv + moment DatePicker日期组件默认显示当天、当周、当月

    一 当天 两种形式 1 非表单
  • 黑马程序员Javaweb学习笔记01

    该博客主要记录在学习黑马程序员Javaweb过程的一些笔记 方便复习以及加强记忆 系列文章 JavaWeb学习笔记01 BS架构 Maven Tomcat Servlet JavaWeb学习笔记02 request和response Jav
  • HY2120的保护板和充电方案整套电路图

    HY2102保护板电路和9V 20V输入的锂电池充电芯片PW4203电路 HY2102保护板电路和5VV输入的锂电池充电芯片PL7501C电路
  • 已解决Win11报错 OSError: [WinError 1455] 页面文件太小,无法完成操作。

    作者主页 爱笑的男孩 的博客 CSDN博客 深度学习 活动 python领域博主爱笑的男孩 擅长深度学习 活动 python 等方面的知识 爱笑的男孩 关注算法 python 计算机视觉 图像处理 深度学习 pytorch 神经网络 ope
  • GD32ADC+DMA定时电压采集(备份)

    初始化了一个串口 初始化了一个adc 一个dma 一个定时器 一个led 这一套搞懂算是基本入门了呀 include gd32f4xx h include systick h include
  • 2)Cadence design entry hdl Tutorial原理图入门

    从最基本的步骤 新建项目开始 1 1项目的组成 参考库是包含原理图符号 sym 的库 显示在原理图上的元件 代表实际的器件 包含封装型号 a Local libraries design libraries 本地库 设计库 项目自动生成的
  • 编程经验分享(寻找map中的max与min)——力扣·百战炼磨(一)

    2021 4 14 力扣第47场双周赛 虚拟竞赛 第三题 所有子字符串美丽值之和 力扣 1781 以下经验来自于对该题目的解决 一个字符串的 美丽值 定义为 出现频率最高字符与出现频率最低字符的出现次数之差 比方说 abaacc 的美丽值为
  • 编辑器mavon-editor离线使用

    cnd部分 可与运维人员商量一起配置 vue2的使用 1 1在public文件夹下面 放入编辑器的全部文件 1 2引入 1 2 1script下面引入 import Vue from vue import mavonEditor from
  • C# 基础知识 (五).变量类型和字符串处理

    这篇文章是阅读 C 入门经典 Beginning C 书籍里面的内容 作者Karli Watson 主要包括自己缺乏的一些C 基础知识和在线笔记使用 文章主要包括C 简单变量类型和复杂变量类型 命名规则 隐式转换和显示转换 变量字符串处理等
  • CNN卷积神经网络

    CNN卷积神经网络 前言 一 相关概念 卷积 彩色图像卷积 池化 padding Dropout正则化 局部归一化 二 经典网络 AlexNet VGGNet介绍 GoogLeNet ResNet介绍 resnet解决方案 结果 三 实操一
  • 【卷积神经网络】12、激活函数

    文章目录 一 Tanh 二 Sigmoid 三 ReLU 四 Leaky ReLU 五 ELU 六 SiLU 七 Mish 本文主要介绍卷积神经网络中常用的激活函数及其各自的优缺点 最简单的激活函数被称为线性激活 其中没有应用任何转换 一个