机器学习概述

在这里将学到:

  • 什么是机器学习
  • 为什么需要机器学习
  • 机器学习中的基本概念:包括样本、特征、标签、模型、学习算法
  • 机器学习的三要素:模型、评价准则、优化算法
  • 训练集、测试集、样本集的概念

什么是机器学习

通俗地讲, 机器学习 (Machine Learning, ML)让计算机从数据中进行自动学习,得到某种知识,而不是人为指定且明显的去编程。以手写体数字识别为例,我们需要让计算机能自动识别手写的数字,由于每个人的写法都不相同,我们很难总结每个数字的手写体特征,因此设计一套识别算法几乎是一项几乎不可能的任务。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200802172618567.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTU1MDcx,size_16,color_FFFFFF,t_70 =500x300)
在现实生活中,很多问题都类似于手写体数字识别这类问题,比如物体识别、语音识别等。对于这类问题,我们不知道如何设计一个计算机程序来解决。因此,人们开始尝试采用另一种思路,即让计算机“看”大量的样本,并从中学习到一些经验,然后用这些经验来识别新的样本。要识别手写体数字,首先通过人工标注大量的手写体数字图像(即每张图像都通过人工标记了它是什么数字),这些图像作为训练数据,然后通过学习算法自动生成模型,并依靠它来识别新的手写体数字。这和人类学习过程也比较类似,我们教小孩子识别数字也是这样的过程。这种通过数据来学习的方法就称为机器学习的方法。

机器学习自动生成的模型也称为决策函数ff
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200802190614894.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NTU1MDcx,size_16,color_FFFFFF,t_70 =500x300)

机器学习的基本概念

机器学习中的一些基本概念:包括样本、特征、标签、模型、学习算法等。以一个生活中的经验学习为例,假设我们要到市场上购买芒果,但是之前毫无挑选芒果的经验,那么我们如何通过学习来获取这些知识?
在这里插入图片描述

首先,我们从市场上随机选取一些芒果,列出每个芒果的特征 (Feature),包括颜色,大小,形状,产地,品牌,以及我们需要预测的标签 (Label)。标签可以是连续值(比如关于芒果的甜度、水分以及成熟度的综合打分),也可以是离散值(比如好、坏两类标签)。

一个标记好特征以及标签的芒果可以看作是一个样本 (Sample)。一组样本构成的集合称为数据集 (Data Set)。一般将数据集分为两部分:训练集和测试集。 训练集 (Training Set)中的样本是用来训练模型的,也叫训练样本(Training Sample),而测试集 (Test Set)中的样本是用来检验模型好坏的,也叫测试样本(Test Sample)。

特征也可以称为属性(Attribute),样本(Sample),也叫示例(Instance)。

我们用一个 d 维向量 X=[x1,x2,,xd]TX = [x_1, x_2, · · · , x_d]^T 表示一个芒果的所有特征构成的向量,称为特征向量 (Feature Vector),其中每一维表示一个特征。

假设训练集由 N 个样本组成,其中每个样本都是独立同分布 (Identically and Independently Distributed, IID)的,即独立地从相同的数据分布中抽取的,记为
在这里插入图片描述
其中,X(1){X^{ { {\left( 1 \right)}^{ } } } }表示第一个样本的特征向量,y(1){y^{ { {\left( 1 \right)}^{ } } } }第一个样本的标签

给定训练集 DD,我们希望让计算机自动寻找一个函数f(X;θ)f (X; θ) 来建立每个样本特性向量 X 和标签 y 之间的映射。对于一个样本 XX,我们可以通过决策函数来预测其标签的值

y^=f(X;θ)\hat y=f (X; θ)

或标签的条件概率

p(yX)=fy(x;θ)p(y|X)=f_y(x;θ)

其中 θθ 为可学习的参数

通过一个学习算法 (Learning Algorithm) A{\rm A},在训练集上找到一组参数 θθ^∗,使得函数 f(X;θ)f (X; θ^*) 可以近似真实的映射关系。这个过程称为学习 (Learning)或训练 (Training)过程,函数 f(X;θ)f (X; θ) 称为模型 (Model)。

在有些文献中,学习算法也叫做学习器 (Learner)。

下次从市场上买芒果(测试样本)时,可以根据芒果的特征,使用学习到的模型 f(X;θ)f (X; θ^*) 来预测芒果的好坏。为了评价的公正性,我们还是独立同分布地抽取一组样本作为测试集 DD^′,并在测试集中所有样本上进行测试,计算预测结果的准确率。
在这里插入图片描述
其中 I()I (·) 为指示函数, D|D^′| 为测试集大小。(对于分类,一般是求出总测试集样本的个数和预测正确的个数)

下图给出了机器学习的基本概念。对一个预测任务,输入特征向量为 XX,输出标签为 yy,我们选择一个函数 f(X;θ)f (X; θ),通过学习算法 A{\rm A} 和一组训练样本 DD,找到一组最优的参数 θθ^∗,得到最终的模型 f(X;θ)f (X; θ^*)。这样就可以对新的输入 XX 进行预测。
在这里插入图片描述

机器学习的三要素

机器学习方法可以分为三个基本要素:模型、学习准则、优化算法。

模型

输入空间默认为样本的特征空间

在这里插入图片描述

RR为实数,mm为参数的数量,表示有m个实数要学习

线性模型:

线性模型的假设空间为一个参数化的线性函数族

f(X;θ)=WTX+bf (X; θ)=W^T*X+b

其中,XX是特征向量,WW是权重向量,bb是偏置

非线性模型:

在这里插入图片描述
比如,卷积神经网络中的卷积运算本身就是一个可以学习非线性基函数

学习准则

学习准则就是找到可以评价学习成果好坏的准则,如果用函数表示,则成为损失函数

损失函数是一个非负实数函数,,用L(y,f(X;θ))L(y, f (X; θ)) 来表示,用来量化模型预测和真实标签之间的差异。

常见回归损失函数有:
在这里插入图片描述
常见分类损失函数有:交叉熵损失函数 (Cross-Entropy Loss Function)

优化算法

梯度下降

关于验证集的一点补充

将数据分为训练集和测试集对于简单的模型和样本来说就够了,但是对于复杂的模型(如CNN)和样本(如图片),就需要将数据集分类三部分:训练集、验证集、测试集

  • 训练集(Training Set):用来训练模型的
  • 验证集(Validation set):用于对模型的能力进行初步评估,可以作为调参、选择特征等算法相关的选择的依据。
  • 测试集 (Test Set):用来评估模最终模型的泛化能力,不能作为调参、选择特征等算法相关的选择的依据

就好比考试一样,我们平时做的题相当于训练集,测试集相当于最终的考试,我们通过最终的考试来检验我们最终的学习能力,将测试集信息泄露出去,相当于学生提前知道了考试题目,那最后再考这些提前知道的考试题目,当然代表不了什么,你在最后的考试中得再高的分数,也不能代表你学习能力强。所以说,如果通过测试集来调节模型,相当于不仅知道了考试的题目,学生还都学会怎么做这些题了(因为我们肯定会人为的让模型在测试集上的误差最小,因为这是你调整超参数的目的),那再拿这些题考试的话,人人都有可能考满分,但是并没有起到检测学生学习能力的作用。原来我们通过测试集来近似泛化误差,也就是通过考试来检验学生的学习能力,但是由于信息泄露,此时的测试集即考试无任何意义,现实中可能学生的能力很差。所以,我们在学习的时候,老师会准备一些小测试来帮助我们查缺补漏,这些小测试也就是要说的验证集。我们通过验证集来作为调整模型的依据,这样不至于将测试集中的信息泄露。

  • 训练集-----------学生的课本;学生 根据课本里的内容来掌握知识。
  • 验证集------------作业,通过作业可以知道 不同学生学习情况、进步的速度快慢。
  • 测试集-----------考试,考的题是平常都没有见过,考察学生举一反三的能力。

也就是说我们将数据划分训练集、验证集和测试集。在训练集上训练模型,在验证集上评估模型,一旦找到的最佳的参数,就在测试集上最后测试一次,测试集上的误差作为泛化误差的近似。关于验证集的划分可以参考测试集的划分,其实都是一样的,这里不再赘述。

总结

  • 机器学习让计算机从数据中进行自动学习,得到某种知识,而不是人为指定且明显的去编程
  • 之所以机器学习,是因为现实世界的问题都比较复杂,很难通过规则来手工实现
  • 机器学习中的基本概念:包括样本、特征、标签、模型、学习算法
  • 机器学习的三要素:模型、评价准则、优化算法
  • 训练集、测试集、样本集的概念

声明:本文大部分摘录自神邱老师的《神经网络与深度学习》,加上一小部分个人的理解和其他博客的资料,因此将本文声明为转载,本文只做学习和交流使用,如有侵权请联系博主删除。

参考文档
【神经网络与深度学习-邱锡鹏著】
训练集、验证集、测试集以及交验验证的理解
训练集、验证集和测试集