吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.4-1.5

目录

  • 第一门课:第二门课 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)
    • 第一周:深度学习的 实践层面 (Practical aspects of Deep Learning)
      • 1.4 正则化(Regularization)

第一门课:第二门课 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)

第一周:深度学习的 实践层面 (Practical aspects of Deep Learning)

1.4 正则化(Regularization)

深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据,这是非常可靠的方法,但你可能无法时时刻刻准备足够多的训练数据或者获取更多数据的成本很高,但正则化通常有助于避免过拟合或减少你的网络误差。

下面我们就来讲讲正则化的作用原理。

我们用逻辑回归来实现这些设想,求成本函数𝐽的最小值,它是我们定义的成本函数,参数包含一些训练数据和不同数据中个体预测的损失,w和b是逻辑回归的两个参数,w是一个多维度参数矢量,b是一个实数。在逻辑回归函数中加入正则化,只需添加参数 λ,也就是正则化参数,一会儿再详细讲。

λ 2 m \frac{λ}{2m} 2mλ乘以w范数的平方,w欧几里德范数的平方等于 w j w_j wj(j 值从 1 到n_x)平方的和,也可表示为 w T w w^Tw wTw,也就是向量参数w 的欧几里德范数(2 范数)的平方,此方法称为𝐿2正则化。因为这里用了欧几里德法线,被称为向量参数𝑤的𝐿2范数。

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

𝐿2正则化是最常见的正则化类型,你们可能听说过𝐿1正则化,𝐿1正则化,加的不是𝐿2范数,而是正则项 λ m \frac{λ}{m} mλ乘以 ∑ j = 1 n x ∣ x ∣ \sum_{j=1}^{nx}{|x|} j=1nxx ∑ j = 1 n x ∣ x ∣ \sum_{j=1}^{nx}{|x|} j=1nxx也被称为参数𝑤向量的𝐿1范数,无论分母是𝑚还是2𝑚,它都是一个比例常量。

如果用的是𝐿1正则化,𝑤最终会是稀疏的,也就是说𝑤向量中有很多 0,有人说这样有利于压缩模型,因为集合中参数均为 0,存储模型所占用的内存更少。实际上,虽然𝐿1正则化使模型变得稀疏,却没有降低太多存储内存,所以我认为这并不是𝐿1正则化的目的,至少不是为了压缩模型,人们在训练网络时,越来越倾向于使用𝐿2正则化。

我们来看最后一个细节,𝜆是正则化参数,我们通常使用验证集或交叉验证集来配置这个参数,尝试各种各样的数据,寻找最好的参数,我们要考虑训练集之间的权衡,把参数设置为较小值,这样可以避免过拟合,所以 λ 是另外一个需要调整的超级参数,顺便说一下,为了方便写代码,在 Python 编程语言中,𝜆是一个保留字段,编写代码时,我们写成𝑙𝑎𝑚𝑏𝑑,以免与 Python 中的保留字段冲突,这就是在逻辑回归函数中实现𝐿2正则化的过程,如何在神经网络中实现𝐿2正则化呢?

神经网络含有一个成本函数,该函数包含 W [ 1 ] , b [ 1 ] W^{[1]},b^{[1]} W[1]b[1] W [ l ] , b [ l ] W^{[l]},b^{[l]} W[l]b[l]所有参数,字母𝐿是神经网络所含的层数,因此成本函数等于𝑚个训练样本损失函数的总和乘以 1 m \frac{1}{m} m1,正则项为 λ 2 m ∑ 1 L ∣ ∣ W [ l ] ∣ ∣ 2 \frac{λ}{2m}\sum_{1}^L{||W^{[l]}||^2} 2mλ1L∣∣W[l]2,我们称 ∣ ∣ W [ l ] ∣ ∣ 2 ||W^{[l]}||^2 ∣∣W[l]2为范数平方,这个矩阵范数 ∣ ∣ W [ l ] ∣ ∣ 2 ||W^{[l]}||^2 ∣∣W[l]2(即平方范数),被定义为矩阵中所有元素的平方求和。
在这里插入图片描述
我们看下求和公式的具体参数,第一个求和符号其值i从 1 到 n [ l − 1 ] n^{[l−1]} n[l1],第二个其J值从 1 到 n [ l ] n^{[l]} n[l],因为𝑊是一个 n [ l ] x n [ l − 1 ] n^{[l]} x n^{[l−1]} n[l]xn[l1]的多维矩阵, n [ l ] n^{[l]} n[l]表示𝑙 层单元的数量, n [ l − 1 ] n{[l−1]} n[l1]表示第𝑙 − 1层隐藏单元的数量。
在这里插入图片描述
该矩阵范数被称作“弗罗贝尼乌斯范数”,用下标𝐹标注,鉴于线性代数中一些神秘晦涩的原因,我们不称之为“矩阵𝐿2范数”,而称它为“弗罗贝尼乌斯范数”,矩阵𝐿2范数听起来更自然,但鉴于一些大家无须知道的特殊原因,按照惯例,我们称之为“弗罗贝尼乌斯范数”,它表示一个矩阵中所有元素的平方和。

该如何使用该范数实现梯度下降呢?
用 backprop 计算出𝑑𝑊的值,backprop 会给出𝐽对𝑊的偏导数,实际上是𝑊[𝑙],把𝑊[𝑙]替换为𝑊[𝑙]减去学习率乘以𝑑𝑊。

这就是之前我们额外增加的正则化项,既然已经增加了这个正则项,现在我们要做的就是给dW加上这一项 λ m W [ l ] \frac{λ}{m}W^{[l]} mλW[l],然后计算这个更新项,使用新定义的 d W [ l ] dW^{[l]} dW[l],它的定义含有相关参数代价函数导数和,以及最后添加的额外正则项,这也是𝐿2正则化有时被称为“权重衰减”的原因。
在这里插入图片描述
我们用 d W [ l ] dW^{[l]} dW[l]的定义替换此处的 d W [ l ] dW^{[l]} dW[l],可以看到, W [ l ] W^{[l]} W[l]的定义被更新为 W [ l ] W^{[l]} W[l]减去学习率𝑎 乘以 backprop 再加上 λ m W [ l ] \frac{λ}{m}W^{[l]} mλW[l]
在这里插入图片描述
该正则项说明,不论 W [ l ] W[l] W[l]是什么,我们都试图让它变得更小,实际上,相当于我们给矩阵 W 乘以(1 − 𝑎 λ m \frac{λ}{m} mλ)倍的权重,矩阵𝑊减去𝛼 λ m \frac{λ}{m} mλ倍的它,也就是用这个系数(1 − λ m \frac{λ}{m} mλ)乘以矩阵𝑊,该系数小于 1,因此𝐿2范数正则化也被称为“权重衰减”,因为它就像一般的梯度下降,𝑊被更新为少了𝑎乘以 backprop 输出的最初梯度值,同时𝑊也乘以了这个系数,这个系数小于 1,因此𝐿2正则化也被称为“权重衰减”。

在这里插入图片描述
我不打算这么叫它,之所以叫它“权重衰减”是因为这两项相等,权重指标乘以了一个小于 1 的系数。

以上就是在神经网络中应用𝐿2正则化的过程,有人会问我,为什么正则化可以预防过拟合,我们放在下节课讲,同时直观感受一下正则化是如何预防过拟合的。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eCongnition 获取特征(shp)

目录 1、加载数据和分割的shp文件 2、将专题(导入的shp)转换为对象 3、导出特征 1、加载数据和分割的shp文件 我们加载数据,在第二个框(Thematic La..)里加载矢量shp 导入的.shp文件称为专题层(Thematic Layer), 显示方式如下所示&#x…

Linux下SPI设备驱动实验:验证读写SPI设备中数据的函数功能

一. 简介 前面文章实现了 SPI设备驱动框架,并在此基础上添加了字符设备驱动框架,实现了读 / 写SPI设备中数据的函数,文章如下: Linux下SPI设备驱动实验:向SPI驱动框架中加入字符设备驱动框架代码-CSDN博客 Linux下…

java体育馆使用预约平台的设计与实现(springboot+mysql源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的体育馆使用预约平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 体育馆使用预约平台的…

10、【代理模式】通过引入一个代理对象来控制对原始对象的访问的方式。

你好,我是程序员雪球。 今天我们了解代理模式的原理、静态代理和动态代理的区别、Spring AOP 和动态代理的关系、代理模式的使用场景,以及用 Java 实现一个动态代理示例 一、代理模式的原理 代理模式是一种设计模式,它提供了一种通过引入一个…

空心电抗器的matlab建模与性能仿真分析

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 空心电抗器是一种无铁芯的电感元件,主要由一圈或多圈导线绕制在非磁性材料制成的空心圆筒或其他形状的骨架上构成。其工作原理基于法拉第电磁感应定律,…

【论文阅读】YOLO-World | 开集目标检测

Date:2024.02.22,Tencent AI Lab,华中科技大学Paper:https://arxiv.org/pdf/2401.17270.pdfGithub:https://github.com/AILab-CVC/YOLO-World 论文解决的问题: 通过视觉语言建模和大规模数据集上的预训练来…

使用python-can和cantools实现arxml报文解析、发送和接收的完整指南

文章目录 背景一、硬件支持二、环境准备1、python解释器安装2、python库安装 三、 收发案例四、 方法拓展1、canoe硬件调用2、回调函数介绍 结论 背景 在汽车行业中,CAN (Controller Area Network) 总线是用于车辆内部通信的关键技术。arxml文件是一种用于描述CAN消…

windows下python opencv ffmpeg读取摄像头实现rtsp推流 拉流

windows下python opencv ffmpeg读取摄像头实现rtsp推流 拉流 整体流程1.下载所需文件1. 1下载rtsp推流服务器1.2 下载ffmpeg2. 开启RTSP服务器3. opencv 读取摄像头并调用ffmpeg进行推流4. opencv进行拉流整体流程 1.下载所需文件 1. 1下载rtsp推流服务器 下载 RTSP服务器 下…

韩顺平Java | C27 正则表达式

入门介绍 需求:提取文本中某类字符 传统方法:遍历每个字符,判断其是否在ASCII码中某种类型得编码范围内,代码量大,效率不高 正则表达式(RegExp, regular expression):处理文本的利器,是对字符…

2024.4.18

学生管理部分 #include<myhead.h> int main(int argc, char *argv[]) {sqlite3* ppDbNULL;if(sqlite3_open("./mydb.db",&ppDb)!SQLITE_OK){printf("sqlite3_open error:%s\n",sqlite3_errmsg(ppDb));return -1;}//创建数据表char arg[128]&quo…

虚拟现实(VR)开发框架

虚拟现实&#xff08;VR&#xff09;开发框架为开发者提供了构建VR应用程序所需的基本工具和功能。它们通常包括3D引擎、场景图、输入系统、音频系统和网络功能。下面是一些流行的VR开发框架。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流…

Next.js多页布局getLayout使用方法

目录 官网解释 直接上代码使用方法展示 1.page页面​编辑 2._app.js页面,也放在pages中​编辑 效果展示 有getLayout展示getLayout返回的页面布局 无getLayout展示默认布局 官网解释 如果需要多个布局&#xff0c;可以添加一个属性getLayout添加到您的页面&#xff0c;允…