【深度学习详解】Task3 实践方法论-分类任务实践 Datawhale X 李宏毅苹果书 AI夏令营

news/2024/9/17 7:09:48/ 标签: 人工智能, 深度学习, 机器学习

前言

综合之前的学习内容,
本篇将探究机器学习实践方法论
出现的问题及其原因

🍎 🍎 🍎

系列文章导航

深度学习详解】Task1 机器学习基础-线性模型 Datawhale X 李宏毅苹果书 AI夏令营
深度学习详解】Task2 分段线性模型-引入深度学习 Datawhale X 李宏毅苹果书 AI夏令营
深度学习详解】Task3 实践方法论-分类任务实践 Datawhale X 李宏毅苹果书 AI夏令营

本篇目录导航

  • 前言
      • 系列文章导航
  • 实践方法论
    • 问题描述:large loss on training data
      • 模型偏差
      • 优化问题
      • is 模型偏差 or 优化问题 ?
    • 问题描述:large loss on testing data
      • 过拟合【交叉验证】
      • 不匹配
  • Python 分类任务实践
  • Read more

实践方法论

在这里插入图片描述

本篇笔记 General Guide 从原视频课件进行修改:
李宏毅《机器学习/深度学习》2021课程 -> 机器学习任务攻略

问题描述:large loss on training data

训练数据的损失很大,显然它在训练集上面也没有训练好

模型偏差

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

原因分析

模型过于简单

  • 该函数的集合太小了, 没有包含任何一个函数,
    可以让损失变低的函数不在模型可以描述的范围内。
  • 想要在大海里面捞针(一个损失低的函数),
    结果针根本就不在海里。
解决方案

给模型更大的灵活性

  • 增加输入的特征,即同时考虑更多训练数据
    (得到更有灵活性 flexibility 的函数)
  • 重新设计一个模型,使用深度学习
    (更多的 layer 层数)
    在这里插入图片描述

优化问题

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

原因分析

优化器不给力

  • 优化器(梯度下降)在寻找代价函数最低点的过程,
    会出现局部最小值干扰,无法找到全局最小值。
  • 想要在大海里面捞针(一个损失低的函数),
    针确实在海里,但是无法把针捞起来。
    在这里插入图片描述
解决方案

尝试更强大的优化器,寻找损失低的函数
在这里插入图片描述

is 模型偏差 or 优化问题 ?

判断是 模型偏差 or 优化问题 ?

在这里插入图片描述

问题描述:large loss on testing data

训练数据上面的损失小,但在测试数据上的损失大

过拟合【交叉验证】

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

原因分析

模型过于复杂

  • 模型灵活性过大,学习到了训练数据的噪声。
    (模型过于复杂,对数据过度适应)
    在这里插入图片描述
解决方案

增加训练集数据限制住拟合的模型
(往往是最有效的方向)

  • 需要增加额外的训练集数据(不容易。)
  • 不用增加额外的训练集数据(很建议!)
    data augmentation 数据增强:
    根据问题的理解创造出新的合理数据
    在这里插入图片描述

给模型更多的限制性

  • 减少输入的特征,即同时考虑更少训练数据
    (不要过大灵活性 flexibility 的函数)
  • 重新设计一个模型:减少参数 / 共用参数(可以让一些参数有一样的数值)
    eg. 神经元数量
  • 重新设计一个模型:使用更受限的模型。
    eg. 卷积神经网络(Convolutional Neural Network,CNN)
    是比全连接网络(fully-connected network)更有限制的架构
  • Early stopping 早停
  • Regularization 正则化
  • Dropout 丢弃法
    在这里插入图片描述

trade-off(权衡模型的灵活性和限制性)
比较合理选择模型的方法是:
将训练数据分成“训练集”和“进行模型选择的验证集”
即,
在训练集上训练出来的模型
会使用验证集来衡量分数和挑选模型,即基线(baseline)算法
(避免在公开的测试集上面频繁挑选模型导致的过拟合)
在这里插入图片描述

  • Cross Validation 交叉验证
    将训练数据按照百分比随机分成“训练集”和“进行模型选择的验证集”。例如:
    90%训练数据作为“训练集”,
    10%训练数据作为“进行模型选择的验证集”。
    在这里插入图片描述

  • N-fold Cross Validation N 折交叉验证
    将训练数据切成 n 等份,这件事情要重复 3 次:
    n - 1 份作为“训练集”,
    还有 1 份作为“进行模型选择的验证集”。
    在这里插入图片描述

不匹配

鼠标右键 -> 在新标签页中打开图像
在这里插入图片描述

原因分析

训练集和测试集的分布不同,
导致模型在测试集上的预测表现不佳。

在这里插入图片描述

解决方案

要对训练数据和测试数据的产生方式有一些理解,
确保重新收集的训练数据与数据数据的分布尽可能一致


Python 分类任务实践

baseline 教程
https://datawhaler.feishu.cn/wiki/M7tqwIHYdiz5ULkRkD9cPPWTntg

数据集 下载
【2023机器学习】的系列资料包括 视频、课件、代码等资源已经系统顺序命名并整理到百度网盘:
https://pan.baidu.com/s/1-zfs0wn5rccTRVk34YZWaA,提取码:2023。
来源:https://blog.csdn.net/qq_39975984/article/details/133103314


Read more

  • 李宏毅深度学习教程 LeeDL-Tutorial(苹果书)
    https://github.com/datawhalechina/leedl-tutorial
    李宏毅《机器学习/深度学习》2021课程(视频教程 24 h 46 min)
    https://www.bilibili.com/video/BV1JA411c7VT/

  • Hung-yi Lee (李宏毅) MACHINE LEARNING 2023 SPRING
    https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php
    作业数据集搬运:
    https://blog.csdn.net/qq_39975984/article/details/133103314
    https://github.com/keepstumz/LHY-ML


http://www.ppmy.cn/news/1522651.html

相关文章

正则表达式--python

正则表达式 1、简介 概述 正确的, 符合特定规则的 字符串. 英文名叫: Regular Expression, 简称叫: re, RegExp 作用 主要是校验数据 细节 学正则, 主要是学正则的规则. 即: 哪个符号表示什么含义. 关于正则, 要求很简单, 只要能用规则, 看懂别人写的式子, 且能简单修改即可,…

springboot、flowable 生成图片发布到Docker乱码问题

flowable自带的方法生成图片时,如设置字体为宋体,则本地测试没有问题,因为windows自带宋体字体库,但是如果发布到Docker,则会出现乱码问题,因为大部分Docker并不包含宋体字体库; 通过Java代码&a…

VitePress 路由重写:自定义目录结构与页面生成

在使用VitePress构建文档网站时,你可能会遇到项目结构复杂的情况,特别是当你的项目是一个包含多个包的monorepo时。为了更好地组织和管理文档,你可能希望将文档文件放置在源代码旁边。然而,VitePress默认会按照特定的目录结构生成…

springboot+mybatis+vue2分页功能开发

前端框架代码 <div class"block"><span class"demonstration">完整功能</span><el-paginationsize-change"handleSizeChange"current-change"handleCurrentChange":current-page"currentPage4":page-s…

Linux多线程——日志任务的线程池实现

文章目录 线程池日志系统完善线程池的实现线程数据线程池的实现完整代码 线程池 线程池可以说是把之前所有的内容全部串联起来的一个项目 我们这里实现一个简单的版本&#xff0c;可以对其进行扩展 线程池也是一种生产者消费者模型 生产者布置任务而消费者处理任务 主要运…

Android 存储之 SharedPreferences 编码模板(工具类编码)

一、SharedPreferences 1、基本介绍 SharedPreferences 是 Android 的一个轻量级存储工具&#xff0c;它采用 key - value 的键值对方式进行存储 它允许保存和读取应用中的基本数据类型&#xff0c;例如&#xff0c;String、int、float、boolean 等 保存共享参数键值对信息的…

html记账本改写:保存数据 localStorage。

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>记账本改写</title><style>table {user-select: none;/* width: 100%; */border-collapse: collapse;}table,th,td {border: 1px solid…

Hive服务部署及Datagrip工具使用

目录 Hive服务部署 Hiveserver2服务 1&#xff09;用户说明 2&#xff09;Hiveserver2部署 &#xff08;1&#xff09;Hadoop端配置 &#xff08;2&#xff09;Hive端配置 3&#xff09;测试 &#xff08;1&#xff09;启动Hiveserver2 &#xff08;2&#xff09;使用命…

tio websocket 客户端 java 代码 工具类

为了更好地组织代码并提高可复用性&#xff0c;我们可以将WebSocket客户端封装成一个工具类。这样可以在多个地方方便地使用WebSocket客户端功能。以下是使用tio库实现的一个WebSocket客户端工具类。 1. 添加依赖 确保项目中添加了tio的依赖。如果使用的是Maven&#xff0c;可以…

第四章 类和对象(2)

4.2 类 类是封装对象的属性和行为的载体&#xff0c;Java中定义类使用class关键字&#xff0c;其语法如下&#xff1a; class 类名称{// 成员变量// 成员方法()} 在Java语言中对象的属性以成员变量的形式存在&#xff0c;对象的方法以成员方法的形式存在。本节将对类与对象进行…

WordPress的安装与简单开发教程

WordPress是目前世界上最受欢迎的开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;它以简便易用、扩展性强和庞大的生态系统著称。通过它&#xff0c;你可以轻松构建博客、企业网站、电子商务平台等多种类型的网站。本文将为你介绍WordPress的安装过程&#xff0c;以及…

如何规避SQL注入漏洞

1 引言 对于很多初学者而言&#xff0c;SQL注入攻击是一种很容易被忽略的安全漏洞&#xff0c;其原理很简单&#xff0c;在日常编码中需要注意规避&#xff0c;养成良好的系统安全意识。 2 原理 SQL注入漏洞产生的根本原因&#xff0c;就是在编码过程中手动拼接sql参数造成的…

IOS 18 发现界面(UITableView)Banner轮播图实现

发现界面完整效果 本文实现Banner轮播图效果 文章基于IOS 17 基于UITabBarController实现首页TabBar继续实现发现界面 实现逻辑 从发现界面的效果图可以看出&#xff0c;发现界面是一个列表&#xff0c;列表包含了不同的Item&#xff0c;我们可以将 banner部分看成是列表的一…

分享基于PDF.JS的移动端PDF阅读器代码

一、前言 在之前的文章《分享基于PDF.js的pdf阅读器代码》里提到了PC端基于PDF.js的阅读器&#xff0c;本文将提供针对移动端的版本。 二、pdfViewer 为了能够直接使用&#xff0c;这里分享一下经过简单修改后能直接使用的pdfViewer代码&#xff1a; pdfViewer代码目录&…

webpack - 五大核心概念和基本配置(打包一个简单HTML页面)

// 五大核心概念 1. entry&#xff08;入口&#xff09; 指示Webpack从哪个文件开始打包2. output&#xff08;输出&#xff09; 指示Webpack打包完的文件输出到哪里去&#xff0c;如何命名等3. loader&#xff08;加载器&#xff09; webpack本身只能处理js&#xff0c;json等…

如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?

在当今的互联网世界中&#xff0c;网络请求是数据交换的基础。无论是在开发Web应用程序、自动化测试还是进行数据抓取&#xff0c;掌握如何发送网络请求是一项基本技能。Lua&#xff0c;作为一种轻量级、高性能的脚本语言&#xff0c;经常被用于这些场景。本文将详细介绍如何使…

C++11新增特性:列表初始化(std::initializer_list) decltype、auto、nullptr、范围for

C11新增特性&#xff1a;列表初始化&#xff08;std::initializer_list&#xff09;& decltype、auto、nullptr、范围for 一、C11新增统一初始化方式1.1 新增方式1.2 初始化容器底层原理&#xff08;std::initializer_list&#xff09; 二、新增声明2.1 decltype2.3 auto &…

uniapp设置微信小程序的交互反馈

链接&#xff1a;uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗&#xff1a; title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon&#xff1a;error是设置我们失败的logo 设置的文字上…

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 哈希表这里用哈希集合Set()实现。左指针i&#xff0c;右指针j&#xff0c;从头遍历数组&#xff0c;若j指针指向的元素不…

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路&#xff0c;我们用栈来存1234.....&#xff0c;队列来存输入的一组数据&#xff0c;栈与队列进行匹配&#xff0c;相同就pop 机翻 1、条件准备 stk是栈&#xff0c;que是队列。 tt指向的是栈中下标&#xff0c;fr…