动手学深度学习v2 p1引言 监督学习与无监督学习

news2024/10/6 0:36:12

1.引言

1.2. 机器学习中的关键组件

首先介绍一些核心组件。无论什么类型的机器学习问题,都会遇到这些组件:

  1. 可以用来学习的数据(data);

  2. 如何转换数据的模型(model);

  3. 一个目标函数(objective function),用来量化模型的有效性;

  4. 调整模型参数以优化目标函数的算法(algorithm)。

1.数据

仅仅拥有海量的数据是不够的,我们还需要正确的数据。 如果数据中充满了错误,或者如果数据的特征不能预测任务目标,那么模型很可能无效。 有一句古语很好地反映了这个现象:“输入的是垃圾,输出的也是垃圾。

2. 模型

大多数机器学习会涉及到数据的转换。 比如一个“摄取照片并预测笑脸”的系统。再比如通过摄取到的一组传感器读数预测读数的正常与异常程度。 虽然简单的模型能够解决如上简单的问题,但本书中关注的问题超出了经典方法的极限。 深度学习与经典方法的区别主要在于:前者关注的功能强大的模型,这些模型由神经网络错综复杂的交织在一起,包含层层数据转换,因此被称为深度学习(deep learning)。 在讨论深度模型的过程中,本书也将提及一些传统方法。

3. 目标函数

前面的内容将机器学习介绍为“从经验中学习”。 这里所说的“学习”,是指自主提高模型完成某些任务的效能。 但是,什么才算真正的提高呢? 在机器学习中,我们需要定义模型的优劣程度的度量,这个度量在大多数情况是“可优化”的,这被称之为目标函数(objective function)。 我们通常定义一个目标函数,并希望优化它到最低点。 因为越低越好,所以这些函数有时被称为损失函数(loss function,或cost function)。 但这只是一个惯例,我们也可以取一个新的函数,优化到它的最高点。 这两个函数本质上是相同的,只是翻转一下符号。

当任务在试图预测数值时,最常见的损失函数是平方误差(squared error),即预测值与实际值之差的平方。 当试图解决分类问题时,最常见的目标函数是最小化错误率,即预测与实际情况不符的样本比例。 有些目标函数(如平方误差)很容易被优化,有些目标(如错误率)由于不可微性或其他复杂性难以直接优化。 在这些情况下,通常会优化替代目标

通常,损失函数是根据模型参数定义的,并取决于数据集。 在一个数据集上,我们可以通过最小化总损失来学习模型参数的最佳值。 该数据集由一些为训练而收集的样本组成,称为训练数据集(training dataset,或称为训练集(training set))。 然而,在训练数据上表现良好的模型,并不一定在“新数据集”上有同样的性能,这里的“新数据集”通常称为测试数据集(test dataset,或称为测试集(test set))。

综上所述,可用数据集通常可以分成两部分:训练数据集用于拟合模型参数,测试数据集用于评估拟合的模型。 然后我们观察模型在这两部分数据集的性能。 “一个模型在训练数据集上的性能”可以被想象成“一个学生在模拟考试中的分数”。 这个分数用来为一些真正的期末考试做参考,即使成绩令人鼓舞,也不能保证期末考试成功。 换言之,测试性能可能会显著偏离训练性能。 当一个模型在训练集上表现良好,但不能推广到测试集时,这个模型被称为过拟合(overfitting)的。 就像在现实生活中,尽管模拟考试考得很好,真正的考试不一定百发百中。

4. 优化算法

当我们获得了一些数据源及其表示、一个模型和一个合适的损失函数,接下来就需要一种算法,它能够搜索出最佳参数,以最小化损失函数。 深度学习中,大多流行的优化算法通常基于一种基本方法–梯度下降(gradient descent)。 简而言之,在每个步骤中,梯度下降法都会检查每个参数,看看如果仅对该参数进行少量变动,训练集损失会朝哪个方向移动。 然后,它在可以减少损失的方向上优化参数。

1.3 监督学习

监督学习(supervised learning)擅长在“给定输入特征”的情况下预测标签。 每个“特征-标签”对都称为一个样本(example)。 有时,即使标签是未知的,样本也可以指代输入特征。 我们的目标是生成一个模型,能够将任何输入特征映射到标签(即预测)。

举一个具体的例子: 假设我们需要预测患者的心脏病是否会发作,那么观察结果“心脏病发作”或“心脏病没有发作”将是样本的标签。 输入特征可能是生命体征,如心率、舒张压和收缩压等。

监督学习之所以能发挥作用,是因为在训练参数时,我们为模型提供了一个数据集,其中每个样本都有真实的标签。 用概率论术语来说,我们希望预测“估计给定输入特征的标签”的条件概率。 虽然监督学习只是几大类机器学习问题之一,但是在工业中,大部分机器学习的成功应用都使用了监督学习。 这是因为在一定程度上,许多重要的任务可以清晰地描述为,在给定一组特定的可用数据的情况下,估计未知事物的概率。

监督学习的学习过程一般可以分为三大步骤:

  1. 从已知大量数据样本中随机选取一个子集,为每个样本获取真实标签。有时,这些样本已有标签(例如,患者是否在下一年内康复?);有时,这些样本可能需要被人工标记(例如,图像分类)。这些输入和相应的标签一起构成了训练数据集;

  2. 选择有监督的学习算法,它将训练数据集作为输入,并输出一个“已完成学习的模型”;

  3. 将之前没有见过的样本特征放到这个“已完成学习的模型”中,使用模型的输出作为相应标签的预测。

  1. 回归:回归问题是预测连续值的问题。例如,预测房价、股票价格或者人的身高等。这些都是连续的数值,我们的目标是找到输入特征和连续目标值之间的关系。例如,我们可能会使用房屋的面积、位置、建造年份等特征来预测房价。

  2. 分类:分类问题是预测离散值的问题。例如,判断一封电子邮件是垃圾邮件还是非垃圾邮件,或者判断一张图片是猫还是狗。在这些情况下,我们的目标是根据输入特征将样本分到两个或更多的类别中。

  3. 标记问题:标记问题是关于对象的多个属性的预测,这些属性并不是互斥的。例如,在自然语言处理中,我们可能需要标记句子中的每个词的词性(名词、动词、形容词等)。在这种情况下,每个词可以有多个标签。

  4. 搜索:在监督学习中,搜索可以被看作是学习一种策略,以在大量可能的解决方案中找到最好的一个。例如,棋类游戏的AI,它需要在每一步中决定最佳的移动。

  5. 推荐系统:推荐系统是一种信息过滤系统,用于预测用户对项目的“评分”或“偏好”。例如,根据用户过去的购买历史、浏览历史等信息,预测用户可能喜欢哪些新产品或服务。例如,Netflix推荐系统会根据用户过去观看的电影来推荐可能喜欢的新电影。

1.3.2. 无监督学习

到目前为止,所有的例子都与监督学习有关,即需要向模型提供巨大数据集:每个样本包含特征和相应标签值。 打趣一下,“监督学习”模型像一个打工仔,有一份极其专业的工作和一位极其平庸的老板。 老板站在身后,准确地告诉模型在每种情况下应该做什么,直到模型学会从情况到行动的映射。 取悦这位老板很容易,只需尽快识别出模式并模仿他们的行为即可。

相反,如果工作没有十分具体的目标,就需要“自发”地去学习了。 比如,老板可能会给我们一大堆数据,然后要求用它做一些数据科学研究,却没有对结果有要求。 这类数据中不含有“目标”的机器学习问题通常被为无监督学习(unsupervised learning), 本书后面的章节将讨论无监督学习技术。 那么无监督学习可以回答什么样的问题呢?来看看下面的例子。

  • 聚类(clustering)问题:没有标签的情况下,我们是否能给数据分类呢?比如,给定一组照片,我们能把它们分成风景照片、狗、婴儿、猫和山峰的照片吗?同样,给定一组用户的网页浏览记录,我们能否将具有相似行为的用户聚类呢?

  • 主成分分析(principal component analysis)问题:我们能否找到少量的参数来准确地捕捉数据的线性相关属性?比如,一个球的运动轨迹可以用球的速度、直径和质量来描述。再比如,裁缝们已经开发出了一小部分参数,这些参数相当准确地描述了人体的形状,以适应衣服的需要。另一个例子:在欧几里得空间中是否存在一种(任意结构的)对象的表示,使其符号属性能够很好地匹配?这可以用来描述实体及其关系,例如“罗马” − “意大利” + “法国” = “巴黎”。

  • 因果关系(causality)和概率图模型(probabilistic graphical models)问题:我们能否描述观察到的许多数据的根本原因?例如,如果我们有关于房价、污染、犯罪、地理位置、教育和工资的人口统计数据,我们能否简单地根据经验数据发现它们之间的关系?

  • 生成对抗性网络(generative adversarial networks):为我们提供一种合成数据的方法,甚至像图像和音频这样复杂的非结构化数据。潜在的统计机制是检查真实和虚假数据是否相同的测试,它是无监督学习的另一个重要而令人兴奋的领域。

1.3.3. 与环境互动

有人一直心存疑虑:机器学习的输入(数据)来自哪里?机器学习的输出又将去往何方? 到目前为止,不管是监督学习还是无监督学习,我们都会预先获取大量数据,然后启动模型,不再与环境交互。 这里所有学习都是在算法与环境断开后进行的,被称为离线学习(offline learning)。 对于监督学习,从环境中收集数据的过程类似于 图1.3.6。

1.3.4. 强化学习

如果你对使用机器学习开发与环境交互并采取行动感兴趣,那么最终可能会专注于强化学习(reinforcement learning)。 这可能包括应用到机器人、对话系统,甚至开发视频游戏的人工智能(AI)。 深度强化学习(deep reinforcement learning)将深度学习应用于强化学习的问题,是非常热门的研究领域。 突破性的深度Q网络(Q-network)在雅达利游戏中仅使用视觉输入就击败了人类, 以及 AlphaGo 程序在棋盘游戏围棋中击败了世界冠军,是两个突出强化学习的例子。

在强化学习问题中,智能体(agent)在一系列的时间步骤上与环境交互。 在每个特定时间点,智能体从环境接收一些观察(observation),并且必须选择一个动作(action),然后通过某种机制(有时称为执行器)将其传输回环境,最后智能体从环境中获得奖励(reward)。 此后新一轮循环开始,智能体接收后续观察,并选择后续操作,依此类推。 强化学习的过程在 图1.3.7 中进行了说明。 请注意,强化学习的目标是产生一个好的策略(policy)。 强化学习智能体选择的“动作”受策略控制,即一个从环境观察映射到行动的功能。

 强化学习框架的通用性十分强大。 例如,我们可以将任何监督学习问题转化为强化学习问题。 假设我们有一个分类问题,可以创建一个强化学习智能体,每个分类对应一个“动作”。 然后,我们可以创建一个环境,该环境给予智能体的奖励。 这个奖励与原始监督学习问题的损失函数是一致的。

当然,强化学习还可以解决许多监督学习无法解决的问题。 例如,在监督学习中,我们总是希望输入与正确的标签相关联。 但在强化学习中,我们并不假设环境告诉智能体每个观测的最优动作。 一般来说,智能体只是得到一些奖励。 此外,环境甚至可能不会告诉是哪些行为导致了奖励。

以强化学习在国际象棋的应用为例。 唯一真正的奖励信号出现在游戏结束时:当智能体获胜时,智能体可以得到奖励1;当智能体失败时,智能体将得到奖励-1。 因此,强化学习者必须处理学分分配(credit assignment)问题:决定哪些行为是值得奖励的,哪些行为是需要惩罚的。 就像一个员工升职一样,这次升职很可能反映了前一年的大量的行动。 要想在未来获得更多的晋升,就需要弄清楚这一过程中哪些行为导致了晋升。

强化学习可能还必须处理部分可观测性问题。 也就是说,当前的观察结果可能无法阐述有关当前状态的所有信息。 比方说,一个清洁机器人发现自己被困在一个许多相同的壁橱的房子里。 推断机器人的精确位置(从而推断其状态),需要在进入壁橱之前考虑它之前的观察结果。

最后,在任何时间点上,强化学习智能体可能知道一个好的策略,但可能有许多更好的策略从未尝试过的。 强化学习智能体必须不断地做出选择:是应该利用当前最好的策略,还是探索新的策略空间(放弃一些短期回报来换取知识)。

1.4. 小结

  • 机器学习研究计算机系统如何利用经验(通常是数据)来提高特定任务的性能。它结合了统计学、数据挖掘和优化的思想。通常,它是被用作实现人工智能解决方案的一种手段。

  • 表示学习作为机器学习的一类,其研究的重点是如何自动找到合适的数据表示方式。深度学习是通过学习多层次的转换来进行的多层次的表示学习。

  • 深度学习不仅取代了传统机器学习的浅层模型,而且取代了劳动密集型的特征工程。

  • 最近在深度学习方面取得的许多进展,大都是由廉价传感器和互联网规模应用所产生的大量数据,以及(通过GPU)算力的突破来触发的。

  • 整个系统优化是获得高性能的关键环节。有效的深度学习框架的开源使得这一点的设计和实现变得非常容易。

2. 预备知识

动手学深度学习v2
1. 引言 — 动手学深度学习 2.0.0 documentation

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

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

相关文章

linux--用户相关

目录 一.要在云服务器官网重置root密码成功后才能登录xshell(重装系统后登录也不例外) 二.添加普通用户: 三.查看root下有几个普通用户: 四.给用户设置密码: 五、用户登录​编辑 六、查看当前所在用户: 七、查看…

windows上phpstudy 在切换php7.0到7.2后项目404

项目从7.0切换到7.2.9一访问本地就报404,然后重启 重新配置nginx.conf也无效 然后取查看phpstudy 的 nginx/logs/error.log 发现一访问本地网站就报下面错 phpstudy报错 2023/06/28 11:36:28 [error] 14128#19616: *1 upstream prematurely closed connection whi…

Linux——扩容/根分区(LVM+非LVM)

摘要 本博文主要是对linux虚拟机进行磁盘得扩容操作。 在计算机中MBR(Master Boot Record)(主引导记录)和GPT(GUID Partition Table)(GUID意为全局唯一标识符)是在磁盘上存储分区信…

Redis跳跃表是如何添加元素的?

今天分享的这道题来自于蔚来的真实面试题。 Java 面试不可能不问 Redis,问到 Redis 不可能不问 Redis 的常用数据类型,问到 Redis 的常用数据类型,不可能不问跳跃表,当问到跳跃表经常会被问到跳跃表的查询和添加流程,…

conda虚拟环境中安装的cuda和服务器上安装的cuda的异同

服务器上已安装Nvidia提供的cuda,nvidia-smi时会出现已安装的CUDA版本。如下图所示,服务器上已安装好的cuda版本为10.1。 但是当我们在Anaconda虚拟环境下安装pytorch或者paddlepaddle等深度学习框架的GPU版本时,通常会选择较高版本的cuda&a…

python3开发-Word助手

目录 背景 思路 步骤 代码示例 总结 背景 在日常工作和学习中,我们经常需要处理Word文档,例如编辑、提取内容、生成报告等。而Python是一门功能强大的编程语言,它提供了丰富的库和工具,使得我们可以利用Python来处理Word文档…

chatgpt赋能python:Python运输打折问题解决方案

Python运输打折问题解决方案 作为一个有10年Python编程经验的工程师,我深知Python在物流行业中的广泛应用。而运输打折作为物流运营中的重要一环,一直是Python开发者面临的一个难题。本文将介绍一些 Python 应用程序,帮助你计算和优化你的运…

Flink DataStream之创建执行环境

新建project&#xff1a; pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://ma…

基于springboot实现的博客系统(免费)

1.1 项目概述 开发语言&#xff1a;Java8 数据库&#xff1a;MySQL5.7以上版本 前端技术&#xff1a;template模板引擎 后端技术&#xff1a;Springboot SpringMVC MyBaties shiro 数据库连接池&#xff1a;Druid 服务器&#xff1a;Tomcat 开发工具&#xff1a;idea…

如何优雅的实现跨应用的代码共享

在 2020 年上半年&#xff0c;Webpack 发布了一项非常激动人心的特性&#xff1a;Module Federation(译为模块联邦)&#xff0c;这个特性一经推出就获得了业界的广泛关注&#xff0c;甚至被称为前端构建领域的Game Changer。实际上&#xff0c;这项技术确实很好地解决了多应用模…

一步一步指导如何使用 ESP 深度学习在 ESP32-S3 上进行手势识别

在本文中,我们将了解如何使用ESP-DL并在ESP32-S3上部署深度学习模型。文末附免费源代码下载链接 人工智能改变了计算机与现实世界交互的方式。决策是通过将微型低功耗设备和传感器的数据获取到云端来进行的。连接性、高成本和数据隐私是这种方法的一些缺点。边缘人工智…

Character类(Java)

文章目录 1. 介绍2. 分析3. 方法3.1 isDigit()方法 --- isLetter()方法3.2 xxxx()方法3.2 xxxx()方法 1. 介绍 A. 类介绍&#xff1a;   Character 类在对象中包装一个基本类型 char 的值。Character 类型的对象包含类型为 char 的单个字段。 2. 分析 A. 类包结构&#xff1a…

SpringBoot整合redis并使用缓存注解

SpringBoot整合redis并使用缓存注解 直接上代码 添加Redis依赖&#xff0c;在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> &l…

《找 bug 的活动》VIP 会员免费的视频,PC Web 端无法观看

《找 bug 的活动》VIP 会员免费的视频&#xff0c;PC Web 端无法观看 文章目录 《找 bug 的活动》VIP 会员免费的视频&#xff0c;PC Web 端无法观看问题描述期望 问题描述 CSDN 学习中心的视频课&#xff0c;有部分是 VIP 会员免费的课程&#xff0c;但是会重复跳转到 确认订…

支持CT、彩色超声、内窥镜检查的医院影像PACS系统源码(三维重建技术)

首先&#xff0c;PACS影像存取与传输系统是以实现医学影像数字化存储、诊断为核心任务&#xff0c;从医学影像设备&#xff08;如CT、CR、DR、MR、DSA、RF等&#xff09;获取影像&#xff0c;集中存储、综合管理医学影像及病人相关信息&#xff0c;建立数字化工作流程。 其次&…

思必驰:以对话式语言计算大模型为核心的大模型体系,才是未来!

2023年6月26日&#xff0c;思必驰联合创始人、首席科学家俞凯在第五届全球智博会发表主题演讲《对话式通用人工智能与专业化语言大模型》&#xff0c;他表示大模型是人工智能的新时代&#xff0c;语言大模型、对话式的语言大模型是整个人工智能大模型进一步突破的核心。而专业化…

Unity UGUI Canvas Overlay模式获取屏幕坐标

UGUI Canvas Overlay模式获取屏幕坐标 &#x1f354;效果&#x1f371;获取 &#x1f354;效果 &#x1f371;获取 ui的position就是屏幕坐标(●’◡’●) var screenPos new Vector2(transform.position.x, transform.position.y);

什么是直放站

直放站是无线通信系统中信号向地下空间延伸覆盖设备的总称&#xff0c;直放站分近端机和远端机两部分&#xff0c;近端机通过基站或空间耦合信号并进行选频、滤波处理后变换为光信号&#xff0c;通过光纤传输到地下空间&#xff08;隧道&#xff09;内&#xff0c;由光直放站远…

LeetCode_Day7 | 三数之和、四数之和

LeetCode_哈希表 15.三数之和1.题目描述2.双指针法2.1思路及注意点2.2代码实现 3.哈希法(有待修正)3.1 思路3.2 代码实现 18.四数之和1. 题目描述 15.三数之和 1.题目描述 详情leetcode链接 2.双指针法 2.1思路及注意点 将数组排序&#xff0c;有一层for循环&#xff0c;i从…

uniapp 中 引入vant组件 和 vant 报错Unclosed bracket 的问题解决

在uniapp 中引入vant组件&#xff0c;遇到一个报错&#xff0c;所以在此记录一下完整过程 一、引入vant组件 方式一&#xff1a;前往 GitHub官网 Vant 下载压缩文件&#xff0c;获取下载中的dist 文件 方式二&#xff1a;通过npm install 方式引入 npm i vant/weapp -S --pr…