1.什么是泛化能力?
在机器学习方法中,泛化能力通俗来讲就是指学习到的模型对未知数据的预测能力。在实际情况中,我们通常通过测试误差来评价学习方法的泛化能力。
2.泛化误差的定义
大家马上应该发现,这个不是损失函数的期望吗?? 没错,泛化误差就是所学习到的模型的损失函数期望(期望误差)
上了数以千计的CPU和上百的GPU,AlphaGo在与李世石的挑战赛中赢了第一局。除了算法的设计,这还是计算的胜利,用DeepMind公司研究负责人David Silver的话说,职业棋手在考虑下一手布局时,每秒可以考虑到100种可能的棋路,但AlphaGo每秒可以考虑到10万种棋路,计算速度也比人类更快。
那么,在机器学习一端呢,程序员们怎么说呢?
李理:面对顶尖高手,AlphaGo只有残局搜索速度的优势
李理,出门问问NLP工程师
没想到第一局AlphaGo就取得胜利,作为对人工智能感兴趣的码农,我既感到高兴又不免有些伤感。高兴是因为我们可以“创造”出比我们自己“聪明”的机器,伤感就像教拳击的师傅看到徒弟的水平已然超过自己,不免有“老了,不中用了”的感叹。另外还有那么一点点失落和担忧:那些花边新闻不再会有我的出现了,失落之感油然而生。而且这孩子太天真,以后很容易被社会上不好的人带坏。
但这是大势所趋,不可避免,长江后浪推前浪,人工智能会在很多领域超过人类,这是我们不得不承认的事实,但是我们还是不愿意承认这个残酷的事实。力量比不过机器我们比“智能”,计算比不过我们比逻辑,象棋比不过我们比围棋,……,突然有一天我们发现找不到这样的事情了,我们做何感想?我认为这一天迟早会来的,但希望再我的有生之年不会到来(但我们做人工智能不就是希望这一天的到来吗?)。也许是我们的世界观太过狭隘,我们应该欢呼这一天的到来?
当然我觉得这一天还是离我们很遥远的,而且也不是太坏的事情,我们想象中的外星人都是来毁灭地球的,是不是因为我们的文化都是强调竞争而不是协作呢?从某个角度来说,确实处处是矛盾:老板赚得多员工赚得少,码农月新高农民辛苦一年报酬少,农民把动物的家园从森林砍成耕地,蜜蜂窃取花的糖分……。
但是换个角度来看,整个地球是一个协作的生态系统,植物把太阳能变成动物能吸收的食物,老板通过对外宣传来推广我们的产品和协调我们的长短期计划。马龙通过程序交换信息从而更好的帮助人类实现商品交换……。
从某种意义上讲,机器智能也是人类智能的一部分。比如我们通过各种工具来扩展我们的能力,用机器来增加力量,用汽车飞机来提高速度,用望远镜和显微镜来提高视觉能力,这是“非智能”的工具。但是竹木简,造纸术和计算机磁盘扩展了我们的“记忆”。记忆能力在中国是非常看重的能力,很多“天才”,都是记忆力超出常人,我们认为一个小孩聪明,经常会说他六岁就能背诵唐诗三百首。这可能是因为中国作为一个几千年的农业国家,很多都是经验的积累,因此记忆能力至关重要。但是到了现代,人脑外部的存储已经很方便了,再过分强调记忆力就容易培养死记硬背的书呆子了(用机器学习术语就是过拟合)。
但是我们还是认为人类是特殊的,比如有情感,比如有灵感,比如有抽象能力,能通过有限推广到无限(比如数学里的极限),……。这些能力不管是被上帝赋予的还是人类“生下来就有的”(那第一个人怎么获得这么bug的技能的呢?),反正我们就认为其它“东西”是不可能拥有的。(虽然我个人认为人类没有任何特殊的能力,就不展开讨论了)
我们假设有一项特殊能力只有人类会有,那么我们就不可能制造出类似甚至超过人类的机器,那很好吗?我们失去了这项非常重要的创造力!反过来看,如果我们承认人类没有特殊之处,那么之前有可能我们能有这样的能力(通过人类甚至人类加机器的努力)。
扯得太远,我们还是回到围棋和AlphaGo上面。现在AlphaGo已经全面超越人类了吗?我个人认为还不见得。我在大学的时候写过一个简单的黑白棋(othello,reversi)程序,写得很一般,尤其是开局的估值函数。玩过黑白棋的同学可能都知道,开局时要尽量占据边和角,中间棋子太多反而不好。我的这个黑白棋程序开局不行,但是到了还剩20步棋时它就能穷举所有可能了。我一般和它下时会让它弹出一个对话框告诉我当前电脑计算出来的最优结果。经常是开始得分是-20(这表示我如果下的完美,我最终比电脑多20个子),但下着下着就变成-16、-8……,最后常常被翻盘。
从昨天AlphaGo的表现来看,包括柯洁在内的很多人都认为电脑开局还行,但偶尔有些小问题,中局较差,而残局很恐怖。而李世石也是类似风格(之前好像有个李昌镐更是这样?)。但比残局计算,李世石可能是人类中的高手,但计算机更胜一筹。所以柯洁认为自己对AlphaGo的胜率会比李世石高。我比较认同这个看法。
从围棋原理来分析,开局其实人类离“上帝”差得太远,也许我们今天觉得很好的布局定势其实是个大坏棋也不一定。更多的是靠以往的经验,比如水平差不多的人下棋,走这个定势就比那个胜率更高一些,我们就认为这个好一些。目前AlphaGo对于开局也是靠人类高手学习出来的对局库学习出来的Value Network,当然开局也有MCTS的搜索,但从开局模拟对局到游戏结束需要的时间更多,可能性也更多,所以“看起来”电脑的布局更像是“背棋谱”,也就是很像人类高手的走法。从人类的策略来说,开局是非常关键的。因为神经网络需要大量训练数据,超一流棋手的对局少,所以AlphaGo只能学到一流高手的棋感,而开局MCTS的帮助就没有那么大。
而到了残局,虽然MCTS不是穷举,但是由于搜索的速度加快,从而模拟对局变多,从概率上来看趋近最优解,而人类高手总有算错算漏的可能性,所以这是劣势。而中局就比较复杂,需要平衡搜索和局面判断,我认为AlphaGo借助搜索能稍微超过一流高手但会弱于顶尖高手甚至可能出现明显的弱手。所以也是李世石需要下的强硬并扩大先手的地方。
但还是那个老问题,人类残局会算错,即使从棋理上应该获胜的棋也可能下输,尤其是如果心理压力大的情况下计算更容易出错,而计算机就不会(这也是为什么情感不是智能生物必须的一个论据)。就像常昊跟李昌镐下棋,到了后面就是下不过,不服都不行。所以今天的比赛至关重要,如果输了那就基本0:5了,而赢了的话很可能4:1。
总结一下(希望被再次打脸)我个人的观点和对李世石的建议:开局选择自己最拿手的,能用超一流棋手的棋感拉来和一流棋手的差距,中局稳打稳扎,利用机器的小失误扩大领先,残局计算要控制好情绪,不要优势就放弃(劣势也顽强一点吧,虽然看起来是无谓的垂死挣扎,电脑不会给你任何机会的),另外可以考验一下电脑应付打劫的能力,这个更多靠“抽象和泛化”,少量的训练数据深度学习应该还是学不出来的。
李理对AlphaGo的更多解读:
AlphaGo对战李世石谁能赢?两万字长文深挖围棋AI技术(一)
AlphaGo对战李世石谁能赢?两万字长文深挖围棋AI技术(二)张峥:AlphaGo无破绽,问题在于机器学习
张峥,上海纽约大学计算机科学教授、前微软亚洲研究院副院长
仔细读过AlphaGo,没觉得有什么破绽。在自己左右手互搏中的计算价值那部分为了效率用了“快棋”策略,可能粗糙些,但下得多可以弥补。有网友提出的和李世石比赛会“偷招”这个倒不用担心,五局的样本对机器没用,它不靠这个,靠的是工程上高效率、策略上粗枝大叶但大方向正确。
AlphaGo胜利的概率是100%,只不过不见得是这次。“毛病”还是机器学习的老毛病。表现在:
田渊栋,Facebook
在AlphaGo中,增强学习(Reinforcement Learning)所扮演的角色并没有想像中那么大。在理想情况下,我们希望人工智能系统能在对局中动态地适应环境和对手的招式并且找到办法反制之,但是在AlphaGo中增强学习更多地是用于提供更多质量更好的样本,给有监督学习(Supervised Learning)以训练出更好的模型。在这方面增强学习还有很长的路要走。
本段著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:田渊栋
链接:AlphaGo的分析
来源:知乎
周志华,国际人工智能学会成员、南京大学计算机系教授
围棋AI迟早会战胜人类。但仅凭深度学习+强化学习+蒙特卡洛树搜索等老技术,似乎很难达到人类顶尖棋手的水准。
挑战《星际争霸》。
谷歌研究员透露开发AlphaGo的DeepMind公司总裁正考虑将人工智能目标转移到游戏上,并以星际争霸作为开始项目。星际争霸的玩家除了视觉观察之外还需要理解一些其他问题,AlphaGo要面对的挑战是和围棋在不同层面的。
解决更多的通用问题。
责编:周建丁(zhoujd@csdn.net)
目录
1.什么是泛化能力
百度百科解释:机器学习算法对新鲜样本的适应能力。
更加具体的解释:学习到的模型对未知数据的预测能力,这个未见过的测试数据必须是和训练数据处于同一分布,不在同一分布的数据是不符合独立同分布假设的(对同一规律不同的数据集的预测能力)。通常通过测试误差来评价学习方法的泛化能力。
通俗+形象解释:
就是通过数据训练学习的模型,拿到真实场景去试,这个模型到底行不行,如果达到了一定的要求和标准,它就是行,说明泛化能力好,如果表现很差,说明泛化能力就差。为了更好的理解泛化能力,这里引入三种现象,欠拟合、过拟合以及不收敛。泛化能力的本质就是反映模型有没有对客观世界做真实的刻画,还是发生了过拟合。
考试成绩差的同学,有这三种可能:
一、泛化能力弱,做了很多题,始终掌握不了规律,不管遇到老题新题都不会做,称作欠拟合;
二、泛化能力弱,做了很多题,只会死记硬背,一到考试看到新题就蒙了,称作过拟合;
三、完全不做题,考试全靠瞎蒙,称作不收敛。
2.什么是好的机器学习模型的提出
奥卡姆的威廉是 14 世纪一位崇尚简单的修士和哲学家。 他认为科学家应该优先采用更简单(而非更复杂)的公式或理论。
奥卡姆剃刀定律在机器学习方面的运用如下:
机器学习模型越简单,良好的实证结果就越有可能不仅仅基于样本的特性。
现今,我们已将奥卡姆剃刀定律正式应用于 统计学习理论 和 计算学习理论 领域。这些领域已经形成了 泛化边界,即统计化描述模型根据以下因素泛化到新数据的能力:
模型的复杂程度
模型在处理训练数据方面的表现
虽然理论分析在理想化假设下可提供正式保证,但在实践中却很难应用。 机器学习速成课程则侧重于实证评估,以评判模型泛化到新数据的能力。
机器学习模型旨在根据以前未见过的新数据做出良好预测。 但是,如果要根据数据集构建模型,如何获得以前未见过的数据呢? 一种方法是将您的数据集分成两个子集:
训练集 - 用于训练模型的子集。
测试集 - 用于测试模型的子集。
一般来说,在测试集上表现是否良好是衡量能否在新数据上表现良好的有用指标,前提是:
测试集足够大。
您不会反复使用相同的测试集来作假。
首先给出泛化误差的定义, 如果学到的模型是 f^ , 那么用这个模型对未知数据预测的误差即为泛化误差
泛化误差反映了学习方法的泛化能力,如果一种方法学习的模型比另一种方法学习的模型具有更小的泛化误差,那么这种方法就更有效, 事实上,泛化误差就是所学到的模型的期望误差。
回归任务常用的性能度量是“均方误差”。
1. 错误率与精度
错误率与精度是分类任务中最常用的两种性能度量。既适用于二分类,也适用于多分类。
错误率:分类错误的样本数占总样本数的比例。
精度 : 分类正确的样本数占总样本数的比例。
精度 + 错误率 = 1
假设,总的样本数为m个,我们对这m个样本进行预测,其中预测对了的样本有p个,预测错的样本有n个(p+n = m),则:
错误率 = n/m
精度 = p/m
2. 查全率、查准率、F1
当任务有所偏好时,错误率与精度便不能满足任务的需求。比如我们关心的是“检索出来的信息中有多少是用户感兴趣的”或者“用户感兴趣的信息有多少被检索出来了”。此时就需要查全率、查准率、F1值来进行模型的性能度量。
假设,总的测试样本有m个,其中正样本有z个,负样本有f个。
查全率:对这m个样本进行预测,其中z个正样本中有zm个被预测对。查全率 = zm / z
查准率: 对这m个样本进行预测,预测的结果中有ym个是正样本,ym个样本中有y个是z的,则:查准率 = y / ym

上图为混淆矩阵,TP + FN + FP + TN = 样例总数。
对应的查准率P和查全率R分别定义为:

查准率和查全率是一对矛盾的度量。
查准率越高时,查全率往往偏低。而查全率越高时,查准率往往偏低。
P-R曲线:(查准率-查全率曲线)
P-R曲线是以查全率为横轴,以查准率为纵轴的二维坐标图。
P-R曲线的建立过程:
根据学习器的预测结果对样例进行排序,排在前面的是学习器认为“最可能”是正例的样本,排在后面的则是学习器任务“最不可能”是正例的样本。按此排序,逐个把样本作为正例进行预测,则每次可以计算出当前的查全率和查准率。以此为纵轴和横轴作图,便得到了查全率-查准率曲线,即P-R曲线。
P-R曲线作用:
用来对比不同学习器的好坏的。例如上图2.3中学习器A包含学习器C,则说学习器A优于学习器C。但当两个学习器的P-R曲线有交叉时,难以判断那个学习器较好。通常的做法是计算每个学习器曲线所包含的面积,比较面积的大小。但这值不太容易估算。于是人们便使用“平衡点”(简称BEP)这一度量,即“查准率 = 查全率”时的取值。例如上图中的平衡点可判定,学习器A优于学习器B。
F1值:
F1值为查全率和查准率的协调平均值,
在一些应用中,对查全率和查准率的重视程度有所不同,F1度量的一般形式能让我们表达出对查全率和查准率的的不同偏好。

其中β > 0 度量的查全率对查准率的相对重要性。β = 1 时便为标准的F1。β > 1时查全率有更大的影响,β < 1时查准率有更大的影响。
当我们在多个二分类混淆矩阵上综合考虑查全率和查准率时有两种方法:
第一种,先在各混淆矩阵上分别计算出查全率和查准率,再计算平均值。这样就得到了“宏查全率”、“宏查准率”、以及“宏F1”

第二种,先将各混淆矩阵的对应元素进行平均,再基于这些平均值进行计算,得出“微查全率”“微查准率”以及“微F1”,
3.ROC与AUC
ROC曲线与AUC常被用来评价一个二分类器的优劣。
和P-R曲线类似,“ROC曲线”是根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要的量值(真正例率TRP和假正例率FPR),分别以他们作为横、纵坐标作图,就得到了“ROC曲线”。
上图(a)中的虚线表示“随机猜测”模型。在(0,1)点处,即FPR=0, TPR=1,这意味着FN = 0,并且FP = 0。这是一个完美的分类器,它将所有的样本都正确分类。在(1,0)点处,即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。在(0,0)点处,即FPR=TPR=0,即FP = TP =0,可以发现该分类器预测所有的样本都为负样本。在(1,1)点处,分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。
现实任务中通常是利用有限个测试样本来绘制ROC图的,所以仅能或得有限个(真正例率TRP和假正例率FPR)坐标对,绘制出的图如上图中的(b)。
ROC曲线绘制过程:
给定m个正例和n个反例,根据学习器预测结果对样例进行排序,然后把分类阈值设置为最大,即把所有样例均预测为反例,此时真正例率和假正例率均为0,在坐标(0,0)出标记一个点。然后,将分类的阈值依次设置为每个样例的预测值,即依次将每个样例划分为正例。设前一个标记的坐标为(x,y),当前若为真正例,则对应的标记点的坐标为(x, y+1/m);若当前为假正例,则对应标记点的坐标为(x+1/n, y), 然后用线段连接相邻的点即可。
学习器比较:
若一个学习器A的ROC曲线包含另外一个学习器B的ROC曲线,则认为学习器A的性能优于学习器B。
若两者的ROC曲线相交,则需要对各自ROC曲线下得面积(即AUC)进行比较。
AUC可通过对ROC曲线下各部分面积求和而得。
4.代价敏感错误率与代价曲线
不同类型的错误所造成的后果不同。
为权衡不同类型错误造成的不同损失,可为错误赋予“非均等代价”。
以二分类为例,可设定一个“代价矩阵”
表中cost10 表示将第1类错分为第0类的代价,cost01同样,表示将第0类错分为第1类的代价。此二分类也可拓展为多分类costij表示将第i类错分为第j类的代价。
前面的性能度量都默认的假设了均等代价,所有错误率是直接计算错误的次数,并没有考虑不同错误会造成的不同的后果。在非均等代价下,我们希望的不再是简单地最小化错误次数,而是希望最小化“总体代价”。
上式中,D+和D-分别表示样例集D中的正例子集和反例子集。
在非均等代价下,ROC曲线不能直接反应学习器期望的总体代价,而“代价曲线”则可达到该目的。
代价曲线图的横轴是取值为[0,1]的正例概率代价:
上式中p是样例为正例的概率。
纵轴是取值为[0,1]的归一化代价:
FNR表示假正例率,FNR = 1 - TPR
代价曲线的绘制:
ROC曲线上每一点对应了代价平面上的一条线段,设ROC曲线上的坐标为(TPR,FPR),则可相应的计算出FNR,然后在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,线段下面的面积即表示了该条件下得期望总体代价。如此将ROC曲线上的每个点转化为代价平面上的一条线段,然后取所有线段的下界,围成的面积即为在所有条件下学习器的期望总体代价。
提高泛化能力的方式大致有三种:1.增加数据量。2.正则化。3.凸优化。
下面图片中每个点代表一棵树的位置,蓝点代表生病的树,橙点代表健康的树。
给你样本数据,要求提供一个机器学习算法算法,区分开两种树。
你千辛万苦画出来一条曲线能够很好地进行聚类,而且模型的损失非常低(损失函数),几乎完美的把两类点一分为二。但这个模型真的就是好模型吗?
用该算法预测新样本时,没有很好的区分两类点,表现得有些差劲。
上述模型过拟合了训练数据的特性,过拟合模型在训练过程中产生的损失很低,但在预测新数据方面的表现却非常糟糕。如果某个模型在拟合当前样本方面表现良好,那么我们如何相信该模型会对新数据做出良好的预测呢?过拟合是由于模型的复杂程度超出所需程度而造成的。机器学习的基本冲突是适当拟合我们的数据,但也要尽可能简单地拟合数据。
https://blog.csdn.net/tiankong_/article/details/78361496
https://zhuanlan.zhihu.com/p/59673364?utm_source=wechat_session
https://segmentfault.com/a/1190000016425702?utm_source=tag-newest
https://my.oschina.net/u/4604431/blog/4476343
https://www.jianshu.com/p/849423297c7f
https://blog.csdn.net/vvyuervv/article/details/65449079
1.什么是泛化能力?
在机器学习方法中,泛化能力通俗来讲就是指学习到的模型对未知数据的预测能力。在实际情况中,我们通常通过测试误差来评价学习方法的泛化能力。
2.泛化误差的定义
大家马上应该发现,这个不是损失函数的期望吗?? 没错,泛化误差就是所学习到的模型的损失函数期望(期望误差)3.泛化误差上界