台大林轩田·机器学习基石记要
昨天开始看林轩田的机器学习基石,从今天起开始去粗取精
第一讲比较基础,一些概念自己早已经理解了,所以不再做笔记,有点印象的是讲到了ML、DL、AI的一些联系与区别,ML主要是想从数据中学习/逼近一个理想的函数f(x)
第二讲讲到了PLA,感知器学习算法,并且证明了线性可分时感知器收敛定理(与Haykin的Neural Networks and Learning Machines证明相同,另外补充的是学习速率不一定为1,只要非负即可,但是这个地方还有一些疑问,在Haykin的pdf中也标出来了,具体是Michelle的机器学习一书中又说学习速率不能太大。。),另外说道了线性不可分时的Pocket Algorithm,是一种贪心算法。
第三讲讲的还有多种机器学习问题,二分类(是非题),多分类,回归(已经有许多统计学知识可以使用到),结构学习(可以理解成复杂的多分类问题,比如自然语言处理中的词性标注问题,由于句子长度不定,类别可能有无穷多种),第三讲还没看完,后面又讲了:
batch learning V.S online learning V.S active learning(当label is expensives)
RL is often done online
5/19/2016 11:46:44 PM
第四讲
learning is doomed if any f can happen. 换句话说,如果想要是机器获得学习,获得训练数据集之外的泛化能力的话,必须对f施加约束
这些思想挺不错的。由此过渡到PAC学习理论
利用sample from the whole来学习,讲到了霍夫丁不等式(怎么证明,好像是统计中的一个很基本的不等式,比大数定律都基本)
然后将marble bin 问题和learning 的connection,经典!总的来说就是基于霍夫丁不等式和IID,由已见推未见
从而有
形式化描述:
注意,以上讨论仅限于一个固定的假设集(见下图)
上面这张幻灯片的末尾说,就像perceptron learning一样,它会做选择,喂给它不同的数据就会得到不同的线而不会每次都得到同一条线。。。这句话不甚理解。所以我们现在做到的事情不是learning,我们现在做到的事情是verification(如下图)
一个题目:
学得有点迷迷糊糊的。。。
connection to real learning
这一节课讲与真正学习问题的联系(上一节课只是将marble bin与单个的假设函数联系起来了,充其量算verification,而这里就要与多个假设函数联系起来)
下面这张图的意思是,如果出现了一个hM,在samples的上面表现完美,那么要不要选择它呢?
事实上,当假设集变大时,bad samples(或者我觉得可以理解成误选择的几率会变大,课上举得例子是丢5次硬币出现全正面的几率,当硬币数目是150个时,会大于99%,也就是会选择一个普普通通的硬币误以为是偏向于正面的硬币)的几率会恶化,这只是一种intuition上的理解,具体应该看math formulation.
注意,这是出现bad samples,也就是说如果你做的实验次数越多,那么越容易出现bad samples,并不是自己先前的那种理解,也就是只做一次sample。 但是实际当中,我们也只会做一次sample吧,也就是说训练集是固定的,而假设函数是多样的,这么来看的话,讨论bad sample意义似乎不大啊??
不对,确实是有意义的,上面那段的理解并没有抓到本质,应该参考上面那张图来看,意思是:确实,只做了一次sample,但是如果有多个hypothesis的时候,很有可能会出现一种情况刚好在手头的这个sample上(注意,确实只有一个sample)表现perfectly。 这就像是抛硬币一样,抛硬币这个例子确实举的好!不过,需要说道的是,硬币这个例子还是比较狭义的,因为多个hypothesis可能不一定要相同的Eout,允许Eout不同,但是仍然会出现bad sample,硬币这个例子对应的其实是所有的hypothesis都有相同的Eout,不过作为一个范例,足以反驳“多hypothesis情况下,盲目选择best performance hypothesis”的策略!
所以说
当选择多了,出现bad sample的概率会变大!!!
接着看bad data for many h
下图确实应该是使用联合界定理(而不是自己脑海中想的1-(1-p(…))^M),因为如前所述,只做了一次sample,而bin中的dirty data或者说bad data的概率应该用联合界定理计算。
(看到这里,不得不插叙感叹一句,这套课程在学习理论上讲的太好了,比CS229细致,深入!期待更多惊喜。后面要花时间证明霍夫丁不等式!)
所以讲到这里就可以说,当假设函数集是有限(等于M)的时候,机器是可以学习的!
但是,当M时无穷的时候怎么办呢(比如说感知器,很明显,分隔超平面的个数是无穷多个),后面会花两到三次课讲无穷假设集的情况。
一个不错的问题:
上图最后一句,下一次,我们会利用这些性质(重叠的情况)来探索无穷假设集的情况。
一个小结:
用林的话来说:先是“耸人听闻”,说机器不可以学习,举的那些公务员似的学习问题;然后说当sample和总的data满足一些特定情况(IID)并且对假设函数施加约束后,机器是PAC可学习的,具体地用了一个固定的hypothesis时的霍夫丁不等式来说明;再然后讲到了当hypothesis有有限多个时,仍然是可学习的;最后将无限假设集的情况留到以后讨论。
经典!!!
简略地概括来说,第四讲利用marble bin结合霍夫丁不等式的思想讲了single hypothesis和finite hypothesis的可学习!
5/20/2016 11:44:51 PM
开始证明霍夫丁不等式!参考张驰远简书博客
http://freemind.pluskid.org/slt/vc-theory-hoeffding-inequality/
博客首讲到有限VC维则是learnable(来自caltech ML课程) ,而非林轩田前边课程中提到的hypothesis的个数,这一点林后面应该会讲到。
大致浏览了一下,细节还没有吸收,但是基本感觉能看懂了,讲得很好,主要是有了林轩田课程的一些知识,嗯,nice,明天车上可以看!等到把林轩田关于无穷hypothesis的learning问题讲完后,还可以回过头再看看,甚至不嫌麻烦的话把caltech的那部分课程看看。
5/21/2016 12:20:10 AM 晚安future
再看张驰远的简书,证明过程已经看懂了(要吸收它的证明思想,大致来说就是放缩),留下的问题是
- 切比雪夫不等式和霍夫丁不等式的关系
- 霍夫丁不等式原始论文
- 博客评论中的CMU推荐学习材料(天啊,这个资料太赞了!!!链接)
- 完成林轩田的课程后再复看一遍
开始看霍夫丁原始论文,,太难看了。。。转看CMU的那个统计资料(36-705 CMU Intermediate Statistics notes2),超赞!看完了前两部分,第三部分The Bounded Difference Inequality还没看。前面从马尔科夫到切比雪夫到霍夫丁的推导非常小清新而顺畅。
5/21/2016 11:20:08 PM
36-705 CMU Intermediate Statistics
Course description
This course will cover the fundamentals of theoretical statistics.
We will cover Chapters 1 – 12 from the text plus
some supplementary material.
This course is excellent preparation for advanced work
in statistics and machine learning.
天啊,看这个课程描述,作为ML的高端入门必看啊!!!!!
考虑把36-705与林轩田的课程同步学习!!
林轩田第四讲告一段落。
第五讲 (recap:第四讲利用霍夫丁不等式和marble bin的思想论证了如果sample与总体数据是IID的并且对假设函数施加约束(单个hypothesis和有限hypothesis)那么问题是learnable的)今天讲无限hypothesis
下图简述了过去四堂课的脉络
hypothesis小或者大各有利弊:
下面的任务可能要花三节课(3 hours)的时间来讲清楚(论证PLA确实是可学习的)
当M趋向无穷时,使用union bound去计算显然会fail,因为事实上,许多的hypothesis的bad data会有重合:
可以试着把无限多的hypothesis按类分,而不是按个数分:
一个点时,这个世界上只有2条线
两个点时,只有4种线
三个点时,8种线
但是一定会有八种吗(上图末句),共线时只有6种
四个点时,14种线(比较general,不考虑共线)
So
说得好!感觉慢慢地与VC维扯上关系了!一个题:
说future lectures会正式证明为什么是22条先,有点意思。。。期待
一个新概念(就是前面讲到的考虑了重叠之后的hypothesis),考虑用dichotomies来换掉霍夫丁不等式中的M
由于dichotomies的大小与输入有关,于是定义一个生长函数
先考虑比较简单的growth function(perceptron的比较麻烦)
或者这个
上面两个dichotomies的数量级都是满意的,因为都不及霍夫丁不等式的指数衰减的作用。
考虑下面这种情况,大意似乎是把+1用凸集包起来吧
可以发现,它可以shatter 2^n个点
前面一共讲了四种growth function,到底perceptron是多项式还是指数的,下节课才去严格地证明。
先对成长函数再做一个简单的小定义 break point
那么有如下关于break point与growth function的成长的速度的猜想
(conjecture),下节课会证明。
??下面这道题的答案岂不是与上一张图的结论矛盾,growth function
的成长速度并非平方啊
第五讲小结:
第六讲 roadmap
k若为break point,则k+1…都是。那么break point有没有为到底产生多少dichotomies加上更强的限制呢?
如果break point为2,那么N=3时最多只能产生4种dichotomies。wait,关于这个似乎有些数学规律在里面,可以想想。。。?
So
题目
bounding function
可以很容易地填完一半的表,但是剩下的一半才是重头戏所在,因为牵涉到N>k的情形。
我勒个去,下题的目的用来说明 bouding function 原来很松,等号不一定会取到,还是要具体问题具体分析,原本还以为mH(4)就是15呢。。。
下面来填 bounding function 表的剩下部分,oh my god,这让我想到了动态规划。。。:
后面的证明确实相当精彩,就是使用了动态规划的思想。
以求B(4,3)为例,先分类:
于是
一般化:
所以得到,最后说到其实小于等于可以是等号,自己课下可以去证明。。??自己有时间证明一下
第三个perceptron的mH(N)写不出来,但是没关系,因为mH(N)总可以只被
一个break point bound住
下题,虽然选项4没给出严格的数学证明,但是我就这么认为了吧。。
……
第六讲的最后一个视频说到,有了上面的基础,后面并不是简单的把N替换成mH(N),当N很大时,事实上变成了
这个证明非常的technical,所以只讲一下大概的各个参数(2,2,1/16等)是怎么来的。。有兴趣课下自己详细证明一下??
可是自己连sketch of proof都没看懂,Andrew N.g说他看了一周的VC维证明莫非就是这个地方(一番折腾发现,36705中lecture3中说到36702中有证明,而36705是36702的先修课程,看来想要完全搞懂确实不是简单的
事啊)。。。下面有三步,分别解释2,2,1/16的来由:
至此,就证明了二维的perceptron是可学习的!
本讲末的一个题,从中可以看出这个bound并不是很小,也就是说坏事发生的几率不小,原因是我们在推导VC bound时用了很多近似在里面。下节课我们再来探讨VC bound既然不是那么紧,为什么我们还要花这么多力气去推导它,请期待下一节课。
小结,总结得很好,通过break point用B(N,k)bound住mH(N),再证明B(N,k)是polynomial,然后用一个pictorial(因为理论太艰深,所以只能不严格的讲)proof用mH(N)替代M,推出了经典的VC bound,证明了2D PLA可学习,最后通过一个题发现VC bound并不是很紧,VC bound的意义悬念留到下一讲:
第六讲听完后发现了许多supplement materials:
- 36705
- 36702
- Statistical Inference(36705 textbook)
- 绽老师推荐的Vapnik的Statistical Learning Theory(SLT)
第七讲 讲VC 维
最后的不等式利用了上上张图的结论
无论选择什么算法或者分布或者目标函数,都能在概率上保证Eout接近Ein(即使Ein很大)
题目,存在N个点能被shatter即可。
下面这部分证明了d维线性分类器的VC维是d+1,证明很巧妙,通过证明dvc>=d+1且dvc<=d+1 通过构造矩阵证明(在绽老师的组会上探讨过)
下面是vc维的物理意义
更深入了解VC维
为模型复杂度付出的代价:
powerful H not always is good:
sample complexity,理论上要10000倍的vc维 实际只需要10倍,说明VC bound很宽松
宽松的原因是因为:
但是,VC bound的宽松对所有模型都是同等的宽松,因此有可比性,再者,VC bound背后的哲学意义对于ML意义重大(不要盲目追求高的VC维)
题:恭喜初步掌握了VC bound
小结:
图末,下一讲将VC bound延伸到更广的学习问题上,more than noiseless binary classification
第八讲 noise and error
下图说,即使是含有噪声,给定一个固定的x对应的y可能不同,同样使用先前marble bin的思想(只是这里球的颜色相当于会变,是变色龙),复写VC bound的推导过程,同样可以得到这种含有噪声模型(probabilistic marbles)下VC bound仍然成立。细想确实如此!
看到这里睡着了,中午没睡的。。下面接着看。
含噪声模型下(概率模型),学习的目的不再只是为了接近f(x),而是下图末:
VC bound仍然会工作,那么pocket algorithm也会工作,意思是只要学
习算法能够让Ein尽量小,那么Eout也会小。
题:
error measure
因为不同的error measure下,算法得到的最佳的g也是不同的,因此要把error measure加入learning flow中
VC bound still works for different problem(classification or regression) and different error measure,具体的数学证明比较繁复,所以就不细说了。
下面是一个题:
那么应该选择error measure呢,先从指纹辨识说起:
在具体的应用场景中,比如说超市购物打折中,false reject和false
accept对超市影响的严重程度不同,所以作为一种改进,对二者赋以不同的惩罚:
而换成CIA来说,又变成了:
但是在实际应用中,要用户(超市、CIA)量化的给出true error是几乎不可能的(因为超市和CIA也不知道到底应该用多少倍来表示不同的严重程度),所以实际中常常使用plausible或者friendly(对算法来说容易求解)的方法,这样得到的是err^,而非err,是对err的估计或者逼近。见下图。
因此,在评估g和f的相似度时,使用的是err,但是真正对于算法来说,我
们给的是err^
一个题:
pocket仍然work吗?
虚拟的复制1000次(实际中对应到(1000倍概率)更频繁地访问)
小结
未来会学到更多的ML算法
第九讲 linear regression
如果Eout变好了,那么learning就发生了。
一个比VC维更好的关于Eout会很小的解释
下面最后的trace怎么证明??
下面这个没看懂??
线性回归的学习曲线,与VC bound有相似之处
题目:
感觉林的线性回归讲的比较深入,以后还要回顾。
可以用Linear regression来做binary classification吗,下面讨论
从VC bound来看,如果减小regression的Ein,那么classification Eout也会变小,所以,可以用regression来做classification
题:
以上几种error measure以后都会用到
小结:
第十讲 logistic regression
顿悟的有:
- logistic regression和binary classification的区别在于logistic regression想知道的不是“有没有得癌症”而是“得癌症的几率是多少”。
- 使用logistic function的目的很单纯,其实就是想把原先的WTX映射到0,1之间以表示概率。
- 另一个很重要的思想史:logistic regression之所以是“learnable”是有前边VC bound的理论支撑的(将VC bound推广到含有noise的probablistic target的情形,当时使用probabilistic marble来解释的)
事实上,第八讲的前两个视频中分别进行了VC bound推广。第一个视频就是上一个第三点说道的,考虑了如果有noise下的probablistic target情形,vc bound仍然work.第二个视频则说到了error measure,意思是不限于0/1错误衡量(PLA时的),使用许多更广的hypothesis和error measure时VC Bound仍然会work.
那么,同样是线性模型,logistic regression的error怎么定义呢?
一番修整,得到:
题目:
接下来是最小化目标函数了:
求导
不像linear regression,没有closed-form solution
so
选择不同的n,v就会得到不同的迭代优化算法
题目:
使用泰勒逼近
怎么选择n
改进后:
题目:
小结:
前面讲的三种都是线性的方法(linear classification,linear
regression,logistic regression),下一次把他们整合起来用到更加复杂的分类问题(多分类)上面。
第十一讲 Linear models for classification
讨论了将前面讲到的几个线性模型PLA,linear regression, logistic regression都用于classification的可能性,PLA就不用说了,主要是linear regression和logistic regression, 通过使用VC bound可以证明用linear regression和logistic regression实现的classifier是learnable的,因为他们的error比较大,所以他们构成的bound都比PLA的要loose.所以…这一讲比较简单,ppt我就一次放了
题目:
用随机过程来替代平均
题目:
多分类:
使用one aganist all的方法,可能会有区域无法判别
解决方法是使用soft的方法,用概率(logistic)而不是非零即一的硬二分类
会有unbalanced data的问题,另外有专门的multinomial logistic regression(与使用logistic regression通过one aganist all构造
出来的多分类器的区别是后者概率和不一定为1)
题目:
继续讨论OVA的unbalance的问题,可以使用OVO然后投票:
问题,easy:
小结:
以后讲非线性
第十二讲 Nonlinear Transformation
广义说是feature transformation,这里狭义地理解成非线性分类器,其实就是kernel的思想,直接上图:
其实就是课程一开始说到的feature transformation的思想,这么强大的方法,真的管用吗?(下一个视频会讲代价)
题:
付出计算和储存的代价:
模型复杂度的代价
泛化问题,靠“人眼看”可以吗?
人眼看其实是在“作弊”(人脑潜意识有一个很大的VC维)
题目:
随着nonlinear transformation的次数增加,VC维会增加,而且假设空间是逐级包含的(有点张志华统计机器学习第二节课随机变量1中讲到的递增可测空间的意思。。。)
这种structured hypothesis sets,下面的结论顺理成章,高的次数(VC维)未必好,即使Ein小,但是VC bound宽松,Eout反而大了。
选择模型从线性模型开始,此处又体现出奥卡姆剃刀原理,林轩田的这门课程中关于VC维,Ein,Eout的思想讲得很好。
题目:
小结:
下一讲会接着讲dark side of the force(也即是powerful nonlinear transformation)
第十三讲 Hazard of overfitting
“以退为进” 即使先前知道数据是由十次多项式+noise产生的
解释的原因是:当数据量处于灰色区域时,H10的Eout不如H2
即使是在五十次多项式并且无noise产生的数据上时,H2仍然更好,解释的原因是,模型复杂度扮演了noise的角色(不理解,后面会讲)
题目:
那么什么时候overfitting会发生?继续做些detailed experiment
noise和complexity对overfit的影响引出了课程Logo
题目:
怎么deal with overfitting,一个形象的比喻
data cleaning/pruning
data hinting
题目:
小结:
overfitting产生的原因:noise,data不够,power太多,另外如果target太复杂也可以视为一种noise(deterministic noise).然后讲了几种应对的方法,对data的cleaning/pruning,hinting,下一讲会讲regularization
第十四讲 regularization
easy 直接上图
题目:
解释不错
可以求出解析解(线性回归时),称为ridge regression
下面引出正则化项的方法很有新意,是亮点!
引出了Legendre polynomials,原因不太懂??
题目:
正则化后VC维问题:
Eaug是更好地proxy
感觉通过正则化后的Eaug扮演了障眼法似得角色,最小化Eaug的过程中似乎考虑了整个dcv(H),但是事实上只考虑了dEFF(h,A),即有效的VC维。
题目:
更广义的regularizers,选择好的regularizer的一些思想,类似的思想在选择err measure时也出现过:
重点解释了为什么L1会施加sparsity,原因是Ein的梯度与regularizer不平行时,会把最佳解“拉”到顶点上去
从下面两个图可以看出,当noise越大时,最好的lambda也会偏大,就像是路况不平时,刹车(regularizer)要多一点。另外,从右图要能看出,ideal function应该是15次的,所以15次时没有deterministic noise.可是noise不是提前知道的,如何选择最好的lambda呢,卖个关子,下一讲再讲(估计就是validation)
题目:
小结:
第十五讲 Validation
so many models to learn
模型选择很重要,可能是ML中最重要的问题。不能用“眼睛”去选,原因是1,高维数据没法“看” 2,人脑潜意识很高的VC维
不能用best Ein选
用best Etest是作弊
但是可以用Eval 留一些训练数据作为test,legal cheating :-)
题目:
Eout(gm*)是选出gm*-之后再在整个D上训练出的模型
K的困境,通常会选择N/5作为验证集
题目,看起来validation未必费时(没花25N^2的时间):
留一交叉验证:
理论保证:没看懂??
题目:
留一交叉验证的缺点:难算,unstable
V重交叉验证
题目:
小结:
第十六讲 三条锦囊妙计
奥卡姆剃刀
下面这个用概率解释的思想很新颖
题目:
抽样偏差 sampling bias:
课程刚开始时的银行贷款问题,数据其实也是存在偏差的
题目:
偷看数据(data snooping),应该尽量避免,
有时不限于用眼睛看,间接地求统计数据的“偷看”也不行,比如放缩时,不应用到validation的数据
拷问犯人越久,他就越容易招供
应对data snooping(提高警惕,谨防偷看)
题目:
基石总结:power of three
validation相当于模型的复赛
未来的三个方向
题目:
小结:
基石结束
6/1/2016 7:37:45 PM