机器学习基石——第3-4讲.Types of Learning

来源:互联网 发布:网络金融最初发展阶段 编辑:程序博客网 时间:2024/05/20 03:39

本栏目(机器学习)下机器学习基石专题是个人对Coursera公开课机器学习基石(2014)的学习心得与笔记。所有内容均来自Coursera公开课Machine Learning Foundations中Hsuan-Tien Lin林轩田老师的讲解。(https://class.coursera.org/ntumlone-002/lecture)

第3讲-------Types of Learning

上一节讲到如果要回答YES/NO的是非问题,我们可以使用像PLA(感知机)这样的算法,他会在无数多条线里面帮我们找出一个符合训练数据的合适的超平面。那本讲主要探讨在机器学习里面,除了是非问题还有哪些其它的问题,它们与是非问题又有哪些不一样?主要从如下的四个角度来分析:输出空间y、数据标签y(n)、真实的target f以及输入空间x。

一、不同的输出空间y

  • 是非问题binary classification:y = {-1, +1}
    二元分类的问题在很多地方都有应用,以后也会慢慢接触到用曲线等复杂的超平面来进行分类。例如信用卡approval/disapproval、邮件spam/non-spam、病人sick/not sick等。
  • 多元分类multi-class classification:y = {1, 2, …, K}
    从是非题出发,一个延伸的问题就是不是要把数据分成两类而是多个不同类别。例如手写数字识别=>0, 1, ..., 9、邮件类别细分=>spam, primary, social, promotion, update等。
  • 回归分析regression:y = R
    对于一个病人来说,二元分类可以区分sick or not;多元分类可以识别出患者是which type of cancer。但是设想一种情况,我们给了病人的状况,想要知道他到底需要多长时间能够恢复?这样的问题的输出空间是整个实数空间R,通常叫做回归分析问题。例如company data =>明天的stock price、climate data=>明天的temperature。
  • 结构学习structured learning:y = structures
    自然语言处理中很重要的一个小问题是自动词性的标注。例如I love ML,其中I是pronoun,love是verb,ML是noun。但是很多情况下词性是与语境特定的sentence有关系的,love可能是动词,也有可能是名词。如果输入是一个sentence,那么输出就是一个structure (class of each word),即y = {PVN, PVP, NVN, PV…},会有很多很多种情况,但一般一个sentence不会是VVVVV这样的情况。
    我们可以将这种问题想象为一个很庞大的多元分类问题,只是现在的类别是隐藏的,这些隐藏的类别之间有某种“结构”上的关系。我们很难很难把所有的类别穷举出来,因为还跟sentence的长度有关。但是我们知道他们之间有某些结构的特性,这是我们希望算法输出的东西,可以想象这样的输出实际上很复杂,但是应用其实也不少。例如speech data => speech parse tree、protein data => protein folding蛋白质的3D立体结构等。
  • …and a lot more!!

二、不同的数据标签y(n)

  • supervised:标记all y(n)。最普遍一种情况。对于所有的训练数据的输入x(n),我们都有标记它应有的输出y(n)。
  • unsupervised:no y(n)相应地,如果对于熟练数据的输入,我们完全没有它应有的输出y(n)的信息。
    unsupervised learning problems又可以细分为很多种情况。1. clustering(unsupervised 多元分类)。例如,网络上文章=>主题归类、消费者资料=>消费者群归类;2. density estimation(unsupervised bounded regression,得到密度分布)。例如通过地理位置信息的交通事故信息,找出哪些是交通事故多发地段;3. outlier detection(unsupervised 二元分类。例如Internet日志=>入侵预警。等等。
  • semi-supervised:some y(n)。例如部分标记的海量图片库=>人脸检测、部分标记的多种药物数据=>药物疗效预测等。
  • reinforcement:implicit y(n) 通过标记goodness(y^(n))。如果我们没有训练数据应有的输出y(n)的信息,但是我们有一些额外的输出标记、以及这些额外的标记的好坏。
    举个例子,训练宠物狗坐下的例子,我们没法告诉它当我说“坐下”的时候它的输出应该是怎样的;但是我可以通过奖励或者惩罚的方式对它作出的输出进行反馈。
    mlf_p3_1
    具体到机器学习的案例中来说,(customer顾客的资料, ad choice, ad click earning) => 训练ad system投放更适合的广告、(cards, strategy, winning amount) => black jack agent 21点是否补牌,标记的当前补牌是否good。
  • …and a lot more!!

三、不同的Protocal/Target f

  • batch learning。成批地将训练数据塞给算法,得到一个训练好的分类器或者聚类。
  • online learning。随着新的数据的进来,我们希望不断地提高hypothesis g,越变越好。
  • active learning。主动学习,通过“有技巧的qeustion asking”,希望在很少的标记情况下不断提高hypothesis g。可能有时候会问f对于特定的x,应有的输出是多少。例如手写识别系统中,有时候自己拼凑一个数字出来或者选一个不认识的问你原来写的是什么?
  • …and more!!

四、不同的输入空间x

  • Concrete Features。在人类的专业知识的前提下,提供很多具体的feature数据。例如(size, mass) for 硬币分类、customer info for信用卡发放与否、patient info for 癌症诊断等。
  • Raw Features。对于数字识别问题,应该喂给算法哪些feature呢?
    如果从Concrete Feature的角度,可以定义x = (symmetry对称程度, density密度)的二维feature,那么1相对于5的特性显然是更对称,密度更低,因此如图左所示。
    另外一个角度,16x16的方格我们可以认为输入x就是一个256维的向量,每一维代表墨水沾满当前小格子的比例。这样的raw feature相对于上面的concrete feature来的更抽象一些,越抽象就代表对学习的算法来说越困难。这样的raw feature的例子会有很多,例如图像的像素点、语音的信号等。往往这个时候需要人或者machines将这些raw feature转换为concrete features。人来帮着做就是feature engineering特征工程,机器来做的例子也有,近年很红的deep learning进行特征抽取。

mlf_p3_2

  • Abstract Features。
    对于音乐评分预测系统来说,给定历史的(userid, itemid, rating),预测给定的userid将会给予itemid的分数。这是一个回归分析问题,输入x为(userid, itemid),输出y为分数。虽然输入为二维向量,但是这些feature没有实际的物理意义,因此even more difficult。
    所以我们必须首先抽取出userid的特征,以及抽取每首歌曲itemid的特征,再用这些特征去学。
  • …and more!!

第4讲-------Feasibility of Learning

本讲主要来探讨一下Learning到底是不是可行的。通过上一节知道我们主要focused on使用a batch of supervised 数据,数据都是concrete feature,来做二元分类以及回归分析。但是即使是在这样核心的条件下,有可能Learning也是做不到的。如果做不到,那么我们能否再加入一些假设或者用些什么方法让它大部分的时候是做得到的。

一、Learning是否可行

如下图中的学习问题,根据学习规则的不同,g(x)有可能是+1也可能是-1。如果不加入一些限制的话,无论你说哪一个答案,我总是可以说你学习的结果是错误的。如此看来,好像Learning是一个不可行的方式。

mlf_p3_3

那我们不禁要问了,从一些局部的抽样数据D来推断未知的target这件事情到底在数学上是否可行呢?如下图所示的例子,我们不知道罐子里orange/green珠子数量具体的占比,那么我们通过随机的抽样选一定的珠子并计算样本中orange/green的占比。那么问题来了,样本中计算的占比与真实的占比可以约等于吗?

mlf_p3_4
数学上已经证明了,在样本量足够大的时候,样本中的占比与真实的占比是非常接近的,也就是所谓的probably approximately correct(PAC)mlf_p3_5

二、与真实的Learning的联系

上面讲了一堆跟弹珠相关的东西,这跟Learning有什么关系呢?我们又不是来学概率课的。那我们接下来看这个例子跟我们Learning中比较熟悉的符号有啥联系。

我们现在想象罐子里的一颗一颗弹珠就是Learning中一个一个的输入x。对于某一个h(x)来说,orange弹珠代表其与真实的f(x)不一样,green弹珠代表其与真实的f(x)一样。那么,在罐子中我们未知的是orange弹珠的概率,映射过来则是对于某一个h(x),与真实的f(x)不一致的错误率。

这样映射有什么好处?如果我从罐子中抓了100个弹珠出来,也就是说我有100个输入x以及其相对应的y(supervised式Learning中)的数据。那么,我们只要判断h在这个数据上与真实的f是否一致就能知道Learning的这100个输入数据——这一把弹珠orange的比例是多少。这个比例用来做什么?用来估计我们未知的那件事情是什么。
mlf_p4_2

Hoeffding不等式告诉我们,对于某一个h,在输入数据足够大的时候,训练数据的错误率约等于h对于所有数据的错误率。也就是说,在训练数据的错误率很小的时候,就约等于h对于所有数据的错误率很小。那么我们是否可以claim 'good learning',我们是否可以说我们已经学到东西了呢,是否可以说g 跟f 是很接近的呢?

值得注意的是(这里的理解是一个难点),我们刚刚的推导一直都是对于某一个hypothesis的h来说,而真实的Learning算法则是从众多的hypothesis set中选择出g,对于不同的数据,选择出来的g肯定会不一样,也就是返回的超平面会不一样。而这时如果强制Learning的算法返回固定的h,由于不是Learning算法选择出来的g,那么抽样中的错误率通常都不会很小,也就是说这个h通常都不会和f 约等于。

既然这样,那么对于不是固定h的情况呢,也就是说对于hypothesis set会怎样?首先考虑,在Learning问题中如果有10个hypothesis,如果学习算法找到了一个hypothesis在你所看到的数据中全对,你要不要选它当你最后的g

先考虑另外一个问题,如果有150个学生同时丢5次硬币,至少有1个学生丢出5个人头的概率是:1 - (31/32)^150 > 99%。而如果只有1个学生丢5次硬币,它丢出5个人头的概率是1/32。这说明了什么?丢出5次硬币可以理解为就是在所看到的数据中全对,而只要有一个学生丢出了这个h,Learning的算法就会选择它。。这是我们不愿看到的情形,有选择的时候便有了偏见

Hoeffding不等式告诉我们,我取样出来的和我罐子里的错误率大部分的时候是一样的,只有小部分的时候是不一致的。那,我们现在发现,有选择的时候Learning算法的选择会恶化这一小部分不一致情形的概率。那究竟恶化到一个什么程度了呢?

mlf_p4_3
在样本量足够大的时候,Hoeffding不等式能够保证的是我们做很多次抽样,出现样本与总体情况不一致时小概率事件。如上图所示,对于h1来说,标记为BAD的则为小概率事件。所以对于总共M中选择的hypothesis set,每一个抽样只要有一个h(n)是BAD的,我就认为这次抽样对于整个hypothesis set是BAD的。因此有选择的时候恶化的程度即为hypothesis set整体BAD的概率,如下推导所示:

mlf_p4_4

因此,也就证明了“最合理”的学习算法(譬如PLA)选出hypothesis set中错误率最小的h作为最后的g,从某种角度来说也就说明了g会在总体的表现中错误率也很小。于是,我们现在终于可以做到一点点的Learning了。什么意思呢?如果hypothesis set是有有限种选择,训练样本够多,那么不管学习算法A怎么选择,样本的判别结果都会与总体的一致。那么,如果学习算法设计为寻找样本中错误率最小的,那么刚刚的推论PAC就能保证选出来的g与f是约等于的。
mlf_p4_1

不过仍然有一个遗留问题,刚刚的推论是在hypothesis set有限的前提下,那类似于PLA的hypothesis set是无穷的又如何呢?不用紧张,以后会证明这个问题。现在至少在有限的情形下证明了,这是一个很好的出发点。

 

关于Machine Learning Foundations更多的学习资料将继续更新,敬请关注本博客和新浪微博Sheridan

原创文章如转载,请注明本文链接: http://imsheridan.com/mlf_3rd_lecture.html

0 0