代码编织梦想

过拟合

造成过拟合的几种情况:
①训练集时间过久
②模型过于庞大,超出任务规模
③训练集的数据太好,测试集的数据太差

过拟合的现象:
训练时分数很高,测试时分数很低
回归曲线过于复杂,且过度详细的描述了变化

造成过拟合的根本原因:
参数过多
模型中的参数过多,令模型规模过大,学习到的错误信息更多。
也更可能超出了任务需求的规模
基于此原因,过拟合,常常出现在大型深度网络中

不同模型的过拟合情况:
相对于卷积,全连接“更容易”过拟合
原因如图:
在这里插入图片描述
解决过拟合的几种方式:
①增大数据量。使用更多数据来匹配网络深度,确保每个参数都能表述数据特征
②提高数据质量。使用更好的、噪声更小、标签更详细的数据集进行训练,避免错误学习
③数据增强。对已有的高质量数据精细旋转、剪切、变形、卷积等操作,提升高质量数据率
④丢弃法(Dropout)。在训练开始时随机忽略一部分参数,降低参数数量和网络深度,避免进一步错误学习
⑤优化网络结构,如卷积层间的连接方式、池化的顺序等

池化

概念:通过选定某区域内中的特定数值,对原图像进行压缩操作(下采样)
目的:保留特征、压缩尺寸
定位:与激活函数类似,不产生参数,不算神经元(感知机)/感受野(卷积)
用法:“最大池化(MaxPool)”最常用,平均池化偶尔用

池化的过程图解:
最大池化的具体过程

Dropout(随机删除参数)

在训练开始时随机忽略一部分参数,降低参数数量和网络深度,避免进一步错误学习

值得注意的是,测试模式中的eval()方法与之相反。
eval()会使用所有的网络参数来进行计算

使用例:

'''
过拟合的抑制方法:dropout
使用例:

# 普通卷积层
nn.Conv2d(3, 10, 3, 1)
nn.ReLU()
# 使用Dropout随机抑制20%的参数(权重),防止过拟合
nn.Dropout2d(0.2)  # 注意:卷积使用的是2d


# 普通全连接层
nn.Linear(256,512)
nn.Dropout(0.2)  # 全连接直接Dropout()即可

# 测试时使用net.eval()模式,即可恢复使用全部参数
'''

交叉熵

一种“常用于回归问题”的损失函数。计算方式为,将输出与标签one_hot(独热化)后的对数相乘、求和计算得到的结果
因与信息熵的计算方式相似而得名
交叉熵计算公式
在实际使用中,由于会存在“不符合标签,乘积为0的情况”
一般会加上“补充交叉熵”(个人命名),在不符合标签时用其输出/标签的“补数”独立计算,并加入损失函数中
如下图中:
判断为狗时,狗的期望(标签)=1,概率为0.89,可以正常计算交叉熵
判断为猫时,狗的期望=0,计算得到的交叉熵消失。这时使用补充交叉熵即可正常表达损失
补充交叉熵的情况

残差网络

一种解决梯度消失问题而建立的网络模块
核心方法:在所有输出后,+上原始输入
原理:常规网络并不能避免梯度消失——某层参数为0时,使后续输出全都为0,导致无法进行反向传播和梯度计算——
导致此问题的核心即为:参数与输入作乘法

残差网络即为:在这一前提下,在所有输出后,一个输入参数
由于加法的引入,大大降低了梯度消失的出现概率
残差网络对参数操作的图解

代码实现

import torch
from torch import nn


# 残差网络的模块化建立
class res_net(nn.Module):
    def __init__(self, in_size, out_size):
        super(res_net, self).__init__()
        # 为何要引入输入值?
        # A:残差网络不进行数值计算,只进行“增加输入值”这一项操作,不需要进行真正卷积
        # 建立一个卷积层,入:输入大小;出:无所谓,并不进行实际运算
        self.conv1 = nn.Conv2d(in_size, 64, 1, 1)
        # 入:与上层一致即可;出:输出尺寸
        self.conv2 = nn.Conv2d(64, out_size, 1, 1)

    def forward(self, x):
        # 一次前向传播,平平无奇
        out1 = self.conv1(x)
        # 可以激活,也可以不激活
        out1 = self.relu(out1)
        # 再使用一次卷积层
        out2 = self.conv2(out1)
        return out2 + x  #核心中的核心,重点中的重点
        # 常规网络并不能避免**梯度消失**——某层参数为0时,使后续输出全都为0,导致无法进行反向传播和梯度计算——
        # 问题的核心是:”乘法运算“。既然如此,便进行”加法运算来破解“。
        # 在所有网络层后,都加上此层的原始输入,以降低“参数为0”的概率————即为残差网络的核心
        ```

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41848886/article/details/128015686

论文阅读笔记2——献给新手的深度学习综述_recent advances in deep learning: an overview_子季鹰才的博客-爱代码爱编程

这篇综述论文列举出了近年来深度学习的重要研究成果,从方法、架构,以及正则化、优化技术方面进行概述。本人认为,这篇综述对于刚入门的深度学习新手是一份不错的参考资料,在形成基本学术界图景、指导文献查找等方面都能提供帮助。 论文地址:https://arxiv.org/pdf/1807.08169v1.pdf 摘要:深度学习是机器学习和人工智能研究的最新

【人工智能】深度学习专项课程精炼图笔记!必备收藏-爱代码爱编程

本文为人工智能学习笔记记录 ,参考机器之心,AI有道,Google资源 目录 深度学习基础 1. 深度学习基本概念 2. logistic 回归 3. 浅层网络的特点 4. 深度神经网络的特点 5. 偏差与方差 6. 正则化 7. 最优化 8. 超参数 9. 结构化机器学习过程 10. 误差分析 11. 训练集、开发集与测试集

深度学习笔记(二)——卷积神经网络,过拟合欠拟合及解决方案-爱代码爱编程

3.1 过拟合、欠拟合及解决方案 训练误差(training error):模型在训练数据集上表现出的误差;泛化误差(generalization error):模型在任意一个测试数据样本上表现出的误差的期望;(泛化样本是指除训练样本之外的all)验证集:用于调参过拟合、欠拟合如下图所示:L2范数正则化(regularization):在模型原损失函数加

动手学深度学习(tensorflow)---学习笔记整理(七、卷积神经网络篇)-爱代码爱编程

有关公式、基本理论等大量内容摘自《动手学深度学习》(TF2.0版)) 前面我们需要简洁实现都是用的Sequential来实现的,我们可能发现简洁实现很简单,但是内部细节可能很难控制。而自己从零开始实现又过于麻烦,而tf.keras.Model则可以实现上述的均衡。(具体内容就不详细介绍了) 下面开始卷积神经网络的相关概念 再说这个事情先说个事情,就是

TensorFlow2.0学习笔记-6.深度神经网络-爱代码爱编程

6.深度神经网络 6.1.卷积神经网络简介 在 CNN 出现之前,图像对于人工智能来说是一个难题,有2个原因: • 图像需要处理的数据量太大,导致成本很高,效率很低 • 图像在数字化的过程中很难保留原有的特征,导致图像处理的准确率不高   需要处理的数据量太大: 现在随随便便一张图片都是 1000×1000 像素以上的, 每个像素都有RGB 3个

吴恩达推荐笔记:22张图总结深度学习全部知识-爱代码爱编程

来源|Sophia@知乎,https://zhuanlan.zhihu.com/p/152362317 本文仅用于学术分享,如有侵权,联系后台作删文处理 编译:极市平台 最近在做笔记查阅内容,觉得这个总结太美观了,真是棒! 吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息图,这套信息图优美地记录了深度学习

深度学习小样本分类选用什么网络?_机器学习与深度学习常见面试题(上)-爱代码爱编程

本文转载自:SIGAI公众号 导言 一年一度的校园招聘已经开始了,为了帮助参加校园招聘、社招的同学更好的准备面试,SIGAI整理出了一些常见的机器学习、深度学习面试题。理解它们,对你通过技术面试非常有帮助,当然,我们不能只限于会做这些题目,最终的目标是真正理解机器学习与深度学习的原理、应用。 1 比较Boo

深度学习精炼图笔记总结-爱代码爱编程

机器之心整理,参与:思源、刘晓坤 信息图下载地址:https://pan.baidu.com/s/1DtYg3TyplXQOVZ-YmplJaw 吴恩达在推特上展示了一份由 TessFerrandez 完成的深度学习专项课程信息图,这套信息图优美地记录了深度学习课程的知识与亮点。因此它不仅仅适合初学者了解深度学习,还适合机器学习从业者和研究者复习

深度学习笔记----拓扑结构动态变化网络(Dropout,Drop Connect, Stochastic Depth, BranchyNet,Blockdrop,SkipNet)-爱代码爱编程

目录 1,训练时拓扑结构变化的网络 1.1 Dropout与 Drop Connect  1.2 Stochastic Depth(随机深度) 2,测试时拓扑结构变化的网络 2.1 BranchyNet 2.2 Blockdrop 2.3 SkipNet 1,训练时拓扑结构变化的网络       有些网络在训练的时候会随机丢弃一些

Datawhale开源学习笔记-爱代码爱编程

第31期水很深的深度学习 Task01 绪论与深度学习概述、数学基础1 绪论与深度学习概述1.1人工智能1.2机器学习1.3深度学习1.4主要应用2 数学基础2.1 矩阵基本知识2.2 矩阵的分解2.3 概率统计2.4 最优化估计Task02 机器学习基础一些基本概念数据集误差分析泛化误差分析交叉验证有监督学习线性回归支持向量机决策树无监督学习聚类

神经网络中的 Dropout 以及变体方法-爱代码爱编程

Dropout 的学习笔记,主要参考文章: 12种主要的Dropout方法:如何应用于DNNs,CNNs,RNNs中的数学和可视化解释 【科普】神经网络中的随机失活方法 1. 简介 深度学习训练模型的一个主要挑战是协同适应,这意味着神经元之间是相互依赖的,也就是相对于输入它们还不够独立,而且经常会有一些神经元具有更重要的预测能力,这可能导致模型会过

【论文笔记】—resnet—2015-cvpr_chaikeya的博客-爱代码爱编程

题目:Deep Residual Learning for Image Recognition 《用于图像识别的深度残差学习》 通过残差模块解决深层网络的退化问题,大大提升神经网络深度,各类计算机视觉任务均从深度模型提取出的特征中获益。 ResNet获得2015年ImageNet图像分类、定位、目标检测竞赛冠军,MS COCO目标检测、图像分割冠军。并

深度学习笔记_spade_eddie的博客-爱代码爱编程

深度学习知识点总结1 CNN发展史1.1 AlexNet1.2 VGGNet1.3 GoogLeNet/Inception-v11.4 Inception-v2和Inception-v31.5 Inception

【pytorch学习笔记十一】卷积神经网络(cnn)详细介绍(组成、常见网络模型)_qhcv的博客-爱代码爱编程

文章目录 1.为什么要使用卷积神经网络2.卷积神经网络的结构组成2.1卷积层1.卷积计算过程2.卷积计算过程中的参数4.多通道卷积计算过程 2.2 其它层1. 池化层(pooling)2. dropout

[课程笔记](李沐-爱代码爱编程

文章目录 矩阵计算标量导数亚导数梯度 自动求导向量链式求导法则自动求导复杂度自动求导实现 softmax回归+损失函数softmax 回归损失函数QA 权重衰退丢弃法Dropout从零开始实现

学习笔记-爱代码爱编程

深度学习与Pytorch基础-第三周学习笔记 ResNet ResNet详解 ResNet在2015年由微软实验室提出,网络亮点: 超深的网络结构(突破1000层)提出residual(残差)模块(解决退化问题)使用

深度学习基础笔记(mlp+cnn+rnn+transformer等等)_mpl、cnn、rnn框架-爱代码爱编程

提示:本文章篇幅过长,现已分出下面两篇文章,想了解更多可以移步! Transformer系列学习笔记(mae+bert+vit等等) 卷积神经网络系列学习笔记yolo+R-CNN+GAN等等 目录