当前位置: 首页 > news >正文

✨机器学习笔记(六)—— 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=ix ) 表示在输入 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=0x ) P ( y = 1 ∣ x ⃗ ) P(y=1 \mid \vec x) P(y=1x ) 时的特殊 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机器学习笔记&#xff08;六&#xff09; 1️⃣ReLU&#xff08;Rectified Linear Unit&#xff09;2️⃣多分类问题3️⃣Softmax4️⃣Adam5…...

Xshell7下载及服务器连接

一、Xshell-7.0.0164p、Xftp 7下载 1.1、文件下载 通过网盘分享的文件&#xff1a;xshell 链接: https://pan.baidu.com/s/1qc0CPv4Hkl19hI9tyvYZkQ 提取码: 5snq –来自百度网盘超级会员v2的分享 1.2、ip连接 下shell和xftp操作一样&#xff1a;找到文件—》新建—》名称随…...

SQL Server—的数据类型

SQL Server—的数据类型 在 SQL Server 数据库中&#xff0c;数据类型是定义数据模型的基础&#xff0c;它们决定了数据在数据库中的存储方式和格式。正确选择数据类型不仅可以优化存储空间&#xff0c;还能提高查询性能和数据完整性。 1文本类型 文本类型&#xff1a;字符数…...

WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!

前言 今天大姚给大家分享一套基于.NET 8.0 LayUI的快速开发框架&#xff0c;项目完全开源、免费&#xff08;MIT License&#xff09;且开箱即用&#xff1a;WaterCloud。 可完全实现二次开发让开发更多关注业务逻辑。既能快速提高开发效率&#xff0c;帮助公司节省人力成本&…...

数据结构-LRU缓存(C语言实现)

遇到困难&#xff0c;不必慌张&#xff0c;正是成长的时候&#xff0c;耐心一点&#xff01; 目录 前言一、题目介绍二、实现过程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();// ... } 在如上代码中, 若连接地址网络不通, 或者连接超时…...

自然语言处理问答系统技术

自然语言处理问答系统技术 随着人工智能的不断发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术已成为推动智能问答系统发展的核心技术。问答系统是利用NLP来解析用户提出的问题&#xff0c;并从知识库中找到最相关的答案。在许多应用中&#xff0c;如智能客服、…...

交换机和路由器的区别

交换机和路由器的区别主要体现在以下几个方面&#xff1a; 工作层次不同&#xff1a;交换机通常工作在OSI模型的数据链路层&#xff08;第二层&#xff09;&#xff0c;主要根据MAC地址进行数据包转发。而路由器则工作在OSI模型的网络层&#xff08;第三层&#xff09;&#xf…...

JavaScript Array(数组)

JavaScript Array(数组) JavaScript 中的数组是一种特殊的对象,用于存储一系列有序的值。数组是 JavaScript 中非常强大的数据结构,广泛用于各种编程任务。本文将详细介绍 JavaScript 数组的特性、用法和操作方法。 数组的创建 在 JavaScript 中,创建数组有多种方式: …...

示例说明:elasticsearch实战应用

Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索、数据可视化等领域。以下是 Elasticsearch 实战应用的一些关键点和步骤&#xff1a; 1. 环境搭建 首先&#xff0c;你需要在你的环境中安装和配置 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应用中&#xff0c;用户对个性化体验的需求越来越高&#xff0c;除了功能上的满足&#xff0c;多样的视觉风格也是提升用户体验的重要手段之一。提供多主题颜色的切换功能不仅能满足用户的审美偏好&#xff0c;还可以让应用更具活力&#xff0c;适应不同场景下的…...

Android Camera2 与 Camera API技术探究和RAW数据采集

Android Camera2 Android Camera2 是 Android 系统中用于相机操作的一套高级应用程序接口&#xff08;API&#xff09;&#xff0c;它取代了之前的 Camera API。以下是关于 Android Camera2 的一些主要信息&#xff1a; 主要特点&#xff1a; 强大的控制能力&#xff1a;提供…...

[python][pipenv]pipenv的使用

pipenv 是一个 Python 开发工作流程的工具&#xff0c;它旨在将 pip 的包管理和 virtualenv 的虚拟环境管理结合起来。以下是一些基本的 pipenv 使用方法&#xff1a; 安装 pipenv&#xff1a; 如果你还没有安装 pipenv&#xff0c;可以通过 pip 安装它&#xff1a; pip insta…...

SpringSession微服务

一.在linux中确保启动起来redis和nacos 依赖记得别放<dependencyManagement></dependencyManagement>这个标签去了 1.首先查看已经启动的服务 docker ps 查看有没有安装redis和nacos 2.启动redis和nacos 发现没有启动redis和nacos,我们先来启动它。&#xff0c;…...

强化学习:通过试错学习最优策略---示例:使用Q-Learning解决迷宫问题

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种让智能体&#xff08;agent&#xff09;在与环境交互的过程中&#xff0c;通过最大化某种累积奖励来学习如何采取行动的学习方法。它适用于那些需要连续决策的问题&#xff0c;比如游戏、自动驾驶和机器人控制…...

OpenGL ES 纹理(7)

OpenGL ES 纹理(7) 简述 通过前面几章的学习&#xff0c;我们已经可以绘制渲染我们想要的逻辑图形了&#xff0c;但是如果我们想要渲染一张本地图片&#xff0c;这就需要纹理了。 纹理其实是一个可以用于采样的数据集&#xff0c;比较典型的就是图片了&#xff0c;我们知道我…...

【C#】CacheManager:高效的 .NET 缓存管理库

在现代应用开发中&#xff0c;缓存是提升性能和降低数据库负载的重要技术手段。无论是 Web 应用、桌面应用还是移动应用&#xff0c;缓存都能够帮助减少重复的数据查询和处理&#xff0c;从而提高系统的响应速度。然而&#xff0c;管理缓存并不简单&#xff0c;尤其是当你需要处…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...