减少过拟合:暂退法

news2024/11/27 4:38:11

文章目录

        • (一)过拟合
        • (二)暂退法

(一)过拟合

1.过拟合产生的原因

(1)根本原因:

我们都知道模型参数的优化方式:反向传播更新梯度,然后随机梯度下降。

也非常清楚模型参数优化的方向:使得损失尽可能的小。

但这里有一点值得注意,我们想要尽可能减小的损失是训练损失,而我们想要尽可能达成的目标是模型在未知数据上也能有良好表现。

这里就是过拟合会产生的根本原因——训练数据不能囊括未知数据。

(2)直接原因:

模型的预测能力源于对训练数据中特征之间关系的挖掘。但是由于训练数据是有限的、并且存在噪声,模型会挖掘出一些虚假的关联。

举个例子,我们正在训练一个模型去预测一个人是否患病,样本中所有患病的人如果恰巧穿的都是运动鞋,那么模型很可能挖掘出这样一种关联——穿运动鞋的人患病。这显然不是正确的关联。

2.泛化性-灵活性

(1)泛化性:泛化性就是指模型在未知数据上预测的能力。
也可以理解为在训练数据上与测试数据上的损失差距。这里举几个例子来理解:
过拟合的泛化性之所以差,是因为训练损失很小,但是测试损失很大,二者差距很大;
简单模型的泛化性之所以好,可能是因为训练损失和测试损失都很小(我们希望这样),也可能是因为训练损失和测试损失都很大,对于后者,虽然有很好的泛化性,但是显然没什么意义。

(2)灵活性:能够表示的函数范围。

(3)泛化性-灵活性权衡:

也称为偏差-方差权衡(bias-variance tradeoff),之所以需要权衡,是因为泛化性和灵活性是相冲突的:

模型越复杂,能够表示的函数范围自然越广,灵活性自然越强;

但与此同时,模型越复杂,也就越容易过拟合,泛化性自然越差。

我们既希望模型能够挖掘样本特征间尽可能多的关联,以便模型可以具有广泛的适用性;但又不希望模型挖掘太深以至于挖掘出虚假的关联,造成过拟合,缺少泛化性。

(二)暂退法

1.使用暂退法的原因

暂退法用来使模型具有更强的泛化性,所以我们先来定义什么才是更强的泛化性:

(1)模型复杂度:

模型越简单,泛化性越强。这里的泛化性体现为简单性,以较小维度的形式呈现。

(2)扰动的稳健性(重点):

简单性的另一种角度是平滑性,即函数不应该对输入的微小变化敏感(发生过拟合之后,损失随着输入不同剧烈波动,简单性很差)。

为了添加微小的扰动,除了噪声之外,我们还可以使用暂退法。

2.暂退法原理

直观理解,暂退法就是在训练的每次迭代中,随机丢弃中间的神经元:
h = { 0 h 1 − p h=\begin{cases} 0\\ \frac{h}{1-p} \end{cases} h={01ph
其中 p p p为暂退层超参数,意义为抛弃输入的概率。

如下图所示是一个含有一个隐藏层的多层感知机,暂退法丢弃了来自 h 2 h_2 h2 h 5 h_5 h5的输入:

这样模型就不能过于依赖 h 1 h_1 h1 h 5 h_5 h5中的任何一个元素。

3.应用

一般情况下我们在测试时不使用暂退法,只在训练时应用。

(1)减少过拟合

(2)测试稳定性:在测试时应用不同暂退法,如果模型的预测结果相似,我们可以认为模型具有稳定性。

4.实现

import torch
from torch import nn

def dropout_layer(X, p):
	assert 0 <= p <= 1
	if p == 1:  # 丢弃全部输入
		return torch.zeros_like(X)
	else if p == 0  # 不丢弃任何输入
		return X
	mask = torch.rand(X.shape) > p
	return mask * X / (1.0 - p)

简洁实现:

dropout_layer = nn.Dropout(p=0.5)

参考资料:《动手学深度学习》(Pytorch版)

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

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

相关文章

【Java笔试强训 9】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;另类加法…

弗洛伊德算法(求最短路径)

弗洛伊德算法介绍 和迪杰斯特拉算法一 样&#xff0c; 弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径迪杰斯特拉算法用于计算图中某-一个顶点到其他项点的最短路径。弗洛伊德算法VS迪杰斯特拉算…

【数据库架构】PostgreSQL的最佳群集高可用性方案

如果您的系统依赖PostgreSQL数据库并且您正在寻找HA的集群解决方案&#xff0c;我们希望提前告知您这是一项复杂的任务&#xff0c;但并非不可能实现。 我们将讨论一些解决方案&#xff0c;您可以从中选择对您的容错要求。 PostgreSQL本身不支持任何多主群集解决方案&#xff0…

Python Unet ++ :医学图像分割,医学细胞分割,Unet医学图像处理,语义分割

一&#xff0c;语义分割&#xff1a;分割领域前几年的发展 图像分割是机器视觉任务的一个重要基础任务&#xff0c;在图像分析、自动驾驶、视频监控等方面都有很重要的作用。图像分割可以被看成一个分类任务&#xff0c;需要给每个像素进行分类&#xff0c;所以就比图像分类任务…

C++-FFmpeg-8-(1)基本概念与原理-rtsp-I、P、B 帧-DTS、PTS-

目录 1.rtsp是什么&#xff1f; 2. I、P、B 帧 3.DTS、PTS 4.rtsp协议抓包分析&#xff1f; 1.rtsp是什么&#xff1f; 流程&#xff1a; 鉴权&#xff1a; 2种 &#xff1a;basice64 Digest 哈希值 哈希值不可逆。nonce 做的单项散列&#xff08;MD5,SHA512&#xff0…

HTML(二) -- 表格设计

目录 1. 基本格式&#xff1a; 表格常用属性&#xff1a; 2. 表格标签 为什么使用表格&#xff1f; 简单通用、结构稳定数据显示的非常的规整、可读性非常好 1. 基本格式&#xff1a; <table style"border: 1px solid black;" border"1px">&l…

AWE2023什么值得看?智哪儿带你五大关键词读懂AWE2023

4月27至30日&#xff0c;2023年中国家电及消费电子博览会&#xff08;AWE 2023&#xff09;在上海浦东新国际博览中心开展。 作为与德国IFA、美国CES并肩的全球前三国际家电及消费电子展览会&#xff0c;时隔两年AWE终于重启。沉淀两年&#xff0c;它的规模也是历年最大&#x…

QT+OpenCV配置

QTOpenCV配置 1 下载CMake2 安装CMake3 下载OPenCV4 配置环境变量4.1 配置QT环境变量4.2 配置CMake环境变量4.3 重启电脑生效 5 CMake编译OPenCV5.1 解决报错 6 测试 1 下载CMake 链接&#xff1a;https://cmake.org/download/ 2 安装CMake 3 下载OPenCV 链接&#xff1a;htt…

本地elasticsearch中文分词器 ik分词器安装及使用

ElasticSearch 内置了分词器&#xff0c;如标准分词器、简单分词器、空白词器等。但这些分词器对我们最常使用的中文并不友好&#xff0c;不能按我们的语言习惯进行分词。 ik分词器就是一个标准的中文分词器。它可以根据定义的字典对域进行分词&#xff0c;并且支持用户配置自…

网络设备中VRRP协议和Linux服务器中keepalived的两个区别

1、什么是VRRP&#xff1f;keepalived又是什么&#xff1f; VRRP全称是Virtual Router Redundancy Protocol&#xff0c;即虚拟路由冗余协议。它的主要目的是在一个网络中提供冗余的路由。当一个三层网络设备或服务器出现故障时&#xff0c;VRRP可以确保网络仍能正常工作。VRR…

在.NET Core中正确使用HttpClient的方式

HttpClient 是 .NET Framework、.NET Core 或 .NET 5以上版本中的一个类&#xff0c;用于向 Web API 发送 HTTP 请求并接收响应。它提供了一些简单易用的方法&#xff0c;如 GET、POST、PUT 和 DELETE&#xff0c;可以很容易地构造和发送 HTTP 请求&#xff0c;并处理响应数据。…

算法之时间复杂度---数据结构

目录 前言&#xff1a; 1.时间复杂度 1.1时间复杂度的理解 1.2规模与基本操作执行次数 1.3大O渐进表示法 1.4计算基本操作的次数 2.常见的时间复杂度及其优劣比较 ❤博主CSDN&#xff1a;啊苏要学习 ▶专栏分类&#xff1a;数据结构◀ 学习数据结构是一件有趣的事情&…

2023五一数学建模B题完整模型代码【原创首发】

已经完成五一数学建模全部内容&#xff0c;大家可以文末查看&#xff01;&#xff01;供参考使用&#xff01; 摘要 随着网络购物的普及和发展&#xff0c;快递行业需求持续增长&#xff0c;对于快递公司来说&#xff0c;准确预测运输需求以及合理规划运输线路和仓库布局变得…

分享一个有意思的键盘,我们就只会ctrl c+v

先上效果图&#xff1a; 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>* {border: 0;box-sizing: border-box;margin: 0;padding: 0;}:roo…

【pyTorch学习笔记④】PyTorch基础·中篇

文章目录 三、Numpy与Tensor3.Tensor的索引4.Tensor的广播机制5.逐元素操作6.归并操作7.比较操作8.矩阵操作9.PyTorch与Numpy的比较 相关推荐 三、Numpy与Tensor 3.Tensor的索引 &#xff08;1&#xff09;item&#xff1a;若Tensor为单元素&#xff0c;则返回标量&#xff0…

驱动开发:通过MDL映射实现多次通信

在前几篇文章中LyShark通过多种方式实现了驱动程序与应用层之间的通信&#xff0c;这其中就包括了通过运用SystemBuf缓冲区通信&#xff0c;运用ReadFile读写通信&#xff0c;运用PIPE管道通信&#xff0c;以及运用ASYNC反向通信&#xff0c;这些通信方式在应对一收一发模式的时…

【Java笔试强训 8】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;两种排…

【Java笔试强训 6】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;不要二 …

权限提升:本地权限提升.(AT || SC || PS )

权限提升&#xff1a;本地权限提升. 权限提升简称提权&#xff0c;由于操作系统都是多用户操作系统&#xff0c;用户之间都有权限控制&#xff0c;比如通过 Web 漏洞拿到的是 Web 进程的权限&#xff0c;往往 Web 服务都是以一个权限很低的账号启动的&#xff0c;因此通过 Web…

JavaScript用map实现Hashmap

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 正如我们已经看到的&#xff0c;Map 对象是一个键值对。最初&#xff0c;M…