人工智能是最初始的理论体系,是一门科学。
机器学习是人工智能的计算方法,包含Logistic,SVM,决策树,贝叶斯方法等。
表示学习是机器学习中研究如何得到一个好的表示,从而使后续的模型学习更容易,浅层自编码机就是其中的一种方法。
深度学习目前我们进行大数据机器学习的主要方法,多层感知机就是深度学习的一种,还包括卷积神经网络,深度循环网络,深度Q网络等。
人工智能可以大致分为3种学习方法
一种是基于规则的系统,另一种经典的机器学习方法或系统,还有一种是表示学习方法或系统。
1.基于规则的系统
它没有可学习的模块,输入的数据通过手工设计的程序,直接获取特征然后输出,
2.经典的机器学习方法或系统
数据输入后通过手工设计获得的特征,然后经过特征映射获得输出。
3.表示学习方法或系统
分为两类,一类是非深度学习方法,一类是深度学习方法。基于非深度学习方法是通过特征获得的,然后通过特征映射输出;而基于深度学习方法,首先学习得到简单的特征,然后通过附加的层去学习得到更多抽象的特征,最后通过特征映射输出结果。
机器学习是数据挖掘的重要工具。数据挖掘大体上看可以认为是机器学习和数据库技术的交叉学科,它主要利用机器学习技术来分析海量数据,利用数据库技术来管理海量数据。机器学习涉及的方面更宽,常用在数据挖掘上的方法通常只是数据学习,其自身还包括例如强化学习等方法。
我们可以把机器学习看做这样一个机器,我们倒入不同的数据,然后通过模型学习,在一些假设的条件下,我们获得对数据的预测输出。
机器学习是统计学习减去模型和假设的检验。
统计学和机器学习也有各自更关心的领域,统计学关注自身,例如生存分析,空间分析,多测试;而机器学习关注在线学习、流行学习和主动学习等。
与日俱增的神经网络规模
横轴是年代,纵轴是神经元的数量,图的右侧是对应神经元的生物,如蛔虫,水蛭,蚂蚁,青蛙,一直到人类。
第1个图标就是最初的感知机,
第4个图标是早期的后向传播网络,
第5个图标是用于语音识别的循环神经网络
第8个图标就是Lecun所提出的Inet
第11个图标是GPU加速的卷积神将网络
第18个图标是多GPU加速的卷积神将网络
第20个图标就是GoogLeNet神经网络
而目前的Resnet是最复杂的神经网络之一,大数据机器学习的另一个特征是模型性能的不断提升,正如我们之前提到的深度学习模型在识别和越策的任务上,它的精确度不断提高。深度学习的引入使得语音识别技术的错误率降低了一倍,深度网络在行人检测和图像分割中也取得了显著的成效。
机器学习的另一个成就是在强化学习,AlphaGo就是基于该技术Deepmind的团队基于深度学的强化学习技术,使得机器可以自己玩Atari游戏。
大数据机器学习的一个特征是GPU的出现;
大数据机器学习的另一个特征是深度学习的技术研发必须依赖于某个特定的深度学习框架,这些框架包括Tensorflow,pytorch,caffe,CNTK,Kreas,Mxnet等,这些框架各有特点。目前由google主导的Tensorflow具有最大的用户量,而在学术界pytorch\caffe也具有非常高的人气。
我们看到一些关于橘子和橙子的数据集合,这些记录的集合称为数据集。每条记录是关于一个橘子或橙子的描述称为示例或样本。记录中的形状、剥皮、味道称为属性或特征。圆形、难、易、甜为各自属性或特征的属性值。如果把形状、味道、剥皮设为三个坐标轴,那么它们长成一个描述橘子或橙子的属性空间或样本空间,每个橘子或橙子都可以在属性空间中找到自己的坐标位置,我们把每个示例也称为特征向量
D={x1,x2,…,xm}是m个示例的数据集
xi=(xi1,xi2,…,xid)是d维样本空间X的一个特征向量,d为样本空间的维数。。
从数据中学得模型的数据称为学习或者训练这个过程通过某个学习算法来实现,训练过程中使用的数据称为训练数据,其中每个样本称为一个训练样本。训练样本组成的集合称为训练集。
例如,橙子或橘子称为标记,拥有了标记的信息的实例称为样例
机器学习的任务一般有以下几类,当预测或输出的是离散值,此类学习任务称为分类问题,比如人脸识别、动作识别都是分类任务。如果预测或输出的是连续值,此类任务称为回归,比如房价预测、股票价格预测等。
对只涉及两个类别的分类问题称为二分类任务,常见于是否问题,如划分是否为动物,肿瘤为良性或恶性,股票是涨还是跌等,我们经常说的正例、负例也是针对二分类问题。
设计多个类别为多分类任务,二分类和多分类都是属于分类问题,由于二分类问题情形简单而又广泛,所以单独列出为一类问题。
聚类任务是将相似的事物归类为一组,例如对文本数据集自动进行分组。
多标签标注问题是对一个变量序列的输入,获得一个变量序列的输出。多标签问题可以看做是分类任务的一种扩展,例如图像识别,在分类任务上会给出单个标签,如猫,狗,天空,森林等。而多标签是给一张图像多个类别,比如实际图像可能既有天空、大海、又有行人,房屋等。分类问题一般用于内容单一的图像,多标签则用于处理复杂场景的图像,也可用于图像检索的任务。
监督学习的目的是学习一个由输入到输出的映射,学习的结果称为模型,模型集合就是假设空间。
模型分为概率模型,就是学习条件概率,X条件下Y的概率和非概率模型,就是决策函数Y等于FX联合概率分布。
假设输入与输出的随机变量X和Y遵循联合概率分布p(x,y),这为分布函数或分布密度函数,对于学习系统来说,联合概率分布是未知的,训练数据和测试数据被看做是以联合概率分布p(x,y)独立同分布产生的,监督学习的问题形式化输入的是训练数据,也就是样例
每个样例包含数据X和对应的标签Y,通过学习系统的学习得到模型,该模型可以是概率模型也可以是非概率模型,模型得到后可以对xn+1的测试数据进行分类测试,推测出xn+1的标签yn+1。
所有模型的集合称为假设空间,而学习过程看成是所有假设组成的空间中进行搜索的过程。搜索目标是找到与训练集匹配的模型,
假设形状、剥皮、味道分别有3,2,3种可能的取值,加上取任意值*和空集,假设空间规模为4x3x4+1=49
有许多方法可以进行假设空间的搜索,如自顶向上或自底向下。可能有多个假设与训练集一直,即存在一个与训练集一致的假设集合,我们称之为版本空间。
一个学习方法主要包括模型、策略和优化算法。
当假设空间F为决策函数的集合,F实质上就是参数向量决定的函数族。
当假设空间F为条件概率的集合,F实质上就是参数向量决定的条件概率分布族。
假设我们已经有了模型的假设空间,如何选择最优的模型?
我们引入损失函数和风险函数的概念。损失函数是指模型一次预测的好坏,而风险函数是指平均意义上模型预测的好坏。损失函数包括:
损失函数值越小,模型就越好。
下面是理论上模型f(x)关于联合分布p(xy)的平均意义下的损失,我们称为风险函数或期望风险,也就是损失函数的期望,该式中XY的联合概率是不知道的。如果知道的话,我们就可以直接求出X条件下Y的概率。
经验风险是模型关于训练样本集的平均损失。
一个自然的想法是用经验风险估计期望风险。
学习三要素的方法是指从假设空间中选出最优的模型的过程。这就归纳为最优化问题。机器学习往往没有显示的解析解,而是需要用数值计算的方法去求解。那么如何保证全局最优解并使求解过程高效?也就成为非常重要的机器学习的问题。
奥卡姆提出一个原理,即“如无必要,勿增实体”,原意是剔除不必要的纷争。
对有限个样本点存在很多条曲线与其一致,如曲线A和B,根据奥卡姆提到原理,我们在假设空间中选择更简单的曲线A作为模型,然而奥卡姆剃刀并非是唯一可行的原则。
指的是一个学习算法A比另一个学习算法B,若它在某个问题上比另一个学习算法好,则必然存在另一些问题B比A好。
令X Za条件下h的概率代表算法,Za基于训练数据X产生假设h的概率,再令f代表我们希望学习的真实的目标函数,Za的训练集外误差,即在训练集外的所有样本的误差为以下这个公式
针对上面的公式,我们对二分类问题推导出来的总的误差结果,最后一行,可以看到这个结果只包含了X的概率和总的数据集的大小这两个变量,也就是说总误差与学习方法无关。
没有免费的午餐定理有几个前提,分别是
1.所有“问题”出现的机会相同或所有问题同等重要。这显然不符合大部分的情况,问题总有不同的重要性。
2.假设真实函数f为均匀分布。
3.没有免费的午餐定理最重要的寓意就是脱离具体的问题,空谈什么方法好是毫无意义的。
现在有一个多项式去拟合一段数据,这里来讨论过拟合的问题,举例一个多项式曲线拟合任务的例子。假设有一个训练样本集T,假设空间为一个XM次多项式。求经验风险最小化的情况下,每个wj的取值,从而确定整个模型,可以用解析的方法直接求取。
这里用sin2πx,也就是绿色的曲线,并加入一定的噪声信号去产生样本点,然后分别为M次多项式取不同的M值,分别为1,3,9,这样就得到以上红色的拟合曲线。从以上曲线可以看出,当M=9时,曲线对训练集的样本有最好的拟合 。然而对测试样本进行测试时,我们对训练集的样本进行求取,结果是这样的,我们发现训练集的平均损失比测试集的平均损失都要高,尤其是在m=9时测绘集的 损失有很大的提升。虽然训练集损失为0,我们把M=9时的现象就称为过拟合。过拟合是指学习时使用的模型过于复杂或包含的参数过多,以至于出现这一模型对已知数据预测的很好,而对未知数据预测的很差的一种现象。
下面是训练误差和测试误差随着模型复杂度变化的曲线。从该图可以看出测试误差选去某个模型复杂度时,得到最小值。
随着模型复杂度变大,虽然训练误差减小,但是测试误差会增大,那么如何解决这个问题呢?同样采取9次多项式进行联合,左图训练样本集大小为15,而右图样本集大小为100,而右图获得了更好的近似效果。也就是说当模型较复杂时,我们可以采用增加训练样本集大小的方式去减小泛化误差。
针对泛化误差的另一种方法就是采用正则化的方法,在目标函数的前一项即经验风险的基础上,增加一个正则化项或罚项,一般是模型参数向量的范数。
针对回归问题,正则化既可以是模型参数向量的二范数也可以是一范数
λA大于等于0是调整二者之间关系的系数,我们看看加入正则化项模型变化的性能,还是刚才的例子,当M=9时,当λ取lnλ等于-18时,模型在很少训练数据集上就取得了较好的性能,拟合的更好;当λ取lnλ=0时,模型退化为一条曲线,因为λ增大,使得模型参数受到更大的抑制,从而模型变得更简单,加入正则化后模型参数的取值变化。
没有加入正则化项时,M等于9,左侧图的最右边一列参数值很大,这就容易造成过拟合,当加入正则化项以后,λ不断增大时,参数值不断减小,从而抑制模型的过拟合现象。
模型的泛化能力指有该方法学习到的模型,对未知数据的预测能力
,是 学习方法的本质属性,对模型泛化能力的评价主要通过测试误差来推测,可是测试集是有限而且是有差异的,这样的评价就不是那么可靠。
对泛化误差的分析是通过研究泛化误差概率的上界进行的,分析泛化误差的性质是随着样本容量的增加误差趋于0,它是假设空间容量的函数。假设空间容量越大,泛化误差越大。
考虑到二分类问题时,它的期望风险和经验风险分别是下面这个公式
我们关心的是模型的淡化能力R(fN),泛化误差上界,泛化误差定理,当假设空间是有限个函数的集合,对任意一个函数f,至少以概率1-λ以下不等式成立。
误差项以训练数据集大小n,假设空间集合大小d和设定概率δ的函数,这个公式告诉我们,当训练集越大,假设空间越小;δ越大,泛化误差上界越小。
监督学习方法分为生成方法和判别方法,分别对应生成模型和判别模型。生成模型指模型为决策函数或条件概率分布,生成模型是由数据学习联合概率分布pxY,然后求出条件概率,生成模型包括朴素贝叶斯方法和隐马尔科夫模型法,判别模型直接求取决策函数或条件概率分布,判别模型包括K近邻、感知机、决策树和罗吉斯帝回归等方法。
留出法是直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集S,它们的交集为空,并集为数据集。二分类时如果有100个训练样本,划分训练集70和测试集30,如果30个测试集里面有9个发生了预测错误,则错误率为30%,精度为70%。
留出法需要注意以下几个方面:
1.训练测试集的划分尽可能保持数据分布的一致性,避免引入额外的偏差。维持S和T中的正反例相平衡;
2.存在多种划分方式对初始数据集进行分割,采用若干次随机划分,进行重复试验;
留出法也存在一些问题,由于对D进行划分时,如果S较大T较小,那么较小的测试集测出的误差,也就是泛化误差不太大;如果T较大S较小,那么获得的模型就不是很可靠。
交叉验证法是将D划分为K个大小相等的互斥子集,子集间无交集,K-1个子集并集为训练集,一个测试集如图所示,为十次十折交叉验证,把十次的测试结果取平均,最后得到最终的测试结果
给定包含m个样本的数据集,对它进行采样,产生数据集D’,每次随机从D中挑选一个样本将其拷贝放入D’,然后再放回原来的初始数据集D中,使得该样本在下次的采样中仍有可能被采到,这个过程重复m次后,我们就可以得到包含M个样本的数据集D’。然而问题是有多少样本永远无法出现在D’数据集中呢,样本在m次采样中始终采不到的概率为(1-1/m)的m次方
这种方法适用于训练集较小,难以进行训练集和测试集的划分的情况,从数据集产生不同的训练集适用于集成学习方法,缺点是产生的数据集改变了初始数据集的分布,会引入估计偏差,所以数据集足够大时,建议用留出法和交叉验证法。
PR曲线是一种更综合的评估方法,PR曲线是如何生成的呢?首先,根据预测器的预测结果,对所有的样例进行排序,从最可能到最不可能是正例的样本,按此顺序逐个把样本作为正例进行预测,则每次可以计算出当前的查全率、查准率。以查准率为纵轴,查全率为横轴,就得到了查准率-查全率(PR)曲线,PR图直观地显示出学习器在样本总体上的查准率和查全率。在进行比较时,若一个学习器的PR曲线被另一个学习器的PR曲线完全包住,则可断言后者的性能优于前者。平衡点是查全率等于查准率的点,也可以作为性能度量的方法,平衡点方法过于简化了一些,更常用的是F1度量为2PR/(P+R)
不同任务对查准率和查全率的重视程度不一样,比如广告推荐就希望尽量准确,不要过多的干扰用户,而台风预警则查全率更重要。F1度量的一般形式考虑到这一点,为F-度量β值度量了查全率对查准率 的相对重要性。当β=1时,就退化为F1度量。
很多时候我们有多个二分类混淆矩阵,例如进行多次训练测试,每次得到一个混淆矩阵,或者在多个数据集上进行训练测试,希望估算算法的全局性能或者是执行多分类任务,每两两类别的组合都对应一个混淆矩阵,我们希望在N个二分类混淆矩阵上综合考察查准率和查全率。一种是宏查准率,宏查全率,宏F1,就是把所有的P,R,F1分别取平均;另一种是微查准率,微查全率和微F1,就是先对每个TP,FP,PN分别取平均,然后根据公式计算各自的性能值,分类过程一般对每个测试样本预测一个0到1的概率,然后将所有样例根据大小进行排序,这就相当于在这个排序中以某个截断点将样本分为两部分,前一部分判作正例,后一部分判作反例,可以根据查准率和查全率的重视程度,选取截断点。
ROC曲线的纵轴是真正例率称为TPR,横轴是假正例率称为FPR,其实TPR就是查全率
当我们用曲线图来表示ROC曲线时,就是下面这两幅图,左图为示意图,右图为实际的有限样例情况下绘制的ROC图。图的横轴为假正例率,纵轴为真正例率,绘制方式和PR曲线类似,也是对预测结果进行排序,然后把分类阈值先设为最大一直到最小。模型性能进行比较时和PR曲线类似,一个曲线包住另一条曲线,则前者性能更优,当两个模型曲线发生交叉时,AUC面积大者性能更优。
现实问题中不同类型的错误所造成不同的后果,如门禁系统,如果错误的把可通行的人员挡在门外,用户会体验不佳;如果错误的把陌生人放入门内,会造成严重后果。为了权衡不同类型错误所造成的不同损失,可为错误赋予非均等代价,以二分类任务为例,我们可根据任务的领域知识,设置一个代价矩阵,其中cosij表示第i类的样本,预测j类样本的代价,对应代价敏感错误率为以下公式
非均等代价下,ROC曲线不能直接反映出学习器的期望的总体代价,而代价曲线则可达到该目的,代价曲线是取值为0到1的正例概率代价,公式中P为样例的正例概率,纵轴是取值为0到1的规一化代价,
代价曲线绘制过程如下,ROC曲线上的每一点,都对应了代价平面上的一条线段,我们设ROC曲线上的点的坐标为FPR,则可相应的计算出FNR,然后再代价平面上,绘制一条FPR到1 FNR两点的线段,线段下的面积则表示了该条件下的期望总体代价。如此则将ROC曲线下的每个点都转化为代价平面上的一条线段,然后取所有线段的下界围成了一个面积,该面积即为在所有条件下学习器的期望总体代价。
假设检验是统计学中常用的数学方法,正是由于机器学习方法的随机性和不确定性,某一次A模型比模型B好,并不能断定A一定比B好,而是只能给出一个A比B好的概率,或者是在百分之多少的情况下A比B好。当两个模型差距不大时,我们更需要假设检验,来说明自己主张的有效性。假设检验是一个很重要的小技巧,下面给出初步的介绍。
偏差和方差分解是解决学习算法泛化性能的一种重要工具
泛化能力越强就越不容易发生过拟合。
感知机模型是1957年由罗森布莱特提出的,这个方法有两个非常重要的因素,一是它是神经网络的基础,二是它是支持向量机模型的基础。
在神经网络中,每个神经元就是一个感知机,之后会跟随一个非线性的激活函数,并使得输出值连续可导,另外一个感知机是SVM支持向量机算法的基础,它的线性可分性和对偶机形式都是后面将介绍的SVM算法直接对应关系。
感知机是针对二分类问题的线性分类模型,
感知机的定义如下,