吴恩达深度学习笔记:机器学习策略(2)(ML Strategy (2)) 2.7-2.8

news2024/11/22 15:48:51

目录

  • 第三门课 结构化机器学习项目(Structuring Machine Learning Projects)
    • 第二周:机器学习策略(2)(ML Strategy (2))
      • 2.7 迁移学习(Transfer learning)

第三门课 结构化机器学习项目(Structuring Machine Learning Projects)

第二周:机器学习策略(2)(ML Strategy (2))

2.7 迁移学习(Transfer learning)

深度学习中,最强大的理念之一就是,有的时候神经网络可以从一个任务中习得知识,并将这些知识应用到另一个独立的任务中。所以例如,也许你已经训练好一个神经网络,能够识别像猫这样的对象,然后使用那些知识,或者部分习得的知识去帮助您更好地阅读 x 射线扫描图,这就是所谓的迁移学习。

我们来看看,假设你已经训练好一个图像识别神经网络,所以你首先用一个神经网络,并在(𝑥, 𝑦)对上训练,其中𝑥是图像,𝑦是某些对象,图像是猫、狗、鸟或其他东西。如果你把这个神经网络拿来,然后让它适应或者说迁移,在不同任务中学到的知识,比如放射科诊断,就是说阅读𝑋射线扫描图。你可以做的是把神经网络最后的输出层拿走,就把它删掉,还有进入到最后一层的权重删掉,然后为最后一层重新赋予随机权重,然后让它在放射诊断数据上训练。

在这里插入图片描述
具体来说,在第一阶段训练过程中,当你进行图像识别任务训练时,你可以训练神经网络的所有常用参数,所有的权重,所有的层,然后你就得到了一个能够做图像识别预测的网络。在训练了这个神经网络后,要实现迁移学习,你现在要做的是,把数据集换成新的(𝑥, 𝑦)对,现在这些变成放射科图像,而𝑦是你想要预测的诊断,你要做的是初始化最后一层的权重,让我们称之为𝑤[𝐿]和𝑏[𝐿]随机初始化。

在这里插入图片描述

现在,我们在这个新数据集上重新训练网络,在新的放射科数据集上训练网络。要用放射科数据集重新训练神经网络有几种做法。你可能,如果你的放射科数据集很小,你可能只需要重新训练最后一层的权重,就是𝑤[𝐿]和𝑏[𝐿],并保持其他参数不变。如果你有足够多的数据,你可以重新训练神经网络中剩下的所有层。经验规则是,如果你有一个小数据集,就只训练输出层前的最后一层,或者也许是最后一两层。但是如果你有很多数据,那么也许你可以重新训练网络中的所有参数。如果你重新训练神经网络中的所有参数,那么这个在图像识别数据的初期训练阶段,有时称为预训练(pre-training),因为你在用图像识别数据去预先初始化,或者预训练神经网络的权重。然后,如果你以后更新所有权重,然后在放射科数据上训练,有时这个过程叫微调(fine tuning)。如果你在深度学习文献中看到预训练和微调,你就知道它们说的是这个意思,预训练和微调的权重来源于迁移学习。

在这个例子中你做的是,把图像识别中学到的知识应用或迁移到放射科诊断上来,为什么这样做有效果呢?有很多低层次特征,比如说边缘检测、曲线检测、阳性对象检测(positive objects),从非常大的图像识别数据库中习得这些能力可能有助于你的学习算法在放射科诊断中做得更好,算法学到了很多结构信息,图像形状的信息,其中一些知识可能会很有用,所以学会了图像识别,它就可能学到足够多的信息,可以了解不同图像的组成部分是怎样的,学到线条、点、曲线这些知识,也许对象的一小部分,这些知识有可能帮助你的放射科诊断网络学习更快一些,或者需要更少的学习数据。

在这里插入图片描述
这里是另一个例子,假设你已经训练出一个语音识别系统,现在𝑥是音频或音频片段输入,而𝑦是听写文本,所以你已经训练了语音识别系统,让它输出听写文本。现在我们说你想搭建一个“唤醒词”或“触发词”检测系统,所谓唤醒词或触发词就是我们说的一句话,可以唤醒家里的语音控制设备,比如你说“Alexa”可以唤醒一个亚马逊 Echo 设备,或用“OK Google”来唤醒 Google 设备,用"Hey Siri"来唤醒苹果设备,用"你好百度"唤醒一个百度设备。要做到这点,你可能需要去掉神经网络的最后一层,然后加入新的输出节点,但有时你可以不只加入一个新节点,或者甚至往你的神经网络加入几个新层,然后把唤醒词检测问题的标签𝑦喂进去训练。再次,这取决于你有多少数据,你可能只需要重新训练网络的新层,也许你需要重新训练神经网络中更多的层。

那么迁移学习什么时候是有意义的呢?迁移学习起作用的场合是,在迁移来源问题中你有很多数据,但迁移目标问题你没有那么多数据。例如,假设图像识别任务中你有 1 百万个样本,所以这里数据相当多。可以学习低层次特征,可以在神经网络的前面几层学到如何识别很多有用的特征。但是对于放射科任务,也许你只有一百个样本,所以你的放射学诊断问题数据很少,也许只有 100 次𝑋射线扫描,所以你从图像识别训练中学到的很多知识可以迁移,并且真正帮你加强放射科识别任务的性能,即使你的放射科数据很少。

在这里插入图片描述
对于语音识别,也许你已经用 10,000 小时数据训练过你的语言识别系统,所以你从这10,000 小时数据学到了很多人类声音的特征,这数据量其实很多了。但对于触发字检测,也许你只有 1 小时数据,所以这数据太小,不能用来拟合很多参数。所以在这种情况下,预先学到很多人类声音的特征人类语言的组成部分等等知识,可以帮你建立一个很好的唤醒字检测器,即使你的数据集相对较小。对于唤醒词任务来说,至少数据集要小得多。

在这里插入图片描述
所以在这两种情况下,你从数据量很多的问题迁移到数据量相对小的问题。然后反过来的话,迁移学习可能就没有意义了。比如,你用 100 张图训练图像识别系统,然后有 100 甚至 1000 张图用于训练放射科诊断系统,人们可能会想,为了提升放射科诊断的性能,假设你真的希望这个放射科诊断系统做得好,那么用放射科图像训练可能比使用猫和狗的图像更有价值,所以这里(100 甚至 1000 张图用于训练放射科诊断系统)的每个样本价值比这里(100 张图训练图像识别系统)要大得多,至少就建立性能良好的放射科系统而言是这样。所以,如果你的放射科数据更多,那么你这 100 张猫猫狗狗或者随机物体的图片肯定不会有太大帮助,因为来自猫狗识别任务中,每一张图的价值肯定不如一张𝑋射线扫描图有价值,对于建立良好的放射科诊断系统而言是这样。

所以,这是其中一个例子,说明迁移学习可能不会有害,但也别指望这么做可以带来有意义的增益。同样,如果你用 10 小时数据训练出一个语音识别系统。然后你实际上有 10 个小时甚至更多,比如说 50 个小时唤醒字检测的数据,你知道迁移学习有可能会有帮助,也可能不会,也许把这 10 小时数据迁移学习不会有太大坏处,但是你也别指望会得到有意义的增益。

在这里插入图片描述
所以总结一下,什么时候迁移学习是有意义的?如果你想从任务𝐴学习并迁移一些知识到任务𝐵,那么当任务𝐴和任务𝐵都有同样的输入𝑥时,迁移学习是有意义的。在第一个例子中,𝐴和𝐵的输入都是图像,在第二个例子中,两者输入都是音频。当任务𝐴的数据比任务𝐵多得多时,迁移学习意义更大。所有这些假设的前提都是,你希望提高任务𝐵的性能,因为任务𝐵每个数据更有价值,对任务𝐵来说通常任务𝐴的数据量必须大得多,才有帮助,因为任务𝐴里单个样本的价值没有比任务𝐵单个样本价值大。然后如果你觉得任务𝐴的低层次特征,可以帮助任务𝐵的学习,那迁移学习更有意义一些。

而在这两个前面的例子中,也许学习图像识别教给系统足够多图像相关的知识,让它可以进行放射科诊断,也许学习语音识别教给系统足够多人类语言信息,能帮助你开发触发字或唤醒字检测器。

所以总结一下,迁移学习最有用的场合是,如果你尝试优化任务𝐵的性能,通常这个任务数据相对较少,例如,在放射科中你知道很难收集很多𝑋射线扫描图来搭建一个性能良好的放射科诊断系统,所以在这种情况下,你可能会找一个相关但不同的任务,如图像识别,其中你可能用 1 百万张图片训练过了,并从中学到很多低层次特征,所以那也许能帮助网络在任务𝐵在放射科任务上做得更好,尽管任务𝐵没有这么多数据。迁移学习什么时候是有意义的?它确实可以显著提高你的学习任务的性能,但我有时候也见过有些场合使用迁移学习时,任务𝐴实际上数据量比任务𝐵要少,这种情况下增益可能不多。

好,这就是迁移学习,你从一个任务中学习,然后尝试迁移到另一个不同任务中。从多个任务中学习还有另外一个版本,就是所谓的多任务学习,当你尝试从多个任务中并行学习,而不是串行学习,在训练了一个任务之后试图迁移到另一个任务,所以在下一个视频中,让我们来讨论多任务学习。

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

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

相关文章

鸿蒙开发设备管理:【@ohos.vibrator (振动)】

振动 说明: 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 imp…

Day05-组织架构-角色管理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.组织架构-编辑部门-弹出层获取数据2.组织架构-编辑部门-编辑表单校验3.组织架构-编辑部门-确认取消4.组织架构-删除部门5.角色管理-搭建页面结构6.角色管理-获取数…

蓝蜂网关接入天津粉尘涉爆企业风险监测预警系统指导案例

一、应用背景 按天津市应急管理部要求,参照《粉尘涉爆企业安全生产风险监测预警数据接入规范》。天津市已有的粉尘涉爆企业需接入物联网感知汇聚平台,实现数据监测。在市平台系统上实现统一的数据查询分析。通过蓝蜂MQTT网关LF220来实现与物联网感知汇聚…

磁钢生产领域上下料解决方案

随着智能制造技术的不断革新,磁钢生产领域正逐步引入自动化生产线。然而,传统的人工上下料方式存在诸多问题,难以满足现代生产需求。富唯智能提出了一款复合机器人磁钢上下料解决方案,通过先进的自动化技术,提高生产效…

vue3 + 百度地图 实现多坐标生成轨迹的两种种方式

本次依然是关于百度地图中常见的一个问题,此次共使用了两种方式并做了一些分析及处理,希望有所帮助。如有问题可以评论或私信。 一、便捷方式 优点:便捷,所用的api方法是根据坐标进行计算后绘制路线,所以路线相对准确…

【UML用户指南】-29-对体系结构建模-协作

目录 1、概念 1.1、名称 1.2、结构 1.3、行为 1.4、组织协作 2、常用建模技术 2.1、对角色建模 2.2、对用例的实现建模 2.3、对操作的实现建模 2.4、对机制建模 在UML中,用协作来对机制建模。协作为系统中的交互构造块指定一个名称,其中既包含…

Aigtek电压放大器参数有哪些

电压放大器是广泛应用于电子电路中的一种重要电路元件,它主要用于将输入信号的电压放大到所需的输出电压水平。在设计和使用电压放大器时,我们需要了解并考虑一系列的参数和特性。本文将详细介绍电压放大器的主要参数,包括放大倍数、带宽、输…

JAVA 对象存储OSS工具类(腾讯云)

对象存储OSS工具类 import com.qcloud.cos.COSClient; import com.qcloud.cos.ClientConfig; import com.qcloud.cos.auth.BasicCOSCredentials; import com.qcloud.cos.auth.COSCredentials; import com.qcloud.cos.model.ObjectMetadata; import com.qcloud.cos.model.PutObj…

机器学习之模型训练

前言 模型训练一般分为四个步骤: 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 有了数据集和模型后,可以进行模型的训练与评估。 构建数据集 定义神经网络模型 class Network(nn.Cell):def __init__(sel…

第一篇——导论:数学通识课的体系和学习攻略

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 数学的认知大厦;之前听的时候就觉得很重要,本次又…

性能压测 -优化 Nginx的动静分离

两件事情 1.以后将所有的项目的静态资源都应该放在nginx里面 2.nginx 规则:/static/***所有请求都有nginx直接返回 nginx 配置一下配置文件,然后把html 的静态资源,绑定好是Nginx优先级高的静态资源路径,就去交给nginx静态资源…

h5 video 标签播放经过 java 使用 ws.schild( jave、ffmpeg ) 压缩后的 mp4 视频只有声音无画面的问题排查记录

1. 引入 ws.schild MAVEN 依赖&#xff1a; <dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>3.5.0</version></dependency><dependency><groupId>ws.schild</grou…

基于Spring Boot框架的EAM系统设计与实现

摘 要&#xff1a;文章设计并实现一个基于Spring Boot框架的EAM系统&#xff0c;以应对传统人工管理模式存在的低效与信息管理难题。系统利用Java语言、JSP技术、MySQL数据库等技术栈&#xff0c;构建了一个B/S架构的高效管理平台&#xff0c;提升了资产管理的信息化水平。该系…

分班查询系统怎么制作?

新学年的临近&#xff0c;教师们的工作清单再次膨胀&#xff0c;充满各种任务。开学前的准备总是让人忙碌不已&#xff0c;从课程规划到教室布置&#xff0c;再到与家长的沟通&#xff0c;每一个环节都至关重要。尤其是分班结果的公布&#xff0c;这项工作虽然看起来简单&#…

Qwen1.5-1.8b部署

仿照ChatGLM3部署&#xff0c;参考了Qwen模型的文档&#xff0c;模型地址https://modelscope.cn/models/qwen/Qwen1.5-1.8B-Chat/summary http接口 服务端代码api.py from fastapi import FastAPI, Request from transformers import AutoTokenizer, AutoModelForCausalLM, …

强化学习后的数学原理:随机近似与梯度下降

概述 这节课的作用&#xff1a; 本节课大纲如下&#xff1a; Motivating examples 先回顾一下 mean estimation &#xff1a; 为什么总数反复提到这个 mean estimation&#xff0c;就是因为 RL 当中有非常多的 expectation&#xff0c;后面就会知道除了 state value 这些定义…

PySide6 实现资源的加载:深入解析与实战案例

目录 1. 引言 2. 加载内置资源 3. 使用自定义资源文件&#xff08;.qrc&#xff09; 创建.qrc文件 编译.qrc文件 加载资源 4. 动态加载UI文件 使用Qt Designer设计UI 加载UI文件 5. 注意事项与最佳实践 6. 结论 在开发基于PySide6的桌面应用程序时&…

博途通讯笔记1:1200与1200之间S7通讯

目录 一、添加子网连接二、创建PUT GET三、各个参数的意义 一、添加子网连接 二、创建PUT GET 三、各个参数的意义

新手高效指南:电子元器件BOM表创建/制作及配单全教程

在科技日新月异的今天&#xff0c;电子产品设计与制造不仅是创新精神的展现&#xff0c;更是对精确度与效率的不懈追求。在这个过程中&#xff0c;一份精细且全面的BOM&#xff08;物料清单&#xff09;犹如一座桥梁&#xff0c;连接着创意与现实世界。BOM不仅细致记录了产品所…

如何优化圆柱晶振32.768KHz的外壳接地?

圆柱晶振32.768KHz在电子设备中扮演着重要的角色&#xff0c;其精确的时钟信号对于许多应用至关重要。为了确保晶振的稳定性和准确性&#xff0c;外壳接地是一个关键步骤。 一、外壳接地的目的 外壳接地的主要目的是为了防止信号干扰。当晶振的外壳接地后&#xff0c;它相当于…