【李宏毅机器学习·学习笔记】Deep Learning General Guidance

本节课可视为机器学习系列课程的一个前期攻略,这节课主要对Machine Learning 的框架进行了简单的介绍;并以training data上的loss大小为切入点,介绍了几种常见的在模型训练的过程中容易出现的情况。

课程视频:
Youtube: https://www.youtube.com/watch?v=WeHM2xpYQpw
课程PPT:
https://view.officeapps.live.com/op/view.aspx?src=https%3A%2F%2Fspeech.ee.ntu.edu.tw%2F~hylee%2Fml%2Fml2021-course-data%2Foverfit-v6.pptx&wdOrigin=BROWSELINK

以下是本节课的课程笔记。

一、Framework of ML

在这里插入图片描述

机器学习的数据集总体上分为训练集(training data)和测试集(testing data)。其中训练集由feature x和ground truth y组成,模型在训练集上学习x和y之间的隐含关系,再在测试集上对模型的好坏进行验证。

模型在训练集上的training大致可以分为以下三个steps:
Step1:初步划定一个model set:y = f(x),其中模型 f 由系列参数 𝜽 确定,如果𝜽的值不同,我们则说模型不同。

Step2:划定好model set后就需要定义一个loss function 来对模型的好坏进行评估,通常,loss function反映的是模型的预测值和ground truth之间的差距,差距越小(loss值越小),则模型越好。

Step3:定义好loss function后,就开始对模型进行优化,找到让loss指最小的参数集合𝜽*,𝜽* 所对应的model f* 即为我们最终想要学习到的模型。

二、General Guide

在这里插入图片描述

在训练模型的过程中,我们往往会根据training data上的loss值来初步判断模型的好坏。

1.training data上loss过大

导致training data上loss值过大的原因主要有以下两个:

(1)model bias

即模型模型太简单(大海捞针,但针不在海里),通常的解决措施是重新设计模型使其具有更大的弹性,例如,在输入中增加更多的feature,或者使用deep learning以增加模型的弹性(more neurons, layers)。
在这里插入图片描述

(2)optimization

optimization做得不好,没有找到最优的function(大海捞针,针在海里,但就是没捞到)。例如我们通常使用gradient decent的optimization方法,但这种方法可能会卡在local minimum的地方,从而导致我们没有找到全局最小解。如果是optimization做的不好,我们需要使用更powerful的optimization方法,这在后面的学习中会有介绍。
在这里插入图片描述
Q:如何判断训练集上的loss大时由model bias还是optimization引起的?
(参考文献:Deep Residual Learning for Image Recognition)
主要是通过对不同的模型进行比较来判断(判断模型是否足够大)。当我们看到一个从来没有做过的问题,可以先跑一些比较浅的network,甚至一些不属于DL的方法,因为这些方法不太会有optimization失败的问题。如果在训练集上deeper network反而没有得到更小的loss,则可能是optimization出了问题。(注意:过拟合是deeper network在训练集上loss小,在测试集上loss大)
在这里插入图片描述
例如,在下图右部分,56-layer的loss值较之20-layer的反而更大,则很可能是opyimization出了问题。
在这里插入图片描述

2.training data上loss值较小

在这里插入图片描述

如果在training data上的loss值比较小,则可以看看模型在测试集上的表现了。如果测试值上loss值很小,那这正是我们期待的结果。如果很不幸,模型在测试集上loss较大,此时又可大致分为两种情况:

(1)overfitting

overfitting即模型过度地对训练数据进行了拟合,把一些非common feature当做common data学习到了。此事的solution主要有:
A. more training data,即增加更多的训练数据;
B. data augmentation,如果训练数据有限,则可以在原有数据的基础上,通过一些特殊处理,创造一些资料。
C. make your model simpler,常见的举措有:

  • less parameters/ sharing parameters (让一些model共用参数)
  • early stopping
  • regularization
  • dropout

(2)mismatch

mismatch则是由于训练资料和测试资料的分布不一致导致的,这个时候增加训练资料也没用。在HW11中会具体讲解这类情况。

三、如何保证选择的model是合理的

如果一个模型只是在训练集上强行将输入x和ground truth y相关联,而没有学习到一些实质性的东西,那么到了测试集上模型的表现将会是很差的。通常的解决措施是引入交叉验证。
在这里插入图片描述

1.Cross Validation

在训练时,我们从测试集中划出部分数据作为validation set来衡量loss,根据validation set上的得分情况去挑选最优的模型,再在测试集上对模型的好坏进行验证。
在这里插入图片描述

2.N-fold Cross Validation

如果训练数据较少,可采用N折交叉验证的方法。即将训练数据分为N等份,依次以第一份、第二份……第 i 份作为验证集(其余作为测试集),这样重复N次对模型进行训练、验证。在将这N次训练中各个模型在验证集上的N次得分的平均进行比较,选择loss最小的模型作为我们的最优模型,并用它在测试集上对模型进行评分。
在这里插入图片描述

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

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

相关文章

Java并发系列之二:悲观锁机制

什么是锁 在并发环境下,会出现多个线程对同一个资源进行争抢的情况,假设A线程对资源正在进行修改,此时B线程此时又对资源进行了修改,这就可能会导致数据不一致的问题。为了解决这个问题,很多编程语言引入了锁机制&…

前端学习--vue2--插槽

写在前面: 这个用法是在使用组件和创建组件中 文章目录 介绍简单使用多个插槽省写默认/后备内容作用域插槽常用实例Element-ui的el-table 废弃用法slot attributeslot-scope attribute 介绍 我们在定义一些组件的时候,由于组件内文字想要自定义&#…

ssh安全远程管理

目录 1、什么是ssh 2、ssh登陆 3、ssh文件传输 1、什么是ssh ssh是 Secure Shell 的缩写,是一个建立在应用层上的安全远程管理协议。ssh 是目前较为可靠的传输协议,专为远程登录会话和其他网络服务提供安全性。利用ssh 协议可以有效防止远程管理过程中…

机器学习笔记之优化算法(二)线搜索方法(方向角度)

机器学习笔记之优化算法——线搜索方法[方向角度] 引言回顾:线搜索方法从方向角度观察线搜索方法场景构建假设1:目标函数结果的单调性假设2:屏蔽步长 α k \alpha_k αk​对线搜索方法过程的影响假设3:限定向量 P k \mathcal P_k …

0基础学习VR全景平台篇 第76篇:全景相机-圆周率全景相机如何直播推流

圆周率科技,成立于2012年,是中国最早投身嵌入式全景算法研发的团队之一,亦是全球市场占有率最大的全景算法供应商。相继推出一体化智能屏、支持一键高清全景直播的智慧全景相机--Pilot Era和Pilot One,为用户带来实时畅享8K的高清…

PyTorch代码实战入门

人这辈子千万不要马虎两件事 一是找对爱人、二是选对事业 因为太阳升起时要投身事业 太阳落山时要与爱人相拥 一、准备数据集 蚂蚁蜜蜂数据集 蚂蚁蜜蜂的图片,文件名就是数据的label 二、使用Dataset加载数据 打开pycharm,选择Anaconda创建的pytorch环…

《工具箱-VNCServer》配置VNCServer,使用VNCViewer实现局域网内页面共享

VNCServer设置 通过VNCServer配置,与VNCviewer配套使用 1.下载并安装VNCServer 2.邮箱密码注册后用户登录 3.设置VNC密码 4.设置viewer不能控制本机 5.打开VNClicensewiz,选择“Enter a license key …” BQ24G-PDXE4-KKKRS-WBHZE-F5RCA BQ24G-PDXE4-…

Java中集合容器详解:简单使用与案例分析

目录 一、概览 1.1 Collection 1. Set 2. List 3. Queue 1.2 Map 二、容器中的设计模式 迭代器模式 适配器模式 三、源码分析 ArrayList 1. 概览 2. 扩容 3. 删除元素 4. 序列化 5. Fail-Fast Vector 1. 同步 2. 扩容 3. 与 ArrayList 的比较 4. 替代方案…

服务器介绍

本文章转载与b战up主谈三国圈,仅用于学习讨论,如有侵权,请联系博主 机架型服务器 堆出同时服务百万人次机组 刀型服务器 服务器炸了 比如用户访问量暴增 超过机组的峰值处理能力,进而导致卡顿或炸服, 适合企业的塔式…

同样是跨端框架,React会不会被VUE取代?

看到知乎上有比较多的类似问题,正好这两个框架在以往的一些项目中都有实践过,就借着本篇文章说说我个人的看法。 先摆个结论:不会,毕竟各有千秋,除非跨端框架有被更好的概念所替代,又或者App已经彻底过气了…

Pandas进阶修炼120题-第三期(金融数据处理,51-80题)

目录 往期内容:第一期:Pandas基础(1-20题)第二期:Pandas数据处理(21-50题) 第三期 金融数据处理51.使用绝对路径读取本地Excel数据方法一:双反斜杠绝对路径方法二:r 拓展…

【Docker】Docker安装Kibana服务_Docker+Elasticsearch+Kibana

文章目录 1. 什么是Kibana2. Docker安装Kibana2.1. 前提2.2. 安装Kibana 点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情) 1. 什么是Kibana Kibana 是一款适用于Elasticse…

Java三大特征之继承【超详细】

文章目录 一、继承概念二、继承的语法三、父类成员访问3.1子类中访问父类的成员变量3.2子类和父类成员变量同名3.3子类中访问父类的成员方法 四、super关键字五、子类构造方法六、super和this七、再谈初始化八、protected 关键字九、继承方式十、final 关键字十一、继承与组合 …

C++学习day--18 空指针和函数指针、引用

1、void 类型指针 void > 空类型 void* > 空类型指针, 只存储地址的值,丢失类型,无法访问,要访问其值,我们必须对这个指 针做出正确的类型转换,然后再间接引用指针 。 所有其它类型的指针都可以隐…

郑州https数字证书

很多注重隐私的网站都注重网站信息的安全,比如购物网站就需要对客户的账户信息以及支付信息进行安全保护,否则信息泄露,客户与网站都有损失,网站也会因此流失大量客户。而网站使用https证书为客户端与服务器之间传输的信息加了一个…

python学到什么程度算入门,python从入门到精通好吗

本篇文章给大家谈谈python学到什么程度算入门,以及python从入门到精通好吗,希望对各位有所帮助,不要忘了收藏本站喔。 学习 Python 之 进阶学习 一切皆对象 1. 变量和函数皆对象2. 模块和类皆对象3. 对象的基本操作 (1). 可以赋值给变量(2). …

保护云数据库实用指南

在数字化转型时代,越来越多的企业将运营转移到云端,导致对云数据库的依赖越来越大。虽然它们提供了可扩展性和可访问性等显着优势,但它们也带来了独特的安全挑战,需要解决这些挑战以保护敏感数据免受各种威胁。 在本文中&#x…

【MybBatis高级篇】MyBatis 拦截器

【MybBatis高级篇】MyBatis 拦截器 拦截器介绍实现拦截器注册拦截器应用ymlDynamicSqlDao 层代码xml启动类拦截器核心代码代码测试 拦截器应用场景 MyBatis 是一个流行的 Java 持久层框架,它提供了灵活的 SQL 映射和执行功能。有时候我们可能需要在运行时动态地修改…

超细详解,接口自动化测试-JSON和JsonPath提取数据(实战)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 JSON(JavaScript …

kafka总结

Kafka是一种高吞吐量的分布式发布订阅消息系统(消息引擎系统),它可以处理消费者在网站中的所有动作流数据。 消息队列应用场景 缓存/削峰 :处理突然激增的大量数据,先放入消息队列,再按照速度去处理, 解…