✨机器学习笔记(六)—— ReLU、多分类问题、Softmax、Adam、反向传播
Course2-Week2:
https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Advanced%20Learning%20Algorithms/week2
机器学习笔记(六)
- 1️⃣ReLU(Rectified Linear Unit)
- 2️⃣多分类问题
- 3️⃣Softmax
- 4️⃣Adam
- 5️⃣ 反向传播(Back propagation)
1️⃣ReLU(Rectified Linear Unit)
✨ReLU function: a = g ( z ) = m a x ( 0 , z ) a =g(z)= max(0, z) a=g(z)=max(0,z)
将 ReLU 激活函数与线性和 Sigmoid 激活函数对比,三个都是常用的激活函数:

🎈在此示例中的派生的 “awareness” 特征是具有连续的值范围,Sigmoid 最适合 0/1 的二分类情况。而 ReLU 函数提供连续的线性关系,并且有一个 "off" 范围,可以关闭 z < 0 z < 0 z<0 的范围,让其输出 0,"off" 功能使 ReLU 成为非线性的激活函数。

🎈在输出层中,如果是二分类问题选择 Sigmoid 函数作为激活函数是个不错的选择;而对于线性输出(既有负值也有正值)可以选择线性函数作为激活函数;如果对于回归问题但是输出只有正值(如房屋价格),则选择 ReLU 函数作为激活函数就相当合适了。
🤓在输出层中激活函数的选取可以去考虑预测的 y ^ \hat y y^ 是个什么样的值来进行选取。

🎈在隐藏层中,其实除了二分类问题使用 Sigmoid 激活函数,基本上都使用 ReLU 激活函数。ReLU 相较于 Sigmoid 计算速度更快,因为只需要计算 m a x ( 0 , z ) max(0, z) max(0,z),而 Sigmoid 需要取幂、取负,相除等等,计算效率自然就低了;对于梯度下降,Sigmoid 在多个地方逐渐变平坦,就导致了 J ( w , b ) J(w,b) J(w,b) 的函数也有多个平坦的地方,难以到全局最小值,并且偏导数很小会使梯度下降的速度缓慢,而 ReLU 梯度下降会更快更好。

✨选取激活函数方式的概括

🧐为什么神经网络需要激活函数?
🎈如果在神经网络中不使用激活函数:

🤓就会出现了将前一个线性回归得出的输出,作为下一个线性回归的输入去计算,最终其实就是线性函数的线性组合,则还是一个线性函数,这样的话就没有必要去写这么个多层的神经网络了,本质就是一个一层的输入输出映射,根本就不需要神经网络。
2️⃣多分类问题
多分类问题:目标值 y y y 的值多于 2 个的情况。

使用 P ( y = i ∣ x ⃗ ) P(y=i \mid \vec x) P(y=i∣x) 表示在输入 x ⃗ \vec x x 上分类为第 i i i 种情况的概率。
3️⃣Softmax
✨Softmax 是 Sigmoid 的一般形式,用于处理多分类问题,由于我们已经学过了逻辑回归函数 Sigmoid,将两者对比来学习 Softmax 函数。

🤓由此可以看出 Sigmoid 是对于分类问题只有两个值 P ( y = 0 ∣ x ⃗ ) P(y=0 \mid \vec x) P(y=0∣x)和 P ( y = 1 ∣ x ⃗ ) P(y=1 \mid \vec x) P(y=1∣x) 时的特殊 Softmax 函数,也可以说 Softmax 回归模型是逻辑回归的泛化。
🎈再对比一下两者的损失函数:

🎗️神经网络的 Softmax 输出
🧐在具有 Softmax 输出的 softmax 回归和神经网络中,都会生成 N 个输出,并选择 1 个输出作为预测类别。在这两种情况下,向量 z z z 都是由应用于 softmax 函数的线性函数生成的。softmax 函数转换为概率分布,应用 softmax 后,每个输出将介于 0 和 1 之间,并且输出将加到 1,以便可以将其解释为概率。

4️⃣Adam
Adam: Adaptive Moment estimation
🤓 Adam 算法是梯度下降的优化算法,相较于原始的梯度下降算法,Adam 算法可以自适应学习率,让梯度下降的过程更快并且更加精准。当学习率过小时,梯度下降的过程缓慢,Adam 会增大学习率去加快速度;当学习率过大时,梯度下降并不精准,Adam 会减小学习率去更好的执行梯度下降。

✨代码实现:

5️⃣ 反向传播(Back propagation)
🎈顺序计算各个中间参数的过程为前向传播,而反向通过前面求出的参数的值或偏导值再求出偏导则是后向传播。

🤓反向传播可以很好的提高计算效率,对于 N N N 个这样的节点和 P P P 个参数的情况,通过计算图的反向传播可以只花费 N + P N + P N+P 步求出。如果普通的计算通过求出 N N N 个节点值再求每个 P P P 则要花费 N × P N × P N×P 步。可见后向传播的计算效率显著提高。

相关文章:
✨机器学习笔记(六)—— ReLU、多分类问题、Softmax、Adam、反向传播
Course2-Week2: https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Advanced%20Learning%20Algorithms/week2机器学习笔记(六) 1️⃣ReLU(Rectified Linear Unit)2️⃣多分类问题3️⃣Softmax4️⃣Adam5…...
Xshell7下载及服务器连接
一、Xshell-7.0.0164p、Xftp 7下载 1.1、文件下载 通过网盘分享的文件:xshell 链接: https://pan.baidu.com/s/1qc0CPv4Hkl19hI9tyvYZkQ 提取码: 5snq –来自百度网盘超级会员v2的分享 1.2、ip连接 下shell和xftp操作一样:找到文件—》新建—》名称随…...
SQL Server—的数据类型
SQL Server—的数据类型 在 SQL Server 数据库中,数据类型是定义数据模型的基础,它们决定了数据在数据库中的存储方式和格式。正确选择数据类型不仅可以优化存储空间,还能提高查询性能和数据完整性。 1文本类型 文本类型:字符数…...
WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!
前言 今天大姚给大家分享一套基于.NET 8.0 LayUI的快速开发框架,项目完全开源、免费(MIT License)且开箱即用:WaterCloud。 可完全实现二次开发让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本&…...
数据结构-LRU缓存(C语言实现)
遇到困难,不必慌张,正是成长的时候,耐心一点! 目录 前言一、题目介绍二、实现过程2.1 实现原理2.2 实现思路2.2.1 双向链表2.2.2 散列表 2.3 代码实现2.3.1 结构定义2.3.2 双向链表操作实现2.3.3 实现散列表的操作2.3.4 内存释放代…...
javacv FFmpegFrameGrabber 阻塞重连解决方法汇总
JavaCV中FrameGrabber类可以连接直播流地址, 进行解码, 获取Frame帧信息, 常用方式如下 FrameGrabber grabber new FrameGrabber("rtsp:/192.168.0.0"); while(true) {Frame frame grabber.grabImage();// ... } 在如上代码中, 若连接地址网络不通, 或者连接超时…...
自然语言处理问答系统技术
自然语言处理问答系统技术 随着人工智能的不断发展,自然语言处理(NLP)技术已成为推动智能问答系统发展的核心技术。问答系统是利用NLP来解析用户提出的问题,并从知识库中找到最相关的答案。在许多应用中,如智能客服、…...
交换机和路由器的区别
交换机和路由器的区别主要体现在以下几个方面: 工作层次不同:交换机通常工作在OSI模型的数据链路层(第二层),主要根据MAC地址进行数据包转发。而路由器则工作在OSI模型的网络层(第三层)…...
JavaScript Array(数组)
JavaScript Array(数组) JavaScript 中的数组是一种特殊的对象,用于存储一系列有序的值。数组是 JavaScript 中非常强大的数据结构,广泛用于各种编程任务。本文将详细介绍 JavaScript 数组的特性、用法和操作方法。 数组的创建 在 JavaScript 中,创建数组有多种方式: …...
示例说明:elasticsearch实战应用
Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,广泛应用于日志分析、全文搜索、数据可视化等领域。以下是 Elasticsearch 实战应用的一些关键点和步骤: 1. 环境搭建 首先,你需要在你的环境中安装和配置 Elasticsearch。 安装 E…...
暴力匹配算法和 KMP 算法的优缺点分别是什么?
暴力匹配算法和 KMP 算法的优缺点分别是什么? 在字符串匹配领域,暴力匹配算法和 KMP(Knuth-Morris-Pratt)算法是两种常见的方法。它们各有特点,适用于不同的场景。让我们深入探讨这两种算法的优缺点。 一、暴力匹配算法 (一)优点 简单易实现:暴力匹配算法的逻辑非常…...
web笔记
<form method"POST" action"{{ url_for(register) }}"><label for"username">用户名:</label><input type"text" id"username" name"username" required><br><label for"p…...
【网络安全】-访问控制-burp(1~6)
文章目录 前言 1.Lab: Unprotected admin functionality 2.Lab: Unprotected admin functionality with unpredictable URL 3.Lab: User role controlled by request parameter 4.Lab:User role can be modified in user profile 5.Lab: User ID controlled by…...
iOS 项目中的多主题颜色设计与实现
引言 在现代iOS应用中,用户对个性化体验的需求越来越高,除了功能上的满足,多样的视觉风格也是提升用户体验的重要手段之一。提供多主题颜色的切换功能不仅能满足用户的审美偏好,还可以让应用更具活力,适应不同场景下的…...
Android Camera2 与 Camera API技术探究和RAW数据采集
Android Camera2 Android Camera2 是 Android 系统中用于相机操作的一套高级应用程序接口(API),它取代了之前的 Camera API。以下是关于 Android Camera2 的一些主要信息: 主要特点: 强大的控制能力:提供…...
[python][pipenv]pipenv的使用
pipenv 是一个 Python 开发工作流程的工具,它旨在将 pip 的包管理和 virtualenv 的虚拟环境管理结合起来。以下是一些基本的 pipenv 使用方法: 安装 pipenv: 如果你还没有安装 pipenv,可以通过 pip 安装它: pip insta…...
SpringSession微服务
一.在linux中确保启动起来redis和nacos 依赖记得别放<dependencyManagement></dependencyManagement>这个标签去了 1.首先查看已经启动的服务 docker ps 查看有没有安装redis和nacos 2.启动redis和nacos 发现没有启动redis和nacos,我们先来启动它。,…...
强化学习:通过试错学习最优策略---示例:使用Q-Learning解决迷宫问题
强化学习(Reinforcement Learning, RL)是一种让智能体(agent)在与环境交互的过程中,通过最大化某种累积奖励来学习如何采取行动的学习方法。它适用于那些需要连续决策的问题,比如游戏、自动驾驶和机器人控制…...
OpenGL ES 纹理(7)
OpenGL ES 纹理(7) 简述 通过前面几章的学习,我们已经可以绘制渲染我们想要的逻辑图形了,但是如果我们想要渲染一张本地图片,这就需要纹理了。 纹理其实是一个可以用于采样的数据集,比较典型的就是图片了,我们知道我…...
【C#】CacheManager:高效的 .NET 缓存管理库
在现代应用开发中,缓存是提升性能和降低数据库负载的重要技术手段。无论是 Web 应用、桌面应用还是移动应用,缓存都能够帮助减少重复的数据查询和处理,从而提高系统的响应速度。然而,管理缓存并不简单,尤其是当你需要处…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
