数据分析-深度学习 Pytorch Day4

news2024/12/23 15:09:17

一:概述

当你想训练好一个神经网络时,你需要做好三件事情:一个合适的网络结构,一个合适的训练算法,一个合适的训练技巧:

合适的网络结构:包括网络结构和激活函数,你可以选择更深的卷积网络,然后引入残差连接。可以选择relu做为激活函数,也可以选择tanh,swish等。

合适的训练算法:通常采用SGD,也可以引入动量和自适应学习速率,也许可以取得更好的效果。

 合适的训练技巧:合理的初始化,对于较深的网络引入残差连接,归一化等操作。

二:SGD

三:SGD with Momentum

动量梯度下降法的一个本质,就是它们能够最小化碗状函数,

Why momentum?

Momentum项相当于速度,因为β稍小于1,表现出一些摩擦力,所以球不会无限加速下去,所以不像梯度下降法,每一步都独立于之前的步骤,你的球可以向下滚,获得动量,可以从碗向下加速获得动量。

有两个超参数,学习率a以及参数\beta,\beta控制着指数加权平均数。\beta最常用的值是0.9

四: Adagrad

1.其实就是给SGD加了一个分母。

AdaGrad算法就是将每一个参数的每一次迭代的梯度取平方累加后在开方,用全局学习率除以这个数,作为学习率的动态更新。

2.why 要这样?

在实际应用中,各个参数的重要性肯定是不一样的,所以我们对于不同的参数要动态的采取不同的学习率,让目标函数更快的收敛。

3.Adagrad算法分析

(1)学习率变化过程

随着算法不断迭代,r会越来越大,整体的学习率会越来越小。所以,一般来说AdaGrad算法一开始是激励收敛,到了后面就慢慢变成惩罚收敛,速度越来越慢。

(2)学习率减少

在SGD中,随着梯度的增大,我们的学习步长应该是增大的。但是在AdaGrad中,随着梯度g的增大,我们的r也在逐渐的增大,且在梯度更新时r在分母上,也就是整个学习率是减少的,这是为什么呢?

这是因为随着更新次数的增大,我们希望学习率越来越慢。因为我们认为在学习率的最初阶段,我们距离损失函数最优解还很远,随着更新次数的增加,越来越接近最优解,所以学习率也随之变慢。

(3)不是很好

经验上已经发现,对于训练深度神经网络模型而言,从训练开始时积累梯度平方会导致有效学习率过早和过量的减小。

五:RMSprop

1.全称:Root Mean Sqaure prop

同使用动量的梯度下降一样,RMSprop的目的也是为了消除垂直方向的抖动,使梯度下降快速收敛

2.实际上是平方版本的指数加权平均,将导数看作水平方向上的w和垂直方向上的b,更新时b变小了,w变化不大

3.RMSprop计算方法

六:Adam:SGDM+RMSProp

为了解决SGD卡在grad为0.

就是在 RMSprop 的基础上加了 bias-correction 和 momentum,随着梯度变的稀疏,Adam 比 RMSprop 效果会好。

对比:

1.SGD:卡在grand为0

SGD 因为更新比较频繁,会造成 cost function 有严重的震荡。

BGD 可以收敛到局部极小值,当然 SGD 的震荡可能会跳到更好的局部极小值处。当我们稍微减小 learning rate,SGD 和 BGD 的收敛性是一样的。

2. Adagrad:大到小,带了个分母

对低频的参数做较大的更新,对高频的做较小的更新,也因此,对于稀疏的数据它的表现很好,很好地提高了 SGD 的鲁棒性,例如识别 Youtube 视频里面的猫,训练 GloVe word embeddings,因为它们都是需要在低频的特征上有更大的更新。

Adagrad 的优点是减少了学习率的手动调节

它的缺点是分母会不断积累,这样学习率就会收缩并最终会变得非常小。

3.RMSprop:也带分母

为了解决 Adagrad 学习率急剧下降问题的,

yolo是SGDM

总结

Adam比较快,SGDM比较稳

两者结合,SWATS,(begin with Adam ,end with SGDM)

warm-up:针对学习率的优化方式

WARM UP

1.概念

Warmup是在ResNet论文中提到的一种学习率预热的方法,它在训练开始的时候先选择使用一个较小的学习率,训练了一些epoches或者steps(比如4个epoches,10000steps),再修改为预先设置的学习来进行训练。

2.为什么使用Warmup?

由于刚开始训练时,模型的权重(weights)是随机初始化的,在预热的小学习率下,模型可以慢慢趋于稳定,等模型相对稳定后再选择预先设置的学习率进行训练,使得模型收敛速度变得更快,模型效果更佳。

3.Warmup的改进

不足之处:从一个很小的学习率一下变为比较大的学习率可能会导致训练误差突然增大。

改进:从最初的小学习率开始,每个step增大一点点,直到达到最初设置的比较大的学习率

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

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

相关文章

打工人必学的法律知识(四)——《中华人民共和国劳动法》

中华人民共和国劳动法http://www.npc.gov.cn/npc/c30834/201901/ffad2d4ae4da4585a041abf66e74753c.shtml 目录 第一章 总  则 第二章 促进就业 第三章 劳动合同和集体合同 第四章 工作时间和休息休假 第五章 工  资 第六章 劳动安全卫生 第七章 女职工和未…

大数据技术之Hadoop(HDFS)——超详细

第1章 HDFS概述 1.1 HDFS产出背景及定义 1)HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文…

误删照片音视频文件不要担心 几种方法解救慌乱的你 别再病急乱投医啦 [附软件]

误删照片音视频文件不要担心 几种方法解救慌乱的你 方法1:从手机相册中恢复手机删除的照片 这里以vivo手机为例,其他手机也是差不多的 相册->右上角三个点->设置->云空间 进入云存储空间 点击云盘->我的备份->就能看到你自动上传的照片 相册-&…

【Linux】共享内存

目录 一、共享内存 1.1 申请共享内存块 1.2 释放共享内存块 1.3 挂接共享内存 二、共享内存的使用 2.1 Server端与Client端 2.2 挂接与运行 三、共享内存总结 3.1 共享内存的特点 3.2 共享内存实现访问控制 一、共享内存 共享内存是最快的IPC形式。一旦这样的内存映…

xxl-job原理(版本2.3.1)

一、xxl-job架构图 1、调度中心 ​ 负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块。 2、执行器 负责接收调度请求并执行任…

CSS注入 2.0

看过CSS注入1.0的朋友,不相信对CSS注入有了一个概念性的理解,在上一篇文章中我只是简单复现了一下波兰老哥的CSS注入过程,阐述了其大致原理。对于其中很大一部分技术细节,代码细节并未做深入的理解(当时我也看不懂,哈哈…

什么是分布式事务

上一篇文章已经讲完分布式了,那暖男说要讲分布式事务那就一定会讲,只是我估计大家没料到暖男这么快就肝好了吧? 事务想必大家并不陌生,至于什么是 ACID,也是老生常谈了。不过暖男为了保证文章的完整性确保所有人都听得…

uniapp-微信小程序分包操作步骤详解

1、在原来的pages的同级下新建一个目录:package1 (名字自己随便起。想分几个包就建几个新目录。比如package2、package3……) 结构是并列的: 2、把想要放进分包里去的模块都剪切在新目录里面去。 (就是以前全都放在…

移动端 - 搜索组件(suggest篇)

这一篇博客是和 search-input篇 衔接的, 需要的可以看上文 移动端 - 搜索组件(search-list篇) 这里我们需要去封装这么一个组件 先说一下大致的方向: 1. 根据父组件传入的关键字数据发送请求获取后端数据, 进行模板渲染 2. 处理一些边界情况(后端返回数据为空, 初次加载数据…

《小猫猫大课堂》三轮3——字符函数和字符串函数及其模拟实现

宝子,你不点个赞吗?不评个论吗?不收个藏吗? 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重…

C语言——自定义类型详解(结构体,联合体,枚举,位段)

专栏:C语言 个人主页:HaiFan. 专栏简介:本专栏主要更新一些C语言的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下。 结构体前言一、结构体1.结构体类型的声明2.结构体…

黑马学ElasticSearch(十)

目录: (1)自动补全-安装品分词器 (2)自动补全-自定义分词器 (3)自动补全-DSL实现自动补全查询 (4) 自动补全-修改酒店索引库结构 (5)自动补全…

测试开发——用例篇(如何设计一个测试用例,设计测试用例的一些具体方法)

目录 一、测试用例的基本要素 二、设计测试用例的万能公式 (在没有需求文档的情况下) 1、水杯的测试用例 2、一个网站的登录测试用例 三、基于需求进行测试用例的设计 四、测试用例的具体设计方法 1、等价类 2、边界问题 3、判定表(因果图&#…

协程和线程的区别、协程原理与优缺点分析、在Java中使用协程

文章目录什么是协程协程的优点与缺点协程实现原理.协程与线程在不同编程语言的实现在Java中使用协程Kilim介绍Kilim整合Java,使用举例小总结什么是协程 相对于协程,你可能对进程和线程更为熟悉。进程一般代表一个应用服务,在一个应用服务中可以创建多个…

源码看CAF的线程调度框架

序 本篇文章带着大家来看下CAF(C Actor Framwwork)的调度框架,也是算现阶段C比较成熟的调度框架,大家如果自己完成一个比较大型的项目,任务调度也可以参照CAF。 鉴于篇幅较长,大家如果学习使用如何使用CAF…

修改jupyter notebook默认路径

修改jupyter notebook默认路径jupyter notebook默认打开C:\Users\你的用户名,用户名是你的电脑用户名,upload文件又会在C盘生成一堆文件,很乱,用notebook打开文件还要跳转到目录,很麻烦,那有没有办法呢&…

【PYTHON】如何配置集成开发环境Geany

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…

【笔记】大话设计模式17-20

【笔记】大话设计模式17-20 文章目录【笔记】大话设计模式17-2017 适配器模式17.1 Example17.2 定义17.3 Show me the code17.4 总结18 备忘录模式18.1 Example18.2 定义18.3 Show me the code18.4 总结19 组合模式19.1 Example19.2 定义19.3 Show me the code19.4 总结20 迭代…

基于python的人工智能数据处理常用算法

文章目录二分法求解最小二乘法曲线拟合最小二乘法的来历最小二乘法与曲线拟合多项式曲线拟合SciPy内置最小二乘法应用泰勒级数背景引入泰勒公式泰勒级数展开与多项式近似二分法求解 机器学习过程中往往会用到很多变量,而这些变量之间的复杂关系一般用非线性方程来&…

VS系列知识-VS Code的安装+Vue环境的搭建+Vue指令

一、VS Code下载地址 Visual Studio Code - Code Editing. Redefined 二、VS Code初始化设置 1.安装插件 在安装好的VSCode软件的扩展菜单中查找安装如下4个插件 2、创建项目 vscode本身没有新建项目的选项,所以要先创建一个空的文件夹,如project_xx…