联系我们
- 地 址:北京市海淀区北四环西路9号 ,主 营:人脸识别,活体检测,身份证识别,银行卡识别,名片识别,车牌识别,OCR识别等及智能识别技术。
- 电 话:13146317170 廖经理
- 传 真:
- 邮 箱:398017534@qq.com
关于人工智能中的机器学习
关于人工智能中的机器学习
1 机器学习的定义及关注点
机器学习致力于研究如何通过计算的手段,利用经验来改善系统本身的性能。
经验 — 数据
计算 — 机器学习算法
有了机器学习算法,把经验数据提供给它,得到模型。
权威定义:
假设用P来评估计算机程序在某任务T上的性能,若一个程序通过经验E在任务T上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习。
2 术语
样本
特征
特征值
假设(假设空间)
真值 (ground-truth)
训练样本 & 测试样本
分类 & 回归 & 聚类
有监督学习 & 无监督学习
泛化能力:关注一个学得的机器学习模型在未见过的“测试样本上的性能”。泛化性能越好,模型普适性越好。
前提条件:我们获取的训练样本只是样本空间中很少的一部分,但是我们又希望最终学得的模型在整个样本空间上都具有较好的性能,能够实现这样的目的是基于一个假设 – 独立同分布(iid),即样本空间中的所有样本都符合同样的分布且相互之间独立,这样即便只给了你很小的一部分样本做训练集,但只要你能找到内部运行的规律,你就可以对整个样本空间进行较好的建模,也就取得了具有较好泛化能力的模型。iid这个假设太强了,很多情况下由于获得的训练数据集有限,可能我们只是偏安于一隅,并没有看到这个世界的全貌。
假设空间 & 版本空间:所有可能的情况组成假设空间,比如一个西瓜分类问题,可以通过logistic regression解决,也可以通过决策树、SVM等解决,每个算法又可以有N多种参数组合,虽然这些模型有对的,有不对的,但这些假设都是有可能的,那么他们就都属于假设空间。也就是说假设要大胆。但一味的大胆就是莽夫了,我们下一步要怎样,要小心求证,怎么做,首先要从假设空间中删除掉那些和实际情况不符的假设,实际情况指什么,指的就是我们手头已经拿到的训练数据,把这些与现实不符的假设删除掉之后,剩下的都是比较可靠的假设了,这些假设组成版本空间。
归纳偏好: 机器学习算法在学习过程中对某种类型假设的偏好。任何一个机器学习算法都有其偏好。归纳偏好可以认为是学习算法自身在一个可能很庞大的版本空间中对假设进行选择的启发式或“价值观”,是一种先验信息。奥卡姆剃刀是常用的原则,即认为“如果存在多个模型和观察到的训练样本一致,选择最简单的那个”。奥卡姆剃刀不是唯一的归纳偏好原则,即便是奥卡姆剃刀中提到的“简单”,也可以有多种解释。因此在具体的算法实现中,算法的归纳偏好与问题本身是否匹配,直接决定了算法能否取得良好的性能。
天下没有免费的午餐:没有任何一个算法比另一个算法在所有任务上性能都更好,脱离实际的问题,空谈那个算法更好是没有意义的。进行算法性能比较的时候,一定要针对具体的问题进行分析。学习算法本身的归纳偏好与问题是否匹配,往往可以起到决定性的作用。
3 模型评估与选择
3.1 经验误差与过拟合
所学得的模型预测结果与真实结果之间的偏差称为误差。
关于训练数据的预测误差称为“训练误差”或“经验误差”;关于新样本的预测误差称为“泛化误差”。
最终目的是得到泛化误差小的模型。但是模型训练过程中,并不知道新样本什么样子,只能在训练样本集上发力,努力得到一个在训练样本集上误差小的模型。当然,可能会有疑问,在训练样本集上表现好就一定能在新样本上表现的好吗?后面我们会看到证明过程,在训练样本集上的误差和泛化误差之间差值很小的概率很大,也就是说一个模型训练误差小的话,其大概率在新样本上也会表现的不错。但是如果在训练样本集上表现的太好了,事出反常必有妖,那么往往在新样本集上表现的不是很好。
如果形象化的表示下上述概念的话,我们希望模型在学习过程中,能够学习到训练数据集背后的“普遍规律”,但是训练集独有的、比较个性的东西,还是希望我们的模型能够忽视它们。要求还是挺高哈,要求我们的模型有智慧,能够看懂大道,又不被小伎俩迷惑,人工智能嘛!
专业术语表示这个问题,就是“欠拟合”“过拟合”。“欠拟合”就是模型学习能力不足,没有学到训练集背后的普遍规律;“过拟合”就是模型学习能力太强了,把训练集的个性也当成了普遍规律。过拟合是机器学习的难点,过拟合无法避免,只能缓解。办法有正则化、dropout等等。
这里写图片描述
3.2 评估方法
通常,我们在基于训练集学习得到模型后,需要基于测试样本测试模型的性能,将测试误差作为泛化误差的近似。需要注意的是,测试样本一定是在训练样本集中从未出现过的样本,否则我们会得到过于“理想化”的测试结果。
然而我们在训练一个模型之初,能够拿到的也只有一份训练数据集,如何使用这份数据既要训练,又要测试呢?正确的方法是将训练数据集划分为训练集和测试集两部分,常见的划分方法有下面几种。
3.2.1 留出法
留出法的思想是将训练集的划分为两个不相交的子集,一部分用作训练,一部分用作测试。一般使用原数据集的70%作为训练集,剩下的30%作为测试集。
留出法需要注意的事项有:
分层采样:训练/测试集划分时要尽可能保持原有样本分布的一致性,避免采样过程引入偏差。例如原始数据集中包含500个正样本,500个负样本,那么在训练/测试样本划分时,应该保证训练集中含有350个正样本,350个负样本,而测试集中应包含150个正样本和150个负样本,这样做就避免了数据划分过程引入新的偏差。
重复计算:按照上面的例子,将500个正样本中的350个作为训练集,有C350500C500350种选择方式,不同的训练样本集对最终的测试结果是存在一定的影响的。通常的做法是采用多次随机筛选、重复实验后取均值作为留出法的最终结果。
留出法也有一定的问题,如果训练集保留了原始数据集大部分的样本,则训练出的模型更接近于使用完整数据集训练出的模型,但此时测试集规模太小,性能评估的方差较大;而假如减小训练集样本占原始数据集样本的比例,则会造成使用该训练集和使用原始数据集训练的模型偏差较大。这个问题没有完整的解决方案,一般选择原始数据集的23到4523到45用于训练,其余的作为测试集。
3.2.2 交叉验证
交叉验证是将数据集分为K等份,相互之间互斥且尽可能保持数据划分的一致性(各数据子集都通过分层采样方式获得)。每次选取(K-1)份数据作为训练集,剩下的那份数据作为测试集,从而可进行K次的训练和测试过程,最终返回这K次测试结果的均值作为单次交叉验证的结果,一般称其为K折交叉验证。K的常见取值为10。
这里写图片描述
同样为了减小数据选择对最终性能的影响,很多时候还会进行多次的K折交叉验证,比如进行20次10折交叉验证,最终的测试结果为这200个测试结果的均值。
留一法:当选择K=m时,则每次只保留一个样本作为测试集,这样每次训练模型的测试集和原始数据集很接近,性能评估也比较准确,当然性能评估的波动性也比较大。留一法的优点是准确,缺点是假设m值很大时,需要训练很多个模型,计算开销比较大。
3.2.3 自助法
自助法是有放回采样,即从原始数据集中随机选取m个样本样本放入训练集中,这样原始数据集中的样本有的在训练集中多次出现,有的从而出现,将未在训练集中出现的样本作为测试集。这样做大约2323的原始样本作为训练集使用,其余样本作为测试集。
自助法在原始数据集较小、难以有效划分训练集/测试集时较有效。但是,自助法会改变数据的原始分布,会引入额外的偏差。所以一般在样本数量较充足时经常用留出法和交叉验证法进行模型的评估。
机器学习致力于研究如何通过计算的手段,利用经验来改善系统本身的性能。
经验 — 数据
计算 — 机器学习算法
有了机器学习算法,把经验数据提供给它,得到模型。
权威定义:
假设用P来评估计算机程序在某任务T上的性能,若一个程序通过经验E在任务T上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习。
2 术语
样本
特征
特征值
假设(假设空间)
真值 (ground-truth)
训练样本 & 测试样本
分类 & 回归 & 聚类
有监督学习 & 无监督学习
泛化能力:关注一个学得的机器学习模型在未见过的“测试样本上的性能”。泛化性能越好,模型普适性越好。
前提条件:我们获取的训练样本只是样本空间中很少的一部分,但是我们又希望最终学得的模型在整个样本空间上都具有较好的性能,能够实现这样的目的是基于一个假设 – 独立同分布(iid),即样本空间中的所有样本都符合同样的分布且相互之间独立,这样即便只给了你很小的一部分样本做训练集,但只要你能找到内部运行的规律,你就可以对整个样本空间进行较好的建模,也就取得了具有较好泛化能力的模型。iid这个假设太强了,很多情况下由于获得的训练数据集有限,可能我们只是偏安于一隅,并没有看到这个世界的全貌。
假设空间 & 版本空间:所有可能的情况组成假设空间,比如一个西瓜分类问题,可以通过logistic regression解决,也可以通过决策树、SVM等解决,每个算法又可以有N多种参数组合,虽然这些模型有对的,有不对的,但这些假设都是有可能的,那么他们就都属于假设空间。也就是说假设要大胆。但一味的大胆就是莽夫了,我们下一步要怎样,要小心求证,怎么做,首先要从假设空间中删除掉那些和实际情况不符的假设,实际情况指什么,指的就是我们手头已经拿到的训练数据,把这些与现实不符的假设删除掉之后,剩下的都是比较可靠的假设了,这些假设组成版本空间。
归纳偏好: 机器学习算法在学习过程中对某种类型假设的偏好。任何一个机器学习算法都有其偏好。归纳偏好可以认为是学习算法自身在一个可能很庞大的版本空间中对假设进行选择的启发式或“价值观”,是一种先验信息。奥卡姆剃刀是常用的原则,即认为“如果存在多个模型和观察到的训练样本一致,选择最简单的那个”。奥卡姆剃刀不是唯一的归纳偏好原则,即便是奥卡姆剃刀中提到的“简单”,也可以有多种解释。因此在具体的算法实现中,算法的归纳偏好与问题本身是否匹配,直接决定了算法能否取得良好的性能。
天下没有免费的午餐:没有任何一个算法比另一个算法在所有任务上性能都更好,脱离实际的问题,空谈那个算法更好是没有意义的。进行算法性能比较的时候,一定要针对具体的问题进行分析。学习算法本身的归纳偏好与问题是否匹配,往往可以起到决定性的作用。
3 模型评估与选择
3.1 经验误差与过拟合
所学得的模型预测结果与真实结果之间的偏差称为误差。
关于训练数据的预测误差称为“训练误差”或“经验误差”;关于新样本的预测误差称为“泛化误差”。
最终目的是得到泛化误差小的模型。但是模型训练过程中,并不知道新样本什么样子,只能在训练样本集上发力,努力得到一个在训练样本集上误差小的模型。当然,可能会有疑问,在训练样本集上表现好就一定能在新样本上表现的好吗?后面我们会看到证明过程,在训练样本集上的误差和泛化误差之间差值很小的概率很大,也就是说一个模型训练误差小的话,其大概率在新样本上也会表现的不错。但是如果在训练样本集上表现的太好了,事出反常必有妖,那么往往在新样本集上表现的不是很好。
如果形象化的表示下上述概念的话,我们希望模型在学习过程中,能够学习到训练数据集背后的“普遍规律”,但是训练集独有的、比较个性的东西,还是希望我们的模型能够忽视它们。要求还是挺高哈,要求我们的模型有智慧,能够看懂大道,又不被小伎俩迷惑,人工智能嘛!
专业术语表示这个问题,就是“欠拟合”“过拟合”。“欠拟合”就是模型学习能力不足,没有学到训练集背后的普遍规律;“过拟合”就是模型学习能力太强了,把训练集的个性也当成了普遍规律。过拟合是机器学习的难点,过拟合无法避免,只能缓解。办法有正则化、dropout等等。
这里写图片描述
3.2 评估方法
通常,我们在基于训练集学习得到模型后,需要基于测试样本测试模型的性能,将测试误差作为泛化误差的近似。需要注意的是,测试样本一定是在训练样本集中从未出现过的样本,否则我们会得到过于“理想化”的测试结果。
然而我们在训练一个模型之初,能够拿到的也只有一份训练数据集,如何使用这份数据既要训练,又要测试呢?正确的方法是将训练数据集划分为训练集和测试集两部分,常见的划分方法有下面几种。
3.2.1 留出法
留出法的思想是将训练集的划分为两个不相交的子集,一部分用作训练,一部分用作测试。一般使用原数据集的70%作为训练集,剩下的30%作为测试集。
留出法需要注意的事项有:
分层采样:训练/测试集划分时要尽可能保持原有样本分布的一致性,避免采样过程引入偏差。例如原始数据集中包含500个正样本,500个负样本,那么在训练/测试样本划分时,应该保证训练集中含有350个正样本,350个负样本,而测试集中应包含150个正样本和150个负样本,这样做就避免了数据划分过程引入新的偏差。
重复计算:按照上面的例子,将500个正样本中的350个作为训练集,有C350500C500350种选择方式,不同的训练样本集对最终的测试结果是存在一定的影响的。通常的做法是采用多次随机筛选、重复实验后取均值作为留出法的最终结果。
留出法也有一定的问题,如果训练集保留了原始数据集大部分的样本,则训练出的模型更接近于使用完整数据集训练出的模型,但此时测试集规模太小,性能评估的方差较大;而假如减小训练集样本占原始数据集样本的比例,则会造成使用该训练集和使用原始数据集训练的模型偏差较大。这个问题没有完整的解决方案,一般选择原始数据集的23到4523到45用于训练,其余的作为测试集。
3.2.2 交叉验证
交叉验证是将数据集分为K等份,相互之间互斥且尽可能保持数据划分的一致性(各数据子集都通过分层采样方式获得)。每次选取(K-1)份数据作为训练集,剩下的那份数据作为测试集,从而可进行K次的训练和测试过程,最终返回这K次测试结果的均值作为单次交叉验证的结果,一般称其为K折交叉验证。K的常见取值为10。
这里写图片描述
同样为了减小数据选择对最终性能的影响,很多时候还会进行多次的K折交叉验证,比如进行20次10折交叉验证,最终的测试结果为这200个测试结果的均值。
留一法:当选择K=m时,则每次只保留一个样本作为测试集,这样每次训练模型的测试集和原始数据集很接近,性能评估也比较准确,当然性能评估的波动性也比较大。留一法的优点是准确,缺点是假设m值很大时,需要训练很多个模型,计算开销比较大。
3.2.3 自助法
自助法是有放回采样,即从原始数据集中随机选取m个样本样本放入训练集中,这样原始数据集中的样本有的在训练集中多次出现,有的从而出现,将未在训练集中出现的样本作为测试集。这样做大约2323的原始样本作为训练集使用,其余样本作为测试集。
自助法在原始数据集较小、难以有效划分训练集/测试集时较有效。但是,自助法会改变数据的原始分布,会引入额外的偏差。所以一般在样本数量较充足时经常用留出法和交叉验证法进行模型的评估。
上一条:带护照识别的人脸比对一体机
下一条:机器学习为什么那么火