机器学习笔记之正则化(五)Dropout

news2025/2/25 6:57:52

引言

本节将介绍一种应用于深度神经网络的正则化方法—— Dropout \text{Dropout} Dropout方法。

引子:题目描述(正则化相关)

以下关于正则化的描述正确的是(多选) ( ) (\quad) ()

A \mathcal A \quad A 正则化可以防止过拟合

B L 1 \mathcal B \quad L_1 BL1正则化可以得到稀疏解

C L 2 \mathcal C \quad L_2 CL2正则化约束了解空间

D Dropout \mathcal D \quad \text{Dropout} DDropout也是一种正则化方法

正确答案: A B C D \mathcal A\mathcal B\mathcal C\mathcal D ABCD

题目解析

关于 A \mathcal A \quad A 选项,可以理解为正则化的基本目的

  • 《深度学习》(花书) P76 5.2.2 正则化中给出一个广泛的定义:正则化是指修改学习方法,使其降低泛化误差而非训练误差
  • P71 5.2 容量、过拟合和欠拟合中关于过拟合的描述为:训练误差测试误差之间的差距过大

因此需要使用正则化对泛化误差进行约束,使其与训练误差之间差距不要过大。因此 A \mathcal A \quad A 选项正确。

关于 B \mathcal B \quad B 选项:

  • 权重空间的角度观察, L 1 L_1 L1正则化所约束的范围与损失函数 J ( W ) \mathcal J(\mathcal W) J(W)权重空间的影响范围,其相切点的位置存在一定概率落在坐标轴上,这意味着另一个坐标的特征信息没有起到作用。从而实现稀疏特征的目的;
    详见正则化——权重衰减角度(直观现象)中的回顾部分。

  • 从权重分量惩罚力度的角度观察, L 1 L_1 L1正则化关于权重分量的表示均为一次项,这说明 L 1 L_1 L1正则化对于各分量的惩罚力度相同,如果存在某分量没有分配到权重/足够权重,会使得特征分量变得稀疏;

    相反,如果是 L 2 L_2 L2正则化,它会倾向于分摊权重分量从而使各分量取值尽量平衡,这使得相比于 L 1 L_1 L1正则化非零分量的数量更加稠密

综上, B \mathcal B \quad B 选项正确

关于 C \mathcal C \quad C 选项:不仅仅是 L 2 L_2 L2正则化,而是 L p ( p ≥ 1 ) L_p(p \geq 1) Lp(p1)正则化都会对解空间进行约束。它们都是通过 L p L_p Lp范数——特征空间中的点到特征空间原点的距离 进行约束。

只有当 p ≥ 1 p \geq 1 p1时,对应的正则化范围是一个凸集合, L 1 , L 2 L_1,L_2 L1,L2仅是最具有代表性的凸集合, C \mathcal C \quad C 选项正确。
详见:正则化——拉格朗日乘数法角度中的’常见正则化方法‘。

关于 D \mathcal D \quad D 选项,这里介绍 Dropout \text{Dropout} Dropout方法。

回顾:集成学习方法: Bagging \text{Bagging} Bagging

我们在集成学习部分介绍了 Bagging(Bootstrap Aggrgrating) \text{Bagging(Bootstrap Aggrgrating)} Bagging(Bootstrap Aggrgrating),该算法的核心思路在于:

  • 通过自助采样法( Boostrapping Sampling \text{Boostrapping Sampling} Boostrapping Sampling)从原始数据集 D \mathcal D D中采样得到相应的新数据集 D ′ ∈ D \mathcal D' \in \mathcal D DD
  • 针对每个新数据集 D ′ \mathcal D' D,各使用一个基学习器进行独立训练。
  • 最终根据任务输出类型,使用各个基学习器的预测结果对输出结果进行表达:
    • 回归任务:求解均值结果;
    • 分类任务多数表决( Majority Voting \text{Majority Voting} Majority Voting)操作,使用少数服从多数替代原始模型对预测结果的一言堂

这种学习方法能够有效降低模型预测结果的方差

Dropout \text{Dropout} Dropout方法

深度神经网络中 Bagging \text{Bagging} Bagging的缺陷

如果将 Bagging \text{Bagging} Bagging应用在深度神经网络中,也就是说:若干个新数据集 D ′ \mathcal D' D,每一个新数据集均使用一个深度神经网络作为基学习器进行学习

这种方法似乎是不切实际的。因为若干深度神经网络的并行计算需要花费较高的运行时间和内存空间

Dropout \text{Dropout} Dropout简单描述

Dropout \text{Dropout} Dropout方法提供了一种廉价的近似于 Bagging \text{Bagging} Bagging的集成方式,只不过采样方式并不是针对训练集的自助采样法,而是针对深层神经网络中各层神经元的采样操作:
这里引用《机器学习》(花书) P160 7.12 Dropout 图 7.6 中的神经网络示例。
Dropout描述
上图中的神经网络明显是一个单隐层网络,其中输入层包含 2 2 2个神经元(输入特征);隐藏层包含 2 2 2个神经元;输出层包含 1 1 1个神经元(输出特征)。

Dropout \text{Dropout} Dropout方法对神经元的采样操作具体是指:将一些神经元的输出乘以 0 0 0 ⇒ \Rightarrow 有效地删除对应的神经元

  • 也可以理解为:神经元’失活‘了 ⇒ \Rightarrow 由于神经元输出结果是 0 0 0向量,在梯度反向传播过程中,该神经元对应获取的梯度为 0 0 0.也就是说,本次迭代步骤,该神经元的权重没有发生更新。
  • 需要注意的是,这里所说的神经元不包含’输出层神经元‘.

继续观察上图,如果将输出层神经元 Y \mathcal Y Y排除掉,一共存在 16 16 16种因神经元删除产生的可能性(上图右侧)。

很明显,存在一部分情况(上图中标X的情况)它的计算图都不是连通的,都称不上是神经网络,这些情况自然是不合理的。但如果输入层、隐藏层的神经元数量较多时,计算图不连通的情况是不太可能发生的。

相比于 Bagging \text{Bagging} Bagging方法中的若干个基学习器 Dropout \text{Dropout} Dropout方法中,我们每一次随机删除若干个神经元,剩余神经元组成的残缺网络(和原始网络相比,这里假设不会出现计算图不连通的情况)就可以看作是一个基学习器,并且当各层神经元较多的情况下,不太可能出现残缺网络完全相同的情况。

也就是说,每一次迭代过程,我们都会使用一个随机删除神经元所产生的基学习器进行前馈计算,并反向传播梯度。

但这种操作注定是不稳定的(每次迭代相当于一个新的神经网络结构进行前馈运算)。因此需要使用小批量、产生较小步长 ( Step ) (\text{Step}) (Step)学习算法。例如:梯度下降法

随机删除神经元的执行过程

依然以上图神经网络结构为例。对于除去输出层神经元 Y \mathcal Y Y之外的其他神经元,每一个神经元均分配一个二值掩码
实际上,可以将每一个二值掩码 μ \mu μ理解为一个 ∈ { 0 , 1 } \in \{0,1\} {0,1}的常数,并对该值进行采样:

  • 如果采样结果 μ = 0 \mu=0 μ=0,那么该掩码对应的神经元会’失活‘(仅限于本次迭代步骤)
  • 相反,如果采样结果 μ = 1 \mu=1 μ=1,那么掩码对应的神经元保留(保持正常情况)
    { x 1 ⇒ μ x 1 x 2 ⇒ μ x 2 h 1 ⇒ μ h 1 h 2 ⇒ μ h 2 \begin{cases} x_1 \Rightarrow \mu_{x_1} \\ x_2 \Rightarrow \mu_{x_2} \\ h_1 \Rightarrow \mu_{h_1} \\ h_2 \Rightarrow \mu_{h_2} \\ \end{cases} \quad x1μx1x2μx2h1μh1h2μh2

对应加入二值掩码 μ \mu μ之后的网络结构可表示为如下形式:
这里引用《深度学习》(花书) P161 7.2 Dropout 图7.7
加入二值掩码的网络结构
可以看出,关于二值掩码 μ \mu μ的采样就是一个伯努利分布采样:

  • p p p的概率采出结果 1 1 1
  • 1 − p 1-p 1p的概率采出结果 0 0 0

对比正常网络与含 Dropout \text{Dropout} Dropout网络在前馈计算过程的差异性表示如下:
这里以隐藏层神经元 h 1 h_1 h1为例, b x b_x bx表示输入层的偏置信息, f ( ⋅ ) f(\cdot) f()表示激活函数。
Standard Network :  ⇒ { h 1 = W x 1 ⇒ h 1 T x 1 + W x 2 ⇒ h 1 T x 2 + b x h 1 ( o u t ) = f ( h 1 ) Dropout Network :  ⇒ { μ x 1 ∼ Bernoulli ( p ) μ x 2 ∼ Bernoulli ( p ) x ^ 1 = x 1 ∗ μ x 1 x ^ 2 = x 2 ∗ μ x 2 h 1 = W x ^ 1 ⇒ h 1 T x ^ 1 + W x ^ 2 ⇒ h 1 T x ^ 2 + b x h 1 ( o u t ) = f ( h 1 ) \begin{aligned} & \text{Standard Network : } \Rightarrow \begin{cases} h_1 = \mathcal W_{x_1 \Rightarrow h_1}^T x_1 + \mathcal W_{x_2 \Rightarrow h_1}^T x_2 + b_x \\ h_1^{(out)} = f(h_1) \end{cases} \\ & \text{Dropout Network : } \Rightarrow \begin{cases} \mu_{x_1} \sim \text{Bernoulli}(p) \\ \mu_{x_2} \sim \text{Bernoulli}(p) \\ \hat x_1 = x_1 * \mu_{x_1} \\ \hat x_2 = x_2 * \mu_{x_2} \\ h_1 = \mathcal W_{\hat x_1 \Rightarrow h_1}^T \hat x_1 + \mathcal W_{\hat x_2 \Rightarrow h_1}^T \hat x_2 + b_x \\ h_1^{(out)} = f(h_1) \end{cases} \end{aligned} Standard Network : {h1=Wx1h1Tx1+Wx2h1Tx2+bxh1(out)=f(h1)Dropout Network :  μx1Bernoulli(p)μx2Bernoulli(p)x^1=x1μx1x^2=x2μx2h1=Wx^1h1Tx^1+Wx^2h1Tx^2+bxh1(out)=f(h1)

针对网络结构中神经元的不同位置,采样概率 p p p取值也存在相应变化:
个人理解:输入层实际上并不算神经网络层,因为输入层是样本特征,不接收梯度;并且输入层的神经元’失活‘,意味着本次迭代输入特征丢失了一部分。因而不能丢失输入层特征太多。

  • 当神经元位于输入层时,采样概率通常为 0.8 0.8 0.8
  • 当神经元位于隐藏层时,采样概率通常为 0.5 0.5 0.5

参数共享: Dropout VS Bagging \text{Dropout VS Bagging} Dropout VS Bagging

Bagging \text{Bagging} Bagging算法的训练过程中,各基学习器之间相互独立。也就是说,各基学习器内部权重参数之间不存在关联关系

Dropout \text{Dropout} Dropout不同。以梯度下降法为例,在每一次算法迭所随机产生的“残缺网络”均是由这些神经元组合而成的,并且这些神经元还自带上一次迭代产生的权重更新结果。也就是说:每一次迭代,产生的残缺网络可能是不同的,但它们的权重信息共享,并传递到后续的迭代过程中

Bagging \text{Bagging} Bagging算法相比, Bagging \text{Bagging} Bagging算法中基学习器的数量是人为设定的,例如随机森林( Random Forest \text{Random Forest} Random Forest)。但是 Dropout \text{Dropout} Dropout方法在随机产生基学习器的时候,一旦深度神经网络确定,那么基学习器的数量(残缺网络的组合方式)是确定的。

但这个数量与神经网络层、神经元的数量之间呈指数级别的关系。也就是说,当神经网络较大的情况下,基学习器虽然有限,但不可能全部采样到。因此,在算法迭代的过程中,我们可能仅执行了一部分残缺网络,但通过参数共享,那些未随机出来,未执行的残缺网络也会存在较好的参数设定。

Dropout \text{Dropout} Dropout的训练和预测

  • 训练过程中,我们通过采样概率 p p p来控制非输出神经元的数量,从而产生基学习器

    但因权重共享的原因,随着迭代次数的增加,各神经元权重都会产生相应的变化,从而使损失函数达到最小。

    由于每次迭代过程中,选择的具体神经元是未知的,我们仅知道采样概率 p p p。也就是说,某神经元 x x x参与本次迭代/随机删除未知的。

    因此,从期望的角度观察,某神经元 x x x参与本次迭代的期望值 表示如下:
    就是 Bernoulli \text{Bernoulli} Bernoulli分布的期望。
    E [ Bernoulli ( p ) ] = p ⋅ 1 + ( 1 − p ) ⋅ 0 = p \mathbb E[\text{Bernoulli}(p)] = p \cdot 1 + (1 - p) \cdot 0 = p E[Bernoulli(p)]=p1+(1p)0=p
    也就是说,需要 p p p的概率使神经元 x x x参与本次迭代。

  • 测试过程中,由于每一个神经元都会参与运算,也就是说 p = 1 p=1 p=1。但用 Dropout \text{Dropout} Dropout方法训练好的参数直接测试过程中使用是不合理的
    以下是个人理解:
    可以将完整的神经网络看做是一个‘稳定的学习器’;被 Dropout \text{Dropout} Dropout方法产生的‘残缺网络’视作‘不稳定学习器’(丢失信息)。虽然它们权重共享,但是每次迭代对于权重梯度更新的差异是较大的。如果直接用于预测结果,可能导致对于测试样本的预测分布方差较大(不稳定)。
    那么针对该情况,因为神经元必须都要参与运算,没有办法再去消除神经元。因此将 Bernoulli \text{Bernoulli} Bernoulli分布的期望值乘到权重上面
    本图来源于下方链接,侵删。
    在这里插入图片描述
    虽然我们可能永远不知道产生最优解(损失函数最小) 那次迭代消除的是哪些神经元,但是乘以 Bernoulli \text{Bernoulli} Bernoulli分布的期望我们可以得到最优预测结果的近似解,并且还能减小样本预测分布的方差

关于 Dropout \text{Dropout} Dropout这种随机选择神经元,并使其失活的方式进行前馈计算,就是一种稀疏特征的描述。它与 L 1 L_1 L1正则化相似,是一种典型的正则化方法。因此 D \mathcal D \quad D 选项正确。

相关参考:
深度学习入门(9):Dropout原理【BAT算法工程师主讲,大佬带你一起深度学习】
深度学习(花书)

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

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

相关文章

黑马程序员微服务技术栈教程 - 1. SpringCloud 微服务治理

教程链接:https://www.bilibili.com/video/BV1LQ4y127n4 黑马的资料下载链接:https://pan.baidu.com/s/1zRmwSvSvoDkWh0-MynwERA&pwd1234 目录认识微服务单体架构分布式架构微服务微服务结构微服务技术对比SpringCloud总结 🎀服务拆分及远…

刷题day54:柱形图中最大矩形

题意描述: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 暴力方法: class Solution { public:int largestRectangleArea(ve…

软考第四章 局域网与城域网

局域网与城域网 传统局域网(LAN)是分组广播式网络,这是与分组交换式的广域网的主要区别。广播技术中,所有工作站都连接到共享的传输介质上,共享信道的分配技术是局域网的核心技术,而这一技术又与网络的拓扑…

故障分析 | 从一则错误日志到 MySQL 认证机制与 bug 的深入分析

作者:李锡超 一个爱笑的江苏苏宁银行 数据库工程师,主要负责数据库日常运维、自动化建设、DMP平台运维。擅长MySQL、Python、Oracle,爱好骑行、研究技术。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得…

Redis的MoreKey和BigKey问题

文章目录1、MoreKey案例2、BigKey案例1、MoreKey案例 大批量往Redis里面插入200w测试数据key 在Linux Bash下面执行&#xff0c;插入200w数据 for((i1;i<200*10000;i)); do echo "set k$i v$i">>/root/redisTest.txt;done;使用命令 tail -10 redisTest.t…

Android四大组件之 Activity的启动过程源码解析

前言 Activity是Android中一个很重要的概念&#xff0c;堪称四大组件之首&#xff0c;关于Activity有很多内容&#xff0c;比如生命周期和启动Flags&#xff0c;这二者想要说清楚&#xff0c;恐怕又要写两篇长文&#xff0c;更何况分析它们的源码呢。不过本文的侧重点不是它们…

小黑向携程进攻啦1:跟紧沛奇老师的携程步伐

为什么要学 异步非阻塞、asynciotornado、fastapi、django 3.x asgi、aiohttp都在异步->提升功能 如何讲解&#xff1f; 协程asyncio模块进行异步编程实战案例 1.协程 协程不是计算机提供&#xff0c;程序员人为创造出来的。协程&#xff0c;又称微线程&#xff0c;是一…

共聚焦显微镜——光伏产业制造智能化测量新技术

我国智能光伏应用持续升级&#xff0c;产业各环节产量又创新高。根据光伏行业规范公告企业信息和行业协会预测的数据来看&#xff0c;全国多晶硅、组件产量同比增长均超过60%&#xff0c;晶硅电池产品出口同比增长超过156%。 以共聚焦显微测量技术为原理、应用于材料生产领域的…

STM32的SRAM

文章目录SRAM的概念XM8A51216介绍特点连接线原理框图硬件连接图SRAM的配置使能 FSMC 时钟&#xff0c;并配置 FSMC 相关的 IO 及其时钟使能初始化FSMC&#xff0c;设置FSMC BANK1区域3使能 BANK1 区域 3FSMC读写代码SRAM的概念 SRAM的介绍 STM32F407ZGT6自带了 192K字节的 SRA…

[助人为乐]层次分析法

朋友论文需要用到层次分析法。于是回顾了一下。 相关资料推荐 层次分析法(AHP) 层次分析法&#xff08;AHP&#xff09;详细版本 用人话讲明白AHP层次分析法&#xff08;非常详细原理简单工具实现&#xff09; 层次分析法的流程图 构建层次结构模型(目标-准则-方案层) 深入…

认证服务---OAuth2.0基本介绍,微博登录整合到实际项目中【下篇】

前言 上一篇简单介绍了它的基本使用&#xff0c;这一篇就粗略说明一下如何在项目中实际应用 1、核心代码 1.1 认证微服务 当你进行了授权之后&#xff0c;跳转到一个新的地址。这个地址应该是你访问接口的地址。在这个接口中完成相应的access_token获取&#xff0c;以及调用…

docker-compose容器编排使用详解+示例

文章目录一、docker-compose概述1、产生的背景2、核心概念3、使用的三个步骤4、常用命令二、下载安装1、官方文档2、下载3、卸载三、使用compose1、前置知识&#xff0c;将一个springboot项目打包为镜像2、编写docker-compose.yml文件3、启动docker-compose4、停止一、docker-c…

[Linux]进程控制精讲,简单实现一个shell

目录 前言 进程创建 fork函数初识 写时拷贝 fork常见用法 fork调用失败的原因 进程终止 进程退出场景 进程退出码 查看进程退出码 退出码的含义 进程常见退出方法 exit VS _exit exit函数 _exit函数 二者的区别 return退出 进程等待 进程等待必要性 进程等待…

【Java文件操作】手把手教你拿捏IO 流

哈喽&#xff0c;大家好~我是保护小周ღ&#xff0c;本期为大家带来的是 Java 文件操作&#xff0c;理解文件的概念以及&#xff0c;常用的操作文件的类和方法&#xff0c;FileInputStream 类 和 FileOutputStream , PrintWriter and Scnner, Reader and Wirter 确定不来看看…

Python机器学习:集成学习

前两天看了SVM、逻辑回归、KNN、决策树、贝叶斯分类这几个很成熟的机器学习方法&#xff0c;但是&#xff0c;今天不看方法了&#xff0c;来看一种思想&#xff1a;集成学习&#xff1a; 先来看一下集成学习的基本原理&#xff1a;通过融合多个模型&#xff0c;从不同的角度降…

3.4 随机变量的相互独立性

学习目标&#xff1a; 要学习二维随机变量的相互独立性&#xff0c;我会按照以下步骤进行&#xff1a; 学习独立性的概念&#xff1a;在概率论中&#xff0c;两个事件A和B是相互独立的&#xff0c;当且仅当它们的概率乘积等于它们的联合概率&#xff0c;即P(A∩B)P(A)P(B)。将…

【Java EE】-网络编程(二) Socket(套接字) + Udp版本客户端服务器 +Tcp版本客户端服务器

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【JavaEE】 主要内容&#xff1a;传输层协议对应Socket编程&#xff0c;DatagramSocket&#xff0c;DatagramPacket&#xff0c;Udp版本的客户端和服务器&#xff0c;UdpEchoSeve…

大力出奇迹——GPT系列论文学习(GPT,GPT2,GPT3,InstructGPT)

目录说在前面1.GPT1.1 引言1.2 训练范式1.2.1 无监督预训练1.2.2 有监督微调1.3 实验2. GPT22.1 引言2.2 模型结构2.3 训练范式2.4 实验3.GPT33.1引言3.2 模型结构3.3 训练范式3.4 实验3.4.1数据集3.5 局限性4. InstructGPT4.1 引言4.2 方法4.2.1 数据收集4.2.2 各部分模型4.3 …

【轻NAS】Windows搭建可道云私有云盘,并内网穿透公网访问

文章目录1.前言2. Kodcloud网站搭建2.1. Kodcloud下载和安装2.2 Kodcloud网页测试3. cpolar内网穿透的安装和注册4. 本地网页发布4.1 Cpolar云端设置4.2 Cpolar本地设置5. 公网访问测试6.结语1.前言 云存储作为近些年兴起的概念&#xff0c;成功吸引了各大互联网厂商下场&…

thingsboard ARM网关

G5501边缘计算网关 G5501是采用中高端的通用型 SOC&#xff0c;一款4 核 arm 架构 A55 处理器的 网关设备。标配处理器为 Cortex-A55 四核&#xff0c;最高主频 2GHz 的处理器&#xff0c; 内置 4GB DDR4 内存&#xff0c;32GB eMMC 存储。 集成Mali G52 2EE 图形处理器GPU&am…