【深度学习】日常笔记10

news2024/9/23 10:27:19

loss_fn = nn.MSELoss(reduction='none')这行代码,在这个上下文中,loss_fn实际上是一个损失函数对象而不是返回的具体值。

使用nn.MSELoss(reduction='none')创建的loss_fn是一个均方误差损失函数对象,而不是计算后的结果。要计算具体的损失值,您需要将输入数据传递给该损失函数并调用它来获取最终的损失值。MSE全称是Mean Squared Error,意为均方误差。

假设你有预测值张量pred和目标值张量target,你可以使用以下代码来计算损失值:

loss_fn = nn.MSELoss(reduction='none')

loss = loss_fn(pred, target)

参数reduction用于指定损失的缩减方式,其中'reduction'的默认值是'reduce_mean'。但在这种情况下,通过设置'reduction'为'none',可以禁用任何缩减操作,返回每个样本的独立损失值。

在这个例子中,loss将是一个张量,其中每个元素表示对应样本的均方误差损失值。这些值的计算将根据输入的pred和target进行。

net = nn.Sequential(nn.Linear(4, 1, bias=False))

这行代码构建了一个神经网络模型net,它是一个序列化的神经网络模型。让我们逐步解释代码的每部分:

  1. nn.Sequential:这是一个PyTorch提供的类,用于创建序列化的神经网络模型。它允许我们按顺序组合不同层和操作。
  2. nn.Linear(4, 1, bias=False):这里创建了一个线性层(全连接层),通过指定输入特征维度和输出特征维度来定义该层。参数解释如下:
    • 4:表示输入特征的维度为4。在神经网络中,这表示每个输入样本有4个特征。
    • 1:表示输出特征的维度为1。这意味着该线性层将把输入特征转换为一个标量输出。
    • bias=False:表示不使用偏置项。偏置项通常用于模型学习数据中的平移性质,但在此模型中被设置为False,即不使用偏置项。以下是一些情况下可能希望使用偏置项的示例:①. 数据中存在明显的偏移或基准值,例如图像中的亮度值。②. 在某些问题中,特征向量经过线性变换后添加偏差可以使得模型更好地拟合训练数据。③. 偏置项可以增加模型的容量,使其能够更好地适应复杂的数据分布。

net[0]表示访问nn.Sequential容器中的第一个子模块。在这种情况下,nn.Linear(4, 1, bias=False)是nn.Sequential的唯一一个子模块,因此net[0]就是指代该线性模块。

综上,该代码创建了一个具有单个线性层的简单神经网络模型。输入特征维度为4,输出特征维度为1,并且没有使用偏置项。

欠拟合(underfitting)指的是机器学习模型无法很好地适应训练数据,表现为模型对训练数据和新样本都不能提供良好的拟合效果。简单来说,欠拟合就是模型在训练集上表现不够好,无法捕捉到数据中的规律和模式。

当模型出现欠拟合时,通常会导致以下情况:

  1. 在训练集上表现较差:模型无法很好地拟合训练数据,预测结果与实际结果之间存在较大的误差。
  2. 模型过于简单:欠拟合通常是由于模型的复杂度不足所造成的。例如,在线性模型中使用了过少的特征或过低的多项式次数。
  3. 欠学习:模型没有充分学习到数据中的关键特征和模式,导致预测能力有限。

解决欠拟合问题的一些方法包括:

  1. 增加模型复杂度:可以增加模型的参数数量、层数或引入更复杂的模型结构,以提高其学习能力。
  2. 提供更多的训练数据:通过增加样本数量,模型可以更好地学习数据中的规律和模式。
  3. 特征工程:对输入数据进行适当的特征工程,提取更好的特征表示,以帮助模型更好地学习。

在机器学习中,既要避免模型过于简单而导致欠拟合,也要避免模型过于复杂而导致过拟合。在实践中,需要根据具体问题和数据集的特点来选择合适的模型和调整参数,以获得更好的拟合效果。

我感觉下来就是:要根据数据选模型,数据少了但是选了个超复杂的神经网络模型最终的表现效果也不佳。就是量体裁衣的感觉,少量数据选小模型,大量数据选大模型。


完成最小二乘法(Least Squares Method)的目标可以使用均方误差(Mean Squared Error,MSE)作为其模型的损失函数。均方误差是指将每个样本的预测值与真实值之间的差异平方化,并对所有样本进行求和后再取平均。最小二乘法的目标就是通过调整模型参数使得损失函数(即均方误差)最小化。

最小二乘法适用于线性回归模型和许多其他的回归问题,它通过最小化均方误差来寻找最佳的模型参数。当均方误差最小时,说明预测值与真实值之间的误差较小,模型拟合效果较好。


p151练习

1. 这个多项式回归问题可以准确地解出吗?提⽰:使⽤线性代数。

答:这个问题的答案取决于多项式回归模型的复杂度和数据集的大小。如果模型足够复杂并且数据集足够大,那么多项式回归问题可以准确地解出。但是,如果模型过于简单或者数据集太小,那么多项式回归问题可能会出现过拟合或欠拟合的情况,导致预测结果不准确。

因此,在实际应用中,需要根据具体情况选择合适的模型和算法,并进行交叉验证等方法来评估模型的性能。

3. 如果不对多项式特征x i进⾏标准化(1/i!),会发⽣什么事情?能⽤其他⽅法解决这个问题吗?

答:如果不对多项式特征 x_i 进行标准化(1/i!),会导致训练模型时出现数值不稳定的情况,因为每个特征的尺度不同,可能会导致某些特征对模型的影响更大,从而影响模型的性能。

为了解决这个问题,可以使用标准化方法将特征缩放到相同的尺度上。常用的标准化方法包括最小-最大标准化、Z-score标准化等。这些方法可以将每个特征缩放到均值为0,标准差为1的范围内,使得不同特征之间的尺度差异不会对模型的性能产生太大影响。

除了标准化方法外,还可以使用其他方法来解决这个问题,例如使用正则化方法(如L1或L2正则化)来惩罚模型中的复杂度,或者使用核函数将非线性关系转换为线性关系。这些方法都可以有效地解决多项式回归中的特征尺度问题。

4. 泛化误差可能为零吗?

答:在理论上,泛化误差可以为零。但是,在实际应用中,由于数据的随机性和模型的复杂性,很难达到完全的泛化误差为零。

解决过拟合问题可以通过增加更多的训练数据,不过如果原本的数据都是高质量的,那我们便可以使用正则化技术要解决过拟合。

较小的L2范数值(即下图中的||x||2的公式照搬下,其中,在L2范数中常常省略下标2,也就是说||x||等同于||x||2。)

说明权重向量的长度较短,表示模型的参数规模相对较小。这可能有助于控制模型的复杂度,并提高模型的泛化能力。那要使得权重向量的L2范式值小,那常⽤⽅法是将其范数作为惩罚项加到最⼩化损失的问题中,将原来的训练⽬标

最⼩化训练标签上的预测损失,调整为最⼩化预测损失和惩罚项之和

。这就是防止模型过拟合的正则化技术中的一种:权重衰减(weight decay)。上式的λ是正则化非负常数,为超参数。权重衰减顾名思义,优化算法在训练的每一步都会衰减权重。较小的λ值对权重w的约束小,较大的λ值对权重w的约束大。

L2正则化线性模型构成经典的岭回归(ridge regression)算法,L1正则化线性回归是统计学中类似的 基本模型,通常被称为套索回归(lasso regression)。常常使⽤L2范数的⼀个原因是它对权重向量的⼤分量施加了巨⼤的惩罚,因为开了平方,那大分量开平方会更大,那么惩罚力度也就越大,这使得学习算法偏向于训练出一个在大量特征上均匀分布权重的模型。相⽐之下,L1惩罚会导致模型将权重集中在⼀⼩部分特征上,⽽将其他权重清除为零。L1正则化会将某些权重变为0的几何解释:在几何上来看,L1正则化在权重空间中对应着一个以坐标轴为边界的菱形区域(L1范数等于常数C定义的曲面)。当进行优化时,为了使目标函数同时满足损失函数的要求和L1正则化的限制条件,权重向量的取值点实际上是与此菱形区域的交点。因为菱形的顶点处对应着某些权重为零的情况,优化算法有可能找到这样的交点,使得某些权重变为零。综上所述,L1正则化惩罚项会促使模型将一部分权重置为零,从而实现特征选择和提高模型的解释性,这可能在某些场景下被需要。

正则化的L2正则化能提升泛化能力的解释:L2正则化通过在损失函数中添加一个正则化项,对模型参数进行惩罚,从而减少模型的复杂度。具体来说,L2正则化通过对参数的平方和进行惩罚,使得模型趋向于选择较小的参数值。这就相当于在损失函数中引入了一个力度较强的约束,要求模型尽量使用较小的参数值来进行拟合。

这种约束的作用是什么呢?可以这样想象:在拟合训练数据时,如果没有正则化项,模型可能会不受约束地选择很大的参数值来使得训练数据拟合得非常好。但这些大型参数值对应于较复杂的模型,容易过度适应训练数据中的噪声和特殊情况,导致泛化能力较差。当模型具有很多参数,且这些参数没有受到约束时,它可以寻找一些非常细微的规律和噪声,并将这些细节也纳入考虑。在拟合训练数据时,它可以通过增加参数值来放大各种细节特征,甚至将噪声也进行拟合。这样做虽然会使得模型在训练集上的表现非常好,但它对于未见过的测试数据可能并不具备良好的泛化能力。而L2正则化通过惩罚大型参数,迫使模型在进行优化时更倾向于选择较小的参数值,从而限制了模型的复杂度,减少了过拟合的风险。

简而言之,L2正则化通过惩罚大型参数,迫使模型选择较小的参数值,从而控制模型的复杂度,减少过拟合的发生,提升模型的泛化能力。

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

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

相关文章

(02)Cartographer源码无死角解析-(79) ROS服务→子图压缩与服务发送

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885 文…

一篇文章带你吃透Go语言的Atomic和Channel--实战方法

一篇文章带你吃透Go语言的Atomic和Channel–实战方法 Atomic 要保证原子操作,一定要使用这几种方法 我们在学习 Mutex、RWMutex 等并发原语的实现时,你可以看到,最底层是通过 atomic 包中的一些原子操作来实现的 你可能会说,这些…

C语言中级篇请看另一篇文章,这一篇文章只写给高手看【高阶C语言】【更新中】【原创】

文章目录 前言define和typedef的区别?前言 关于C语言,博主已经写了不少的笔记总结了,C语言基础版可看我的专栏里面的C语言精华,C语言进阶版可看我的谭浩强C语言第五版,C语言高阶版看此篇文章即可 C Primer Plus书籍,C语言精华,截图 + 代码 + 学习总结笔记【11000字】【…

AOCVSBOCV、AOCV table

文章目录 AOCV(Advanced OCV)&SBOCV(Stage Based OCV)---更精确,剔除悲观度Random variation(Depth/Stage based AOCV)Systematic variation(Distance based AOCV)一…

阻塞队列是什么

1、阻塞队列是什么? (1) 栈与队列 1)栈:先进后出,后进先出 2)队列:先进先出 (2) 阻塞队列 阻塞:必须要阻塞/不得不阻塞 阻塞队列是一个队列,在数据结构中起的作用如下图: 线程1…

直播美颜工具与实时美颜SDK开发指南

近年来,随着直播行业的蓬勃发展,越来越多的用户开始关注直播内容的质量。其中,美颜功能成为直播平台上不可或缺的一项特色功能。下文小编将从基础原理到实际应用,帮助开发者更好地实现高效又自然的美颜效果。 一、背景 在直播过…

spring之ApplicationContext

spring之ApplicationContext ApplicationContextApplicationContext源码ApplicationContext继承接口分析ApplicationContext两个比较重要的实现类AnnotationConfigApplicationContextClassPathXmlApplicationContext 国际化---MessageSource资源加载---ResourceLoader获取运行时…

多元回归预测 | Matlab鲸鱼算法(WOA)优化极限梯度提升树XGBoost回归预测,WOA-XGBoost回归预测模型,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab鲸鱼算法(WOA)优化极限梯度提升树XGBoost回归预测,WOA-XGBoost回归预测模型,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源…

css实现九宫格有边框,最外层四周无边框

1.先设置9个div&#xff0c;如下&#xff1a; <div class"wrapper"><div class"cell"></div><div class"cell"></div><div class"cell"></div><div class"cell"></div&…

【MySQL】连接 MySQL使用二进制方式连接和脚本连接,修改密码,增加新用户,显示命令

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

RocketMQ5.0--消息发送

RocketMQ5.0–消息发送 一、消息 // 消息所属topic private String topic; // 消息Flag&#xff08;RocketMQ不作处理&#xff09;&#xff0c;即&#xff1a;用户处理 private int flag; // 扩展属性 private Map<String, String> properties; // 消息体 private byte…

Pandas+Pyecharts | 北京近五年历史天气数据可视化

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 处理最低气温最高气温数据2.3 处理日期数据2.4 处理风力风向数据 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 2018-2022年历史温度分布…

漏洞复现 || H3C iMC 存在远程命令执行

免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使…

软件的验收测试应该怎么正确实施?

验收测试的主要目的是为了确定软件系统是否满足客户或最终用户的需求和期望&#xff0c;同时确保软件产品的质量标准达到预期。验收测试还可以提供客户和最终用户关于软件系统质量的反馈和建议&#xff0c;以便软件开发团队能够更好地改进和优化软件产品&#xff0c;那软件的验…

【QT】QtXlsx安装使用

QtXlsx库 QtXlsx介绍QtXlsx Qt配置简单使用示例 QtXlsx介绍 QtXlsx是一个可以读取和写入Excel文件的库。它不需要Microsoft Excel&#xff0c;可以在Qt5支持的任何平台上使用。 这里一定是需要QT5支持的。 生成一个新的 .xlsx 文件从现有的 .xlsx 文件中提取数据编辑现有的 .x…

Linux常用指令(下)

目录 一&#xff1a;Linux基础指令 查看联机手册 文本查看相关 时间相关 查找相关 打包和压缩相关 查看Linux版本和体系 其它指令和热键 二&#xff1a;重定向 输入重定向 输出重定向 三&#xff1a;管道 一&#xff1a;Linux基础指令 查看联机手册 Linux的命令有…

ADS笔记,新旧两组仿真数据进行绘图和列表对比

做个笔记&#xff0c;以防遗忘 ADS版本&#xff1a;2023 原理图器件参数的不同&#xff0c;怎么进行对比观看&#xff0c;操作如下 目录 一、数据绘图对比二、数据列表对比 一、数据绘图对比 选择Simulation Setting 然后修改原理图器件的参数&#xff0c;再次重复之前的操作…

SpringBoot2+Vue2实战(十三)用户前台页面设计与实现

Front.vue <template><div><!--头部--><div style"display: flex; height: 60px;line-height: 60px;border-bottom: 1px solid #ccc"><div style"width: 300px;display: flex;padding-left: 30px"><div style"widt…

CENTOS上的网络安全工具(二十七)SPARK+NetSA Security Tools容器化部署(3)

上回说到在我们搭好的YAF3环境上使用yaf处理pcap文件得到silk flow&#xff0c;再使用super mediator工具转为ipfix&#xff0c;继而在spark中导入mothra&#xff0c;就可以开始数据分析了。然而在我们粗粗一用之下&#xff0c;却发现DPI信息在ipfix文件中找不到&#xff0c;到…

【Excel】csv乱码

原因 CSV用UTF-8编码 Excel用ANSI编码 解决 1 创建一个新的Excel 2 数据 > 从文本/CSV 3 选择文件 4 选择 文件原始格式 和 分隔符 &#xff08;根据自己文件进行选择&#xff0c;如果不知道编码&#xff0c;可以一个一个的试&#xff0c;直到不出现乱码&#xff09;