吴恩达deeplearning.ai:sigmoid函数的替代方案以及激活函数的选择

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏


文章目录

  • 引入——改进下需求预测模型
  • ReLU函数(整流线性单元 rectified linear unit)
  • 线性激活函数(linear activation function)
  • 激活函数的选择
  • 实现方式
  • 为什么需要激活函数


到现在为止,我们一直在隐藏层和输出层使用sigmoid函数作为激活函数,之所以我们这样做是因为我们创建了大量逻辑回归单元,并且要将它们串联起来。但在很多情况下,你使用其它的激活函数会使你的神经网络更加强大。

引入——改进下需求预测模型

让我们先看看之前的博客中见到过的需求预测例子:
在这里插入图片描述
在之前,我们将awareness这个神经元看作是一个逻辑回归,即要么意识到,要么没有意识到。但在很多情况下,awareness的情况并不会这么绝对,它们可能有些了解但不多,有可能很了解,也有可能已经开始病毒化传播了,如果此时仍然使用sigmoid函数就会降低神经网络模型的准确性。所以,我们不如改变为预测awareness的概率为多大,甚至是从0到无穷大的一个值(因为要考虑到病毒化传播的几何级增长),从而可以更精确地调整模型。
之前我们采用的sigmoid函数的数学公式为:
a 2 [ 1 ] = g ( w 2 [ 1 ] + b 2 [ 1 ] ) g ( z ) = 1 1 + e − z a_2^{[1]}=g(w_2^{[1]}+b_2^{[1]})\\ g(z)=\frac{1}{1+e^{-z}} a2[1]=g(w2[1]+b2[1])g(z)=1+ez1
通过数学上的分析可以知道,g(z)一定是一个(0,1)之间的数,因此无法满足我们对于改变模型的需求。
在这里插入图片描述

ReLU函数(整流线性单元 rectified linear unit)

事实上,为了满足函数取值为0到无限大,我们可以采取非常简单的函数就是relu函数,数学公式为:
g ( z ) = m a x ( 0 , z ) g(z)=max(0,z) g(z)=max(0,z)
在这里插入图片描述
通俗点解释这个函数就是,如果z大于0,那么就是z本身,否则就是0。

线性激活函数(linear activation function)

和ReLU函数类似,只是允许了小于零的部分存在,在某些地方,可能会有人称呼它为没有使用激活函数(no activation function)(因为就是它本身,和没用一样),数学表达式为:
g ( z ) = z g(z)=z g(z)=z
以上三个可以说是迄今为止神经网络最常用的三个激活函数,在之后的博客中我们将讨论第四种激活函数Softmax,通过这些激活函数,你能构建功能强大的神经网络。但是问题来了,我们什么时候该使用何种激活函数呢。

激活函数的选择

事实上,关于激活函数的选择,只要你观察了特征向量X和标签Y,那么对于激活函数的选择将会十分地自然。
它主要取决于你输出层的标签。
在这里插入图片描述
具体来说,如果你正在处理Y为布尔值的问题,即二分类问题时,通常选择的就是sigmoid函数,原理在之前的章节中提到过,这也是非常自然的想法。
但如果你正在解决一些回归相关问题,那么你可能会选择其它的激活函数,例如股票预测,就建议使用线性激活函数,因为你对于输出值的范围要求在负无穷到正无穷之间。
最后,如果y只能取非负值,例如房子的价格等(总不能倒贴吧),就可以使用ReLU作为激活函数。
事实上,ReLU是神经网络中迄今为止使用的最广泛的激活函数。尽管我们早期使用了很多的sigmoid函数,但现在ReLU的应用比sigmoid多多了(除非你要解决的单纯是二分类问题)。
这是为什么呢?第一,ReLU的运算比sigmoid快多了,ReLU只需要一步判断便能得出结果,但是sigmoid既要求幂,又要取反等等。第二个重要原因是ReLU仅仅在图形的一个部分变平,而sigmoid有两个部分变平,一个函数在很多地方都很平时,会导致你在使用梯度下降的速度真的很慢;这也很好理解,假设你在预测一个二分类问题,结果输出的结果为0.8和0.9对于代价函数来说带来的修正都很小,而且越靠近正确答案时,这个修正越小,从而使速度降低了。
在这里插入图片描述
在下面这张w,b和成本函数的图中也可以看出,图中的很多地方都非常平坦,这意味着斜率近乎于0,这会阻碍梯度下降。而ReLU函数就没有这个问题。
在这里插入图片描述
下面补充下激活函数在代码中的实现方式

实现方式

就是在Dense函数中修改参数:

from dense.keras.layers import Dense
model = Sequential([Dense(units=25, activation = 'relu'),#layer1Dense(units=15, activation = 'relu'),#layer2Dense(units=1, activation = 'sigmoid')#layer3])

当然在别的情况下也有别的激活函数:

Dense(units=x, activation = 'linear')

激活函数的种类还有很多,例如tan h函数、LeakyReLU函数、swish函数等,这些函数一般使用范围就没那么广,可以自己了解。

为什么需要激活函数

在这里插入图片描述
还是这个需求预测模型,如果我们采用线性激活函数会如何呢?事实证明,这个神经网络将会变得和线性回归网络没有什么不同,所以这会破坏使用神经网络模型的全部目的。因为它将无法拟合比线性回归更加复杂的模型。让我们举个更简单的例子吧:
在这里插入图片描述
假设一个只有一个隐藏层,一个最终输出层,且每层只有一个神经元,特征向量也仅仅含有一个特征,这估计是最最最简单的神经网络了,假设所有的激活函数仍然使用线性激活函数,那么计算过程如上,那么 a [ 2 ] a^{[2]} a[2]就是上图所计算出来的线性函数,那么还不如使用线性回归模型呢。
如果你学过线性代数,那么你会知道这个结果源于:线性函数的线性组合仍然是线性函数。那么无论如何都无法创造出更加复杂的模型。
所以,对于任何一个神经网络而言,只使用线性激活函数那么模型的计算结果仍然等同于线性回归的结果。对于大部分神经网络,使用ReLU就足够了。
这篇博客把激活函数有关的内容详细介绍了一下,下一博客将介绍有关多分类问题的内容。
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

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

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

相关文章

【MATLAB】 LMD信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码,请转文末观看代码获取方式~ 展示出图效果 1 LMD分解算法 LMD (Local Mean Decomposition) 分解算法是一种信号分解算法,它可以将一个信号分解成多个局部平滑的成分,并且可以将高频噪声和低频信号有效地分离出来。LMD 分解算…

【IDEA】java 项目启动偶现Kotlin 版本问题 error:Kotlin:module was

一、问题描述: error:Kotlin:module was compiled with an incompatible version of kotlin the binary version of its metadata is二、问题原因: jar包版本冲突 三、解决方式: 1、Rebuild Project(推荐☆) 重新构…

【Spring Cloud】高并发带来的问题及常见容错方案

文章目录 高并发带来的问题编写代码修改配置压力测试修改配置,并启动软件添加线程组配置线程并发数添加Http取样配置取样,并启动测试访问message方法观察效果 服务雪崩效应常见容错方案常见的容错思路常见的容错组件 总结 欢迎来到阿Q社区 https://bbs.c…

Vue+SpringBoot打造高校实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

Linux浅学笔记04

目录 Linux实用操作 Linux系统下载软件 yum命令 apt systemctl命令 ln命令 日期和时区 IP地址 主机名 网络传输-下载和网络请求 ping命令 wget命令 curl命令 网络传输-端口 进程 ps 命令 关闭进程命令: 主机状态监控命令 磁盘信息监控&#xff1a…

el-table样式问题:如何修改element-ui表格中按钮悬浮显示但是被el-table溢出隐藏的问题?

最近在写elment-ui样式表格中遇到了溢出隐藏的问题 修改前 修改后 是由于el-table__body-wrapper为 overflow:hidden导致的 解决方式: .el-table__body-wrapper {overflow: visible !important; } //或者 /deep/.el-table__body-wrapper {overflow: v…

服务器防漏扫

什么是漏扫? 漏扫是漏洞扫描的简称。漏洞扫描是一种安全测试方法,用于发现计算机系统、网络或应用程序中的潜在漏洞和安全弱点。通过使用自动化工具或软件,漏洞扫描可以检测系统中存在的已知漏洞,并提供相关的报告和建议&#xf…

超详细的Python中与迭代相关的函数

下面要介绍的enumerate、range、zip、reversed、sorted属于Python内置的函数或者类别,返回的对象都可通过迭代方法访问。 一、enumerate函数 1.语法:enumerate(iterable, start0) 1)该函数Python 2.3. 以上版本可用,2.6 添加 start 参数&a…

基于Springboot + Vue 母婴商城系统

末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…

基于Java SSM框架实现家庭食谱管理系统项目【项目源码+论文说明】

基于java的SSM框架实现家庭食谱管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个家庭食谱管理系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论…

自定义神经网络一之Tensor和神经网络

文章目录 前言Tensor神经网络深度神经网络DNN卷积神经网络CNN卷积神经网络有2大特点 循环神经网络RNN残差网络ResNetTransformer自我注意力机制并行效率 总结 前言 神经网络是AI界的一个基础概念,当下火热的神经网络例如RNN循环神经网络或者CNN卷积神经网络&#x…

WLAN 无线局域网、802.11

目录 1 无线局域网的组成 1.1 IEEE 802.11 关联 (association) 建立关联的两种方法 1.2 移动自组网络 无线传感器网络 WSN 无线传感器网络主要的应用领域 2 802.11 局域网的物理层 802.11 的物理层的几种实现方法 1 无线局域网的组成 无线局域网 WLAN (Wireless Lo…

Java+SpringBoot+Vue+MySQL:疫情隔离酒店管理的全面技术解决方案

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

断电延时继电器 电源监视继电器 导轨安装 HJZS-E002 AC220V 2S

HJZS-E系列断电延时继电器 系列型号: HJZS-E202断电延时继电器 HJZS-E002断电延时继电器 一 应用 用于直流或交流操作的各种保护和自动控制的装置中,用以增加触点数量。 二 安装结构 导轨安装9壳体结构,具体尺寸参阅外型尺寸图。 三 主要…

Python及Pydev调试程序传递参数方法的实践

在Python中,可以使用sys.argv来获取命令行参数。下面是一个示例的Python脚本,展示了如何通过命令行传递参数并打印输出: import sys# 判断是否有传入参数 if len(sys.argv) > 1:# 获取第二个参数(索引为1)param s…

【机器人学导论笔记】三、操作臂正运动学

3.1 概述 操作臂正运动学研究操作臂的运动特性,主要涉及与运动有关的几何参数和时间参数。本章中,只研究静止状态下操作臂连杆的位置和姿态。 处理这些复杂的几何参数需要一些步骤:首先需要在操作臂的每个连杆上分别固接一个连杆坐标系&…

SQL注入之order by脚本盲注

一、环境 还是用上次搭建的sql-labs靶机环境 搭建sql注入环境 二、什么是order by盲注 在有的时候我们进行sql注入时,源码的查询语句后面为order by; 众所周知,order by 后面接的字段或者数字不一样,那么这个数据表的排序就会…

【python】学习笔记03-循环语句

3.1 whlie循环的基础语法 - while循环的语法格式 - while循环的注意事项 条件需提供布尔类型结果,True继续,False停止 空格缩进不能忘 请规划好循环终止条件,否则将无限循环 """ 演示while循环基础练习题:求1-10…

计算机组成原理 — 存储器(2)

高速缓冲存储器 大家好呀!我是小笙,由于存储器这部分章节内容较多,我分成二部分进行总结,以下是第二部分,希望内容对你有所帮助! 概述 目的:避免CPU空等现象 原理:程序访问的局部…

基于Springboot的旅游网管理系统设计与实现(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的旅游网管理系统设计与实现(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层…