首页 > 其他分享 >Datawhale X 李宏毅苹果书 AI夏令营 Task3-机器学习实践方法论

Datawhale X 李宏毅苹果书 AI夏令营 Task3-机器学习实践方法论

时间:2024-09-03 20:54:19浏览次数:6  
标签:Task3 训练 AI 李宏毅 模型 损失 问题 集上 数据

在上一章介绍完机器学习模型后,我们接着讨论模型中可能存在的一些问题。首先我们需要明确一件事,就是Kaggle上的测试结果不好,可能有多个原因。

第一,如果模型在运行训练模型时,所产生的损失就很大,那么有可能是模型偏差(model bias)或优化(optimization)问题。

第二,如果模型在运行训练模型时,所产生的损失较小,但是在测试集上得到的损失却很大,这就大致是过拟合(overfitting)和不匹配(mismatch)的问题。

一、模型偏差

其实简单来说,模型偏差的意思是:把模型设计的太过简单,导致了所计算出的所有函数都无法得到满意的结果,换句话说就是最优化的模型没有找到。比喻以下,在大海里想要捞针,结果针都不在大海里。

大致的解决方法有两个,中心思想都是围绕增加灵活性展开的:增加输入的特征,使用深度学习的方法。

二、优化问题

这个问题我们在第一篇文章里已经有所提及,下面附上一张图方便理解。

机器在进行梯度下降的过程中,只找到了第一个极小值就停下了,并没有找到损失函数最小值所在的那个点。这就好比在大海里捞针,看到了一个形状很像针的物体就停止了寻找。那么,此时可能有个疑问,就是模型损失太大究竟是模型偏差的问题,还是优化问题。下面让我们举个例子来做具体解释。

这是一个深度学习的案例。可以看到,无论是在测试数据还是训练数据上,56层的网络都要比20层网络得到的结果更差。这其实是优化的问题。

在图中,我们可以看到在20层的时候,误差已经十分小了,这就说明模型没有出现偏差,如果出现偏差,则会出现较大的误差。

56层,按道理来说层数更多,应该会得到更好的结果,可反而比20层的结果差。在20层的基础上,即使什么都不做,多余的36层停在那儿,也不应该出现结果变差的情况。所以说,这一定是模型优化的问题。

优化问题的拒绝方法可以是:先找到一些浅的,小的不包含深度学习模型,进行在训练模型上的运行。这些模型较小,所以会在能力范围内,不停遍历寻找,找到最好的一组参数。随后计算损失,观察结果,这样心里就会有底,知道基于浅的模型,深的模型大致会有怎样的结果。接下来还缺一个深的模型,如果深的模型跟浅的模型比起来,深的模型明明灵活性比较大,但损失却没有办法比浅的模型压得更低,这就代表说优化有问题,梯度下降不给力,因此要有一些其它的方法来更好地进行优化。

具体方法有:

1、特征选择与工程,重点关注与预测目标直接相关的特征,进行细粒度刻画和特征交叉组合。

2、模型调优:调整模型参数,如决策树的深度、支持向量机的核函数等。

3、样本处理:处理不平衡数据集,通过上下采样、合成少数类过采样技术等方法平衡样本分布。

4、集成学习:结合多个基学习器的预测结果,通过投票、平均等方式提高整体模型性能。

三、过拟合 

过拟合,简单来说,就是在训练集上的结果较好,但到了测试集上却无法得到好的结果。下图就是个不错的例子。 

在这个案例中,测试数据和训练数据在真实情况下应该分布在一条二次曲线上。但由于模型的能力较强,且模型没有给很大的限制,所以灵活性很大。这就导致了有许多穿过三个蓝色训练数据点的曲线,上图中的曲线在应用到三个黄色的测试数据时产生了较大的损失。总结一下就是模型的自由度太高,导致模型在训练数据上损失小,而在测试数据上损失大,这就是过拟合。

解决过拟合问题有两个基本方法:第一是增加训练集,这个办法往往是最有效的。当数据增多时,机器收到的限制就很大,能够穿过这些数据点的曲线也就变少了。最终形成的曲线应用起来,也能得到不错的效果,如下图。

增加数据集的方法是做数据增强(data augmentation),它并不是引入了额外新的数据,而是我们自己基于对问题的理解对数据进行处理,从而创造出新的数据。

比如说,我们在做猫狗识别的实验中,可以将猫狗的图像截一部分进行放大或缩小,也可以将图片进行左右的反转,这样就可以得到成倍的数据。但是给数据的时候要注意,并不能随意的处理数据,要合理地,给机器能够识别的,符合常理的数据,比如说不能将猫狗的图片上下颠倒。

第二种方法是给模型一些限制,让其少一些灵活性。具体的方法是:给模型比较少的参数,用较少的特征,早停,正则化,丢弃法。

在这里我们还有几个注意事项。在给模型设限制的同时,我们也要注意适度。太多的限制会导致模型偏差的问题。并且当我们选择模型的时候,要选择一个中庸的模型,不能太过复杂,也不能过于简单,太过复杂会出现过拟合的问题,而太过简单,则损失肯定会大,会出现模型偏差的问题,如下图所示。

在Kaggle上上传模型的时候,有公开数据集可供我们测试调整,但不建议调整到在训练集上得到完美结果再上传,因为Kaggle上还有私人数据集,在公开数据集上运行良好,并不代表在私人数据上也能得到较好的结果。虽然在公开数据集上可以得到好的分数,但却在私人数据集上被拉开了差距。

具体的解决方法就要用到交叉验证了,下面让我们详细展开。

四、交叉验证

k折交叉验证(k-fold cross validation)是把训练数据分成k份。举个例子,把训练数据分成3份,其中拿出一份作为验证集,另外两份作为训练集,并且这件事要重复做三遍。比如说,第一回,1号数据做测试集,2、3号做训练集;第二回,2号做测试集,1、3号做训练集;第三回,3号做测试集,1、2号做训练集。

 接着假设我们现在手里有三个模型,我们需要把三个模型按照刚才的方法都运行一遍,从而每个模型都可以得到三个损失,再把三个损失加起来求平均值,平均损失值最小的那个,就是我们选择的最终模型。

五、不匹配

这个问题比较特殊,我们很难通过寻常的手段去调整它,只能靠我们自己对问题的理解,来解决。

正如上图所示,真实数据和预测数据的走向基本吻合,但在2月26号这天,我们发现模型预测出了大问题。原本应该是高峰的值,现在却变成了低谷,这与模型的优化无关,这是不匹配问题。

用今年的数据去预测明年,总会出点错,在今年的2月26日,有可能因为大家都有事,所以平台播放量小,可明年的2月26号有可能大家很空闲,平台播放量就上去了,这样的情况就不能怪机器了,给它再多的数据集,也难以预测出这样的情况。

好了,说到这里,我的机器学习初步阶段就要结束了。之后我也希望自己能够继续学习机器学习的相关知识,并与大家分享,下次再见。

标签:Task3,训练,AI,李宏毅,模型,损失,问题,集上,数据
From: https://blog.csdn.net/EcustKevin/article/details/141829435

相关文章

  • Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门篇-Task3《深度学习详解》- 实践方法
     核心学习目标:通过《深度学习详解》和李宏毅老师21年的机器学习课程视频,入门机器学习,并尝试学习深度学习,展开代码实践(选修)。该书保留了李宏毅老师公开课中大量生动有趣的例子,帮助读者从生活化的角度理解深度学习的概念、建模过程和核心算法细节,包括卷积神经网络、Transform......
  • 使用docker部署tensorrtllm推理大模型baichuan2-7b
    简介大模型的推理框架,我之前用过vllm和mindie。近期有项目要用tensorrtllm,这里将摸索的过程记录下,特别是遇到的问题。我的环境是Linux+rt3090准备docker环境本次使用docker镜像部署,需要从网上拉取:dockerpullnvcr.io/nvidia/tritonserver:24.08-trtllm-python-py3Th......
  • AI大模型系列之大模型原理科普(深度万字好文)
    天地转,光阴迫。一万年太久,只争朝夕。数字时代,要顺势而为,让我们系统性掌握AI大模型家族的技术本领,成为行业翘楚!今天,我们突然发现,AI可以帮忙生成文字、图片、音频和视频等等内容了,而且让人难以分清背后的创作者到底是人类还是AI。这些AI生成的内容被叫做AIGC,它是AIgenerated......
  • 数据库实验 SQL server sduwh caohai
    问题一:根据E-R图写出关系模式,标注主键和外键 学生关系模式:Student(StudentNum,StudentName,StudentSex,StudentAge,StudentPhone,StudentBrith,Speciality)其中主键为学号StudentNum,没有外键。课程关系模式:Course(Coursenum,CourseName,Credit,Classhour,ClassType)其中主键为......
  • 使用LangChain加载Project Gutenberg电子书:实用指南
    使用LangChain加载ProjectGutenberg电子书:实用指南引言ProjectGutenberg是一个提供免费电子书的在线图书馆,拥有超过60,000本电子书。对于自然语言处理(NLP)和文本分析项目来说,这是一个宝贵的资源。本文将介绍如何使用LangChain的GutenbergLoader来加载ProjectGutenberg的......
  • 使用LangChain与OctoAI集成:构建强大的AI应用
    使用LangChain与OctoAI集成:构建强大的AI应用引言在当今快速发展的AI领域,如何高效地利用大型语言模型(LLM)构建应用已成为开发者面临的重要挑战。本文将介绍如何使用LangChain框架与OctoAI服务相结合,轻松构建强大的AI应用。我们将深入探讨OctoAI的特性,以及如何通过Lang......
  • Python教程(十七):协程、 asyncio与 aiohttp【异步IO】
    文章目录专栏列表1.异步IO的基本概念1.1同步与异步1.2协程1.3asyncio1.4aiohttp2.携程2.1定义协程2.2运行协程3.asyncio3.1事件循环解释3.2获取文件示例3.2并发获取文件示例4.aiohttp:异步HTTP客户端/服务器4.1安装aiohttp4.2异步HTTP请求4.3异......
  • 超强总结,AI大模型八种解决过拟合的技巧!!
    前言当模型在训练数据上表现良好,但对未见数据的泛化效果不佳时,就会出现过拟合的现象。过拟合是机器学习中一个非常常见的问题,已有大量文献致力于研究防止过拟合的方法。下面,我将介绍八种缓解过拟合的简单方法,每种方法只需对数据、模型或学习算法进行一次修改即可。数据与其将所有数......
  • AI大模型入门教程(全网最详细),零基础入门到精通,从看这一篇开始!
    一、什么是AI大模型?在人工智能领域,特别是在自然语言处理(NLP)和机器学习中,AI大模型是指那些拥有大量参数的深度学习模型。这些模型通过在大规模数据集上进行训练,能够学习到丰富的数据表示和模式,从而在各种任务上表现出色,如文本生成、语言理解、图像识别等。大模型具有大量参数和复杂......
  • 如何用 AI 给自己的日常提效?
    前言马云说过一句话:很多人输就输在,对于新事物,看不见,看不起,看不懂,来不及。AI时代,新的技术潮流滚滚而来,很多人说这将是第四次工业革命。AI将会成为全新的生产力,一步步会取代很多旧有的生产力。在新生产力带来的技术革命中,如何做到不被时代所淘汰,作为普罗大众的我们,唯一的选择就是开......