李宏毅机器学习课程笔记02 | 机器学习任务攻略General Guide

第一步:分析loss on training data

先检查在训练数据上模型是否很好的学习

情况1:如果在训练集上,loss很大,说明在训练资料上没有训练好

可能性1:设置的模型太简单了,模型存在model bias模型偏差,可以让loss变低的function,不在model可以描述的范围内

解决办法:重新设计一个更为复杂、有弹性、有未知参数、需要更多features的Model function

可能性2Optimization优化的不好

存在一个很好的function,但是gradient descent没有找到这个functio。 可能会卡在local minima(局部极小值/鞍点)的地方,没有办法找到一个真的可以让loss很低的参数。

如何区分这两种情况?

看到一个你从来没有做过的问题,也许你可以先跑一些比较小的,比较浅的network,或甚至用一些,不是deep learning的方法 => **比较容易做Optimize的,**它们比较不会有optimization失败的问题。先观察一下loss的情况

如果发现深的model,跟浅的model比起来,深的model明明弹性比较大,但loss却没有办法比浅的model压得更低,那就代表说optimization有问题 => 模型越深,能够拟合的函数越多,表达能力越强。就算20层之后的36层每一层仅仅copy前一层的结果,56层的效果也应该等同于20层

第二步:分析loss on testing data

当发现loss在训练数据集上已经很小了,我们就分析在测试集上的loss。

情况1:如果在测试集上的loss也很小,说明该模型效果很好了。

情况2:如果在测试集上loss很大

可能性1overfitting - training的loss小,testing的loss大

解释:为什么会出现loss小,testing的loss大

  1. 假设一个极端的例子,有一个一无是处的模型如下图,其实模型什么都没有学到。

  1. 假设另一个例子,下图是x与y的真实关系曲线(这个关系曲线就是希望我们可以学到的),但实际这个函数是观测不到的,我们只知道上面的一些坐标/点(训练资料)。 如果你的model它的自由度很大的话,它可以产生非常奇怪的曲线,导致训练集上的结果好,但是测试集上的loss很大。

解决方案

  1. 增加训练资料。

可以做Data augmentation数据加强,利用自己对问题的理解,创造资料。这里的创造不是凭空创造,需要augmentation的有道理。

比如做图像识别的时候,一张图左右翻转,截图放大等,这样并不会影响特征。但是很少有将一张图翻转的,翻转后的图可能不是真实世界会出现的。

  1. 限制模型弹性

假设通灵出这个模型就是二次曲线,能选择的function有效,这样可以较容易的训练出与真实相似的模型

限制模型的方法有 ① 较少的参数,如果是深度学习就给较少的神经元个数,或者让模型modal共用参数 ②较少的features,比如从给三天的资料变成给两天的资料 ③early stopping ④regularization正则化 ⑤dropout

注意:这里限制太过,又可能引发model bias的问题

可能性2:发生mismatch问题

比如按照之前的情况预测某天的观看量,某天的观看量应该很低。但在前一天有人宣传这个视频,引来了很多人来观看(异常情况),导致模型预测错误。

=> 训练资料和测试资料(发生异常?)分布不一样

Bias-Complexity Trade-off bias和复杂性的均衡

当complexity复杂到一定程度时,在测试数据上的loss开始增加,出现overfitting的情况。

所谓比较复杂就是,简单的说是包含的function比较多,它的参数比较多的model

问题: 如何选出有较低testing-loss的模型 ?

直觉的做法:假设有三个模型,将三个模型都上传到Kaggle上面,取均分误差`Mean Squared Error(MSE)最低。

存在问题:考虑之前的极端例子,假设有三个model都是极端的,在测试数据时,都是产生随机的结果,那么可能某个模型随机出的结果误差最小。这样选出的模型并不是由较低testing-loss的模型,只是刚好随机到了较好的结果。

public和private可以想象成,可以根据public公开的数据集的结果调 模型,所以在public上模型效果很好,由于private的效果很差。

模型设计完整之前,不要用测试数据

解决Cross Validation交叉验证

Training的资料分成两半,一部分叫作Training Set,一部分是Validation Set。先在Training Set上训练模型,然后在Validation Set上衡量模型的均分误差mse,最后用测试集测试模型。

理想情况用Validation Set挑模型,不要过多关注public testing set


问题2: 如何划分Training SetValidation Set,怎样避免分的不好影响训练结果?

解决:采用N-fold Cross Validation N折交叉验证

N-fold Cross Validation把训练集切成N等份,拿其中一份当作Validation Set,另外N-1份当Training Set,重复N次。

假设我们切成3份,第一次让第3份为validation,跑一次模型。然后第二次让第2份为validation,跑一次模型。最后第三次,让第1份为validation,跑一次模型。最后取三种情况下的平均值,选平均结果最好的模型。

评论区补充的:三种模型指的是弹性不同的三种模型,而不是相同弹性但参数不同的三种模型。

这个地方也很好理解,在创建模型的第三步优化时,就已经在相同弹性不同参数中选出最好的参数了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】19.多态

文章目录 1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.1.1 实现多态还有两个必须重要条件:2.1.2 虚函数 (Virtual Function)定义:特性:示例代码:代码分析1. 类定义部分2. 主函数部分运行结果 重点讲解1. 虚函数的作用2.…

光伏仿真与设计系统应用架构深度剖析

在光伏产业蓬勃发展的时代背景下,绿虫光伏仿真与设计系统成为推动其高效发展的核心力量。其应用架构涵盖多个关键步骤,每个环节都紧密相扣,共同构建起精准且高效的设计体系。 气象分析作为开篇之笔,起着基石般的重要作用。系统全…

进程间通讯

简介: 进程间通讯方式有: 1.内存映射(mmap): 使用mmap函数将磁盘空间映射到内存 2.管道 3.信号 4.套接字(socket) 5.信号机制 通过进程中kill函数,去给另一个函数发送信号&a…

空压机接入配置实例:利用 MODBUS - TCP 转 Ethernet IP 网关实现连接

在工业自动化生产环境中,空压机作为重要的气源设备,其稳定运行和有效监控对于整个生产流程至关重要。然而,不同厂家生产的空压机可能采用不同的通信协议,这给集中监控和管理带来了挑战。在本次案例中,我们遇到的空压机…

基于 Boost.Asio 和 Boost.Beast 的异步 HTTP 服务器(学习记录)

已完成功能: 支持 GET 和 POST 请求的路由与回调处理。 解析URL请求。 单例模式 管理核心业务逻辑。 异步 I/O 技术和 定时器 控制超时。 通过回调函数注册机制,可以灵活地为不同的 URL 路由注册处理函数。 1. 项目背景 1.1 项目简介 本项目是一个基于…

Harmony开发【笔记1】报错解决(字段名写错了。。)

在利用axios从网络接收请求时,发现返回obj的code为“-1”,非常不解,利用console.log测试,更加不解,可知抛出错误是 “ E 其他错误: userName required”。但是我在测试时,它并没有体现为空,…

Spring源码分析之事件机制——观察者模式(二)

目录 获取监听器的入口方法 实际检索监听器的核心方法 监听器类型检查方法 监听器的注册过程 监听器的存储结构 过程总结 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二&#xff…

关于Mac中的shell

1 MacOS中的shell 介绍: 在 macOS 系统中,Shell 是命令行与系统交互的工具,用于执行命令、运行脚本和管理系统。macOS 提供了多种 Shell,主要包括 bash 和 zsh。在 macOS Catalina(10.15)之前&#xff0c…

【C++】20.二叉搜索树

文章目录 1. 二叉搜索树的概念2. 二叉搜索树的性能分析3. 二叉搜索树的插入4. 二叉搜索树的查找5. 二叉搜索树的删除6. 二叉搜索树的实现代码7. 二叉搜索树key和key/value使用场景7.1 key搜索场景:7.2 key/value搜索场景:7.3 主要区别:7.4 ke…

【大模型+本地自建知识图谱/GraphRAG/neo4j/ollama+Qwen千问(或llama3)】 python实战(中)

一、建立基本的知识图谱并导入neo4j 这里我举例用的属性表、关系表,大概格式如下 id名字颜色a1苹果红色 startrelenda1属于b1 启动neo4j(关于neo4j的安装此处不再赘述) import pandas as pd from py2neo import Graph, Node, Relationship…

【pyqt】(四)Designer布局

布局 之前我们利用鼠标拖动的控件的时候,发现一些部件很难完成对齐这些工作,pyqt为我们提供的多种布局功能不仅可以让排版更加美观,还能够让界面自适应窗口大小的变化,使得布局美观合理。最常使用的三种布局就是垂直河子布局、水…

解决“KEIL5软件模拟仿真无法打印浮点数”之问题

在没有外部硬件支持时,我们会使用KEIL5软件模拟仿真,这是是仿真必须要掌握的技巧。 1、点击“Project”,然后点击“Options for target 项目名字”,点击“Device”,选择CPU型号。 2、点击“OK” 3、点击“Target”,勾选“Use Mi…

【项目实战1】五子棋游戏

目录 C语言编程实现五子棋&#xff1a;&#xff1a; game.h game.c 1.打印菜单 2.打印棋盘 3.玩家下棋 4.判断五子连珠 5.判断输赢 6.游戏运行 game.c完整源代码展示 test.c C语言编程实现五子棋&#xff1a;&#xff1a; game.h #pragma once #include<stdio.h> …

用ResNet50+Qwen2-VL-2B-Instruct+LoRA模仿Diffusion-VLA的论文思路,在3090显卡上训练和测试成功

想一步步的实现Diffusion VLA论文的思路&#xff0c;不过论文的图像的输入用DINOv2进行特征提取的&#xff0c;我先把这个部分换成ResNet50。 老铁们&#xff0c;直接上代码&#xff1a; from PIL import Image import torch import torchvision.models as models from torch…

Spring Boot 项目自定义加解密实现配置文件的加密

在Spring Boot项目中&#xff0c; 可以结合Jasypt 快速实现对配置文件中的部分属性进行加密。 完整的介绍参照&#xff1a; Spring Boot Jasypt 实现application.yml 属性加密的快速示例 但是作为一个技术强迫症&#xff0c;总是想着从底层开始实现属性的加解密&#xff0c;…

A/B实验之置信检验(一):如何避免误判 (I类) 和漏报 (II类)

假设检验的依据&#xff1a;如何避免误判和漏报 A/B实验系列相关文章&#xff08;置顶&#xff09; 1.A/B实验之置信检验&#xff08;一&#xff09;&#xff1a;如何避免误判和漏报 2.A/B实验之置信检验&#xff08;二&#xff09;&#xff1a;置信检验精要 引言 在数据驱动…

每日一题:链表中环的入口结点

文章目录 判断链表环的入口节点描述数据范围&#xff1a;复杂度要求&#xff1a;输入输出 示例代码实现思路解析注意事项&#xff1a; 判断链表环的入口节点 描述 给定一个链表&#xff0c;判断该链表是否存在环。如果存在环&#xff0c;返回环的入口节点&#xff1b;如果不存…

深度学习blog-Meanshift均值漂移算法-最大熵模型

均值漂移&#xff08;Mean Shift&#xff09;是一种无监督的聚类算法&#xff0c;广泛应用于数据挖掘和计算机视觉任务。它通过移动样本点到其近邻的均值位置来寻找数据的高密度区域&#xff0c;最终形成聚类。 均值漂移算法原理 均值漂移算法的核心思想是通过滑动窗口&#…

51c自动驾驶~合集45

我自己的原文哦~ https://blog.51cto.com/whaosoft/13020031 #运动控制和规划控制需要掌握的技术栈~ 各大垃圾家电造车厂又要开始了~~~​ 1、ROS的通信方式 李是Lyapunov的李&#xff1a;谈谈ROS的通信机制 话题通信和服务通信&#xff0c;其中话题通信是通过发布和订阅…

Python基于jieba和wordcloud绘制词云图

【Cesium】自定义材质&#xff0c;添加带有方向的滚动路线 &#x1f356; 前言&#x1f3b6;一、实现过程✨二、代码展示&#x1f3c0;三、运行结果&#x1f3c6;四、知识点提示 &#x1f356; 前言 Python基于jieba和wordcloud绘制词云图 &#x1f3b6;一、实现过程 读取文本…