《动手学机器学习》笔记2_监督学习

监督学习

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

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

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

  • 根据计算机断层扫描(CT)图像预测是否为癌症。

  • 给出一个英语句子,预测正确的中文翻译。

  • 根据本月的财务报告数据预测下个月股票的价格。

非正式地说,监督学习的学习过程如下所示。 首先,从已知大量数据样本中随机选取一个子集,为每个样本获取基本的真实标签。 有时,这些样本已有标签(例如,患者是否在下一年内康复?); 有时,我们可能需要人工标记数据(例如,将图像分类)。 这些输入和相应的标签一起构成了训练数据集。 随后,我们选择有监督的学习算法,它将训练数据集作为输入,并输出一个“完成学习模型”。 最后,我们将之前没见过的样本特征放到这个“完成学习模型”中,使用模型的输出作为相应标签的预测。 整个监督学习过程在 图1中绘制。

图1 监督学习

综上所述,即使使用简单的描述“给定输入特征的预测标签”,监督学习也可以采取多种形式的模型,并且需要大量不同的建模决策,这取决于输入和输出的类型、大小和数量。 例如,在处理“任意长度的序列”或者“固定长度的向量表示”时,我们可以使用不同的模型。 我们将在本书中深入探讨这些问题。

1. 回归

回归(regression)是最简单的监督学习任务之一。 比方说,假设我们有一组房屋销售数据表格,其中每行对应于每个房子,每列对应于一些相关的属性,例如房屋的面积、卧室的数量、浴室的数量以及到镇中心的步行分钟数等等。 对机器学习来说,每个样本即为一个特定的房屋,相应的特征向量将是表中的一行。 如果你住在纽约或旧金山,而且你不是亚马逊、谷歌、微软或Facebook的首席执行官,那么你家中的(平方英尺、卧室数量、浴室数量、步行距离)特征向量可能类似于:([600, 1, 1, 60])。 然而,如果你住在匹兹堡,这个特征向量可能看起来更像([3000, 4, 3, 10])…… 为什么这个任务可以归类于回归问题呢?本质上是输出决定的。 假设你在市场上寻找新房子,你可能需要估计一栋房子的公平市场价值。 销售价格,即标签,是一个数值。 当标签取任意数值时,我们称之为回归问题。 我们的目标是生成一个模型,它的预测非常接近实际标签值。

生活中的许多问题都可归类于回归问题。 比如,预测用户对一部电影的评分可以被认为是一个回归问题。 这里一个小插曲,如果你在2009年设计了一个很棒的算法来预测电影评分,你可能会赢得100万美元的奈飞奖。 再比如,预测病人在医院的住院时间也是一个回归问题。 总而言之,判断回归问题的一个很好的经验法则是,任何有关“多少”的问题很可能就是回归问题。比如:

  • 这个手术需要多少小时?

  • 在未来六小时,这个镇会有多少降雨量?

你可能发现,即使你以前从未使用过机器学习,可能在不经意间,你已经解决了一些回归问题。 例如,你让人修理了排水管,你的承包商花了3个小时清除污水管道中的污物,然后他寄给你一张350美元的账单。 而你的朋友雇了同一个承包商两个小时,他收到了250美元的账单。 如果有人请你估算的清理污物的费用,你可以假设承包商有一些基本费用,然后按小时收费。 如果这些假设成立,那么给出这两个数据样本,你就已经可以确定承包商的定价结构:每小时100美元,外加50美元上门服务费。 你看,在不经意间,你就已经理解并应用了线性回归的本质。

以上假设有时这是不可取。 例如,如果一些差异是由于两个特征之外的几个因素造成的。 在这些情况下,我们将尝试学习最小化”预测值和实际标签值的差异“的模型。 在本书大部分章节中,我们将关注最小化平方误差损失函数。 正如我们稍后将看到的,这种损失对应于我们的数据被高斯噪声破坏的假设。

2. 分类

虽然回归模型可以很好地解决“有多少?“的问题,但是很多问题并非如此。 例如,一家银行希望在其移动应用程序中添加支票扫描功能。 具体地说,这款应用程序需要能够自动理解照片图像中看到的文本,并将手写字符映射到已知字符之一。 这种“哪一个?”的问题叫做分类(classification)问题。 在分类问题中,我们希望模型能够预测样本属于哪个类别(category,正式称为(class))。 例如,对于手写数字,我们可能有10类,分别数字0到9。 最简单的分类问题是只有两类,我们称之为“二元分类”。 例如,数据集可能由动物图像组成,标签可能是(\mathrm{{猫, 狗}}两类)。 在回归中,我们训练一个回归函数来输出一个数值; 而在分类中,我们训练一个分类器,它的输出即为预测的类别。

然而模型怎么判断得出这种“是”或“不是”的硬分类预测呢? 我们可以试着用概率语言来理解模型。 给定一个样本特征,我们的模型为每个可能的类分配一个概率。 比如,之前的猫狗分类例子中,分类器可能会输出图像是猫的概率为0.9。 0.9这个数字表达什么意思呢? 我们可以这样解释:分类器90%确定图像描绘的是一只猫。 预测类别的概率的大小传达了一种模型的不确定性,后面讨论其他运用不确定性概念的算法。

当我们有两个以上的类别时,我们把这个问题称为多类分类(multiclass classification)问题。 常见的例子包括手写字符识别 (\mathrm{{0, 1, 2, ... 9, a, b, c, ...}})。 与解决回归问题不同,分类问题的常见损失函数被称为交叉熵(cross-entropy),在后面的章节中详细阐述。

请注意,最常见的类别不一定是你将用于决策的类别。 举个例子,假设你在后院发现了一个美丽的蘑菇,如 图2 所示。

现在,请你训练一个毒蘑菇检测分类器,根据照片预测蘑菇是否有毒。 假设这个分类器输出 图 2包含死帽蕈的概率是0.2。 换句话说,分类器80%确定我们的蘑菇不是死帽蕈。 尽管如此,我们也不会吃它,因为我们不值得冒20%的死亡风险。 换句话说,不确定风险的影响远远大于收益。 因此,我们需要将“预期风险”作为损失函数。 也就是说,我们需要将结果的概率乘以与之相关的收益(或伤害)。 在这种情况下,食用蘑菇造成的损失为 (0.2 \times \infty + 0.8 \times 0 = \infty),而丢弃蘑菇的损失为(0.2 \times 0 + 0.8 \times 1 = 0.8)。 我们的谨慎是有道理的:正如任何真菌学家都会告诉我们的那样, 图 2 中的蘑菇实际上是一个死帽蕈。

分类可能变得比二元分类、多类分类复杂得多。 例如,有一些分类任务的变体可以用于寻找层次结构,层次结构假定在许多类之间存在某种关系。 因此,并不是所有的错误都是均等的。 我们宁愿错误地分入一个相关的类别,也不愿错误地分入一个遥远的类别,这通常被称为层次分类(hierarchical classification)。 早期的一个例子是卡尔·林耐人,他们把动物组织分类成等级制。

在动物分类的应用中,把一只狮子狗(一种狗的品种)误认为雪纳瑞(另一种狗的品种)可能不会太糟糕。 但如果我们的模型将狮子狗与恐龙混淆,就滑稽至极了。 层次结构相关性可能取决于你计划如何使用模型。 例如,响尾蛇和乌梢蛇血缘上可能很接近,但如果把响尾蛇误认为是乌梢蛇可能会是致命的。 因为响尾蛇是有毒的,而乌梢蛇是无毒的。

3. 标记问题

有些分类问题很适合于二元分类或多类分类。 例如,我们可以训练一个普通的二元分类器来区分猫和狗。 运用最前沿的计算机视觉的算法,我们可以轻松地训练这个模型。 尽管如此,无论我们的模型有多精确,当分类器遇到新的动物时可能会束手无策。 比如这张“不来梅的城市音乐家”的图像 图 3(这是一个流行的德国童话故事),图中有一只猫,一只公鸡,一只狗,一头驴,背景是一些树。 取决于我们最终想用我们的模型做什么,将其视为二元分类问题可能没有多大意义。 取而代之,我们可能想让模型描绘输入图像的内容,一只猫、一只狗、一头驴,还有一只公鸡。

图1.3.3 一头驴,一只狗,一只猫和一只公鸡

学习预测不相互排斥的类别的问题称为多标签分类(multilabel classification)。 举个例子,人们在技术博客上贴的标签,比如“机器学习”、“技术”、“小工具”、“编程语言”、“Linux”、“云计算”、“AWS”。 一篇典型的文章可能会用5-10个标签,因为这些概念是相互关联的。 关于“云计算”的帖子可能会提到“AWS”,而关于“机器学习”的帖子也可能涉及“编程语言”。

此外,在处理生物医学文献时,我们也会遇到这类问题。 正确地标记文献很重要,有利于研究人员对文献进行详尽的审查。 在国家医学图书馆,一些专业的注释员会检查每一篇在PubMed中被索引的文章,以便将其与Mesh中的相关术语相关联(Mesh是一个大约有28000个标签的集合)。 这是一个十分耗时的过程,注释器通常在归档和标记之间有一年的延迟。 这里,机器学习算法可以提供临时标签,直到每一篇文章都有严格的人工审核。 事实上,近几年来,BioASQ组织已经举办比赛来完成这项工作。

4. 搜索

有时,我们不仅仅希望输出为一个类别或一个实值。 在信息检索领域,我们希望对一组项目进行排序。 以网络搜索为例,我们的目标不是简单的“查询(query)-网页(page)”分类,而是在海量搜索结果中找到用户最需要的那部分。 搜索结果的排序也十分重要,我们的学习算法需要输出有序的元素子集。 换句话说,如果要求我们输出字母表中的前5个字母,返回“A、B、C、D、E”和“C、A、B、E、D”是不同的。 即使结果集是相同的,集内的顺序有时却很重要。

该问题的一种可能的解决方案:首先为集合中的每个元素分配相应的相关性分数,然后检索评级最高的元素。PageRank,谷歌搜索引擎背后最初的秘密武器就是这种评分系统的早期例子,但它的奇特之处在于它不依赖于实际的查询。 在这里,他们依靠一个简单的相关性过滤来识别一组相关条目,然后根据PageRank对包含查询条件的结果进行排序。 如今,搜索引擎使用机器学习和用户行为模型来获取网页相关性得分,很多学术会议也致力于这一主题。

5. 推荐系统[]

另一类与搜索和排名相关的问题是推荐系统(recommender system),它的目标是向给特定用户进行“个性化”推荐。 例如,对于电影推荐,科幻迷和喜剧爱好者的推荐结果页面可能会有很大不同。 类似的应用也会出现在零售产品、音乐和新闻推荐等等。

在某些应用中,客户会提供明确反馈,表达他们对特定产品的喜爱程度。 例如,亚马逊上的产品评级和评论。 在其他一些情况下,客户会提供隐性反馈。 例如,某用户跳过播放列表中的某些歌曲,这可能说明歌曲对此用户不大合适。 总的来说,推荐系统会为“给定用户和物品”的匹配性打分,这个“分数”可能是估计的评级或购买的概率。 由此,对于任何给定的用户,推荐系统都可以检索得分最高的对象集,然后将其推荐给用户。以上只是简单的算法,而工艺生产的推荐系统要先进得多,它会将详细的用户活动和项目特征考虑在内。 推荐系统算法经过调整,可以捕捉一个人的偏好。 比如, 图4 是亚马逊基于个性化算法推荐的深度学习书籍,成功的捕捉了作者的喜好。

亚马逊推荐的深度学习书籍

尽管推荐系统具有巨大的应用价值,但单纯用它作为预测模型仍存在一些缺陷。 首先,我们的数据只包含“审查后的反馈”:用户更倾向于给他们感觉强烈的事物打分。 例如,在五分制电影评分中,会有许多五星级和一星级评分,但三星级却明显很少。 此外,推荐系统有可能形成反馈循环:推荐系统首先会优先推送一个购买量较大(可能被认为更好)的商品,然而目前用户的购买习惯往往是遵循推荐算法,但学习算法并不总是考虑到这一细节,进而更频繁地被推荐。 综上所述,关于如何处理审查、激励和反馈循环的许多问题,都是重要的开放性研究问题。

6. 序列学习

以上大多问题都具有固定大小的输入和产生固定大小的输出。 例如,在预测房价的问题中,我们考虑从一组固定的特征:平方英尺、卧室数量、浴室数量、步行到市中心的时间; 图像分类问题中,输入为固定尺寸的图像,输出则为固定数量(有关每一个类别)的预测概率; 在这些情况下,模型只会将输入作为生成输出的“原料”,而不会“记住”输入的具体内容。

如果输入的样本之间没有任何关系,以上模型可能完美无缺。 但是如果输入是连续的,我们的模型可能就需要拥有“记忆”功能了。 比如,我们该如何处理视频片段呢? 在这种情况下,每个代码段可能由不同数量的帧组成。 通过前一帧的图像,我们可能对后一帧中发生的事情的更有把握。 语言也是如此,机器翻译的输入和输出都为文字序列。

再比如,在医学上序列输入和输出就更为重要。 设想一下,假设我们用一个模型来监控重症监护病人,如果他们在未来24小时内死亡的风险超过某个阈值,这个模型就会发出警报。 我们绝不希望抛弃过去每小时有关病人病史的所有信息,而仅根据最近的测量结果做出预测。

这些问题是序列学习的实例,是机器学习最令人兴奋的应用之一。 序列学习需要摄取输入序列或预测输出序列,或两者兼而有之。 具体来说,输入和输出都是可变长度的序列,例如机器翻译和从语音中转录文本。 虽然不可能考虑所有类型的序列转换,但以下特殊情况值得一提。

标记和解析。这涉及到用属性注释文本序列。 换句话说,输入和输出的数量基本上是相同的。 例如,我们可能想知道动词和主语在哪里,或者,我们可能想知道哪些单词是命名实体。 通常,目标是基于结构和语法假设对文本进行分解和注释,以获得一些注释。 这听起来比实际情况要复杂得多。 下面是一个非常简单的示例,它使用标记来注释一个句子,该标记指示哪些单词引用命名实体(标记为“Ent”,是实体(entity)的简写)。

Tom has dinner in Washington with Sally
Ent---------------------------Ent-------------Ent

自动语音识别。在语音识别中,输入序列是说话人的录音(如图5所示),输出序列是说话人所说内容的文本记录。 它的挑战在于,与文本相比,音频帧多得多(声音通常以8kHz或16kHz采样)。 也就是说,音频和文本之间没有1:1的对应关系,因为数千个样本可能对应于一个单独的单词。 这也是“序列到序列”的学习问题,其中输出比输入短得多。

文本到语音。这与自动语音识别相反。 换句话说,输入是文本,输出是音频文件。 在这种情况下,输出比输入长得多。 虽然人类很容易识判断发音别扭的音频文件,但这对计算机来说并不是那么简单。

机器翻译。 在语音识别中,输入和输出的出现顺序基本相同。 而在机器翻译中,颠倒输入和输出的顺序非常重要。 换句话说,虽然我们仍将一个序列转换成另一个序列,但是输入和输出的数量以及相应序列的顺序大都不会相同。 比如下面这个例子,“错误的对齐”反应了德国人喜欢把动词放在句尾的特殊倾向。

德语: Haben Sie sich schon dieses grossartige Lehrwerk angeschaut?
英语: Did you already check out this excellent tutorial?
错误的对齐: Did you yourself already this excellent tutorial looked-at?

其他学习任务也有序列学习的应用。 例如,确定“用户阅读网页的顺序”是二维布局分析问题。 再比如,对话问题对序列的学习更为复杂:确定下一轮对话,需要考虑对话历史状态以及现实世界的知识…… 如上这些都是热门的序列学习研究领域。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容