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

吴恩达机器学习全课程笔记第四篇

目录

前言

P61-P68

激活函数

Softmax算法

P69-P73

Adam算法

更多类型的层

模型评估

P74-P79

偏差和方差

建立表现基准

学习曲线

偏差和方差与神经网络

前言

这是吴恩达机器学习笔记的第四篇,第三篇笔记请见:

吴恩达机器学习全课程笔记第三篇

完整的课程链接如下:

吴恩达机器学习教程(bilibili)

推荐网站:

scikit-learn中文社区

吴恩达机器学习资料(github)

P61-P68

激活函数

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。在神经元中,输入的input经过一系列加权求和后作用于另一个函数,这个函数就是这里的激活函数

sigmoid的替代品-ReLU

对于二进制分类问题,使用sigmoid激活函数或许是最好的选择,输出的刚好是标签为1的概率

在解决一个回归问题的时候,可以选择不同的激活函数,对于股票问题,可以选择普通的线性激活函数,对于其它的结果不为负的问题,可以选用ReLU

使用relu激活函数不仅本身计算快,而且可以使神经网络梯度下降得快一些

结合之前的神经网络例子,给出tensorflow代码:

在神经网络的隐藏层中需要使用非线性激活函数, 这是因为需要在网络中引入非线性来学习复杂的模式。 如果没有非线性激活函数,具有许多隐藏层的神经网络将成为一个巨大的线性回归模型,这对于从现实世界数据中学习复杂模式毫无用处。 

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,即W = W3*[W2*(W1*x)]。
如果隐藏层不使用激活函数,仅在输出层使用sigmoid函数,那么效果仅仅和标准Logistic回归一样

Softmax算法

多分类问题:

softmax回归算法是logistics回归的推广

下面展示softmax的成本函数

softmax作为输出的激活函数可以使每个激活值都依赖于z的所有值,还是拿之前那个识别手写数字的例子来看

写成代码的形式:

数字精确度问题:

通过这个例子知道,虽然我们计算softmax成本函数的方法是正确的,还有一种更加准确的计算方法可以去减少误差

对于logistics回归

对于softmax

完整的tensorflow代码为:

多标签输出分类问题(注意和多分类问题的区别)

解决这种问题的一种方法是把它看作三个完全独立的机器学习问题,建立神经网络检测是否有车?是否有公交?等

还有一种方法是训练一个可以直接输出三个结果的神经网络

P69-P73

Adam算法

梯度下降是一种最小化成本函数的方法,下面介绍其它的方法

有一种方法叫做Adam algorithm可以自动调整学习率

算法的原理是:如果w和b能够朝着一个大致相同的方向移动,那么就提高学习率,反之,降低学习率,将其应用在MNIST的例子中,代码如下:在compile中增加一个优化器的参数即可,同时包含了初始的学习率

更多类型的层

到目前为止,我们使用的所有神经网络层都是密集层型的,下面给出一个不同类型的神经网络层的例子

密集层

卷积层

卷积神经网络

卷积神经网络(CNN)是一种深度学习模型,主要用于处理具有类似网格结构的数据,如图像。CNN通过使用卷积层自动学习空间层次的特征,无需手动特征提取。卷积层内的卷积操作帮助模型学习图像中的小部分,然后将这些局部特征组合成更高级的形式,以实现复杂任务的学习

核心组件介绍
卷积层:使用一组可学习的滤波器来扫描输入数据,每个滤波器负责提取一种特定的特征。
激活函数:引入非线性,使网络能够学习复杂的模式,常用的激活函数有ReLU。
池化层:降低特征图的空间维度,减少计算量和参数数量,防止过拟合。
全连接层:将前面卷积层和池化层提取到的特征图转换为一维特征向量,进行最终的分类或回归分析。

调试学习算法

模型评估

将数据集分为训练集和测试集

然后分别计算误差

对于分类问题(使用分类的成本函数)

模型选择

此时有一个问题,这里的测试集主要目的是为了挑选在测试集上表现最好的模型,也就是说最后得到模型之后,这个值一定是最小的,但是这个值是被挑选出来的,并不能真正反映模型的性能

还有一种优化的方法是把数据集分为三个部分,除了训练集和测试集,加上一个交叉验证集

此时:三部分数据集的各功能就如下所示:

训练集 (训练阶段)
用于构建我们的模型,我们的模型在训练集上进行学习,通常在这个阶段我们可以有多种方法进行训练
验证集 (模型挑选阶段)
用于挑选最优模型超参的样本集合:使用验证集可以得到反向传播什么时候结束以及超参怎么设置最合理。主要目的是为了挑选在验证集上表现最好的模型。
测试集 (验证阶段 评估泛化误差)
在我们挑选好验证集上表现最好的模型之后,用于评估该模型泛化能力的数据集。

P74-P79

偏差和方差

这部分我没看太懂网课,因为没字幕,但是有一个博客写得很明白,链接如下:

诊断偏差与方差

诊断偏差和方差

欠拟合为高偏差,过拟合为高方差

当 Jtrain(θ) ≈ Jcv(θ),但两者都非常高时,是模型欠拟合导是高偏差引起的,可以适当增加多项式次数解决
当 Jcv(θ) >> Jtrain(θ),是由于模型过拟合导致高方差引起,可以通过增加样本数据量解决

接下来看看正则化参数λ对偏差和方差的影响:

如图所示,当λ很大时,会发生高偏差,另一个极端,当λ很小时,会发生高方差

具体的Jtrain和Jcv与λ的定性关系,如下所示

建立表现基准

误差达到多大算大?达到多大算小?这时需要建立一个对比的标准去判断一个新算法的性能,可以根据下面三个方面去对比

当然也可以结合上述的基准去研究前面学习的偏差和方差

学习曲线

学习曲线是用来帮助理解算法如何工作的一种方法,如下所示,对于二次多项式,当增加训练集的数量时,Jtrain和Jcv的变化

对于高偏差的算法,就算增大数据集的量,也不能明显地改善算法的性能

而对于高方差的曲线,增大数据集数量,有利于改善算法,使学习的效果达到表现基准左右

在debug的时候,下面常见的六个操作对偏差和方差的影响关系如下

偏差和方差与神经网络

神经网络给了我们一种新的方法去解决高偏差和高方差的问题,如下所示:

更大的神经网络导致了更大的计算量,这也就促进了gpu等加速硬件的发展

只要合适的进行规则化,神经网络就不会出现方差过大的问题

规则化的神经网络tensorflow代码如下

相关文章:

吴恩达机器学习全课程笔记第四篇

目录 前言 P61-P68 激活函数 Softmax算法 P69-P73 Adam算法 更多类型的层 模型评估 P74-P79 偏差和方差 建立表现基准 学习曲线 偏差和方差与神经网络 前言 这是吴恩达机器学习笔记的第四篇,第三篇笔记请见: 吴恩达机器学习全课程笔记第…...

大数据分析师常用函数

常用函数 当进行大数据分析时,SQL中的函数非常丰富,以下是更详细的展开: 窗口函数 (Window Functions): ROW_NUMBER(): 为结果集中的每一行分配一个唯一的整数,用于排序。RANK(): 为结果集中的每一行分配一个排名,相同值会有相同的排名,但会跳过相同排名数量。DENSE_RAN…...

MySQL 主从读写分离入门——基本原理以及ProxySQL的简单使用

一、读写分离工作原理 读写分离的工作原理:在大型网站业务中,当单台数据库无法满足并发需求时,通过主从同步方式同步数据。设置一台主服务器负责增、删、改,多台从服务器负责查询,从服务器从主服务器同步数据以保持一…...

ROS2从入门到精通:理论与实战

ROS是什么? 随着人工智能技术的飞速发展与进步,机器人的智能化已经成为现代机器人发展的终极目标。机器人发展的速度在不断提升,应用范围也在不断拓展,例如自动驾驶、移动机器人、操作机器人、信息机器人等。机器人系统是很多复杂…...

docker 安装minio 一脚shell脚本

要创建一个用于安装Minio的Docker的Shell脚本,你可以按照以下步骤进行。这个脚本会执行以下操作: 拉取Minio的Docker镜像。创建一个Docker容器并映射端口。设置Minio的访问密钥和秘密密钥。持久化存储数据到本地目录。 以下是一个简单的Shell脚本示例&…...

【数据库】mybatis使用总结

文章目录 1. 批量插入、检索<foreach>2. <if> 判断等于情况3. 模糊查询(pgsql为例)4. 分页5. <resultMap > 中collection 和association 6. no conflict do update 1. 批量插入、检索<foreach> <insert id"insertSystemService" >in…...

VR元宇宙的概念|VR体验店加盟|虚拟现实设备销售

VR元宇宙是一个结合了虚拟现实&#xff08;Virtual Reality&#xff09;和增强现实&#xff08;Augmented Reality&#xff09;等技术的概念&#xff0c;代表着一个虚拟的多维度世界。它是一个由数字化的空间构成的虚拟环境&#xff0c;可以通过虚拟现实设备进行交互和探索。 元…...

MySQL进阶:全局锁、表级锁、行级锁总结

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;MySQL进阶&#xff1a;MySQL事务、并发事务问题及隔离级别 &#x1f4da;订阅专栏&#xff1a;MySQL进阶 希望文章对你们有所帮助…...

Python用函数实现代码复用

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 生命对某些人来说是美丽的&#xff0c…...

2024年腾讯云优惠代金券领取入口整理汇总,收藏级笔记

腾讯云优惠代金券领取入口共三个渠道&#xff0c;腾讯云新用户和老用户均可领取8888元代金券&#xff0c;可用于云服务器等产品购买、续费和升级使用&#xff0c;阿腾云atengyun.com整理腾讯云优惠券&#xff08;代金券&#xff09;领取入口、代金券查询、优惠券兑换码使用方法…...

nn.Linear() 使用提醒

原本以为它是和nn.Conv2d()一样&#xff0c;就看第二个维度的数值&#xff0c;今天才知道&#xff0c;它是只看最后一个维度的数值&#xff01;&#xff01;&#xff01; 例子1 Descripttion: Result: Author: Philo Date: 2024-02-27 14:33:50 LastEditors: Philo LastEditT…...

python difflib --- 计算差异的辅助工具

此模块提供用于比较序列的类和函数。 例如&#xff0c;它可被用于比较文件&#xff0c;并可产生多种格式的不同文件差异信息&#xff0c;包括 HTML 和上下文以及统一的 diff 数据。 有关比较目录和文件&#xff0c;另请参阅 filecmp 模块。 class difflib.SequenceMatcher 这…...

HTML5浮动

1.标准文档流组成 块级元素&#xff08;block&#xff09; 内联元素&#xff08;inline&#xff09; 2.display属性 作用&#xff1a;指定HTML标签的显示方式 常用属性 值 说明 block 块级元素的默认值&#xff0c;元素会被显示为块级元素&#xff0c;该元素前后会带有换行…...

Unity 向量计算、欧拉角与四元数转换、输出文本、告警、错误、修改时间、定时器、路径、

using System.Collections; using System.Collections.Generic; using UnityEngine;public class c2 : MonoBehaviour {// 定时器float t1 0;void Start(){// 向量Vector3 v1 new Vector3(0, 0, 2);Vector3 v2 new Vector3(0, 0, 3);// 计算两个向量的夹角Debug.Log(Vector3…...

前端实现浏览器打印

浏览器的print方法直接调用会打印当前页面的所有元素&#xff0c;使用iframe可以实现局部打印所需要的模块。 组件printView&#xff0c;将传入的信息放入iframe中&#xff0c;调用浏览器的打印功能 <template><div class"print"><iframeid"if…...

iOS卡顿原因与优化

iOS卡顿原因与优化 1. 卡顿简介 卡顿&#xff1a; 指用户在使用过程中出现了一段时间的阻塞&#xff0c;使得用户在这一段时间内无法进行操作&#xff0c;屏幕上的内容也没有任何的变化。 卡顿作为App的重要性能指标&#xff0c;不仅影响着用户体验&#xff0c;更关系到用户留…...

关于synchronized介绍

synchronized的特性 1. 乐观锁/悲观锁自适应,开始时是乐观锁,如果锁冲突频繁,就转换为悲观锁 2.轻量级/重量级锁自适应 开始是轻量级锁实现,如果锁被持有的时间较长,就转换成重量级锁 3.自旋/挂起等待锁自适应 4.不是读写锁 5.非公平锁 6,可重入锁 synchronized的使用 1&#…...

NCDA设计大赛获奖作品剖析:UI设计如何脱颖而出?

第十二届大赛简介 - 未来设计师全国高校数字艺术设计大赛&#xff08;NCDA&#xff09;开始啦&#xff01;视觉传达设计命题之一: ui 设计&#xff0c;你想知道的都在这里。为了让大家更好的参加这次比赛&#xff0c;本文特别为大家整理了以往NCDA大赛 UI 设计的优秀获奖作品&a…...

软考中级 软件设计师备考经验

考试介绍 软考中级的软件设计师需要考两个部分&#xff0c;选择题和大题&#xff0c;每科满分75&#xff0c;需要在同一次考试中两科同时大于等于45分才算通过。考试的内容包括计算机组成原理、数据结构、数据库、专业英语、信息安全、计算机网络等&#xff0c;范围比较广但考…...

Python猜数字小游戏

下面这段代码是一个简单的数字猜测游戏&#xff0c;其中计算机已经提前计算出了414 // 23的结果并存储在变量num中。然后&#xff0c;程序会提示用户来猜测这个结果。 以下是代码的主要步骤和功能&#xff1a; 初始化&#xff1a; num 414 // 23&#xff1a;计算414除以23的整…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...