Deep Learning的第五章Machine Learning Basics总结。这一章主要讲机器学习的基本概念和组成。
1.学习算法
机器学习算法是指能够从数据中学习的算法。Mitchell给出的机器可以学习简明定义为:对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E中学习。英文原版为:
下面简单介绍经验E、任务T和性能度量P。
任务T
总结一下经常用机器学习解决的任务:
(1)Classification分类:分类任务是将输入确定到k个类别中。例如物体检测是分类任务,要对检测到的物体进行分类。
(2)Classification with missing inputs(缺失输入的分类):缺失输入是指输入向量的部分元素丢失。为解决这种分类任务,学习算法只需定义一个单独的函数将向量映射到输出类别。当一些输入数据丢失时,不使用单独的分类算法来分类,而是让一系列函数学习。每个函数都对应着使用缺失的不同子集将x分类。
(3)Regression(回归):回归任务是指根据一些输入预测一个数值。
(4)Transcription(转录):机器学习系统观察数据的相对无结构化表示,将信息转录成离散的文本格式。例如处理街道号。
(5)Machine translation(机器翻译):将语言翻译成另外一种语言。
(6)Structured output(结构化输出):结构化输出包含所有输出是向量且不同元素之间具有重要信息的任务。结构化输出任务是一个广泛任务,像机器翻译也属于结构化输出任务。
(7)Anomaly detection(异常检测):分析一系列事件或物体,标出不正常或非典型的事件或物体。
(8)Synthesis and sampling(合成与采样):机器学习算法生成和训练集相似的新样本。例如视频游戏可以自动的生成风景或大物体的结构。
(9)Imputation of missing values(缺失值的归责):当输入一个新的样本x,其中部分元素丢失,要求预测丢失值。
(10)Denoising(去噪):要求机器学习算法能够从被干扰的样本中预测干净的样本。
(11)Density estimation or probability mass function estimation(密度估计或概率质量函数估计):机器学习算法要求学习函数,
函数被概率密度函数或概率质量函数干扰。
性能度量P
我们使用性能度量P来衡量机器学习算法学习情况,通常情况下我们感兴趣的是算法对新数据的执行情况。例如分类任务,我们测量的是模型分类的准确率。
经验E
机器学习算法分为监督学习(supervised)和无监督学习(unsupervised)。无监督学习是指体验包含多个特征的数据集,并从中学习数据集结构的有用特性。监督学习算法的数据集也包含特征,且每个样本都被标上标签。
2.Capacity、Overfitting和Underfitting
机器学习的一般步骤是我们通过训练集训练数据,得到训练误差,通过减少训练误差使算法学习,最后我们想要得到的是算法在测试集上表现良好,也就是测试误差小。算法在新数据上表现好的能力叫做泛化(generalization)。由概率分布在数据集上产生训练集和测试集的过程叫做数据生成过程(data-generating process),典型的就是独立同分布假设(i.d.d. assumptions),即每一个样本都是独立的,且训练集和测试集是同分布。欠拟合(Underfitting)是指模型的训练误差较多;过拟合(Overfitting)是指测试误差和训练误差之间的差距很大(一般值测试误差减去训练误差的差值很大)。一个模型的capacity是指模型能够适合各种各样函数的能力。具有较小capacity的模型可能不能很好的拟合训练集;而拥有很大capacity的模型可能完美的拟合训练集的数据而不能泛化到测试集。假设空间(hypothesis space)是指学习算法能够选择的算法的集合。例如线性回归问题的假设空间就是各种线性方程。所以可以通过假设空间来约束模型的capacity。也可以使用奥卡姆剃刀原理(OCCam’s razor)约定:当有一些算法都拟合的很好,选择最简单的一个。
Regularization
正规化(Regularization)是降低测试误差且不改变训练误差的任何改进方法。例如在线性回归问题中,采用weight decay方法来进行正规化:
。其中
是用来控制选择小weight的优先权。
3.Hyperparameters and Validation Sets
超参数(hyoeroarameters)是控制算法行为的参数,超参数的值不会被算法本身更新。有时候有些超参数不能在训练集上更新,因为若根据训练集更新,可能出现过拟合的现象,所以提出了验证集(validation sets)。验证集就是用来指导超参数选择的数据集合。
4.Estimators, Bias and Variance
Point Estimation点估计
点估计是用来提供最好的一些兴趣的预测。一般情况下兴趣量会使单个参数或向量。用了区分,使用符号上面加^表示估计量。点估计的定义可以描述为:
是独立同分布数据点,点估计就是下面函数得到的数据点
。
函数估计(Function Estimation)是指根据输入向量x预测变量y,假设存在函数f(x)可以表达x和y之间的关系,我们就可以假设,其中
表示y不能从x预测的部分。
Bias(偏差)和Variance(方差)的计算
下面书中介绍了估计量的bias和variance的计算方法(这一节内容多,单独写一篇)。
Bias和Variance的权衡
bias和variance测量的是估计量的不同错误。bias测量的是预期值偏离真实值的大小,所以bias大的模型是欠拟合的。而variance测量的是任何特殊数据采样可能造成的与预期值的偏离,所以variance大的模型是过拟合的。所以结合第2节的capacity概念,可以总结得:增大capacity导致增大variance,减少bias。它们之间的关系如下图所示:
(Deep Learning书上的图)
我们经常使用的权衡bias和variance的方法是使用交叉验证(cross-validation)。当然,也可以使用MSE(mean squared error)来计算估计量的偏离:
。
Consistency一致性
一致性关心的是随着训练数据的增加,估计量的变化情况。我们想到得到的是当训练数据增加到一定程度,估计量会收敛到一个是确定的实数值,这就是一致性的概念。
5.极大似然估计和贝叶斯估计
这两节的内容,写成了另外两篇博客:
极大似然估计
贝叶斯估计
6.监督学习算法
监督学习,大致来说是学习的是输入x和对应的输出y。大多数监督学习算法是估计y基于x的概率分布p(y | x)。可以使用极大似然估计来找最优的参数向量。
Kernel trick内核技巧
内核技巧是机器学习算法中常用的技巧。它是将向量先做特征运算(例如升维),然后再做点积运算。公式如下:
。
内核技巧的优势是(1)可以让对于x来说非线性的函数使用凸优化技巧来实现有效的收敛。因为我们可以认为是固定的就对
优化。(2)两个
的点积运算一般是可以高效运算的。
一般最常用的核是高斯核(Gaussian kernel)又被称作径向基函数(radial basis function RBF)。
高斯核可以被用来作为模板匹配(template matching):样本x和对应的y作为一个模板,当和x的欧拉距离小时,高斯核就有很大的概率预测
符合x模板,就会输出y。
Support Vector Machine支持向量机
支持向量机是监督学习中最具影响力的方法之一。支持向量机也是使用线性方程。当线性方程值是正数是,SVM预测产生一个正类,反之是负类。例如SVM的线性方程可以写成:
。
上图中的式二是写成内核形式的,该函数对x来说是非线性的,但是对于来说是线性的。
其它简单的监督学习算法
k-近邻算法(k-nearest neighbors)和决策树算法(decision tree)都常用来监督学习。
7.非监督学习算法
非监督学习简单来说是只观测特征而不观测监督信号的学习方法,也就是说只关注分布的信息而不关注人为注释的样本。非监督学习常用于密度估计,聚类等。经典的非监督学习任务是找到数据最优的表示representation。常用的三类简单表示是:
(1)低维度表示low-dimensional
(2)稀疏表示sparse
(3)独立表示independent
低维度表示是将数据x压缩成尽可能小的表示;稀疏表示是将数据集嵌入到对于大多数输入来说条目是0的表示;独立表示分解数据分布的变体,从而使表示的每个维度独立。这三个标准是互相有关系的,例如低维度表示的元素会出现比原维度的数据更小和更弱的联系性。这是因为降低维度的方法之一是去除冗余。
主成分分析Principal Components Analysis
PCA除了是一种数据分解的方法,还是一种学习数据特征的非监督学习方法。PCA满足低维度和独立表示两个标准。
考虑mxn的设计矩阵X,假设数据的均值是0。那么X的无偏差方差矩阵是:
。
PCA使用线性转换得到使得z的方差是正交的。我们可以将X进行奇异值分解得到:
代入x的方差方程得到:
代入到z的方差方程中得:
通过线性转换得到x到z,最后的结果表示有一个正交协方差举证,代表z的元素是互不相关的。
k-means聚类
k-means聚类是将训练集分成k个不同的聚类。我们可以将这个算法看成是一个k维的向量h,当样本x属于聚类i,则h中的第i个元素等于1,其他元素都是0。这是稀疏表示的一个例子。
k-means算法的实现是先初始化k个不同的质心,然后执行下面两步直到收敛:(1)将每个训练样本指定为距离样本最近的聚类i;(2)计算所有样本的平均值来更新质点。
8.随机梯度下降
随机梯度下降是在梯度下降的基础上提出了分批的概念,是将样本分成小批量的样本,再利用梯度下降算法。
9.构建一个机器学习算法
构建一个机器学习算法的一个简单秘诀是:搜集数据集;代价函数;优化方法和模型。
(图大部分来自deep learning书)