吴恩达2022机器学习专项课程C2W2:2.19 sigmoid函数的替代方案 2.20如何选择激活函数 2.21 激活函数的重要性

这里写目录标题

  • 引言
  • sigmoid激活函数的局限
    • 1.回顾需求案例
    • 2.ReLU激活函数
  • 常用的激活函数
    • 1.线性激活函数的解释
  • 如何选择激活函数?
    • 1.选择输出层的激活函数
    • 2.选择隐藏层的激活函数
  • 选择激活函数的总结
    • 1.输出层总结
    • 2.隐藏层总结
    • 3.TensorFlow设置激活函数
  • 激活函数多样性
  • 为什么神经网络需要激活函数
    • 1.简述
    • 2.线性激活函数的局限
    • 3.其它案例
    • 4.小结

引言

截至目前,我们一直使用sigmoid激活函数构建神经网络,但通过采用不同的激活函数,可以提升神经网络的性能。本篇主要记录激活函数都有什么?如何选择激活函数?为什么神经网络要有激活函数?

sigmoid激活函数的局限

1.回顾需求案例

之前的案例中,T恤知名度(awareness)只有好和坏,是一个二元分类问题。而实际上,它可能不是二元的,他们可能有点意识到,相当意识到,极度意识到,或者它可能已经完全病毒式传播了,因此这个神经元的激活值应该是一个任意非负数而不是仅仅在0-1。

在这里插入图片描述

2.ReLU激活函数

原来的sigmoid激活值,范围在0-1,如果想让激活值的范围更大,我们可以选择ReLU(修正线性单元)激活函数,当z小于0时,输出为0;当输入z大于或等于0时,输出为z,其数学表达式为g(z) = max(0, z)。在这里插入图片描述

常用的激活函数

分别为线性激活函数,sigmoid激活函数,ReLU激活函数
在这里插入图片描述

1.线性激活函数的解释

使用线性激活函数等同于没有使用激活函数,因为输出只是输入的线性组合(即z = wx + b)。在课程中会提到使用线性激活函数而不是没有激活函数。如果听到其他人说没有使用激活函数,他们指的是使用了线性激活函数。

如何选择激活函数?

1.选择输出层的激活函数

取决于目标或真实标签y是什么,有以下3种选择:

  • (1)sigmoid激活函数:处理分类问题时,特别是二元分类问题,其中目标变量y只有两个可能的值,0或1,sigmoid激活函数是最合适的选择。
  • 2)线性回归激活函数:在处理回归问题时,它的目标是预测一个连续的数值,例如预测明天的股价相对于今天的变化量,此时建议使用线性激活函数。线性激活函数的特点是它的输出可以取任意实数值,包括正数和负数。这意味着神经网络的输出可以自由地表示股价上升或下降的量,无论是正值还是负值。
  • (3)ReLU激活函数:如果y只能取非负值且范围不是0-1,例如如果你正在预测房价,那永远不会是负数,那么最自然的选择将是ReLU激活函数。
    在这里插入图片描述

2.选择隐藏层的激活函数

到目前为止,ReLU激活函数是最常见选择,它使你的神经网络学习得更快一些。原因如下:

  • 1)计算效率:ReLU激活函数的计算比sigmoid函数更快。ReLU函数的计算仅涉及计算0和输入值z之间的最大值,这是一个简单的操作。相比之下,sigmoid函数需要进行指数运算和取倒数,这在计算上更为复杂和耗时。
  • (2)梯度下降的效率:当使用梯度下降算法来训练神经网络时,ReLU函数只有一个方向平坦,而sigmoid有两个方向平坦,如果一个函数平坦较多,梯度下降会非常慢。在这里插入图片描述

选择激活函数的总结

1.输出层总结

对于输出层,如果你有一个二元分类问题,使用sigmoid;如果y是一个可以取正值或负值的数字,使用线性;或者如果y只能取正值或零正值或非负值,使用ReLU。
在这里插入图片描述

2.隐藏层总结

然后对于隐藏层,我只是使用ReLU作为默认激活函数。

3.TensorFlow设置激活函数

第一层第二层为隐藏层,使用ReLU,输出层可以根据需求更换激活函数。
在这里插入图片描述

激活函数多样性

通过使用不同的激活函数,可以构建比单一使用sigmoid激活函数时更为强大和灵活的神经网络。在研究文献中,除了常用的激活函数如ReLU,还有其他类型的激活函数,例如tanh、LeakyReLU、swish等。尽管存在多种激活函数,但对于大多数应用场景,本篇中介绍的激活函数已经足够。

为什么神经网络需要激活函数

1.简述

将神经网络退化为全由线性激活函数构成的形式,就等于放弃了其处理非线性问题的能力,使其等同于较为基础的线性回归工具,违背了利用神经网络解决更复杂问题的初衷。
在这里插入图片描述

2.线性激活函数的局限

以一个简单的只有一个输入、一个隐藏层单元和一个输出层单元的神经网络为例,当神经元都使用线性激活函数时,计算过程表明最终输出是关于输入的线性函数,即等同于线性回归模型的输出。这是因为线性函数的复合依然是线性函数。因此与其使用一个包含隐藏层和输出层的神经网络,我们还不如直接采用线性回归模型。
在这里插入图片描述

3.其它案例

当神经网络的多层(包括隐藏层和输出层)均采用线性激活,输出等同于线性回归的输出。
在这里插入图片描述
若隐藏层维持线性而仅输出层采用逻辑激活函数,则模型相当于逻辑回归。这类神经网络并未超越逻辑回归的能力。在这里插入图片描述因此,神经网络的隐藏层通常不使用线性激活函数,而是推荐使用ReLU等非线性激活函数。

4.小结

数激活函数对于神经网络至关重要,因为它们引入非线性,使网络能够学习复杂模式。如果所有层使用线性激活函数(等于未使用激活函数),网络就退化为线性回归,无法拟合复杂的数据。因此,为了使神经网络能够计算出比线性模型更复杂的特征,必须使用非线性激活函数,如ReLU。

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

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

相关文章

AI生成视频解决方案,降低成本,提高效率

传统的视频制作方式往往受限于高昂的成本、复杂的拍摄流程以及硬件设备的限制,为了解决这些问题,美摄科技凭借领先的AI技术,推出了全新的AI生成视频解决方案,为企业带来前所未有的视觉创新体验。 一、超越想象的AI视频生成 美摄…

大模型时代的具身智能系列专题(四)

google deepmind团队 谷歌旗下最大的两个 AI 研究机构——地处伦敦 DeepMind 与位于硅谷的 Google Brain 合并成立新部门 Google DeepMind。其将机器学习和系统神经科学的最先进技术结合起来,建立强大的通用学习算法。代表作有AlphaGo,AlphaStar&#x…

SpringBoot集成mongodb

引入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>添加yaml配置 spring:data:mongodb:uri: mongodb://localhost:27017/novel创建实体类…

鸿蒙ArkTS声明式开发:跨平台支持列表【组件快捷键事件】

组件快捷键事件 开发者可以设置组件的自定义组合键&#xff0c;组合键的行为与click行为一致&#xff0c;组件在未获得焦点状态下也可以响应自定义组合键&#xff0c;每个组件可以设置多个组合键。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-s…

Xshell远程连接服务器需要哪些依赖包、

在安装 Xshell 时&#xff0c;您需要确保系统中安装了必要的依赖库文件。这些依赖库文件对于 Xshell 的正常运行至关重要。虽然具体的依赖库文件可能会根据您的操作系统和安装环境有所不同&#xff0c;但通常包括以下几种&#xff1a; libXdmcp-devellibXinerama-devellibXft-…

香橙派 AiPro通过Micro USB接口进行串口调试

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、配置步骤1.安装CH343驱动2.配置串口参数 二、使用步骤总结 前言 最近在玩一个新玩具香橙派 AiPro&#xff0c;除了通过SSH方式连接开发板以外&#xff0c;…

Java优化代码攻略

一、背景 编码优化是Java开发中的关键步骤&#xff0c;它关注于提升代码可读性、性能和资源效率。常见技巧包括简化逻辑、减少冗余、利用缓存、优化数据结构等。例如&#xff0c;在电商系统中&#xff0c;通过缓存热门商品数据&#xff0c;可大幅提升页面加载速度&#xff1b;…

C++类与对象的特性

1.类的静态成员 静态成员包括静态成员变量和静态成员函数。使用静态成员变量可以实现类的数据成员的共享。 静态成员变量的值可以修改&#xff0c;并且对类的每个对象都相同,它是所有类对象共有的数据,对对象而言节约了空间。其存储空间的分配不在构造函数内完成&#…

华为机考入门python3--(32)牛客32-密码截取

分类&#xff1a;最长对称子串、动态规划 知识点&#xff1a; 生成二维数组 dp [[0] * n for _ in range(n)] 求最大值 max(value1, value2) 动态规划的步骤 a. 定义问题 长度为n下最长的对称子串的长度 b. 确定状态 dp[i][j]表示字符串从索引i到j的子串是否为对称…

关于Vue本地图片转file传到后端服务器(不通过组件上传)

一、代码 // 核心代码 const getMyFileFromLocalPath (localPath, filename) > {return fetch(localPath).then((response) > response.blob()).then((blob) > new File([blob], filename, { type: "image/png" })); // 假设是PNG格式// 获取真正的流文件…

Hibernate最新6万字面试题及参考答案

目录 什么是Hibernate? Hibernate的主要组件有哪些? 解释ORM(对象关系映射)的概念。

Vue3的setup系列篇之defineEmits和defineProps使用方式

父组件参数 <template><div><h2>子组件联动的与使用</h2><!-- reactive这样 --><!-- <childCom v-model:user"data.user" v-model"money" /> --><!-- ref这样 --><childCom v-model:user"user&q…

封装,static,代码块,对象的打印

封装&#xff0c;static&#xff0c;代码块&#xff0c;对象的打印 1. 封装1.1 封装的概念1.2 包的概念1.3 访问修饰限定符1.4 被封装的属性如何set和get&#xff1f; 2. static2.1 再谈学生类2.2 static修饰成员变量2.3 static修饰成员方法2.4 static成员变量初始化 3. 代码块…

IGMP——组播成员端网络协议

目录 一.IGMP基本概念 &#xff08;1&#xff09;组播转发困境 &#xff08;2&#xff09;感知组播成员方式 &#xff08;3&#xff09;IGMP版本 二.IGMP各版本的区别与联系 &#xff08;1&#xff09;IGMPV1 1.普遍组查询报文 2.成员关系报告报文 3.IGMPV1报文格式 4…

JavaScript日期与时间处理的艺术

JavaScript日期与时间处理的艺术 基础概念&#xff1a;JavaScript中的日期对象诞生时刻时间戳&#xff1a;纪元的秘密 案例一&#xff1a;格式化日期的艺术美化你的日期自定义格式化 案例二&#xff1a;跨时区的舞蹈时区转换 案例三&#xff1a;时间旅行的挑战闰年与月份天数避…

Go 项目如何打包在各个平台运行?

1 Windwos开发环境打包可执行文件 在Windows环境&#xff0c;我们可以将Golang的项目打包成不同平台的可执行文件。 1.1 打包Windows可执行文件 set GOOSwindows set GOARCHamd64 go build -o bin/app_win.exe1.2 打包Linux可执行文件 set GOOSlinux set GOARCHamd64 go …

java第十七课 —— 递归

方法递归调用 递归就是方法自己调用自己&#xff0c;每次调用时传入不同的变量&#xff0c;递归有助于编程者解决复杂问题&#xff0c;同时可以让代码变得简洁。 递归重要规则 执行一个方法时&#xff0c;就创建一个新的受保护的独立空间&#xff08;栈空间&#xff09;。方…

922. 按奇偶排序数组 II - 力扣

1. 题目 给定一个非负整数数组 nums&#xff0c; nums 中一半整数是 奇数 &#xff0c;一半整数是 偶数 。 对数组进行排序&#xff0c;以便当 nums[i] 为奇数时&#xff0c;i 也是 奇数 &#xff1b;当 nums[i] 为偶数时&#xff0c; i 也是 偶数 。 你可以返回 任何满足上述…

阮一峰的ES6文档(第一天)

目录 ECMAScript 6简介 let和const命名 let基本用法-块级作用域 不存在变量提升 不允许重复声明 暂时性死区 为什么需要块级作用域&#xff1f; 原因一&#xff1a;内层变量可能会覆盖外层变量 原因二&#xff1a;用来计数的循环遍历泄露为全局变量 const基本用法-声明…

微服务架构-异步消息传递设计模式

微服务架构-异步消息传递设计模式 异步消息允许服务发送消息后立即返回&#xff0c;而不需要等待消息被处理完毕&#xff0c;这种异步方式可以大大提高系统的处理速度、和吞吐量。 微服务架构&#xff0c;通常涉及多个服务之间的相互调用&#xff0c;如果通信只是在少数几个微…