[chapter 31][PyTorch][Early Stop Dropout]

news2024/11/17 21:56:17

前言

深度神经网络结构的过拟合是指 :

        在训练集上的正确率很高, 但在测试集上的准确率很低.
为了缓解网络过拟合的问题,

       其中一种常见的办法是使用 dropout ,Early Stop

目录:

     1: Early Stop

     2:    Dropout 

     3:   stochastic Gradient Descent


一  Early Stop

        Early Stop的概念非常简单,在我们一般训练中,经常由于过拟合导致在训练集上的效果好,而在测试集上的效果非常差。因此我们可以让训练提前停止,在测试集上达到最好的效果时候就停止训练,而不是等到在训练集上饱和在停止,这个操作就叫做Early Stop。


二  Dropout 

2.1 Dropout出现的原因

         在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。

          过拟合是很多机器学习的通病。如果模型过拟合,那么得到的模型几乎不能用。为了解决过拟合问题,一般会采用模型集成的方法,即训练多个模型进行组合。此时,训练模型费时就成为一个很大的问题,不仅训练多个模型费时,测试多个模型也是很费时。

综上所述,训练深度神经网络的时候,总是会遇到两大缺点:

    (1)容易过拟合

     (2)费时

Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。

2.2  Dropout 

       在2012年,Hinton在其论文《Improving neural networks by preventing co-adaptation of feature detectors》中提出Dropout。当一个复杂的前馈神经网络被训练在小的数据集时,容易造成过拟合。为了防止过拟合,可以通过阻止特征检测器的共同作用来提高神经网络的性能。

       在2012年,Alex、Hinton在其论文《ImageNet Classification with Deep Convolutional Neural Networks》中用到了Dropout算法,用于防止过拟合。并且,这篇论文提到的AlexNet网络模型引爆了神经网络应用热潮,并赢得了2012年图像识别大赛冠军,使得CNN成为图像分类上的核心算法模型。

    。

Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征,如图1所示。

 2.3   Dropout 网络结构

        以DNN结构为例

        默认神经元结构

        z_i^t=w_i^{t}a^{t-1}+b_i^t

         a_i^t=f(z_i^t)

        增加Drop out 功能后的,神经元结构

          r^t=rand()

          d^{t-1}=r^t \odot a^{t-1}

         z_i^{t}=w_i^td^{t-1}+b_i^t

         a_i^t=f(z_i^t)

  2.4  dropout 前向传播原理

          这里重点介绍一下Dropout 神经元输入d 产生的原理

       某一层神经元输入向量为 a=[a_1,a_2,..a_k],

      step1 : 生成每个输入单元对应的dropout 概率                  

                 r = torch.rand(k) =[p_1,p_2,.p_i..p_k]

                 
      step2:  生成掩码向量

                    掩码向量 m=[m_1,m_2,..m_k]

                      m=randMask(r_i)=\left\{\begin{matrix} 0,r_i < p \\ \frac{1}{1-p},r_i \geq p \end{matrix}\right.

       step3    生成dropout 输入向量 d

                     d=dropout(a)=a \odot m =[a_1m_1,a_2m_2,..a_km_k]

  2.5  反向传播原理

          e= forward(a)

          \triangledown e=[\frac{\partial e}{\partial d_1},\frac{\partial e}{\partial d_2},...\frac{\partial e}{\partial d_k}]

          \frac{\partial e}{\partial a_i}= \frac{\partial e}{\partial d_i} \frac{\partial d_i}{\partial a_i}

        \frac{\partial d}{\partial a} =m

      所以

      \triangledown e_a=\triangledown e_d \odot m

2.6 PyTorch 代码

  

 要注意的下面两个API 作用是相反,第一是dropout,第二个是保留

train 的时候神经元需要dropout,但是测试的时候,要保留,通过eval 实现


三  stochastic Gradient Descent

     原理比较简单,由于硬件限制,我们不会拿train 数据集中的所有样本训练,

假设样本总数为m,每轮训练只会随机选取部分数据集训练,batch size 

 

深度学习中Dropout原理解析 - 知乎

dropout函数详解及反向传播中的梯度求导_dropout反向传播梯度如何计算_BrightLampCsdn的博客-CSDN博客

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

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

相关文章

平面设计师都在用的设计素材网站,免费下载~

很多新手设计师不知道去哪里找高清、免费的设计素材&#xff0c;今天我就给大家推荐5个设计素材网站&#xff0c;免费下载&#xff0c;赶紧收藏起来把&#xff01; 1、菜鸟图库 https://www.sucai999.com/?vNTYwNDUx 菜鸟图库是我推荐过很多次的网站&#xff0c;主要是站内素…

白宫召见科技巨头 讨论AI潜在风险 以确保人们从创新中受益

ChatGPT的问世&#xff0c;被认为是通用人工智能发展的“奇点”和强人工智能即将到来的“拐点”&#xff0c;甚至有业内人士推测所有数字化系统和各个行业都可能被其重新“洗牌”。 乐观主义者表示&#xff0c;人工智能的核心是对人类大脑的模拟&#xff0c;其目的是延伸和增强…

C++Primer 第一章

C概述 程序的组成 数据的集合算法的集合 面向对象编程:我们通过一组数据抽象来建立问题的模型,简单来说就是把一些数据封装起来,就是我们类 面向过程编程:一个问题可直接由一组算法来建立模型 第一章 开始 1.1 问题的解决 这里有一个简单的例子来让我们看看如何设计编程思路…

C++ 的类型转换

目录 1. C语言中的类型转换 2. C强制类型转换 2.1static_cast 2.2 reinterpret_cast 2.3 const_cast 2.4 dynamic_cast 3. RTTI&#xff08;了解&#xff09; 1. C语言中的类型转换 在 C 语言中&#xff0c;如果 赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不…

华为OD机试真题-扑克牌大小【2023】【JAVA】

一、题目描述 扑克牌游戏大家应该都比较熟悉了&#xff0c;一副牌由54张组成&#xff0c;含3~A、2各4张&#xff0c;小王1张&#xff0c;大王1张。牌面从小到大用如下字符和字符串表示&#xff08;其中&#xff0c;小写joker表示小王&#xff0c;大写JOKER表示大王&#xff09…

【linux的学习】

文章目录 linux的学习一、工具安装与联网&#xff1f;二、Linux软件安装1.安装jdk2.安装MySQL2.读入数据 总结 linux的学习 一、工具安装与联网&#xff1f; 1.1安装好VM后 进入vi /etc/sysconfig/network-scripts/ifcfg-ens33 然后ip addr 查看ip 1.2打开IDEA的tools 二、…

Jpeg算法

Jpeg算法&#xff1a; JPEG会分析图片的各个部分找到并删除人眼不易察觉的元素。使用jpeg算法的时候可以选一个叫’质量’的可变数值来决定压缩的程度&#xff0c;压缩过多的时候我们会得到有缺陷的方框&#xff0c;叫做膺像。 压缩算法之所以有用的原因&#xff1a;人的眼睛并…

Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具

目录 Ⅰ. Linux 软件包管理器 yum 一、yum 背景知识 二、yum 的基本使用 1、查看软件包 2、软件包名称构成 3、安装软件 4、卸载软件 Ⅱ.vim编辑器 一、认识vim 1、vim概念 2、模式及其切换 二、vim使用 1、vim的指令&#xff08;重要&#xff09; 命令模式 插…

PCB表面处理方式详解

上一篇文章中介绍了关于PCB设计中的常用基本概念&#xff0c;那么本篇文章就挑选其中的第三点【表面处理】&#xff0c;给大家展开说一说&#xff0c;顺便也自我温习一下。 什么是表面处理&#xff1f; 由于铜长期与空气接触会使得铜氧化&#xff0c;所以我们需要在PCB表面做一…

【毕业设计】基于springboot的大学生综合素质测评管理系统

目录 前言介绍综合素质测评表特色功能页面展示一&#xff0e;开发环境1.JDK配置2.安装IDEA3.MySQL安装 二&#xff0e;项目导入和配置三&#xff0e;数据库配置1.创建数据库2.修改项目数据库配置 四&#xff0e;项目部署1.项目启动2.项目访问 在线体验其他类似系统关于我 前言 …

UDP协议介绍

文章目录 一、端口号二、UDP协议1.UDP协议格式2.UDP协议的特点3.UDP缓冲区 三、UDP注意事项 一、端口号 端口号是在网络中标识一台主机上进行通信程序的唯一性的&#xff0c;在TCP/IP协议中&#xff0c;用源IP、源端口号、目的IP、目的端口号、协议号这样一个五元组来标识一个…

Android Studio Flamingo | 2022.2.1 Patch 1(火烈鸟版本)

版本概况 Android Studio Flamingo | 2022.2.1 Patch 1 Build #AI-222.4459.24.2221.9971841, built on April 20, 2023 Runtime version: 17.0.60-b2043.56-9586694 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. Windows 11 10.0 GC: G1 Young Generation, G1 Old…

LLMs 记忆体全新升级:六大新功能全面出击,用户体验值拉满!

LLMs 时代之下&#xff0c;CVP Stack 必不可少。 其中&#xff0c;C 代表以 ChatGPT 为代表的大模型&#xff0c;它在 AI 程序中充当中央处理器的角色&#xff1b;V 代表 Vector Database&#xff0c;即以 Zilliz Cloud 和 Milvus 为代表的向量数据库&#xff0c;为大模型提供知…

3ds Max渲染慢怎么办_加快3ds Max渲染的一些技巧!

3ds Max是一款用于建筑可视化、产品建模、角色开发以及动画的3D建模软件。因此无论您是建筑师、产品设计师还是插画家&#xff0c;使用3ds Max制作项目都是您的绝佳软件选择。包括3ds Max在内的3D软件包通常都通过渲染过程&#xff0c;将3D模型转换为CGI。 项目在渲染后我们会看…

如何用ChatGPT做一门课?(包含大纲、脚本、PPT文本)

该场景对应的关键词库&#xff08;13个&#xff09;&#xff1a; 市场调研、在线网络课程、教学平台、社交媒体营销、子主题、细分领域、课程大纲、章节、推广渠道、课程脚本、文案基本要素、案例、具体方法 提问模板&#xff08;6个&#xff09;&#xff1a; 第一步&#xf…

C++实现一个异步日志库

C实现一个异步日志库 一、概念二、代码实现三、小结 一、概念 异步日志库&#xff08;Asynchronous Logging Library&#xff09;是一种用于记录应用程序运行时信息的库。相比于同步日志库&#xff0c;异步日志库能够提供更高的性能和可扩展性&#xff0c;因为它使用了异步写入…

谈谈 地下水数值模拟Visual modflow Flex

Visual MODFLOW Flex是行业标准规范软件&#xff0c;将地下水流和污染物运移、基本分析和校准工具&#xff0c;以及强大的三维可视化功能集成在一个单一的&#xff0c;易于使用的软件环境中。 使用Visual MODFLOW Flex&#xff0c;用户将拥有所有的工具&#xff0c;可用来解决…

单点性能测试-页面Load时间

打开chrome浏览器的调试工具&#xff0c;如图所示&#xff1a; DOMContentLoaded&#xff1a;DOM树构建完成。即HTML页面由上向下解析HTML结构到末尾封闭标签的时间 Load:页面加载完成的时间。 DOM树构建完成后&#xff0c;继续加载html/css 中的图片、音频、视频等等外部资源…

用Python在25行以下代码实现人脸识别

** OpenCV ** OpenCV是最流行的计算机视觉库。最初是用C/C编写的&#xff0c;现在它提供了Python的API。 OpenCV使用机器学习算法来搜索图片中的面孔。因为脸是如此复杂&#xff0c;没有一个简单的测试可以告诉你它是否找到了一张脸。相反&#xff0c;有成千上万的小模式和特…

08-Vue技术栈之过度与动画

目录 1、作用2、写法3、动画的应用4、过度的应用5、animate.css动画库的使用 1、作用 在插入、更新或移除 DOM元素时&#xff0c;在合适的时候给元素添加样式类名。 图示&#xff1a; 2、写法 准备好样式&#xff1a; 元素进入的样式&#xff1a; v-enter&#xff1a;进入的…