深度学习 Lecture 7 迁移学习、精确率、召回率和F1评分

一、迁移学习(Transfer learning)

用来自不同任务的数据来帮助我解决当前任务。

场景:比如现在我想要识别从0到9度手写数字,但是我没有那么多手写数字的带标签数据。我可以找到一个很大的数据集,比如有一百万张图片的猫、狗、汽车和人等1000个类,那我就可以在这个大型数据集上用这一百万张图片作为输入,训练一个模型来学会识别这1000个不同的类别。
比如我训练出来后,长这样:

这里有w,b参数

那接下来,我就可以把前面的输入层和隐藏层全部照原来的不动,把输出层更改为10个神经元,即:

10个神经元分别对应0-9的10个数字。

但注意这里的w5和b5需要改变,因为神经元改变了,所以要用前四层的参数进行训练,得出新的w5和b5。

也就是说,迁移学习后,有两种选择:

 

选项1适合数据集较小的情况。

选项卡2适合数据集较大的情况。

这种算法就叫迁移学习,就是把通过另一个训练好的训练模型参数迁移到现有的模型中来,这样对新神经网络的参数很有帮助,因为只需要再让算法学习一下,就能达到很好的效果了。

在大型数据集上训练,然后在较小的数据集上进一步调参(也叫微调(fine tuning),这两个步骤叫监督预训练(supervised pretraining)

而迁移学习的一个好处是,我可能不需要进行监督预训练。

对应很多神经网络来说,已经有研究人员在大数据集上训练了一个效果很好的神经网络并发在了网上,那比起从头开始,我们可以下载别人训练好的神经网络,把自己的输出层替换原有的输出层,并用自己的数据集做一点微调即可得到一个表现良好的神经网络。

但是要注意!对应预训练和调参这两步,使用的图像必须是同个输入尺寸的,并且选择的别人的模型也要是图像识别的。也就是说,如果你要做音频识别,那你要找的神经网络也是在音频数据上预训练过的神经网络。

二、机器学习项目的整个周期

第一步:确定项目的范围:

确定这项目是什么,什么是你想做的

第二步:收集数据

确定需要哪些数据来训练你的机器学习系统,然后去收集

第三步:训练模型

进行误差分析,进行迭代发展,看训练效果是否不好, 不好的话找原因,比如回去收集更多的数据这样。

第四步:部署系统

应用到现实中,并且要跟进模型的性能,如果模型性能出现问题,要及时维护。

PS: 注意,误差最小的模型不一定代表模型准确率最高。

原因:比如当你的模型在预测一个人是否有罕见病的时候(罕见病发病率0.5%),而你的蠢模型只会一直在输出该人无罕见病,那模型准确率就是99.5%;但是如果你自己训练的模型准确率是99.2%,但是它不会像傻子一样一直在输出该人无罕见病,可能更有用这个时候你怎么判断哪个模型更好呢?(这种情况叫数据集倾斜问题)

解决方式是使用精确率(Precison)召回率(Recall)作为错误的度量。

三、精确率和召唤率

要理解这两个概念,首先要知道什么是true positive, false positive, false negative和true negative。

举个例子:

这是个混淆矩阵,现在我们在预测一个罕见病,横轴代表实际的类,竖轴代表预测出来的类。

如果预测的结果和实际结果一样,这个就叫true;不一样就叫false;

那positive和negative就是1和0的区别,表示是否有疾病。

所以,精确率:

true positive的值除以被归为positive的样本的值(也就是在所有你预测的阳性样本中,真正是真样本的比率)

 召回率:

true positive的值除actual positived的值(也就是true positive的值加上false negative的值)

这两个值能够帮我们判断是不是模型一直在输出0(也就是我们上面提及的情况)

因为如果一直都在输出0,那精确率和召回率就都是0.

所以如果训练的模型是罕见病的时候,一定需要注意这两个数字够不够高,如果都比较高,就能说明我们的学习算法是有效的。

总结:

高精度:已知算法诊断来访者有这种疾病,后面发现大多数来访者确实都有这种疾病,那就说是高精度。(预测为正的样本中有多少是真的预测正确了(找得对))

高召回:已知来访者有这种疾病,后面发现算法能在很大程度上诊断出他们患有这种疾病,这就是找的全。

那如何权衡精度和召回率呢?

四、精度和召回率的权衡

通常我们会将逻辑回归的输出阈值设置为0.5,但假如我们只有在觉得非常确信的情况下才预测y = 1的话,我们可以选择把阈值设置更高,比如0.7,也就是说,此时要预测y = 1至少要有70%的把握了,这样就能提高预测的精度了。注意,阈值的设置要同步,也就是说,此时预测y=1和y=0的阈值都是0.7。

但是这样的话,精度提高了,就会导致更低的召回率,因为预测的次数变少了。所以在所有的患者中,我们能正确诊断出患病的人会更少。

同理,那降低阈值就是提高预测的召回率,也就是说,允许找出更多的病例。

那权衡这两个值的话,就要把不同阈值对于的精确率和召回率的图画出来:

 而且注意,不能用交叉验证法选出阈值,因为是由你来选择最佳的点。

所以对于大多数算法程序而言,最终要做的是手动选择一个阈值来权衡精度和召回率。

但是如果你想要自动权衡精度和召回率,而不是自己来手动选择阈值的话,还可以使用

F1评分(F1 Score):它可以自动结合精度和召回率,帮你选择最佳权衡值。

这个计算结果也叫调和平均数(harmonious means) 

也就是说,可以通过这个公式,来对召回率和精度进行计算,得出F1评分,选出最佳的权衡组合。得分越高,哪种算法就越好。

 

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

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

相关文章

论文笔记:(INTHE)WILDCHAT:570K CHATGPT INTERACTION LOGS IN THE WILD

iclr 2024 spotlight reviewer 评分 5668 1 intro 由大型语言模型驱动的对话代理(ChatGPT,Claude 2,Bard,Bing Chat) 他们的开发流程通常包括三个主要阶段 预训练语言模型在被称为“指令调优”数据集上进行微调&…

JDK5.0新特性

目录 1、JDK5特性 1.1、静态导入 1.2 增强for循环 1.3 可变参数 1.4 自动装箱/拆箱 1.4.1 基本数据类型包装类 1.5 枚举类 1.6 泛型 1.6.1 泛型方法 1.6.2 泛型类 1.6.3 泛型接口 1.6.4 泛型通配符 1、JDK5特性 JDK5中新增了很多新的java特性,利用这些新…

v-for中涉及的key

一、为什么要用key? key可以标识列表中每个元素的唯一性,方便Vue高效地更新虚拟DOM;key主要用于dom diff算法,diff算法是同级比较,比较当前标签上的key和标签名,如果都一样,就只移动元素&#…

【刷题笔记】第七天

文章目录 [924. 尽量减少恶意软件的传播](https://leetcode.cn/problems/minimize-malware-spread/)方法一,并查集方法二,dfs [GCD and LCM ](https://vjudge.net.cn/problem/HDU-4497#authorKING_LRL) 924. 尽量减少恶意软件的传播 如果移除一个感染节…

上海计算机学会 2023年10月月赛 乙组T4 树的覆盖(树、最小点覆盖、树形dp)

第四题:T4树的覆盖 标签:树、最小点覆盖、树形 d p dp dp题意:求树的最小点覆盖集的大小和对应的数量,数量对 1 , 000 , 000 , 007 1,000,000,007 1,000,000,007取余数。所谓覆盖集,是该树的点构成的集合,…

docker 环境变量设置实现方式

1、前言 docker在当前运用的越来广泛,很多应用或者很多中间软件都有很多docker镜像资源,运行docker run 启动镜像资源即可应用。但是很多应用或者中间件有很多配置参数。这些参数在运用过程怎么设置给docker 容器呢?下面介绍几种方式 2 、do…

无线网络安全之WiFi Pineapple初探

背景 WiFi Pineapple(大菠萝)是由国外无线安全审计公司Hak5开发并售卖的一款无线安全测试神器。集合了一些功能强大的模块,基本可以还原钓鱼攻击的全过程。在学习无线安全时也是一个不错的工具,本文主要讲WiFi Pineapple基础配置…

和鲸科技将参与第五届空间数据智能学术会议并于应急减灾与可持续发展专题论坛做报告分享

ACM SIGSPATIAL中国分会致力于推动空间数据的研究范式及空间智能理论与技术在时空大数据、智慧城市、交通科学、社会治理等领域的创新与应用。ACM SIGSPATIAL中国分会创办了空间数据智能学术会议(SpatialDI),分会将于2024年4月25日-27日在南京…

javaWeb项目-快捷酒店管理系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、Spring Boot框架 …

PSCAD|应用于输电线路故障测距的行波波速仿真分析

1 主要内容 该程序参考文献《应用于输电线路故障测距的行波波速仿真分析》,利用线路内部故障产生的初始行波浪涌达线路两端测量点的绝对时间之差值计算故障点到两端测量点之间的距离,并利用小波变换得到初始行波波头准确到达时刻,从而精准定…

富文本在线编辑器 - tinymce

tinymce 项目是一个比较好的富文本编辑器. 这里有个小demo, 下载下来尝试一下, 需要配置个本地服务器才能够访问, 我这里使用的nginx, 下面是我的整个操作过程: git clone gitgitee.com:chick1993/layui-tinymce.git cd layui-tinymcewget http://nginx.org/download/nginx-1.…

JavaEE:JVM

基本介绍 JVM:Java虚拟机,用于解释执行Java字节码 jdk:Java开发工具包 jre:Java运行时环境 C语言将写入的程序直接编译成二进制的机器语言,而java不想重新编译,希望能直接执行。Java先通过javac把.java…

RK3568 学习笔记 : 更改 u-boot spl 中的 emmc 的启动次序

环境 开发板: 【正点原子】 的 RK3568 开发板 ATK-DLRK3568 u-boot 版本:来自 【正点原子】 的 RK3568 开发板 Linux SDK,单独复制出来一份,手动编译 编译环境:VMware 虚拟机 ubuntu 20.04 问题描述 RK3568 默认 …

浅谈线程的生命周期

Java线程的生命周期是一个从创建到终止的过程,经历了多种状态的转变。在Java中,线程的生命周期可以划分为以下几个主要状态: 新建(New): 当使用 new Thread() 创建一个新的线程对象但尚未调用 start() 方法…

CSS基础之伪元素选择器(如果想知道CSS的伪元素选择器知识点,那么只看这一篇就足够了!)

前言:我们已经知道了在CSS中,选择器有基本选择器、复合选择器、伪类选择器、那么选择器学习完了吗?显然是没有的,这篇文章讲解最后一种选择器——伪元素选择器。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我…

【linux】mobaterm如何kill pycharm进程

【linux】mobaterm如何kill pycharm进程 【先赞后看养成习惯】求点赞关注收藏😀 使用云服务器时,pycharm在打开状态下,不小心关了mobaxterm,然后再输入pycharm.sh就会打不开pycharm,显示已经打开报错:Com…

软考131-上午题-【软件工程】-软件可靠性、可用性、可维护性

可靠性、可用性和可维护性是软件的质量属性,软件工程中,用 0-1 之间的数来度量。 0.66 66% 1、 可靠性 可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。 可以用 MTTF/ (1MTTF) 来度量,其中 MTTF 为平均无故障时间…

PHP一句话木马

一句话木马 PHP 的一句话木马是一种用于 Web 应用程序漏洞利用的代码片段。它通常是一小段 PHP 代码,能够在目标服务器上执行任意命令。一句话木马的工作原理是利用 Web 应用程序中的安全漏洞,将恶意代码注入到服务器端的 PHP 脚本中。一旦执行&#xf…

Docker Container (容器) 常见命令

Docker 容器的生命周期 什么是容器? 通俗地讲,容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容 器有初建、运行、停止、暂停和删除…

智能商品计划系统如何提升鞋服零售品牌的竞争力

国内鞋服零售企业经过多年的发展,已经形成了众多知名品牌,然而近年来一些企业频频受到库存问题的困扰,这一问题不仅影响了品牌商自身,也给长期合作的经销商带来了困扰。订货会制度在初期曾经有效地解决了盲目生产的问题&#xff0…