吴恩达深度学习深度学习概述以及优化

article/2025/5/19 23:40:48

深度学习概述及优化

  • 1、深度学习概述
  • 2、神经网络基础之逻辑回归
  • 3、深层神经网络
  • 4、深度学习实用层面
    • 4.1 训练集、验证集、测试集
    • 4.2 偏差、方差
    • 4.3 L1、L2正则化
    • 4.4 归一化处理
    • 4.5 Dropout
    • 4.6 其他正则化方法
    • 4.7 梯度消失和爆炸


1、深度学习概述

在之前的吴恩达机器学习课程中,举了一个预测房屋价格的例子,当时的输入变量只有房屋面积,对于这种问题当时的解决方案是单变量线性回归,当时的假设函数是 y = a x + b y = ax+b y=ax+b,其实这个问题也可以看做一个最简易的神经网络的问题,如下图所示。
在这里插入图片描述
该神经网络的输入x是房屋面积,输出y是房屋价格,中间包含了一个神经元(neuron),即房价预测函数(蓝色折线)。该神经元的功能就是实现函数f(x)的功能。

现在对于这个进行复杂化,增加输入变量的特征值,如下图所示,构建一个两层的神经网络。

在这里插入图片描述

2、神经网络基础之逻辑回归

在学习机器学习的课程时已经做过记录,这里不在重复。

3、深层神经网络

一般命令规则上,1个隐藏层的神经网络叫做2 layer NN,2个隐藏层的神经网络叫做3 layer NN,以此类推。如果是L-layer NN,则包含了L-1个隐藏层,最后的L层是输出层。例如,以下是一个四层的神经网络图。
在这里插入图片描述

有关神经网络的前向传播和反向传播公式及推导之前有过记录,这里不在重复

4、深度学习实用层面

4.1 训练集、验证集、测试集

Train sets用来训练算法模型;Dev sets用来验证不同算法的表现情况,从中选择最好的算法模型;Test sets用来测试最好算法的实际表现,作为该算法的无偏估计。

训练集用来训练我们的模型,比如调整神经网络中的 w w w参数。验证集用来挑出一个表现最好的模型,比如说调整一些超参数,比如训练轮数。测试集用来测试我们训练好的模型。三个数据集尽量不重复

三个数据集的设置比例大概是60%、20%、20%,如果样本数较大,可以提高训练集比例,比如100万样本,可以设置为98%、1%、1%

4.2 偏差、方差

Bias和Variance是对立的,分别对应着欠拟合和过拟合。如下图所示,显示了二维平面上,high bias,just right,high variance的例子。
在这里插入图片描述
我们用以下的靶心图进行解释。
在这里插入图片描述
靶心对应理想状态下最优的训练模型,而蓝点表示我们自己训练的模型运行的结果,左上第一个图表示训练模型比较好,右上的图表示当模型跑不同的数据集时动荡的幅度较大,这就意味着该模型泛化能力差,即过拟合,做下的图表示偏差较大,即欠拟合。

4.3 L1、L2正则化

如果出现了过拟合,可以采用正则化来解决。L2 regularization的表达式为:
J = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ∣ ∣ w ∣ ∣ 2 J = \frac{1}{m}\sum_{i=1}^mL(\widehat y^{(i)},y^{(i)})+\frac{\lambda}{2m}\lvert\lvert w\rvert\rvert ^2 J=m1i=1mL(y (i),y(i))+2mλw2
L1 regularization的表达式为: J = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ∣ ∣ w ∣ ∣ J = \frac{1}{m}\sum_{i=1}^mL(\widehat y^{(i)},y^{(i)})+\frac{\lambda}{2m}\lvert\lvert w\rvert\rvert J=m1i=1mL(y (i),y(i))+2mλw与L2 regularization相比,L1 regularization得到的w更加稀疏,即很多w为零值。其优点是节约存储空间,因为大部分w为0。然而,实际上L1 regularization在解决high variance方面比L2 regularization并不更具优势。而且,L1的在微分求导方面比较复杂。所以,一般L2 regularization更加常用。

从单一感性的角度来分析L1和L2正则化,附上一张图
在这里插入图片描述
蓝线表示上面正则表达式的前段,红线表示正则表达式的后段,红线和蓝线的交点表示结合正则化的最优解,由图所示,L1正则表达式会产生0参数,从而产生稀疏解。

理论推导可参考 https://blog.csdn.net/b876144622/article/details/81276818

4.4 归一化处理

标准化输入就是对训练数据集进行归一化的操作,即将原始数据减去其均值μ后,再除以其方差σ2: μ = 1 m ∑ i = 1 m X ( i ) \mu = \frac{1}{m}\sum_{i=1}^{m}X^{(i)} μ=m1i=1mX(i)
σ 2 = 1 m ∑ i = 1 m ( X ( i ) ) 2 \sigma ^2 = \frac1m\sum_{i=1}^m(X^{(i)})^2 σ2=m1i=1m(X(i))2
X = X − μ σ 2 X = \frac{X-\mu}{\sigma^2} X=σ2Xμ
归一化过程如下图所示
在这里插入图片描述

之所以要对输入进行标准化操作,主要是为了让所有输入归一化同样的尺度上,方便进行梯度下降算法时能够更快更准确地找到全局最优解

4.5 Dropout

Dropout是指在深度学习网络的训练过程中,对于每层的神经元,按照一定的概率将其暂时从网络中丢弃。也就是说,每次训练时,每一层都有部分神经元不工作,起到简化复杂网络模型的效果,从而避免发生过拟合。
在这里插入图片描述

对于某个神经元来说,某次训练时,它的某些输入在dropout的作用被过滤了。而在下一次训练时,又有不同的某些输入被过滤。经过多次训练后,某些输入被过滤,某些输入被保留,对于某一个神经元来说,不依赖于任何一个特征,也就是说,对应的权重w不会很大。这从从效果上来说,与L2 regularization是类似的,都是对权重w进行“惩罚”,减小了w的值

4.6 其他正则化方法

增加训练样本可以防止过拟合,但是这一过程较为困难,因此我们可以在原样本的基础上对他进行相应的改变,有一个样本变成多个样本,比如:
在这里插入图片描述
在这里插入图片描述

4.7 梯度消失和爆炸

当训练一个 层数非常多的神经网络时,计算得到的梯度可能非常小或非常大,甚至是指数级别的减小或增大。这样会让训练过程变得非常困难。
假设(假设每一层只有一个神经元,其中激活函数为sigmoid函数),如图:
在这里插入图片描述
则根据反向传播链式法则:
在这里插入图片描述
而对sigmoid函数求导后最大值也是0.25,而初始化w也是通常小于1,因此多个小于1的数连乘之后,那将会越来越小,导致靠近输入层的层的权重的偏导几乎为0,也就是说几乎不更新,这就是梯度消失。
如果 σ ′ ( z ) w > 1 \sigma '(z)w>1 σ(z)w>1时,连乘下来就会导致梯度过大,导致梯度更新幅度特别大。

下面讨论解决方案:

改变激活函数

tanh函数:

在这里插入图片描述
比sigmoid的好一点,sigmoid的最大值小于0.25,tanh的最大值小于1,但仍是小于1的,所以并不能解决这个,但还是比sigmoid函数好。

Relu函数:
在这里插入图片描述
在这里插入图片描述
relu函数的导数在正数部分是恒等于1的,因此在深层网络中使用relu激活函数就不会导致梯度消失和爆炸的问题。

但是由于负数部分恒为0,会导致一些神经元无法激活(可通过设置小学习率部分解决)

leakrelu函数
在这里插入图片描述

其中k是leak系数,一般选择0.1或者0.2,leakrelu解决了0区间带来的影响,而且包含了relu的所有优点。

其他的改善的方法可参考梯度消失及爆炸


http://chatgpt.dhexx.cn/article/2qgjkkWW.shtml

相关文章

深度学习-吴恩达:一、神经网络和深度学习

文章目录 1、what is a Neural Network?(什么是神经网络)2、Supervised Learning with Neural Networks (监督学习)3、为什么深度学习会兴起?第一周测验测验题答案 1、what is a Neural Network?(什么是神…

IOS开发视频教程《保卫萝卜》-任亮-专题视频课程

IOS开发视频教程《保卫萝卜》—3411人已学习 课程介绍 《保卫萝卜CarrotFantasy》是一款由开发商“凯罗天下”开发的超萌塔防小。14种防御塔保卫萝卜战怪兽。保卫萝卜是一款制作精美的超萌塔防游戏,游戏含有丰富的关卡和主题包,拥有各自风格特色…

ios游戏开发 Sprite Kit教程:初学者 1

注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点Sprite Kit vs Cocos2D-iPhone vs Cocos2D-X vs UnityHello, Sprite Kit!横屏显示移动怪兽发射炮弹碰撞检测: 概述碰撞检测: 实现收尾何去何从? 在iOS 7中内置了一个新的Sprite Kit框架…

HTML5游戏开发高级教程 | Lynda教程 中文字幕

HTML5游戏开发高级教程 | Lynda教程 中文字幕 Advanced HTML5 Game Development 课程ID: 597988 时长: 2.3小时 所属类别:Html 全部游戏开发课程 了解如何使用HTML5创建交互式,动态和丰富多彩的游戏 在本课程中,学习如何充分利用所有HTML5功能来创建…

ios游戏开发 Sprite Kit教程:初学者 2

注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点Sprite Kit vs Cocos2D-iPhone vs Cocos2D-X vs UnityHello, Sprite Kit!横屏显示移动怪兽发射炮弹碰撞检测: 概述碰撞检测: 实现收尾何去何从? 横屏显示 首先,在Project Na…

【游戏开发教程】Unity iOS平台接入微信SDK,实现微信登录等功能(教程 | 流程讲解)

文章目录 一、前言二、流程1、申请开发者账号2、创建应用3、下载SDK4、导入到Unity中5、编写Objective-C代码5.1、CustomAppController.mm5.2、WXApiManager.h5.3、WXApiManager.mm5.4、注册回调对象5.5、封装初始化接口5.6、封装登录接口5.7、其他接口封装 6、XCodeAPI7、关于…

iOS开发知识概览

1、学习ios开发的知识概览,经常会认为ios开发会学那些知识,如何把断断续续的知识连接起来, 这就让你有了全局的了解,如何去计划和安排自己的学习计划,有了全局的知识体系。 原文来自:https://github.com/sh…

IOS 开发之逆向分析

在逆向过程中很多时候需要分析 APP 和 Web 端数据交互的内容那么最简单的方式即是抓包网络分析,而使用 Charles、Tcpdump 也是逆袭分析最基本的手段。本文以 Charles 为例来介绍网络相关的内容。 Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开…

ios游戏开发

知识系统 英文教程网站 http://www.csdn.net/article/2012-12-20/2813035-game-dev-guide 开发类库 http://www.csdn.net/article/2012-11-07/2811587-pop-ios-dev-library

芒果iOS开发之Swift教程01-Swift基础

【主要内容】 1.关于Swift 2.Hello World 3.常量和变量 4.类型标注 5.常量和变量的命名 6. 输出常量和变量 7.注释 8.分号 一、关于Swift 苹果在2014年WWDC(苹果开发者大会)发布了Swift,用于编写iOS,Mac OS X和watchOS…

ios教程,用pc开发ios游戏

原文是Thomas Henshell对手机游戏Catch the Monkey的开发总结,由Lyra翻译。 传智播客今年6月开始ios培训(http://ios.itcast.cn)的课程;相对于一些应用,我本人对ios游戏开发更感兴趣,这些开发总结并不拘泥…

RPG游戏开发基础教程

RPG游戏开发基础教程 第一步 下载RPG Maker 开发工具包 1.RPG Maker 是什么?RPG Maker 是由Enterbrain公司推出的RPG制作工具。 中文译名为RPG制作大师。 熟悉的人喜欢简称为RM。 根据发行版本的不同,RM在国内流行的版本有4款: 2.附上资源下载地址:点击进入网盘下载 3.关于…

ios开发快速入门教程

1.高级C语言、C语言 C语言是iOS开发的语言(Objective-C)基础,在iOS开发培训的课程中也会涉及到。iOS开发培训需要强调的是并不是要同学们都要精通C/C,而是要掌握iOS开发中要用的的C/C的核心内容。 2.Objective-C语言 Objective-C是iOS开发的标准语言&…

苹果游戏开发教程之如何使用 SpriteKit 和 GameplayKit 制作你的街机手机游戏

项目运行效果 什么是GameplayKit GameplayKit 是由 Apple 开发的框架,在 iOS 9 和 macOS X.11 中引入,它提供了许多类型游戏中常见的基础设施。 它让您专注于游戏玩法和游戏规则,以最大限度地减少意大利面条式代码的编写,并且只需要基于 Objective-C 或 Swift 的界面。 使…

ios 手游SDK 开发教程

前言: 各位同学大家好 ,有一段时间没有见面了。 具体多久我也不清楚了, 最近在学习iOS 手游sdk 的开发 所以就想着写完 写一份教程分享给大家, 本人之前一直都是做安卓开发的 安卓 app和安卓手游SDK 开的都会。 需要用到的三方库…

数据分析:大数据时代的必备技能之EXCEL

文章目录 数据分析价值与数据分析思维一、数据分析概述1.什么是数据2.理解数据3.什么是数据分析3. 数据分析的步骤 二、数据分析价值1.定义和组成2. 商业价值案例--豆浆 三、数据分析思维1. 核心思维方式(1)、结构化分析思维(2)、公式化分析思维(3)、业务化分析思维 数据预处理…

#C数据结构与算法# 绪论 算法与大O时间复杂度表示法(附例题)

一 算法基本概念与特性。 1.解决问题的五个步骤 由此我们可以看出良好的解决问题离就不开算法。 2.什么是算法 算法是指在解决问题时,按照某种机械的步骤一定可以得到问题的结果(有的问题有解,有的没有)的处理过程。算法是对解…

云计算期末速成大法

笔记仅自用,杠勿cue我 1. 绪论 4V特征:Volume(规模大),Variety(种类杂),Velocity(变化快),Value(价值密度小) 从抽样到全…

简单分析几十个游戏案例

文章目录 一、 介绍二、 影响游戏体验的要点三、 游戏爆火的秘诀1.解读5个关键因素2.把握玩游戏的两种经典心理3.分析几款爆款游戏Qq农场植物大战僵尸水果忍者召唤神龙羊了个羊 4.值得游戏公司学习的经验5.未来游戏面对的诸多挑战 四、 几十款游戏的多方面分析FC红白游戏机十二…

软考高级-系统分析师-案例分析-系统设计

系分-案例分析-系统设计 结构化设计SD内聚(高内聚低耦合)耦合 业务流程建模IDEF(建模仿真) 面向对象的设计OOD设计原则设计模式分类 人机界面设计架构设计Zachman 架构框架Zachman 架构框架(案例) 面向服务…