机器学习-sigmoid函数和relu函数-个人解读

news2024/9/25 19:16:04

机器学习-sigmoid函数和relu函数-个人解读

今天博主来解读一下sigmoid函数和relu函数,我觉得很多同学可能都知道这两个函数是什么,他们干什么的,他们有什么用,但是呢?我想这两个常用的激活函数内在的本质,很多同学应该不是很理解,今天博主就给出自己的一些解读。

首先,我们先谈谈激活函数是什么:

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。
看下面一张图,图中博主标红的部分就是激活函数再一个单神经元的神经网络中的部分,它呢一般再深度学习中是对神经元的输出进行处理。
注:激活函数不仅仅再神经网络中应用,机器学习一些传统算法也很常用,再卷积神经网络中则是对卷积核的卷积输出进行处理。
在这里插入图片描述

然后,我们肯定要知道激活函数干什么的?(作用)
第一,读神经网络加入非线性激活函数后,由神经网络的万能定理,神经网络就可以拟合任何一个函数。也就是增强网络的表示能力。(下一个实验就是万能定理的实验)
第二,激活可以防止梯度消失、梯度爆炸且加快模型学习速度。

下面我们就介绍两种最常见的激活函数sigmoid函数和relu函数,并结合这两个函数解释一下为什么激活函数可以由上面两点作用。
首先是sigmoid函数:
数学表达式:
在这里插入图片描述
数学图像:
在这里插入图片描述
这里,我给出大家分析激活函数的方法,如何分析一个激活函数?
看下面几个激活函数的特征:
(1)看他的取值范围
(2)看他的对称性
(3)看他的导函数曲线(或者说看他的函数陡峭性)

其中1和3一般是最重要的。

大家可以看到sigmoid的取值空间是多少?
(0,1)
所以因为sigmoid这一个特性,sigmoid经常被用于作为概率转化,不过这种转化一般适用于二分类,大家可以思考一下这个问题,多分类一般用softmax,另外呢如果是做概率转化,则经常用于最后一步对全连接层的输出进行处理。

然后呢,看他的函数对称性,大家可以发现sigmoid是关于(0,0.5)对称的,这恰好满足了它作为二分类概率转化的一个重要特征,概率转化激活函数必须是对称的,这符合现实需求,比如我们最终对特征处理后,因为一般样本提取过的特征,影响性事线性的,比如我们给了一个输入X,经过神经网络表征学习最后变成了X’,X‘经过全连接层的线性转化,变成了一个值,然后再经过sigmoid函数处理,我们知道,这个值可能为负,可能为正,为负则sigmoid处理后输出小于0.5,则判断为负样本,为正则sigmoid处理后输出大于0.5,判断为正样本。
那我们知道总不能输入一个值1,一个值-1,经过激活函数处理,变成了0.4和0.9吧,一般我们认为我们表征学习后的特征影响性是符合线性情况的。

然后是导函数曲线,导函数曲线其实是最重要的,这里可以发现sigmoid函数基本上是x在(-5,5)上导函数才稍微大一点,其他情况但函数基本为0,那这个有什么用呢?
举个例子:
一个二分类问题
加入现在我们由5个样本输入模型,经过网络层的处理,最后在经过sigmoid函数处理之前的数值输出分别为:
-1,1,3,100,-100,
五个样本真实的标签则是0,1,1,1,0
注:上面五个值经过sigmoid函数处理处理后,为分类为1的概率。

大家可以发现,这五个数值经过sigmoid处理后,可以发现100,-100对应的导数值基本趋于0,100输出的概率激活为1了。也就是对于这个样本模型输出效果已经很好了,那么导数正好趋于0,也就是这个样本不应该对模型有大的影响。-100经过sigmoid函数处理输出几乎为0了,效果也很好,也不需要根据这个样本更新模型了,但是-1,1,3,这三个值对应的概率还不是最好的接近0,1,1,正好倒数值也比较大,用于对模型进行较大程度更新。

所以大家如果很仔细的看我上面这个例子,就会发现sigmoid函数的精髓,对于模型已经分类效果不错的样本,sigmoid不会随意根据这个样本调整模型,对于模型分类效果不好的样本,采用sigmoid函数则会对模型进行较大程度的调整。这种模型调整策略是很棒的。且sigmoid对称性特性和0-1区间的取值,是的其可以用于较好的处理概率问题。
但是也可以发现sigmoid函数很容易发生梯度消失,在只要输入的值不在(-5,5)之间,几乎就是梯度为0了,这也就是为什么隐藏层不加入sigmoid函数,因为太容易发生梯度消失了,但是可以在全连接层使用这个函数。

对于sigmoid函数,其实博主希望各位能好好看看上面这个例子,sigmoid函数可以说因为自己的函数特征有了其优点,也有了其缺点。

下面我们讲一下relu函数:
数学表达式:
在这里插入图片描述
那么函数图像也很简单了:
在这里插入图片描述

分析激活函数,还是先看它的下面三个特性:
(1)看他的取值范围
(2)看他的对称性
(3)看他的导函数曲线(或者说看他的函数陡峭性)

我们可以看到,它的取值范围是【0,正无穷】
而且根据输入激活函数随机性的原理我们可以知道,经过这个激活函数处理,有一般的概率输出为0,由反向传播的原理知道,经过激活函数输出为0,那么这激活函数在这次样本输入中其梯度就为0,也就是不会被更新,且该神经元的输出也不会对最终结果再有影响。这就形成了relu的稀疏性,就是指,relu处理后,由一般的概率会使当前神经网络层一半的的神经元失灵。很多同学可能就问了,哎呀,为啥要让他们失灵啊,那我们直接设置一半不就好了。

为什么relu要那么做呢,第一,神经网络学习能力是很强的,所以很容易过拟合,那么relu函数就可以一定程度解决这种问题。
第二,就是relu函数的真正精髓,每次训练会随机的让让很大一部分神经元失灵,只更新部分神经元,每次更新的部分神经元是随机的,在这种情况下,每次被更新的神经元组合是很复杂的,相同性很低,那么就可以有效的让神经元独立学习,孤军奋战,不那么被其他神经元影响,做出自己的有利贡献。博主觉得这才是relu函数的精髓,这可以大大提高模型的学习能力。

然后relu函数没有对称性就不看了,所以relu函数不能用于全连接层之后,都是用于隐藏层之后,对神经元学习有帮助。

然后再看其导函数,x>0导数都为1,不管x取什么值,只要x>1,否则倒数为0,x<=0也不用考虑,输出为0,神经元就失灵了,所以这个特性就是说明relu函数是为了神经元更新参数专门设置的,其不易发生梯度消失。只要输出有效,梯度就为1。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/738600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ai数字人——为写实而生

在当今数字化时代&#xff0c;人工智能技术正成为推动各行各业发展的重要驱动力。企业需要创新的解决方案&#xff0c;以提高效率、降低成本、增强客户体验并应对市场竞争。Ai数字人作为数字化转型的关键组成部分&#xff0c;具备强大的潜力和多样化的应用场景。 根据市场研究…

dbeaver配置SQL server连接

一、需要java jdk环境&#xff0c;我用的比较新 新的&#xff0c;那坑可就来了&#xff0c;先记着 cmd中 java --version出现版本号代表安装成功 二、dbeaver新建连接SQL server 点击测试连接会自动下载驱动&#xff0c;这个时候重点报错就开始出现了 错误一&#xff1a;DBea…

【已解决】matrix contains invalid numeric entries,记录bug修改

文章目录 摘要原因解决办法图像分类网络AlexNetVGGNetGooLeNet系列ResNetDenseNetSwin TransformerMAECoAtNetConvNeXtV1、V2MobileNet系列MPViTVITSWAEfficientNet系列MOBILEVITEdgeViTsMixConvRepLKNetTransFGConvMAEMicroNetRepVGGMaxViTMAFormerGhostNet系列DEiT系列MetaFo…

CMOS图像传感器——三星ISOCELL HP2技术解析

在之前有写文章介绍三星在2022年技术日活动分享的包括图像传感器在内的各种系统相关技术的最新改进和未来愿景,可以回顾下看看。 三星ISOCELL——2022 改进与展望_沧海一升的博客-CSDN博客三星ISOCELL最新改进和未来发展趋势https://blog.csdn.net/qq_21842097/article/detai…

Stable Diffusion AI 绘画入门指南

Stable Diffusion AI 绘画入门指南 市面上用的最多的AI绘画工具是 Stable-Diffusion&#xff08;SD&#xff09; 和 Midjourney&#xff08;Mid&#xff09;&#xff0c;SD是在本地运行的服务&#xff0c;开源&#xff0c;门槛高&#xff0c;但自控性极高。而Mid作为在线的服务…

Redis——基础篇(包含redis在云服务上的docker化安装和连接以及常用命令)

初识Redis Redis为键值型数据库&#xff0c;数据以键值形式存储。没有表&#xff0c;没有约束。 认识NoSQL mysql就是典型的关系型数据库(SQL)。 目的都是数据的增删改查&#xff0c;但数据存储方式不一样。 关系型和非关系型在结构上有差异 关系型的结构一般定好后就很少修…

基于 FFmpeg 的跨平台视频播放器简明教程(六):使用 SDL 播放音频和视频

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程&#xff08;一&#xff09;&#xff1a;FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程&#xff08;二&#xff09;&#xff1a;基础知识和解封装&#xff08;demux&#xff09;基于 FFmpeg 的跨平台视频…

【unity小技巧】委托(Delegate)的基础使用和介绍

文章目录 一、前言1. 什么是委托&#xff1f;2. 使用委托的优点 二、举例说明1. 例12. 例2 三、案例四、泛型委托Action和Func1. Action委托2. Func委托 五、参考六、完结 一、前言 1. 什么是委托&#xff1f; 在Unity中&#xff0c;委托&#xff08;Delegate&#xff09;是一…

2FRE-10B-35-G24电比例调速阀控制器

2FRE-06B-20-G24、2FRE-10B-35-G24、2FRE-10B-50-G24、2FRE-16B-80-G24、2FRE-16B-115-G24、2FRE-16B-160-G24电比例调速阀&#xff0c;通过给定电信号&#xff0c;控制阀出口流量大小&#xff0c;并且采用压力补偿原理&#xff0c;保证输出流量大小不受负载压力影响维持恒定;该…

低代码平台实用吗?有哪些大型企业在用低代码?

一、目前正在使用低代码平台的企业有哪些&#xff1f; &#xff08;例举一些各行业规模较大的企业&#xff09; 制造行业&#xff1a;施耐德电气、吉利汽车、科大能通、伟星集团、远东控股、一汽大众、老板电器、双菱电梯、君乐宝。 建筑行业&#xff1a;中国交建、筑福集团…

【C++STL】“vector“用法 入门必备 超详细

vector用法 什么是vector&#xff1f;vector的使用vector的定义(构造函数)vector iterator 的使用迭代器演示范围for vector 空间增长扩容机制 vector 的增删查改assignvector 迭代器失效问题。 &#x1f340;小结&#x1f340; &#x1f389;博客主页&#xff1a;小智_x0___0x…

关于将Leetcode上代码直接复制到自己环境中的问题

实例代码&#xff08;不考虑代码的优劣性&#xff09;&#xff1a; 注&#xff1a;我用的是一个在线平台的编译器 Problem1 NameError&#xff1a;name ‘List’ is not defined 解决方法&#xff1a;添加下面代码&#xff1a; from typing import ListProblem2 TypeError…

Android Glide预加载preload ,kotlin

Android Glide预加载preload ,kotlin val imageView findViewById<ImageView>(R.id.image_view)Glide.with(this).asBitmap().load(image_file.path).signature(ObjectKey(image_file.path)).addListener(object : RequestListener<Bitmap> {override fun onLoadF…

抓取唯美图库(BeautifulSoup)

使用BeautifulSoup 1、拿到主页面的源代码&#xff0c;然后提取到子页面的简介地址&#xff0c;href 2、通过href拿到子页面的内容。从子页面中找到导图片的下载地址 img -> src 3、下载图片 import requests from bs4 import BeautifulSoupurlhttps://www.umei.cc/bizhi…

qt 闹钟实现

实现一个闹钟 自定义时间 按下开始后 开始计时&#xff0c;结束计时会播报语音 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> #include <QTimerEvent> #include <QDateTime> #include <QTime> #include …

【Leetcode】37.解数独(困难)

一、题目 1、题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空格内已填入了数字…

UVM中测试用例的启动

一、命令行指定 ./simv -l simv.log UVM_TESTNAMEmy_case0 其中 UVM_TESTNAMEmy_case0 中的my_case0就是测试用例的名字 二、文件结构 在test文件夹中my_case0.sv对应case的名字 三、文件说明 3.1 my_case0.sv 其中其他都是写死的&#xff0c;只有红框的部分根据具体的代码…

温度反转效应Temperature Inversion(载流子迁移率与过阈值电压 谁占主导)

In general, as temperature increases, the delay of standard cells increases because of mobility degradation at higher temperatures.    But in lower technology nodes the impact of temperature on the delay of the cell is inverse. In lower nodes, the delay …

上海亚商投顾:沪指维持震荡 光伏等新能源赛道走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 大小指数今日集体反弹&#xff0c;沪指高开后维持震荡走势&#xff0c;创业板指盘中涨超2%&#xff0c;午后涨幅有…

ts开发npm依赖包(插件)demo

序&#xff1a;涉及如下几个点 1、用js开发依赖包&#xff08;换个说法&#xff1a;你在开发第三方的\node_modules的插件了&#xff09; 2、用ts开发依赖包 3、解决本地开发的npm包重命名后不生效的问题 一、js版&#xff08;简单的&#xff09; 你直接在你的项目的\node_mod…