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

news2025/1/10 20:19:59

目录

  • 第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)
    • 第一周:深度学习的 实践层面 (Practical aspects of Deep Learning)
      • 1.11 神经网络的权重初始化(Weight Initialization for Deep Networks)
      • 1.12 梯度的数值逼近(Numerical approximation of gradients)

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

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

1.11 神经网络的权重初始化(Weight Initialization for Deep Networks)

上节课,我们学习了深度神经网络如何产生梯度消失和梯度爆炸问题,最终针对该问题,我们想出了一个不完整的解决方案,虽然不能彻底解决问题,却很有用,有助于我们为神经网络更谨慎地选择随机初始化参数,为了更好地理解它,我们先举一个神经单元初始化地例子,然后再演变到整个深度网络。
在这里插入图片描述
我们来看看只有一个神经元的情况,然后才是深度网络。

单个神经元可能有 4 个输入特征,从 x 1 x_1 x1 x 4 x_4 x4,经过a= g(z)处理,最终得到 y ^ \hat{y} y^,稍后讲深度网络时,这些输入表示为 a [ l ] a^{[l]} a[l],暂时我们用𝑥表示。

z = w 1 x 1 + w 2 x 2 + ⋯ + w n x n , b = 0 z = w_1x_1 + w_2x_2 + ⋯ + w_nx_n,b = 0 z=w1x1+w2x2++wnxnb=0,暂时忽略𝑏,为了预防𝑧值过大或过小,你可以看到𝑛越大,你希望 w i w_i wi越小,因为z是 w i x i w_ix_i wixi的和,如果你把很多此类项相加,希望每项值更小,最合理的方法就是设置 w i = 1 n w_i =\frac{1}{n} wi=n1,𝑛表示神经元的输入特征数量,实际上,你要做的就是设置某层权重矩阵 w [ l ] = n p . r a n d o m . r a n d n ( s h a p e ) ∗ n p . s q r t ( 1 n l − 1 ) w^{[l]} = np. random. randn(shape) ∗ np. sqrt(\frac{1}{n^{l-1}}) w[l]=np.random.randn(shape)np.sqrt(nl11) n l − 1 n^{l-1} nl1就是我喂给第𝑙层神经单元的数量(即第𝑙 − 1层神经元数量)。

在这里插入图片描述
结果,如果你是用的是 Relu 激活函数,而不是 1 n \frac{1}{n} n1,方差设置为 2 n \frac{2}{n} n2,效果会更好。你常常发现,初始化时,尤其是使用 Relu 激活函数时, g [ l ] ( z ) = R e l u ( z ) g^{[l]}(z) = Relu(z) g[l](z)=Relu(z),它取决于你对随机变量的熟悉程度,这是高斯随机变量,然后乘以它的平方根,也就是引用这个方差 2 n \frac{2}{n} n2。这里,我用的是 n [ l − 1 ] n^{[l−1]} n[l1],因为本例中,逻辑回归的特征是不变的。但一般情况下𝑙层上的每个神经元都有 n [ l − 1 ] n^{[l−1]} n[l1]个输入。如果激活函数的输入特征被零均值和标准方差化,方差是 1,𝑧也会调整到相似范围,这就没解决问题(梯度消失和爆炸问题)。但它确实降低了梯度消失和爆炸问题,因为它给权重矩阵𝑤设置了合理值,你也知道,它不能比 1 大很多,也不能比 1 小很多,所以梯度没有爆炸或消失过快。

在这里插入图片描述

我提到了其它变体函数,刚刚提到的函数是 Relu 激活函数,一篇由 Herd 等人撰写的论文曾介绍过。对于几个其它变体函数,如 tanh 激活函数,有篇论文提到,常量 1 比常量 2的效率更高,对于 tanh 函数来说,它是 1 n l − 1 \sqrt[]{\frac{1}{n^{l-1}}} nl11 ,这里平方根的作用与这个公式作用相同(np. sqrt(1𝑛[𝑙−1])),它适用于 tanh 激活函数,被称为 Xavier 初始化。Yoshua Bengio 和他的同事还提出另一种方法,你可能在一些论文中看到过,它们使用的是公式 2 n l − 1 + n l \sqrt[]{\frac{2}{n^{l-1} + n^{l}}} nl1+nl2 。其它理论已对此证明,但如果你想用 Relu 激活函数,也就是最常用的激活函数,我会用这个公式np. sqrt( 2 n l − 1 \frac{2}{n^{l-1}} nl12),如果使用 tanh 函数,可以用公式 1 n l − 1 \sqrt[]{\frac{1}{n^{l-1}}} nl11 ,有些作者也会使用这个函数。

实际上,我认为所有这些公式只是给你一个起点,它们给出初始化权重矩阵的方差的默认值,如果你想添加方差,方差参数则是另一个你需要调整的超级参数,可以给公式np. sqrt( 2 n l − 1 \frac{2}{n^{l-1}} nl12)添加一个乘数参数,调优作为超级参数激增一份子的乘子参数。有时调优该超级参数效果一般,这并不是我想调优的首要超级参数,但我发现调优过程中产生的问题,虽然调优该参数能起到一定作用,但考虑到相比调优,其它超级参数的重要性,我通常把它的优先级放得比较低。

希望你现在对梯度消失或爆炸问题以及如何为权重初始化合理值已经有了一个直观认识,希望你设置的权重矩阵既不会增长过快,也不会太快下降到 0,从而训练出一个权重或梯度不会增长或消失过快的深度网络。我们在训练深度网络时,这也是一个加快训练速度的技巧。

1.12 梯度的数值逼近(Numerical approximation of gradients)

在实施 backprop 时,有一个测试叫做梯度检验,它的作用是确保 backprop 正确实施。因为有时候,你虽然写下了这些方程式,却不能 100%确定,执行 backprop 的所有细节都是正确的。为了逐渐实现梯度检验,我们首先说说如何计算梯度的数值逼近,下节课,我们将
讨论如何在 backprop 中执行梯度检验,以确保 backprop 正确实施。
在这里插入图片描述
我们先画出函数𝑓,标记为𝑓(𝜃), f ( θ ) = θ 3 f(θ) = θ^3 f(θ)=θ3,先看一下𝜃的值,假设𝜃 = 1,不增大𝜃的值,而是在𝜃 右侧,设置一个𝜃 + 𝜀,在𝜃左侧,设置𝜃 − 𝜀。因此𝜃 = 1,𝜃 + 𝜀 = 1.01, 𝜃 − 𝜀 =0.99,,跟以前一样,𝜀的值为 0.01,看下这个小三角形,计算高和宽的比值,就是更准确的梯度预估,选择𝑓函数在𝜃 − 𝜀上的这个点,用这个较大三角形的高比上宽,技术上的原因我就不详细解释了,较大三角形的高宽比值更接近于𝜃的导数,把右上角的三角形下移,好像有了两个三角形,右上角有一个,左下角有一个,我们通过这个绿色大三角形同时考虑了这两个小三角形。所以我们得到的不是一个单边公差而是一个双边公差。

在这里插入图片描述

我们写一下数据算式,图中绿色三角形上边的点的值是𝑓(𝜃 + 𝜀),下边的点是𝑓(𝜃 − 𝜀),这个三角形的高度是𝑓(𝜃 + 𝜀) − 𝑓(𝜃 − 𝜀),这两个宽度都是 ε,所以三角形的宽度是2𝜀,高宽比值为 f ( θ + ε ) − f ( θ − ε ) 2 ε \frac{f(θ+ε)−f(θ−ε)}{2ε} 2εf(θ+ε)f(θε) ,它的期望值接近𝑔(𝜃), f ( θ ) = θ 3 f(θ) = θ^3 f(θ)=θ3传入参数值:
f ( θ + ε ) − f ( θ − ε ) 2 ε = ( 1.01 ) 3 − ( 0.99 ) 3 2 ∗ 0.01 \frac{f(θ+ε)−f(θ−ε)}{2ε} =\frac{(1.01)^3-(0.99)^3}{2*0.01} 2εf(θ+ε)f(θε)=20.01(1.01)3(0.99)3

大家可以用计算器算算结果,结果应该是 3.0001,而前面一张幻灯片上面是,当𝜃 = 1时,𝑔(𝜃) = 3 θ 2 θ^2 θ2 = 3,所以这两个𝑔(𝜃)值非常接近,逼近误差为0.0001,前一张幻灯片,我们只考虑了单边公差,即从𝜃到𝜃 + 𝜀之间的误差,𝑔(𝜃)的值为3.0301,逼近误差是 0.03,不是 0.0001,所以使用双边误差的方法更逼近导数,其结果接近于 3,现在我们更加确信,𝑔(𝜃)可能是𝑓导数的正确实现,在梯度检验和反向传播中使用该方法时,最终,它与运行两次单边公差的速度一样,实际上,我认为这种方法还是非常值得使用的,因为它的结果更准确。

在这里插入图片描述
这是一些你可能比较熟悉的微积分的理论,如果你不太明白我讲的这些理论也没关系,导数的官方定义是针对值很小的𝜀,导数的官方
定义是𝑓′(𝜃) = f ( θ + ε ) − f ( θ − ε ) 2 ε \frac{f(θ+ε)−f(θ−ε)}{2ε} 2εf(θ+ε)f(θε) ,如果你上过微积分课,应该学过无穷尽的定义,我就不在这里讲了。

对于一个非零的𝜀,它的逼近误差可以写成𝑂( ε 2 ε^2 ε2),ε 值非常小,如果𝜀 = 0.01, ε 2 ε^2 ε2 = 0.0001,大写符号𝑂的含义是指逼近误差其实是一些常量乘以 ε 2 ε^2 ε2,但它的确是很准确的逼近误差,所以大写𝑂的常量有时是 1。然而,如果我们用另外一个公式逼近误差就是𝑂(𝜀),当𝜀小于 1 时,实际上𝜀比 ε 2 ε^2 ε2大很多,所以这个公式近似值远没有左边公式的准确,所以在执行梯度检验时,我们使用双边误差,即 f ( θ + ε ) − f ( θ − ε ) 2 ε \frac{f(θ+ε)−f(θ−ε)}{2ε} 2εf(θ+ε)f(θε),而不使用单边公差,因为它不够准确。

如果你不理解上面两条结论,所有公式都在这儿,不用担心,如果你对微积分和数值逼近有所了解,这些信息已经足够多了,重点是要记住,双边误差公式的结果更准确,下节课我们做梯度检验时就会用到这个方法。我们讲了如何使用双边误差来判断别人给你的函数𝑔(𝜃),是否正确实现了函数𝑓的偏导,现在我们可以使用这个方法来检验反向传播是否得以正确实施,如果不正确,它可能有 bug 需要你来解决。

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

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

相关文章

第三方风险:当今互联世界中日益严重的威胁

现代商业环境因协作而蓬勃发展。公司依靠庞大的第三方供应商、供应商、承包商和合作伙伴网络来提供产品、服务和专业知识。 虽然这种错综复杂的关系网络促进了创新和效率,但它也使组织面临隐藏的威胁:第三方风险。 第三方风险是指因公司第三方的作为或…

GitLab常用指令!(工作中常用的)

目录 克隆代码创建分支切换分支将代码提交到分支当中Merge合并 克隆代码 复制完地址,打开Git Bash,然后 git clone “复制的地址”创建分支 创建new_test分支 git branch new_test切换分支 切换到new_test分支 git checkout new_test将代码提交到分…

Flink checkpoint 源码分析- Checkpoint barrier 传递源码分析

背景 在上一篇的博客里,大致介绍了flink checkpoint中的触发的大体流程,现在介绍一下触发之后下游的算子是如何做snapshot。 上一篇的文章: Flink checkpoint 源码分析- Flink Checkpoint 触发流程分析-CSDN博客 代码分析 1. 在SubtaskCheckpointCoo…

使用 LlamaIndex 和 Llama 2-Chat 构建知识驱动的对话应用程序

文章目录 使用 LlamaIndex 和 Llama 2-Chat 构建知识驱动的对话应用程序Llama 2-70B-聊天LlamaIndex 解决方案概述先决条件使用 SageMaker JumpStart 部署 GPT-J 嵌入模型使用 SageMaker Python SDK 进行部署在 SageMaker Studio 中使用 SageMaker JumpStart 进行部署使用 Sage…

Hotcoin Research | 市场洞察:2024年4月22日-28日

加密货币市场表现 本周内加密大盘整体呈现出复苏状态,在BTC减半后进入到震荡上行周期。BTC在$62000-66000徘徊,ETH在$3100-3300徘徊,随着港交所将于 4 月 30 日开始交易嘉实基金的比特币和以太坊现货 ETF,周末行情有一波小的拉升…

从MySQL+MyCAT架构升级为分布式数据库,百丽应用OceanBase 4.2的感受分享

本文来自OceanBase的客户,百丽时尚的使用和测试分享 业务背景 百丽时尚集团,作为国内大型时尚鞋服集团,在中国超过300个城市设有直营门店,数量超过9,000家。集团构建了以消费者需求为核心的垂直一体化业务模式,涵盖了…

VTK —— 二、教程五 - 通过鼠标事件与渲染交互(附完整源码)

代码效果 本代码编译运行均在如下链接文章生成的库执行成功,若无VTK库则请先参考如下链接编译vtk源码: VTK —— 一、Windows10下编译VTK源码,并用Vs2017代码测试(附编译流程、附编译好的库、vtk测试源码) 教程描述 本…

关于下载上传的sheetjs

一、背景 需要讲后端返回来的表格数据通过前端设置导出其中某些字段,而且得是xlsx格式的。 那就考虑使用控件SheetJS。如果是几年前,一般来说,保存excel的文件都是后端去处理,处理完成给前端一个接口,前端调用了打开…

初学React基础

最近准备跟着黑马React学一下React,扩充一下技术面,打算还是以一边学习一边记笔记为主,进行学习! 1. React介绍 1.1. React是什么? React是由FaceBook现在称(Meta)开发的开源 JavaScript 库&a…

如何使用 ArcGIS Pro 查找小区最近的地铁站

学习 GIS 除了可以用在工作上之外,还可以将其运用到生活之中,比如查找距离小区最近的地铁站,这里为大家介绍一下查找的方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的POI数据,除了POI数据…

Python流程控制

描述 Python中的流程控制是编程中用来控制代码执行顺序的结构。包括条件判断(if语句)、循环(for循环和while循环)、以及用于跳出或跳过循环的break和continue语句。 条件判断(if语句) if语句允许我们根据…

C++基础语法练习 - 求平均值

题目链接:https://www.starrycoding.com/problem/156 题目描述 在StarryCoding的语法班期末考试里, n n n名同学的成绩分别为 a 1 , a 2 , . . . , a n a_1, a_2, ..., a_n a1​,a2​,...,an​,请求出全班分数的平均值。 输入格式 第一行…

正则化回归

1. L1正则化 L1正则化是回归参数各个元素绝对值之和。 2. L2正则化 L2正则化是回归参数各个元素平方之和。 3.LOSS回归 线性回归加上L1正则化 4.岭回归 线性回归加上L2正则化 不断增大 L2 约束项参数 α,可以发现岭回归参数优化解不断靠近原点&#xff0c…

中职数字化校园网络建设

中职(职校)数字化校园的校园网建设立足于职业教育、职业学校的特点,充分注意到信息技术的飞速发展、通信成本的迅速降低的特点。在规划和建设校园网时,遵循以下原则: 采用通用和成熟的技术:采用通用的、成熟…

Android创建快捷方式到桌面

效果图 参考 https://blog.51cto.com/u_16175498/8811197https://blog.51cto.com/u_16175498/8811197 权限 <uses-permission android:name"com.android.launcher.permission.INSTALL_SHORTCUT" /> 实现 if (Build.VERSION.SDK_INT > Build.VERSION_C…

macOS 如何关闭文本编辑区的拼写检查?

macOS 如何关闭文本编辑区的拼写检查&#xff1f; 在使用 macOS 自带软件 Freeform 的时候&#xff0c;发现有些单词的拼写检查会一直显示红色下划线&#xff0c;很烦。 找了下&#xff0c;找到了如新关闭这种提示 之后就正常了&#xff1a;

软件测试经理工作日常随记【1】-测试用例

软件测试经理工作日常随记【1】-测试用例 1.测试用例 测试用例&#xff0c;好像是每个讲软测经验的文章的基本输出。各种测试用例的设计及白盒黑盒测试方法重复出现在收集者前面。so&#xff0c;不走寻常路的我&#xff0c;觉得从另外的角度去分享测试用例。日常工作中&#…

MYSQL数据目录结构上篇-表在文件系统中表示

前言感悟:我个人是比较不喜欢只会用,不太懂为什么的这么用,而且有的时候很多官方术 语让人难以读懂, 这里我会用比较大白话的方式,让我自己也能让网友们更加理解,如果书写哪里有误,欢迎大家指出((,,•ω•)ノ"(っω•&#xff40;。)) 从入门开始啦推荐一个学习mysql的视频…

Python urllib 爬虫入门(2)

本文为Python urllib类库爬虫更入门的一些操作和爬虫实例及源码。 目录 模拟浏览器请求 简单模拟 设置随机user-agent 请求超时 HTTP请求类型 Get请求 Post请求 抓取网页动态请求 封装ajax请求 调用 循环调用 抓取小说 封装请求函数 把html写入本地分析 调用 正…

Springboot+Vue项目-基于Java+MySQL的教学资料管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…