✨机器学习笔记(六)—— 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 应用、桌面应用还是移动应用,缓存都能够帮助减少重复的数据查询和处理,从而提高系统的响应速度。然而,管理缓存并不简单,尤其是当你需要处…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
FTXUI::Dom 模块
DOM 模块定义了分层的 FTXUI::Element 树,可用于构建复杂的终端界面,支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...

VSCode 使用CMake 构建 Qt 5 窗口程序
首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...

【threejs】每天一个小案例讲解:创建基本的3D场景
代码仓 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone,无需安装依赖,直接liver-server运行/直接打开chapter01中的html文件 运行效果图 知识要点 核心三要素 场景(Scene) 使用 THREE.Scene(…...
前端打包工具简单介绍
前端打包工具简单介绍 一、Webpack 架构与插件机制 1. Webpack 架构核心组成 Entry(入口) 指定应用的起点文件,比如 src/index.js。 Module(模块) Webpack 把项目当作模块图,模块可以是 JS、CSS、图片等…...