深度学习的实践层面

news2024/11/13 9:23:40

目录

1、训练、验证、测试集

2、偏差、方差

3、正则化

4、dropoout正则化

5、其他正则化方法

6、归一化输入

7、梯度消失和梯度爆炸

8、梯度的数值逼近

9、梯度检验


1、训练、验证、测试集

(1)、早期机器学习领域普遍认可的最好的实践方法:机器学习发展的小数据量时代,常见做法

是将所有数据三七分,就是人们常说的 70%验证集,30%测试集,如果没有明确设置验证集也可

以按照 60%训练,20%验证和 20%测试集来划分

(2)、在机器学习中,通常将样本分成训练集,验证集和测试集三部分,数据集规模相对小,适
用传统的划分比例,数据集规模较大的,验证集和测试集要小于数据总量的 20% 10%

2、偏差、方差

 (1)、欠拟合(高偏差)指机器学习模型在训练数据集上的表现较差,无法很好地拟合数据。这

通常是因为模型的复杂度过低,无法捕捉到数据中的关键特征,或者在训练过程中没有足够的学习

时间。在欠拟合的情况下,模型往往不能很好地预测新的数据,因为它不能很好地适应训练数据集

中的变化和噪音。欠拟合问题可以通过增加模型的复杂度、增加训练数据的数量或增加训练时间来

解决。

(2)、过拟合(高方差)指机器学习模型过度拟合训练数据集,导致对新数据的泛化能力较差。
当模型过于复杂或训练数据过少时,模型可能会在训练数据上表现得非常好,但对于未见过的数据
则表现失效。在过拟合的情况下,模型记住了训练数据中的噪声和细节,而忽略了数据的整体趋
势。这导致了在测试数据上的表现不佳。
解决过拟合问题的方法通常包括 增加训练数据的数量 、对数据进行清洗和预处理、 采用正则化方法 (如L2正则化、dropout等)来减小模型复杂度,以及使用更简单的模型。

3、正则化

(1)、L1正则化

(2)、L2正则化:2𝑚 乘以𝑤范数的平方,𝑤欧几里德范数的平方等于𝑤𝑗(𝑗 值从 1 𝑛𝑥)平方的

和,也可 表示为𝑤𝑇𝑤,也就是向量参数𝑤 的欧几里德范数(2 范数)的平方,此方法称为𝐿2正则

化。 因为这里用了欧几里德法线,被称为向量参数𝑤𝐿2范数

为什么只正则化参数𝑤 ?因为𝑤 通常是一个高维参数矢量,已经可以表达高偏差问题, 𝑤 可能包含
有很多参数, 我们不可能拟合所有参数,而𝑏 只是单个数字,所以 𝑤 几乎涵盖所有参数,而不是 𝑏
如果加 了参数𝑏 ,其实也没太大影响,因为 𝑏 只是众多参数中的一个,所以通常省略不计,如果你
想加上这个参数,完全没问题。

 (3)、在神经网络中实现L2正则化

 神经网络含有一个成本函数,该函数包含𝑊[1]𝑏 [1]𝑊[𝑙]𝑏 [𝑙]所有参数,字母𝐿是神经 网络所含的层数,因此成本函数等于𝑚个训练样本损失函数的总和乘以 1 /𝑚,正则项为,

称||𝑊[𝑙] || 2为范数平方,这个矩阵范数||𝑊[𝑙] || 2(即平方范数),被定义 为矩阵中所有元素的平

方求和

公式的具体参数,第一个求和符号其值 𝑖 1 𝑛 [𝑙−1] ,第二个其 𝐽 值从 1 到 𝑛 [𝑙] ,因为 𝑊 是一个 𝑛
[𝑙] × 𝑛 [𝑙−1] 的多维矩阵, 𝑛 [𝑙] 表示 𝑙 层单元的数量, 𝑛 [𝑙−1] 表示第 𝑙 − 1 层隐 藏单元的数量

 (4)、该如何使用该范数实现梯度下降呢?

backprop 计算出 𝑑𝑊 的值, backprop 会给出 𝐽 𝑊 的偏导数,实际上是 𝑊 [𝑙] ,把 𝑊 [𝑙] 替 换为
𝑊 [𝑙] 减去学习率乘以 𝑑𝑊
这就是之前我们额外增加的正则化项,既然已经增加了这个正则项,现在我们要做的就 是给𝑑𝑊
上这一项𝜆/𝑚 *𝑊[𝑙] ,然后计算这个更新项,使用新定义的 𝑑𝑊 [𝑙] ,它的定义含有相关 参数代价函数
导数和,以及最后添加的额外正则项,这也是𝐿2 正则化有时被称为 权重衰减 ”的原因

我们用 𝑑𝑊 [𝑙] 的定义替换此处的 𝑑𝑊 [𝑙] ,可以看到, 𝑊 [𝑙] 的定义被更新为 𝑊 [𝑙] 减去学习率 𝑎 乘以 backprop 再加上𝜆 /𝑚 *𝑊[𝑙]

该正则项说明,不论 𝑊 [𝑙] 是什么,我们都试图让它变得更小,实际上,相当于我们给矩
W 乘以 (1 − 𝑎 *𝜆/𝑚 )倍的权重,矩阵 𝑊 减去 𝛼 *𝜆 /𝑚倍的它,也就是用这个系数(1 − 𝑎
𝜆 /𝑚 )乘以矩阵 𝑊,该系数小于 1 ,因此 𝐿2 范数正则化也被称为 权重衰减 ,因为它就像一般的梯
度下降, 𝑊被更新为少了 𝑎 乘以 backprop 输出的最初梯度值,同时 𝑊 也乘以了这个系数,这个系
数小 于 1 ,因此 𝐿2 正则化也被称为 权重衰减

 (5)、为什么正则化有利于预防过拟合呢?为什么它可以减少方差问题?

  •  高方差是指模型在训练集上表现良好,但在测试集上表现较差的情况,这通常表明模型过于复杂,过度拟合了训练数据。 正则化是一种广泛使用的减小过拟合的方法,它通过在模型损失函数中添加额外的约束条件来限制模型的复杂度。这些约束条件通常以惩罚项的形式出现,例如L1正则化或L2正则化,它们会使得模型参数的值偏向于较小的值。 正则化有利于预防过拟合,因为它限制了模型的复杂度,使得模型更加简单,更易于泛化到未见过的数据上。正则化对于减少方差问题也很有效,因为它有助于减小模型参数的值,从而减少了模型在训练数据中的波动,使得模型更加稳定。正则化可以被视为一种牺牲一定的训练集精度以换取更好的泛化能力的方式。
  • 直观上理解就是如果正则化𝜆设置得足够大,权重矩阵𝑊被设置为接近于 0 的值,直观 理解就是把多隐藏单元的权重设为 0,于是基本上消除了这些隐藏单元的许多影响。如果是 这种情况,这个被大大简化了的神经网络会变成一个很小的网络,小到如同一个逻辑回归单 元,可是深度却很大,它会使这个网络从过度拟合的状态更接近左图的高偏差状态。
  • 但是 𝜆 会存在一个中间值,于是会有一个接近 Just Right 的中间状态。
    直观理解就是 𝜆 增加到足够大, 𝑊 会接近于 0 ,实际上是不会发生这种情况的,我们尝
    试消除或至少减少许多隐藏单元的影响,最终这个网络会变得更简单,这个神经网络越来越
    接近逻辑回归,我们直觉上认为大量隐藏单元被完全消除了,其实不然,实际上是该神经网
    络的所有隐藏单元依然存在,但是它们的影响变得更小了。神经网络变得更简单了,貌似这
    样更不容易发生过拟合,因此我不确定这个直觉经验是否有用,不过在编程中执行正则化时,
    你实际看到一些方差减少的结果

4、dropoout正则化

  • Dropout正则化是一种常用的神经网络正则化方法,它可以在训练过程中随机地将一些神经元的输出置为0,以防止过度拟合。具体地,Dropout在每次迭代中以一定的概率随机丢弃一些神经元,这样在训练过程中,每个神经元都有可能被丢弃,从而强制网络去学习多个独立的子模型。在测试过程中,所有的神经元都会被保留,但是每个神经元的输出会被乘以一个训练中的缩放因子,以保持总体输出的期望值不变。
  • Dropout正则化可以有效地降低神经网络的过拟合程度,因为它迫使网络去学习多个独立的子模型,从而增加了网络的鲁棒性和泛化能力。此外,Dropout还可以使得网络的训练更加高效,因为它可以降低神经元之间的耦合程度,从而减少了对于任何一个神经元的梯度更新的依赖。
  • 需要注意的是,Dropout正则化通常需要对网络超参数进行调节,例如丢弃率、缩放因子等。通常建议在应用Dropout时,根据实际情况进行超参数的调整,以获得最佳的效果。

5、其他正则化方法

(1)、数据扩增
通过随意翻转和裁剪图片,我们可以增大数据集,额外生成假训练数据。和全新的,独
立的猫咪图片数据相比,这些额外的假的数据无法包含像全新数据那么多的信息,但我们这
么做基本没有花费,代价几乎为零,除了一些对抗性代价。以这种方式扩增算法数据,进而
正则化数据集,减少过拟合比较廉价。
(2)、 early stopping
还有另外一种常用的方法叫作 early stopping ,运行梯度下降时,我们可以绘制训练误
差,或只绘制代价函数 𝐽 的优化过程,在训练集上用 0-1 记录分类误差次数。呈单调下降趋
势,如图

Early stopping 的优点是,只运行一次梯度下降,你可以找出 𝑤 的较小值,中间值和较大
值,而无需尝试 𝐿2 正则化超级参数 𝜆 的很多值

6、归一化输入

(1)、提高模型的收敛速度和稳定性。当输入数据的值域差异较大时,需要更多的迭代次数才能使模型收敛,而且模型的收敛速度也很慢。归一化可以缩小输入数据的值域,使得模型更容易收敛。

(2)、避免特征权重的影响。当输入特征的值域差异很大时,某些特征可能会被赋予过高的权重,从而影响模型的泛化性能。归一化可以消除这种影响,使得所有特征都处于同一数量级。

(3)、提高模型的泛化能力。当输入数据的值域差异很大时,模型在训练集上可能会出现很高的拟合效果,但在测试集上的表现很差。归一化可以消除这种差异,提高模型的泛化能力。

7、梯度消失和梯度爆炸

(1)、梯度消失和梯度爆炸都是指在神经网络训练中,梯度值出现的问题

(2)、梯度消失是指在神经网络的反向传播中,梯度值逐渐变小,直到变得非常小,甚至接近于

零。这种情况通常发生在深层网络中,因为每次反向传播都需要求解多个激活函数的导数,而激活

函数的导数通常在接近于0的区域取值,因此在多个层级上累积,就会导致梯度值逐渐变小,最终

无法对神经网络的权重进行有效的更新,从而影响模型的性能。

(3)、梯度爆炸是指在神经网络的反向传播中,梯度值逐渐变大,直至变得非常大,甚至超过了

计算机能够处理的范围,导致算法不收敛或者无法更新网络权重。这种情况通常发生在网络中存在

大量的权重共享或者层数较多时,因为这样会导致梯度值的指数级增长,使得网络无法进行有效的训练。

(4)、为了避免梯度消失和梯度爆炸的问题,可以使用一些技巧来稳定神经网络的训练,例如:

8、梯度的数值逼近

在实施 backprop 时,有一个测试叫做梯度检验,它的作用是确保 backprop 正确实施。
因为有时候,你虽然写下了这些方程式,却不能 100% 确定,执行 backprop 的所有细节都是
正确的。

9、梯度检验

(1)、梯度检验是一种用于验证计算出的梯度是否正确的方法。它通过比较数值逼近梯度和解析

梯度之间的差异来判断计算出的梯度是否准确。

(2)、梯度检验的优点是可以帮助我们在实现梯度计算时发现错误,避免因为梯度计算错误而导

致模型训练失败。缺点是梯度检验需要更多的计算资源,而且由于数值逼近梯度和解析梯度的计算

方法不同,两者之间的差异可能会导致计算误差。

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

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

相关文章

海兰一体机电脑U盘重装Win10系统教程图解

海兰一体机电脑是全家人都适用的电脑,使用海兰一体机电脑的用户要怎么用U盘来重装Win10系统,首先用户需要确保电脑能够正常联网,然后再准备一个8G以上的U盘,最后根据小编分享的海兰一体机电脑U盘重装Win10系统教程图解操作即可。 …

PR脚本:音乐鼓点自动节拍打点标记动画BeatEdit

BeatEdit可检测音乐中的节拍并在Premiere Pro时间轴中为其生成标记。可以创建与音乐同步的自动编辑,或者让BeatEdit v2.0.006 激活版协助您进行手动编辑过程。BeatEdit mac版使用节拍信息来生成与音乐同步的全自动编辑。如果需要更多控制,拍子标记也可以…

视唱音准不好的人能练好吗,视唱音准不好怎么办

软件版本:Earmaster7.3.6 无论是普通人还是声乐艺术生,音准是唱好歌的必要条件之一,如果音准不好,唱歌自然会跑调。然而并不是所有人天生都有十分出色的音准,如果不进行后天的训练,是很难找到正确的音准的…

web应用封装成app|超级签名

PP封装是形成APP的最省钱的一种方式。你只需要拥有一个网址就可以通过一些技术处理封装成一个跨iOS和Android的APP,这个过程往往只需要几分钟。在移动互联网时代,拥有一个移动端APP是必不可少的。那么APP是怎样封装的呢? 首先让我们先来了解…

基于深度学习的人脸面部表情识别系统【含Python源码+PyqtUI界面+原理详解】

功能演示 摘要:面部表情识别(Facial Expression Recognition)是一种通过技术手段识别人物图像中人脸面部表情的技术。本文详细介绍了其实现的技术原理,同时给出完整的Python实现代码、训练好的深度学习模型,并且通过Py…

Python中的四种条件语句结构和应用举例

Python中的四种条件语句结构和应用举例 条件语句是计算机实现分类高效执行计算的重要方法。在许多计算机语言编写(C语言,Java语言,matlab语言等)的时候,都有涉及条件语句的部分,本文对Python语言中的条件语…

Docker操作镜像与容器常用命令

Docker操作镜像与容器的常用命令 文章目录 Docker操作镜像与容器的常用命令前言1、镜像相关命令1.1 查看镜像1.2 搜索镜像1.3 拉取镜像1.4 删除镜像 2 容器相关命令2.1 查看容器2.2 创建与启动容器2.3 停止与启动容器2.4 文件拷贝2.5 目录挂载2.6 查看容器IP地址2.7 删除容器 总…

金山云联合MiniMax推出MaaS互信推理专区方案 解决大模型与数据互信难题

作为人工智能领域颇具里程碑式的进展,ChatGPT以其惊艳的表现,迅速掀起了行业热潮,使得大模型成为当下最为炙手可热的技术方向之一。但在大模型落地过程中,如何既能保障大模型使用方的数据安全,又能保护大模型提供方的部…

C编译过程 以及 ELF文件(学习笔记)

C编译过程 一个用C语言编写的高级语言程序是从编写到打包、再到编译执行的基本过程,我们知道在CPU上执行的是低级别的机器语言,从高级语言到低级别的机器语言肯定是要经过翻译过程,这个过程大体的过程如下图所示: 在Unix系统中,从…

基于simulink的四节串联锂电池的主动均衡算法(PID控制)

电动汽车往往搭载上百节单体电池作为能量来源,如此多的电池聚在一起其性能差异往往造成电量的不一致。不均衡性会随着电池的充放电循环而不断加剧,致使单体容量快速衰减,最终个别单体的失效就会影响整个电池组乃至用电系统的工作。常见的均衡方式可分为主动均衡和被…

亚马逊云科技“专库专用”模式,可有效提高数据库的性能和效率

近日,全球数据库市场发生了一件令人瞩目的事件,根据Gartner的数据,我们发现亚马逊云科技作为一个纯云厂商,夺得了2022年全球数据库领导者的桂冠,占据全球市场的25.3%份额。 云原生数据库的发展方向:与数据分…

深度剖析PostgreSQL慢SQL:原因与优化方案大揭秘

​ PostgreSQL 是一种成熟稳定的关系型数据库管理系统,它支持高级的数据类型、索引以及查询语言。但是,尽管 PostgreSQL 在性能和可靠性方面表现出色,但偶尔也会出现慢 SQL 的情况。本文将探讨 PostgreSQL 慢 SQL 的原因和优化方案&#xff0…

Qt安卓AMD64-v8a配置OpenCV4.5.2

1.OpenCV官方网下载OpenCV的安卓平台SDK并解压 在工程的配置pro文件中添加opencv包含路径INCLUDEPATH与库LIBS unix {ANDROID_OPENCV = C:\Users\dev2\Desktop\OpenCV-android-sdk\sdk\nativeINCLUDEPATH += $$ANDROID_OPENCV/jni/include/opencv2 \$$ANDROID_OPENCV/jni/in…

进行网站建设,开启数字化时代的新篇章

在当今数字化时代,拥有一个个人或企业网站已经成为了非常普遍的需求。网站可以帮助你展示自己或品牌的形象、提供各种服务和信息,甚至是进行在线销售等,这些都是传统媒体所无法比拟的优势。 网站建设是什么? 网站建设是指在互联…

LaravelPHP笔记-转json后中文变成\u数据

用 PHP 的 json_encode 来处理中文的时候,中文都会被编码,变成不可读的,类似”\u***” 的格式,如果想汉字不进行转码,可用如下方法: 在json_encode第二个参数添加JSON_UNESCAPED_UNICODE。 如下代码&…

dsl语句查询elasticsearch集群节点分布和资源使用情况

查询语句如下(本文是直接在kibana里面执行的哦) GET _cat/nodes?v执行结果 这样就可以很直观的看到,es部署在了哪些节点上,以及各节点资源分布使用

【Ant Design of Vue】自定义SVG图标的使用

一、需求 由于Ant Design Vue提供的 Icon 图标满足不了项目的需求(需求图标未提供),所以我们使用了自定义的 SVG 图标 二、技术栈 前端框架:vue2 Vue Cli前端UI框架:Ant Design of Vue(v1.7.8&#xff…

Python自动化测试,Excel数据驱动读取 xlrd实战(超详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 xlrd模块安装 pi…

JS逆向系列之猿人学爬虫第16题-window蜜罐

文章目录 目标网站参数定位与加密逻辑分析补全后的jspython调用测试往期逆向文章推荐目标网站 https://match.yuanrenxue.cn/match/16参数定位与加密逻辑分析 t就是时间戳,m是我们主要逆向的参数,跟栈进入window

mysql之mha高可用

目录 一、MHA的相关知识 1)什么是 MHA 2)MHA 的组成 (1)MHA Node(数据节点) (2)MHA Manager(管理节点) 3)MHA 的特点 二、MHA的一主两从部…