入门
机器学习系统的类型
根据是否监督分:
监督
手动打标签
无监督
在无监督学习中,正如你可能猜到的那样,训练数据是未标记的(见图1-7)。系 统试图在没有老师的情况下进行学习。
半监督
由于标记数据通常既耗时又昂贵,因此你通常会有很多未标记的实例而很少有已标 记的实例。一些算法可以处理一部分已标记的数据。这称为半监督学习
自我监督
例如,假设你真正想要的是一个宠物分类模型:给定一张宠物的照片,模型会告诉 你这只宠物属于什么物种。如果你有大量未标记的宠物照片数据集,则可以先使用 自监督学习来训练一个图像修复模型。如果模型表现良好,则它应该能够区分不同 的宠物种类:当它修复一张蒙着脸的猫的图像时,它必须知道不要添加狗的脸。假 设你的模型架构允许(大多数神经网络架构都允许),那么你就可以调整模型,使 它能预测宠物种类而不是修复图像。昀后一步是在已标记的数据集上微调模型:模 型已经知道猫、狗和其他宠物的样子,因此只需要这个步骤,模型就可以学习它已 知的物种和我们期望从中得到的标签之间的映射。
其他
是否增量学习(强化学习)
在线学习
通过以单独的数据或小批量的小组数据方式循序地向系统提供数据 实例来对系统进行增量训练。
批量学习
定期 根据最新的数据重新训练模型。
学习类型
基于实例的学习
昀司空见惯的学习方式可能就是简单地背诵,这称为基于实例的学习:系统用心学习样例,然后通过使用相似性度量将它们与学 习到的样例(或它们的子集)进行比较来泛化到新实例
基于模型的学习
对一组样例进行泛化的另一种方法是为这些样例构建一个模型,然后使用该模型进 行预测。这称为基于模型的学习
如何定义机器学习?
机器学习的核心在于构建能够从数据中学习的系统。学习意味着在给定性能指标的情况下,不断提升自身在某项任务上的表现
机器学习在哪些问题上表现突出,你能说出四类应用吗?
- 机器学习非常适合解决我们没有算法解决方案的复杂问题,可以取代冗长的手工调整规则列表,构建能够适应不断变化的环境的系统,最终还可以帮助人类学习(例如,数据挖掘)。
什么是被标记的训练集?
带标签的训练集是指包含每个实例的期望解决方案(即标签)的训练集
最常见的两种监督学习任务是什么?
最常见的两种监督学习任务是回归和分类。
你能说出四种常见的无监督学习任务吗?
常见的无监督任务包括聚类、可视化、降维和关联规则学习。
你会使用什么类型的算法让机器人在各种未知地形中行走?
如果我们想让机器人学习在各种未知地形上行走,强化学习可能是最佳选择,因为这正是强化学习通常要解决的问题类型。虽然也可以将这个问题表述为监督学习或半监督学习问题,但这不太自然
你会使用什么类型的算法将客户分成多个组?
如果您不知道如何定义客户群体,可以使用聚类算法(无监督学习)将客户分成若干相似客户群。但是,如果您知道想要划分哪些群体,则可以将每个群体的多个样本输入到分类算法(监督学习)中,算法会将所有客户分类到相应的群体中
你会把垃圾邮件检测问题定义为监督学习问题还是无监督学习问题?
垃圾邮件检测是一个典型的监督学习问题:算法会收到许多电子邮件及其标签(垃圾邮件或非垃圾邮件)。
什么是在线学习系统?
与批量学习系统不同,在线学习系统可以进行增量式学习。这使其能够快速适应不断变化的数据和自主系统,并能处理海量数据进行训练
什么是核外学习?
核外算法可以处理计算机主内存无法容纳的大量数据。核外学习算法将数据分割成小批量数据,并使用在线学习技术从这些小批量数据中学习
什么类型的算法依赖于相似性度量来进行预测?
基于实例的学习系统会记住训练数据;然后,当给定一个新实例时,它会使用相似性度量来找到最相似的已学习实例,并使用这些实例进行预测
模型参数和模型超参数有什么区别?
模型包含一个或多个模型参数,这些参数决定了模型对新实例的预测结果(例如,线性模型的斜率)。学习算法试图找到这些参数的最优值,使模型能够很好地泛化到新实例。超参数是学习算法本身的参数,而不是模型的参数(例如,要应用的正则化强度)
基于模型的算法搜索什么?它们昀常用的成功策略是什么?它们如何做出预 测?
基于模型的学习算法旨在寻找模型参数的最优值,使模型能够很好地泛化到新的实例。我们通常通过最小化一个代价函数来训练这类系统。该代价函数衡量系统对训练数据的预测能力,如果模型经过正则化,则还会加上一个针对模型复杂度的惩罚项。为了进行预测,我们将新实例的特征输入到模型的预测函数中,并使用学习算法找到的参数值
你能说出机器学习中的四个主要挑战吗?
机器学习面临的主要挑战包括:数据不足、数据质量差、数据不具代表性、特征信息量不足、模型过于简单导致训练数据拟合不足,以及模型过于复杂导致数据拟合过度
如果你的模型在训练数据上表现很好,但对新实例的泛化能力很差,这是怎么 回事?你能说出三种可能的解决方案吗?
如果一个模型在训练数据上表现优异,但泛化到新实例时表现不佳,则该模型很可能过拟合了训练数据(或者我们只是运气好,训练数据表现极佳)。解决过拟合的可能方法包括:获取更多数据、简化模型(选择更简单的算法、减少参数或特征的数量、或对模型进行正则化),以及降低训练数据中的噪声
什么是测试集?为什么要使用它?
在模型投入生产环境之前,会使用测试集来估计模型在新实例上产生的泛化误差
验证集的目的是什么?
验证集用于比较模型。它可以帮助选择最佳模型并调整超参数
什么是train-dev集?什么时候需要它?如何使用?
当训练数据与验证集和测试集(模型投入生产环境后应尽可能接近最终使用的数据)中的数据存在不匹配风险时,可以使用训练-开发集。训练-开发集是训练集中预留的一部分(模型不使用该部分进行训练)。模型使用训练集的其余部分进行训练,并在训练-开发集和验证集上进行评估。如果模型在训练集上表现良好,但在训练-开发集上表现不佳,则模型可能过拟合训练集。如果模型在训练集和训练-开发集上均表现良好,但在验证集上表现不佳,则训练数据与验证集+测试集之间可能存在显著的数据不匹配,此时应尝试改进训练数据,使其更接近验证集+测试集
如果使用测试集来调整超参数会出现什么问题?
如果使用测试集调整超参数,则有过度拟合测试集的风险,并且所测量的泛化误差会过于乐观(您可能会启动一个性能比预期更差的模型)