人工智能与神经网络-激活函数

2023-11-02

人工神经元的工作原理,大致如下:  

上述过程的数学可视化过程如下图:

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。

下面介绍一下常用的几个激活函数:

Sigmoid 激活函数

sigmoid的偏导数 g'(z)=a(1-a)

在什么情况下适合使用 Sigmoid 激活函数呢?

  • Sigmoid 函数的输出范围是 0 到 1。由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化;

  • 用于将预测概率作为输出的模型。由于概率的取值范围是 0 到 1,因此 Sigmoid 函数非常合适;

  • 梯度平滑,避免「跳跃」的输出值;

  • 函数是可微的。这意味着可以找到任意两个点的 sigmoid 曲线的斜率;

  • 明确的预测,即非常接近 1 或 0。

Sigmoid 激活函数有哪些缺点?

  • 倾向于梯度消失;

  • 函数输出不是以 0 为中心的,这会降低权重更新的效率;

  • Sigmoid 函数执行指数运算,计算机运行得较慢。

Tanh / 双曲正切激活函数

tanh的偏导数g'(z)=1-a^2

tanh 是一个双曲正切函数。tanh 函数和 sigmoid 函数的曲线相对相似。但是它比 sigmoid 函数更有一些优势

  • 首先,当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。二者的区别在于输出间隔,tanh 的输出间隔为 1,并且整个函数以 0 为中心,比 sigmoid 函数更好;

  • 在 tanh 图中,负输入将被强映射为负,而零输入被映射为接近零。

在一般的二元分类问题中,tanh 函数用于隐藏层,而 sigmoid 函数用于输出层,但这并不是固定的,需要根据特定问题进行调整。

ReLU 激活函数

ReLU的偏导数为:

g'(z)= 0 (z<0)

g'(z)= 1 (z>=0)

ReLU 函数是深度学习中较为流行的一种激活函数,相比于 sigmoid 函数和 tanh 函数,它具有如下优点:

  • 当输入为正时,不存在梯度饱和问题。

  • 计算速度快得多。ReLU 函数中只存在线性关系,因此它的计算速度比 sigmoid 和 tanh 更快。

当然,它也有缺点:

  1. Dead ReLU 问题。当输入为负时,ReLU 完全失效,在正向传播过程中,这不是问题。有些区域很敏感,有些则不敏感。但是在反向传播过程中,如果输入负数,则梯度将完全为零,sigmoid 函数和 tanh 函数也具有相同的问题;

  2. 我们发现 ReLU 函数的输出为 0 或正数,这意味着 ReLU 函数不是以 0 为中心的函数。

relu激活函数为分段线性函数,为什么会增加非线性元素?

我们知道激活函数的作用就是为了为神经网络增加非线性因素,使其可以拟合任意的函数。那么relu在大于的时候就是线性函数,如果我们的输出值一直是在大于0的状态下,怎么可以拟合非线性函数呢?

relu是非线性激活函数。


为什么relu这种“看似线性”(分段线性)的激活函数所形成的网络,居然能够增加非线性的表达能力:
1、首先什么是线性的网络,如果把线性网络看成一个大的矩阵M。那么输入样本A和B,则会经过同样的线性变换MA,MB(这里A和B经历的线性变换矩阵M是一样的)。
2、的确对于单一的样本A,经过由relu激活函数所构成神经网络,其过程确实可以等价是经过了一个线性变换M1,但是对于样本B,在经过同样的网络时,由于每个神经元是否激活(0或者Wx+b)与样本A经过时情形不同了(不同样本),因此B所经历的线性变换M2并不等于M1。因此,relu构成的神经网络虽然对每个样本都是线性变换,但是不同样本之间经历的线性变换M并不一样,所以整个样本空间在经过relu构成的网络时其实是经历了非线性变换的。
3、还有一种解释就是,不同样本的同一个feature,在通过relu构成的神经网络时,流经的路径不一样(relu激活值为0,则堵塞;激活值为本身,则通过),因此最终的输出空间其实是输入空间的非线性变换得来的。
4、更极端的,不管是tanh还是sigmoid,你都可以把它们近似看成是分段线性的函数(很多段),但依然能够有非线性表达能力;relu虽然只有两段,但同样也是非线性激活函数,道理与之是一样的。
5、relu的优势在于运算简单,网络学习速度快

Softmax

Softmax 是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为 K 的任意实向量,Softmax 可以将其压缩为长度为 K,值在(0,1)范围内,并且向量中元素的总和为 1 的实向量。

Softmax 与正常的 max 函数不同:max 函数仅输出最大值,但 Softmax 确保较小的值具有较小的概率,并且不会直接丢弃。我们可以认为它是 argmax 函数的概率版本或「soft」版本。

Softmax 函数的分母结合了原始输出值的所有因子,这意味着 Softmax 函数获得的各种概率彼此相关。

Softmax 激活函数的主要缺点是:

  1. 在零点不可微;

  2. 负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人工智能与神经网络-激活函数 的相关文章

随机推荐

  • C++入门(1)简单变量和数据类型

    C 入门 1 简单变量和数据类型 最近在看Larry Ullman Andreas Signer 写的 写给大家看的C 书 做了一些笔记跟大家分享 希望会有所帮助 输入输出头文件 include
  • 编程教育已经走在全球化的路上

    据格物斯坦小坦克所知 在我国 现在仍有很多人觉得编程可有可无 无关考试升学 无关未来与就业 但在国外 编程教育早早便进入校园了 他们对编程的重视程度远超出我们的想象 在国外 少儿编程教育发展程度非常高 全球很多发达国家在基础教育中设立了编程
  • python读取excel生成柱状图

    可以使用 Python 的第三方库来读取 Excel 文件 比如 pandas openpyxl 等 这些库可以方便地将 Excel 中的数据读取出来并存储到一个数据框中 pandas 中的数据结构 然后使用 matplotlib 库来生成
  • 数组16--矩阵中的路径

    数组16 矩阵中的路径 jz65 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 请设计一个函数 用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径 路径可以从矩阵中的任意一个格子开始 每一步可以在矩阵中向左 向右 向
  • git分支管理

    git分支管理 1 主分支 Master 主分支 默认不会在该分支上进行开发 只会将稳定没有bug的代码合并到该分支上 2 开发分支 Develop 主要的开发分支 在master分支的基础上创建而来 该分支主要是保持最新的代码 用于测试
  • PHP制作验证码

    学习PHP 它的函数库太强大了 就觉得很神奇 创建验证码也是很有意思 记录一下吧
  • 【数据结构】顺序表---C语言版(数据结构开篇小菜,全网最详细!小白看一遍就学会!!!)

    文章目录 一 前言 1 什么是数据结构 二 顺序表的概念 线性表 1 什么是线性表 2 顺序表与数组的区别 三 顺序表详解 静态顺序表 动态顺序表 创建动态顺序表 接口1 定义结构体SL 接口2 初始化结构体 SLInit 接口3 检查结构
  • 我也谈谈闭包

    我也谈谈闭包 今天第一次在实际运用中遇到闭包的问题 我要给几个视频video增加鼠标悬停自动播放的功能 刚开始时 我只有一个video 代码如下 HTML li li
  • Matlab学习笔记(1)--Matlab基础矩阵运算学习

    最近接触并学习了Matlab 充分感受到了Matlab的强大 正所谓好记忆不如烂笔头 所以在此写一下学习笔记 以便后续温习 因为Matlab是一个十分重实践的软件 所以学习笔记我打算不按照常规写法来进行 而是通过作者在学习中做的练习题来进行
  • webpack5 学习(三)—— 管理资源:加载 images

    在 webpack 5 中 可以使用内置的 Asset Modules 来处理图像资源 webpack config js 修改webpack config js const path require path module exports
  • SoapUI工具---webservice接口(带图详细步骤)

    目录 首先 找一个接口 1 WEB服务 2 WSDL 界面 3 getMobileCodeInfo界面 SoapUI工具调用 1 打开界面 2 添加接口 3 执行接口 4 创建测试用例 5 添加断言 6 运行结果 编辑 首先 找一个接口 1
  • VS2010+opencv msvcprtd.lib(MSVCP90D.dll) : error LNK2005 error LNK2019等错误

    VS 2010 Opencv 遇到了msvcprtd lib MSVCP90D dll error LNK2005 error LNK 2019等多个错误 刚开始没注意 以为是opencv的库添加的有问题 仔细检查了之后发现库添加的没有问题
  • 人工智能学习(五)人工智能三巨头

    他们分别是杰弗里 辛顿 Geoffrey Hinton 约书亚 本吉奥 Yoshua Bengio 和扬 勒丘恩 Yann LeCun 这三个人通常被大众称为 深度学习三巨头 为什么要介绍他们呢 因为人工智能如今能够发展地如此迅猛 他们几个
  • 注意今晚停机更新

    注意今晚停机更新 LOL将在6月13日凌晨1点开始全区停机维护 请注意 6月13日0点将关闭排位赛入口 不会影响正在进行中的排位赛 发布13 12版本 预计停机时间为1 00 12 00 对于在停机期间结束的活动 其实际结束时间也将提前至停
  • MFC快速入门

    1 新建 MFC 2 直接进入框图界面 资源文件 rc Dialog 3 给控件添加消息处理函数 选中控件 右键 添加事件处理程序 跳转函数 写函数 4 在消息处理函数中添加自定义功能 在我们使用任意一种方法添加了消息处理函数以后 都只能得
  • unity3D 《见缝插针》--得分显示、结束动画、以及游戏的重置

    一 得分显示 1 首先在scene新建一个Text的UI组件 它在Canvas面板下 2 进行缩放 3 为Canvas添加脚本 代码如下 public static int scoreValue public Text scoreText
  • 【Android】常用对话框大全(三)自定义Dialog的三种方式(Theme,PopupWindow,Dialog)

    Android Dialog自定义的方式有很多 例如 Theme Dialog PopupWindow AlertDialog View等方式 Android常用对话框系列文章 Android 常用对话框大全 一 Android Dialo
  • [毕业设计]LaTeX论文模板排版

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • matplotlib—画正弦、余弦函数图

    一 导入模块 import matplotlib pyplot as plt import numpy as np plt rcParams font sans serif SimHei 用于正常显示中文标签 plt rcParams ax
  • 人工智能与神经网络-激活函数

    人工神经元的工作原理 大致如下 上述过程的数学可视化过程如下图 激活函数 Activation Function 是一种添加到人工神经网络中的函数 旨在帮助网络学习数据中的复杂模式 类似于人类大脑中基于神经元的模型 激活函数最终决定了要发射