各种机器学习问题
# 动手学机器学习笔记2
1 监督学习
监督学习(supervised learning)擅长在“给定输入特征”的情况下预测标签。 每个“特征-标签”对都称为一个样本(example)。 有时,即使标签是未知的,样本也可以指代输入特征。 我们的目标是生成一个模型,能够将任何输入特征映射到标签,即预测。现实中,在工业中大部分机器学习的成功应用都是监督学习。 这是因为在一定程度上,许多重要的任务可以清晰地描述为:在给定一组特定的可用数据的情况下,估计未知事物的概率。非正式地说,监督学习的学习过程如下所示。 首先,从已知大量数据样本中随机选取一个子集,为每个样本获取基本的真实标签。 有时,这些样本已有标签(例如,患者是否在下一年内康复?); 有时,我们可能需要人工标记数据(例如,将图像分类)。 这些输入和相应的标签一起构成了训练数据集。 随后,我们选择有监督的学习算法,它将训练数据集作为输入,并输出一个“完成学习模型”。 最后,我们将之前没见过的样本特征放到这个“完成学习模型”中,使用模型的输出作为相应标签的预测。 整个监督学习过程在图1中绘制。

图1.1 监督学习
综上所述,即使使用简单的描述“给定输入特征的预测标签”,监督学习也可以采取多种形式的模型,并且需要大量不同的建模决策,这取决于输入和输出的类型、大小和数量。
1.1 回归
回归(regression)是最简单的监督学习任务之一。 比方说,假设我们有一组房屋销售数据表格,其中每行对应于每个房子,每列对应于一些相关的属性,例如房屋的面积、卧室的数量、浴室的数量以及到镇中心的步行分钟数等等。 对机器学习来说,每个样本即为一个特定的房屋,相应的特征向量将是表中的一行。 生活中的许多问题都可归类于回归问题。 比如,预测用户对一部电影的评分可以被认为是一个回归问题。总而言之,判断回归问题的一个很好的经验法则是,任何有关“多少”的问题很可能就是回归问题。比如:
-
这个手术需要多少小时?
-
在未来六小时,这个镇会有多少降雨量?
1.2. 分类
虽然回归模型可以很好地解决“有多少?“ 的问题,但是很多问题并非如此。 例如,一家银行希望在其移动应用程序中添加支票扫描功能。 具体地说,这款应用程序需要能够自动理解照片图像中看到的文本,并将手写字符映射到已知字符之一。 这种“哪一个?”的问题叫做分类(classification)问题。 在分类问题中,我们希望模型能够预测样本属于哪个类别(category,正式称为类(class))。最简单的分类问题是只有两类,我们称之为“二元分类”。 例如,数据集可能由动物图像组成,标签可能是{猫,狗}两类{猫,狗}两类。 当我们有两个以上的类别时,我们把这个问题称为多类分类(multiclass classification)问题。 常见的例子包括手写字符识别 {0,1,2,...9,a,b,c,...}。 在回归中,我们训练一个回归函数来输出一个数值; 而在分类中,我们训练一个分类器,它的输出即为预测的类别。与解决回归问题不同,分类问题的常见损失函数被称为交叉熵(cross-entropy)。
1.3. 标记问题
标记问题可以认为是分类问题的一个推广。有些分类问题很适合于二元分类或多类分类。 例如,我们可以训练一个普通的二元分类器来区分猫和狗。可是,当分类器遇到新的动物时可能会束手无策。比如这张“不来梅的城市音乐家”的图像图1.2(这是一个流行的德国童话故事),图中有一只猫,一只公鸡,一只狗,一头驴,背景是一些树。 将其视为二元分类问题可能没有多大意义。 取而代之,我们可能想让模型描绘输入图像的内容,一只猫、一只狗、一头驴,还有一只公鸡。标记问题的输入是一个观测序列,输出的是一个标记序列或状态序列。也就是说,分类问题的输出是一个值,而标注问题输出是一个向量,向量的每个值属于一种标记类型。

图 1.2 不来梅的城市音乐家
标注常用的机器学习方法有:隐性马尔可夫模型、条件随机场。自然语言处理中的词性标注(part of speech tagging)就是一个典型的标注问题:给定一个由单词组成的句子,对这个句子中的每一个单词进行词性标注,即对一个单词序列预测其对应的词性标记序列。此外,是一个多标签分类问题,学习预测不相互排斥的类别的问题称为多标签分类(multilabel classification)。一些实际应用中,常常会出现一个示例同时属于多个类别(比如:一张电影海报图片可能会同时有科幻、动作、喜剧等多个标签),标签之间并非完全独立,标签之间存在一定的依赖关系或者互斥关系。因此,多标签分类相对于传统的单标签分类任务而言更加复杂,难以分析。
1.4. 搜索
有时,我们不仅仅希望输出为一个类别或一个实值。 在信息检索领域,我们希望对一组项目进行排序。网络搜索为例,目标不是简单的“查询(query)-网页(page)”分类,而是在海量搜索结果中找到用户最需要的那部分。比如搜索需要的结果有a,b,c,d 输出结果呈现出a,b,c,d和c,d,a,b是不一样的。所以学习算法需要输出有序的元素子集。一种可能的解决方案:首先为集合中的每个元素分配相应的相关性分数,然后检索评级最高的元素。PageRank,谷歌搜索引擎背后最初的秘密武器就是这种评分系统的早期例子。
1.5. 推荐系统
另一类与搜索和排名相关的问题是推荐系统(recommender system),它的目标是向给特定用户进行“个性化”推荐。 在某些应用中,客户会提供明确反馈,表达他们对特定产品的喜爱程度。 例如,亚马逊上的产品评级和评论。 在其他一些情况下,客户会提供隐性反馈。 例如,某用户跳过播放列表中的某些歌曲,这可能说明歌曲对此用户不大合适。 总的来说,推荐系统会为“给定用户和物品”的匹配性打分,这个“分数”可能是估计的评级或购买的概率。不过单纯用它作为预测模型仍存在一些缺陷。 首先,我们的数据只包含“审查后的反馈”。用户更倾向于给他们感觉强烈的事物打分。 例如,在五分制电影评分中,有许多五星级和一星级评分,三星级却很少。 此外,推荐系统有可能形成反馈循环:推荐系统首先会优先推送一个购买量较大(可能被认为更好)的商品,然而目前用户的购买习惯往往是遵循推荐算法,但学习算法并不总是考虑到这一细节,进而更频繁地被推荐(简单来说就是卷了)。 综上所述,关于如何处理审查、激励和反馈循环的许多问题,都是重要的开放性研究问题。
1.6. 序列学习
以上大多问题都是固定大小的输入和产生固定大小的输出。例如,预测房价的问题,图像分类问题; 这些分类学习,模型只会将输入作为生成输出的“原料”,而不会“记住”输入的具体内容。换而言之输入的样本之间没有任何关系,以上模型可能完美无缺。 但是如果输入是连续的,我们的模型可能就需要拥有“记忆”功能了。 比如,我们该如何处理视频片段呢? 在这种情况下,每个代码段可能由不同数量的帧组成。 通过前一帧的图像,我们可能对后一帧中发生的事情的更有把握。 语言也是如此,机器翻译的输入和输出都为文字序列。再比如,在医学上序列输入和输出就更为重要。 设想一下,假设我们用一个模型来监控重症监护病人,如果他们在未来24小时内死亡的风险超过某个阈值,这个模型就会发出警报。 我们绝不希望抛弃过去每小时有关病人病史的所有信息,而仅根据最近的测量结果做出预测。
这些问题是序列学习的实例,是机器学习最令人兴奋的应用之一。 序列学习需要摄取输入序列或预测输出序列,或两者兼而有之。 具体来说,输入和输出都是可变长度的序列,例如机器翻译和从语音中转录文本。 虽然不可能考虑所有类型的序列转换,但以下特殊情况值得一提。
标记和解析。这涉及到用属性注释文本序列。 换句话说,输入和输出的数量基本上是相同的。如下示例,它使用标记来注释一个句子,该标记指示哪些单词引用命名实体(标记为“Ent”,即entity),呈一一对应关系。
![]()
自动语音识别。在语音识别中,输入序列是说话人的录音(如 图1. 所示),输出序列是说话人所说内容的文本记录。音频与识别出的文本是不对等的。
图1.3 -D-e-e-p- L-ea-r-ni-ng- 录音中
文本到语音。这与自动语音识别相反。 换句话说,输入是文本,输出是音频文件。 在这种情况下,输出比输入长得多。
机器翻译。 在语音识别中,输入和输出的出现顺序基本相同。 而在机器翻译中,颠倒输入和输出的顺序非常重要。
2. 无监督学习
到目前为止,所有的例子都与监督学习有关,即我们向模型提供大量的数据集:而每个样本包含特征和相应标签值。 但是机器学习还有另一类问题,数据集是有,但样本不包含标签等目标值。我们称这类数据中不含有“目标”的机器学习问题为无监督学习(unsupervised learning)。对于无监督学习可以回答什么样的问题呢?我们可以看看下面的例子:
-
聚类(clustering)问题:没有标签的情况下,我们是否能给数据分类呢?比如,给定一组照片,我们能把它们分成风景照片、狗、婴儿、猫和山峰的照片吗?同样,给定一组用户的网页浏览记录,我们能否将具有相似行为的用户聚类吗?
-
主成分分析(principal component analysis)问题:我们能否找到少量的参数来准确地捕捉数据的线性相关属性?比如,一个球的运动轨迹可以用球的速度、直径和质量来描述。再比如,裁缝们已经开发出了一小部分参数,这些参数相当准确地描述了人体的形状,以适应衣服的需要。另一个例子:在欧几里得空间中是否存在一种(任意结构的)对象的表示,使其符号属性能够很好地匹配?这可以用来描述实体及其关系,例如“罗马” −− “意大利” ++ “法国” == “巴黎”。
-
因果关系(causality)和概率图模型(probabilistic graphical models)问题:我们能否描述观察到的许多数据的根因?例如,如果我们有关于房价、污染、犯罪、地理位置、教育和工资的人口统计数据,我们能否简单地根据经验数据发现它们之间的关系?
-
生成对抗性网络(generative adversarial networks):为我们提供一种合成数据的方法,甚至像图像和音频这样复杂的结构化数据。潜在的统计机制是检查真实和虚假数据是否相同的测试,它是无监督学习的另一个重要而令人兴奋的领域。
3 与环境互动
到目前为止,不管是监督学习还是无监督学习,我们都会预先获取大量数据,然后启动模型,不再与环境交互(这里环境指的是数据的来源地,脱离环境即源数据的不再变化)。 这里所有学习都是在算法与环境断开后进行的,被称为离线学习(offline learning)。 对于监督学习,从环境中收集数据的过程类似于图1.4

图1.4 从环境中为监督学习收集数据
1.3.4. 强化学习
如果你对使用机器学习开发与环境交互并采取行动感兴趣,那你可以专注于强化学习(reinforcement learning)。 这可能包括应用到机器人、对话系统,甚至开发视频游戏的人工智能(AI)。 深度强化学习(deep reinforcement learning)将深度学习应用于强化学习的问题,是非常热门的研究领域。 突破性的深度Q网络(Q-network)在雅达利游戏中仅使用视觉输入就击败了人类, 以及 AlphaGo 程序在棋盘游戏围棋中击败了世界冠军,是两个突出强化学习的例子。 在强化学习问题中,agent (agent指能自主活动的软件或者硬件实体)在一系列的时间步骤上与环境交互。 在每个特定时间点,agent 从环境接收一些观察(observation),并且必须选择一个动作(action),然后通过某种机制(有时称为执行器)将其传输回环境,最后 agent 从环境中获得奖励(reward)。 此后新一轮循环开始,agent 接收后续观察,并选择后续操作,依此类推。 强化学习的过程在 图1.3.7 中进行了说明。 请注意,强化学习的目标是产生一个好的策略(policy)。 强化学习 agent 的选择的”动作“受策略控制,即一个从环境观察映射到行动的功能。
图1.5 强化学习和环境之间的相互作用
强化学习框架的通用性十分强大。 例如,我们可以将任何监督学习问题转化为强化学习问题。 假设我们有一个分类问题,我们可以创建一个强化学习agent,每个分类对应一个“动作”。 然后,我们可以创建一个环境,该环境给予agent的奖励。 这个奖励与原始监督学习问题的损失函数是一致的。在任何时间点上,强化学习agent可能知道一个好的策略,但可能有许多更好的策略从未尝试过的。 强化学习agent必须不断地做出选择:是应该利用当前最好的策略,还是探索新的策略空间(放弃一些短期回报来换取知识)。一般的强化学习问题是一个非常普遍的问题。 agent的动作会影响后续的观察,而奖励只与所选的动作相对应。而环境可以是完整观察到的,也可以是部分观察到的。 学者们研究了一些特殊情况下的强化学习问题。当环境可被完全观察到时,我们将强化学习问题称为马尔可夫决策过程(markov decision process)。 当状态不依赖于之前的操作时,我们称该问题为上下文赌博机(contextual bandit problem)。 当没有状态,只有一组最初未知回报的可用动作时,这个问题就是经典的多臂赌博机(multi-armed bandit problem)。
浙公网安备 33010602011771号