样本类别或者目标是已知的
样本只有特征,无已知的类别或者目标,降维和聚类都是众所周知的无监督学习方法。
自监督学习是监督学习的一个特例,它与众不同,值得单独归为一类。自监督学习是没有人工标注的标签的监督学习,你可以将它看作没有人类参与的监督学习。标签仍然存在(因为总要有什么东西来监督学习过程),但它们是从输入数据中生成的,通常是使用启发式算法生成的。
(启发式算法解释:https://www.cnblogs.com/bkylry/p/5706358.html
https://blog.csdn.net/zj15527620802/article/details/82121414)
从广义上说,大部分涉及动态系统的决策学习过程都可以看成是一种强化学习。强化学习的核心任务是,学习一个从状态空间S到动作空间A的映射,最大化累积受益。常用的强化学习算法有Q-Learning、策略梯度,以及演员评判家算法(Actor-Critic)等。
分类和回归术语表
分类和回归都包含很多专业术语。前面你已经见过一些术语,在后续章节会遇到更多。
这些术语在机器学习领域都有确切的定义,你应该了解这些定义。
‰ 样本(sample)或输入(input):进入模型的数据点。
‰ 预测(prediction)或输出(output):从模型出来的结果。
‰ 目标(target):真实值。对于外部数据源,理想情况下,模型应该能够预测出目标。
‰ 预测误差(prediction error)或损失值(loss value):模型预测与目标之间的距离。
‰ 类别(class):分类问题中供选择的一组标签。例如,对猫狗图像进行分类时,“狗”和“猫”就是两个类别。
‰ 标签(label):分类问题中类别标注的具体例子。比如,如果 1234 号图像被标注为包含类别“狗”,那么“狗”就是1234 号图像的标签。
‰ 真值(ground-truth)或标注(annotation):数据集的所有目标,通常由人工收集。
‰ 二分类(binary classification):一种分类任务,每个输入样本都应被划分到两个互斥的类别中。
‰ 多分类(multiclass classification):一种分类任务,每个输入样本都应被划分到两个以上的类别中,比如手写数字分类。
‰ 多标签分类(multilabel classification):一种分类任务,每个输入样本都可以分配多个标签。举个例子,如果一幅图像里可能既有猫又有狗,那么应该同时标注“猫”标签和“狗”标签。每幅图像的标签个数通常是可变的。
‰ 标量回归(scalar regression):目标是连续标量值的任务。预测房价就是一个很好的例子,不同的目标价格形成一个连续的空间。
‰ 向量回归(vector regression):目标是一组连续值(比如一个连续向量)的任务。如果对多个值(比如图像边界框的坐标)进行回归,那就是向量回归。
‰ 小批量(mini-batch)或批量(batch):模型同时处理的一小部分样本(样本数通常为8~128)。样本数通常取2 的幂,这样便于GPU 上的内存分配。训练时,小批量
用来为模型权重计算一次梯度下降更新。
机器学习的目的是得到可以泛化(generalize)的模型,即在前所未见的数据上表现很好的模型,而过拟合则是核心难点。
评估模型的重点是将数据划分为三个集合:训练集、验证集和测试集。在训练数据上训练模型,在验证数据上评估模型。一旦找到了最佳参数,就在测试数据上最后测试一次。
你可能会问,为什么不是两个集合:一个训练集和一个测试集?在训练集上训练模型,然后在测试集上评估模型。这样简单得多!
原因在于开发模型时总是需要调节模型配置,比如选择层数或每层大小[这叫作模型的超参数,以便与模型参数(即权重)区分开]。这个调节过程需要使用模型在验证数据上的性能作为反馈信号。这个调节过程本质上就是一种学习:在某个参数空间中寻找良好的模型配置。因此,如果基于模型在验证集上的性能来调节模型配置,会很快导致模型在验证集上过拟合,即使你并没有在验证集上直接训练模型也会如此。
将数据划分为训练集、验证集和测试集可能看起来很简单,但如果可用数据很少,还有几种高级方法可以派上用场。我们先来介绍三种经典的评估方法:简单的留出验证、K 折验证,以及带有打乱数据的重复K 折验证。
1. 简单的留出验证
留出一定比例的数据作为测试集。在剩余的数据上训练模型,然后在测试集上评估模型。
如前所述,为了防止信息泄露,你不能基于测试集来调节模型,所以还应该保留一个验证集。
2. K 折验证
K 折验证(K-fold validation)将数据划分为大小相同的K 个分区。对于每个分区i,在剩余的K-1 个分区上训练模型,然后在分区i 上评估模型。最终分数等于K 个分数的平均值。对于不同的训练集- 测试集划分,如果模型性能的变化很大,那么这种方法很有用。与留出验证一样,这种方法也需要独立的验证集进行模型校正。
3. 带有打乱数据的重复K 折验证
如果可用的数据相对较少,而你又需要尽可能精确地评估模型,那么可以选择带有打乱数据的重复K 折验证(iterated K-fold validation with shuffling)
选择模型评估方法时,需要注意以下几点。
数据代表性
时间箭头
数据冗余
数据预处理的目的是使原始数据更适于用神经网络处理,包括向量化、归一化、处理缺失值和特征提取。
机器学习的根本问题是优化和泛化之间的对立。优化是指调节模型以在训练数据上得到最佳性能(即机器学习中的学习),而泛化是指训练好的模型在前所未见的数据上的性能好坏。机器学习的目的当然是得到良好的泛化,但你无法控制泛化,只能基于训练数据调节模型。
为了防止模型从训练数据中学到错误或无关紧要的模式,最优解决方法是获取更多的训练数据
如果无法获取更多数据,次优解决方法是调节模型允许存储的信息量,或对模型允许存储的信息加以约束这种降低过拟合的方法叫作正则化。
深度学习模型通常都很擅长拟合训练数据,但真正的挑战在于泛化,而不是拟合。
一种常见的降低过拟合的方法就是强制让模型权重只能取较小的值,从而限制模型的复杂度,这使得权重值的分布更加规则(regular)。这种方法叫作权重正则化。
‰ L1 正则化(L1 regularization):添加的成本与权重系数的绝对值[权重的 L1 范数(norm]成正比。
‰ L2 正则化(L2 regularization):添加的成本与权重系数的平方(权重的L2 范数)成正比。神经网络的L2 正则化也叫权重衰减(weight decay)。不要被不同的名称搞混,权重衰减与L2 正则化在数学上是完全相同的。
dropout 是神经网络最有效也最常用的正则化方法之一,它是由多伦多大学的Geoffrey Hinton和他的学生开发的。对某一层使用dropout,就是在训练过程中随机将该层的一些输出特征舍弃(设置为0)。假设在训练过程中,某一层对给定输入样本的返回值应该是向量[0.2, 0.5,1.3, 0.8, 1.1]。使用dropout 后,这个向量会有几个随机的元素变成0,比如[0, 0.5,1.3, 0, 1.1]。dropout 比率(dropout rate)是被设为0 的特征所占的比例,通常在0.2~0.5范围内。测试时没有数据被舍弃,而该层的输出值需要按dropout 比率缩小,因为这时训练集合有更多的单元被激活,需要加以平衡。
总结一下,防止神经网络过拟合的常用方法包括:
‰ 获取更多的训练数据
‰ 减小网络容量
‰ 添加权重正则化
‰ 添加 dropout
本节将介绍一种可用于解决任何机器学习问题的通用模板。这一模板将你在本章学到的这些概念串在一起:问题定义、评估、特征工程和解决过拟合。
请记住,机器学习只能用来记忆训练数据中存在的模式。你只能识别出曾经见过的东西。在过去的数据上训练机器学习来预测未来,这里存在一个假设,就是未来的规律与过去相同。但事实往往并非如此。
对于平衡分类问题(每个类别的可能性相同),精度和接收者操作特征曲线下面积(area under the receiver operating characteristic curve,ROC/AUC)是常用的指标。对于类别不平衡的问题,你可以使用准确率和召回率。(ROC/AUC解释参考https://segmentfault.com/a/1190000016686335)
留出验证集。数据量很大时可以采用这种方法。
K折交叉验证。如果留出验证的样本量太少,无法保证可靠性,那么应该选择这种方法。
重复的 K 折验证。如果可用的数据很少,同时模型评估又需要非常准确,那么应该使用这种方法。
只需选择三者之一。大多数情况下,第一种方法足以满足要求
机器学习中无处不在的对立是优化和泛化的对立,理想的模型是刚好在欠拟合和过拟合的界线上,在容量不足和容量过大的界线上。为了找到这条界线,你必须穿过它
这一步是最费时间的:你将不断地调节模型、训练、在验证数据上评估(这里不是测试数据)、再次调节模型,然后重复这一过程,直到模型达到最佳性能。你应该尝试以下几项。
‰ 添加 dropout。
‰ 尝试不同的架构:增加或减少层数。
‰ 添加 L1 和 / 或 L2 正则化。
‰ 尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置。
‰( 可选)反复做特征工程:添加新特征或删除没有信息量的特征。
本章小结
‰ 定义问题与要训练的数据。收集这些数据,有需要的话用标签来标注数据。
‰ 选择衡量问题成功的指标。你要在验证数据上监控哪些指标?
‰ 确定评估方法:留出验证? K折验证?你应该将哪一部分数据用于验证?
‰ 开发第一个比基准更好的模型,即一个具有统计功效的模型。
‰ 基于模型在验证数据上的性能来进行模型正则化与调节超参数。许多机器学习研究往往只关注这一步,但你一定要牢记整个工作流程。