机器学习基础
目录
1 定义概念:
1.1 监督学习和无监督学习:
2 基本术语:
2.1 训练集与测试集:
2.2 验证集:
2.3 k折交叉验证:
2.4 集成学习:
2.4.1 自助法:
3 三要素:
3.1 模型:
3.2 学习准则:
3.2.1 损失函数:
3.2.2 0-1 损失函数:
3.2.3 平方损失函数:
3.2.4 交叉熵损失函数:
3.3 过拟合:
4 优化算法:
4.1 梯度下降法:
4.2 提前停止:
4.3 随机梯度下降法:
4.4 小批量梯度下降法:
1 定义概念:
机器学习(Machine Learning,ML)是指从有限的观测数据中学习(或“猜测”)出具有一般性的规律,并利用这些规律对未知数据进行预测的方法.机器学习是人工智能的一个重要分支,并逐渐成为推动人工智能发展的关键因素.
传统的机器学习主要关注如何学习一个预测模型.一般需要首先将数据表示为一组特征(Feature),特征的表示形式可以是连续的数值、离散的符号或其他形式.然后将这些特征输入到预测模型,并输出预测结果.这类机器学习可以看作浅层学习(Shallow Learning).浅层学习的一个重要特点是不涉及特征学习,其特征主要靠人工经验或特征转换方法来抽取.
在实际任务中使用机器学习模型一般会包含以下几个步骤:
- 数据预处理:对数据的原始形式进行初步的数据清理(比如去掉一些有缺失特征的样本,或去掉一些冗余的数据特征等)和加工(对数值特征进行缩放和归一化等),并构建成可用于训练机器学习模型的数据集。
- 特征提取:从数据的原始特征中提取一些对特定机器学习任务有用的高质量特征.比如在图像分类中提取边缘、尺度不变特征变换(Scale InvariantFeature Transform,SIFT)特征,在文本分类中去除停用词等。
- 特征转换:对特征进行进一步的加工,比如降维和升维. 降维包括特征抽取(Feature Extraction)和特征选择(Feature Selection)两种途径.常用的特征转换方法有主成分分析(Principal Components Analysis,PCA)、主成分分析线性判别分析(Linear Discriminant Analysis,LDA)等。
- 预测:机器学习的核心部分,学习一个函数并进行预测。
机器学习正是这样一门学科,它致力千研究如何通过计算的手段,利用经验来改善系统自身的性能在计算机系统中, “经验 “ 通常以 “数据” 形式存 在,因此,机器学习所研究的主要内容,是关于在计算机上从数据中产生 “模型”的算法,即学习算法。
1.1 监督学习和无监督学习:
监督学习(Supervised Learning)是机器学习的一种类型,其中模型通过学习输入到输出的映射关系来进行训练。在监督学习中,我们有一个由标签或已知结果的数据集进行训练。主要分为回归(Regression)和分类(Classification)。
无监督学习就是让机器自己在没有明确指示的情况下,通过分析数据中的模式和关系来学习和发现知识。主要分为聚类等问题。
2 基本术语:
2.1 训练集与测试集:
从数据中学得模型的过程称为“学习”(learning)或“训练”(training), 这个过程通过执行某个学习算法来完成.训练过程中使用的数据称为“训练数据“(trainingdata),其中每个样本称为一个“训练样本”(trainingsample), 训练样本组成的集合称为“训练集”(trainingset).学得模型对应了关千数据 的某种潜在的规律,因此亦称“假设“(hypothesis);这种潜在规律自身,则称为“真相”或“真实”(ground-truth),学习过程就是为了找出或逼近真相.有时候模型称为 “学习器” (learner),可看作学习算法在给定数据和参数空间上的实例化。
2.2 验证集:
在机器学习中,通常需要评估若⼲候选模型的表现并从中选择模型。这⼀过程称为模型选择。可供选择的候选模型可以是有着不同超参数的同类模型。以神经网络为例,我们可以选择隐藏层的个数,学习率大小和激活函数。为了得到有效的模型,我们通常要在模型选择上下⼀番功夫。从严格意义上讲,测试集只能在所有超参数和模型参数选定后使⽤⼀次。不可以使⽤测试数据选择模型,如调参。由于⽆法从训练误差估计泛化误差,因此也不应只依赖训练数据选择模型。鉴于此,我们可以预留⼀部分在训练数据集和测试数据集以外的数据来进⾏模型选择。这部分数据被称为验证数据集,简称验证集。
2.3 k折交叉验证:
由于验证数据集不参与模型训练,当训练数据不够⽤时,预留⼤量的验证数据显得太奢侈。⼀种改善的⽅法是 K 折交叉验证。在 K 折交叉验证中,我们把原始训练数据集分割成 K 个不重合的⼦数据集,然后我们做K次模型训练和验证。每⼀次,我们使⽤⼀个⼦数据集验证模型,并使⽤其它 K−1 个⼦数据集来训练模型。在这 K 次训练和验证中,每次⽤来验证模型的⼦数据集都不同。最后,我们对这 K 次训练误差和验证误差分别求平均。
k 的值由我们自己来指定,如以下为 5 折交叉验证。
以考试为例,解释上图内容。交叉验证,相当于把平常的作业题和中期的测试题合并成一个题库,然后等分成几份。图中所示,将题库分成了五份,第一行的意思是,先让学生做后面的四份训练题,再用第一份题进行测试。以此类推,再重复四次,每一次相当于重新进行学习。最后,取五次的平均成绩,平均成绩高,说明老师的教学方法好,对应到模型,就是超参数更好。
2.4 集成学习:
在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好)。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型。集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。集成方法是将几种机器学习技术组合成一个预测模型的元算法,以达到减小方差、偏差或改进预测的效果。
2.4.1 自助法:
在统计学中,自助法是一种从给定训练集中有放回的均匀抽样,也就是说,每当选中一个样本,它等可能地被再次选中并被再次添加到训练集中。自助法以自助采样法为基础,给定包含 m 个样本的数据集 D,我们对它进行采样产生数据集 D';每次随机从 D 中挑选一个赝本,将其拷贝放入 D',然后再将该样本放回初始数据集 D 中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行 m 次后,就得到了包含m个样本的数据集 D',这就是自助采样的结果。自助法在数据集较小、难以有效划分训练/测试集时很有用;此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。
3 三要素:
机器学习方法可以粗略地分为三个基本要素:模型、学习准则、优化算法。
3.1 模型:
对于一个机器学习任务,首先要确定其输入空间𝒳 和输出空间𝒴.不同机器学习任务的主要区别在于输出空间不同.在二分类问题中𝒴 = {+1, −1},在𝐶 分类问题中𝒴 = {1, 2, ⋯ , 𝐶},而在回归问题中𝒴 = ℝ。
输入空间𝒳 和输出空间𝒴 构成了一个样本空间.对于样本空间中的样本(𝒙, 𝑦) ∈ 𝒳 × 𝒴,假定𝒙 和𝑦 之间的关系可以通过一个未知的真实映射函数𝑦 =𝑔(𝒙) 或真实条件概率分布𝑝𝑟(𝑦|𝒙)来描述.机器学习的目标是找到一个模型来近 映射函数𝑔 ∶ 𝒳 → 𝒴.似真实映射函数𝑔(𝒙) 或真实条件概率分布𝑝𝑟(𝑦|𝒙)。
由于我们不知道真实的映射函数𝑔(𝒙) 或条件概率分布𝑝𝑟(𝑦|𝒙) 的具体形式,因而只能根据经验来假设一个函数集合ℱ,称为假设空间(Hypothesis Space),然后通过观测其在训练集𝒟 上的特性,从中选择一个理想的假设(Hypothesis)𝑓∗ ∈ ℱ.假设空间ℱ 通常为一个参数化的函数族
ℱ = {𝑓(𝒙; 𝜃)|𝜃 ∈ ℝ𝐷}, (2.5)其中𝑓(𝒙; 𝜃) 是参数为𝜃 的函数,也称为模型(Model),𝐷 为参数的数量。
常见的假设空间可以分为线性和非线性两种,对应的模型𝑓 也分别称为线性模型和非线性模型。
3.2 学习准则:
令训练集𝒟 = {(𝒙(𝑛), 𝑦(𝑛))}𝑁𝑛=1 是由𝑁 个独立同分布的(Independent andIdentically Distributed,IID)样本组成,即每个样本(𝒙, 𝑦) ∈ 𝒳 × 𝒴 是从𝒳 和𝒴的联合空间中按照某个未知分布𝑝𝑟(𝒙, 𝑦) 独立地随机产生的.这里要求样本分布𝑝𝑟(𝒙, 𝑦) 必须是固定的(虽然可以是未知的),不会随时间而变化.如果𝑝𝑟(𝒙, 𝑦)本身可变的话,就无法通过这些数据进行学习。
模型𝑓(𝒙; 𝜃) 的好坏可以通过期望风险(Expected Risk)ℛ(𝜃) 来衡量,其定义为期望风险也经常称为期望错误(ExpectedError).ℛ(𝜃) = 𝔼(𝒙,𝑦)∼𝑝𝑟(𝒙,𝑦)[ℒ(𝑦, 𝑓(𝒙; 𝜃))], (2.11)其中𝑝𝑟(𝒙, 𝑦) 为真实的数据分布,ℒ(𝑦, 𝑓(𝒙; 𝜃)) 为损失函数,用来量化两个变量之间的差异。
3.2.1 损失函数:
损失函数是一个非负实数函数,用来量化模型预测和真实标签之间的差异。
3.2.2 0-1 损失函数:
最直观的损失函数是模型在训练集上的错误率。
3.2.3 平方损失函数:
平方损失函数(Quadratic Loss Function)经常用在预测标签𝑦为实数值的任务中。
3.2.4 交叉熵损失函数:
交叉熵损失函数(Cross-Entropy Loss Function)一般用于分类问题.假设样本的标签𝑦 ∈ {1, ⋯ , 𝐶} 为离散的类别,模型𝑓(𝒙; 𝜃) ∈ [0, 1]𝐶的输出为类别标签的条件概率分布。
Hinge损失函数 对于二分类。
3.3 过拟合:
根据大数定理可知,当训练集大小|𝒟| 趋向于无穷大时,经验风险就趋向于期望风险.然而通常情况下,我们无法获取无限的训练样本,并且训练样本往往是真实数据的一个很小的子集或者包含一定的噪声数据,不能很好地反映全部数据的真实分布.经验风险最小化原则很容易导致模型在训练集上错误率很低,但是在未知数据上错误率很高.这就是所谓的过拟合(Overfitting)。
过拟合问题往往是由于训练数据少和噪声以及模型能力强等原因造成的.为了解决过拟合问题, 一般在经验风险最小化的基础上再引入参数的正则化(Regularization)来限制模型能力,使其不要过度地最小化经验风险。
正则化项也可以使用其他函数,比如ℓ1 范数.ℓ1 范数的引入通常会使得参数有一定稀疏性,因此在很多算法中也经常使用.则化是引入了参数的先验分布,使其不完全依赖训练数据。
4 优化算法:
在确定了训练集𝒟、假设空间ℱ 以及学习准则后,如何找到最优的模型𝑓(𝒙, 𝜃∗) 就成了一个最优化(Optimization)问题。机器学习的训练过程其实就是最优化问题的求解过程。参数与超参数在机器学习中,优化又可以分为参数优化和超参数优化。模型𝑓(𝒙; 𝜃) 中的𝜃 称为模型的参数,可以通过优化算法进行学习。除了可学习的参数𝜃 之外,还有一类参数是用来定义模型结构或优化策略的,这类参数叫作超参数(Hyper-Parameter)。
常见的超参数包括:聚类算法中的类别个数、梯度下降法中的步长、正则化分布的参数、项的系数、神经网络的层数、支持向量机中的核函数等。
超参数的选取一般都是组合优化问题,很难通过优化算法来自动学习。因此,超参数优化是机器学习的一个经验性很强的技术,通常是按照人的经验设定,或者通过搜索的方法对一组超参数组合进行不断试错调整。
4.1 梯度下降法:
为了充分利用凸优化中一些高效、成熟的优化方法,比如共轭梯度、拟牛顿法等,很多机器学习方法都倾向于选择合适的模型和损失函数,以构造一个凸函数作为优化目标.但也有很多模型(比如神经网络)的优化目标是非凸的,只能退而求其次找到局部最优解。
4.2 提前停止:
针对梯度下降的优化算法,除了加正则化项之外,还可以通过提前停止来防止过拟合.
在梯度下降训练的过程中,由于过拟合的原因,在训练样本上收敛的参数,并不一定在测试集上最优.因此,除了训练集和测试集之外,有时也会使用一个验证集(Validation Set)来进行模型择,测试模型在验证集上是否最优. 验证集也叫作开发集在每次迭代时,把新得到的模型𝑓(𝒙; 𝜃)在验证集上进行测试,并计算错误率.(Development Set).如果在验证集上的错误率不再下降,就停止迭代.这种策略叫提前停止(EarlyStop).如果没有验证集,可以在训练集上划分出一个小比例的子集作为验证集。
4.3 随机梯度下降法:
在机器学习中,我们假设每个样本都是独立同分布地从真实数据分布中随机抽取出来的,真正的优化目标是期望风险最小.批量梯度下降法相当于是从真实数据分布中采集𝑁 个样本,并由它们计算出来的经验风险的梯度来近似期望风险的梯度.为了减少每次迭代的计算复杂度,我们也可以在每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数,即为“随机梯度下降法”。
4.4 小批量梯度下降法:
小批量梯度下降法(Mini-Batch Gradient Descent)是批量梯度下降和随机梯度下降的折中.每次迭代时,我们随机选取一小部分训练样本来计算梯度并更新参数,这样既可以兼顾随机梯度下降法的优点,也可以提高训练效率。