最近,Cousera公开课上又多了一门优质的ML课程,尤其对于华语圈的朋友是学习机器学习的福音。由于本人之前对ML有一定的学习和理解,所以从一个观察者or评论者的角度,来看林老师讲的ML课程,客观的评价是,讲的非常清楚,没有国内大学ML相关课程的照本宣科,问题的引入、算法的描述以及推理都很清楚,非常值得好好学习,不管是刚接触ML的朋友,还是有一定ML经验的朋友。
本次Machine Learning Foundations课程主要沿着四个大问题构成的主线来阐述机器学习的,四个大问题分别是:① 何时机器能够学习?② 机器为什么能够学习?③ 机器该如何去学?④ 怎样能让机器学的更好?
第一讲:The Learning Problem
1. 怎样理解“学习”呢?
我们通常理解一个客观事物,通常是从观察开始/出发,经过大脑的思考、对观察到的事物/信号的处理,经学习过程,最后转化为一种技能,这种技能可能会帮助我们更准确的认识事物、更少的犯错误、更好的判断等等。从观察出发,经过大脑的学习过程,最后形成有价值的技能/技巧。
但是,对于机器来讲,它又该如何像人那样,观察事物,思考\处理\学习,最后转化为有用的skill呢?
机器的所有观察是都通过data来体现/记录的, 它不能像人一样直接理解眼前看到的,听到的(其实人也有一个处理过程),要想让语音(听觉信息)/图像(视觉信息)/文字让机器能"读进去", 必须使用一些方法将其转化为计算机能认识的信息,这些信息我们称为data。机器是从这个data中学习/计算,来模拟人的大脑思考/学习/处理信息的过程,最后形成有用的skill(关于skill的表示形式,在机器学习的组间中会详细介绍)。
2. 为什么是机器学习而不是其它?
我们要想识别一个物体(如课堂中提到的Tree Recognition),How to do?
一种方法是定义规则:我们把关于识别树的所有规则写下,然后来了一个物体,我们就用规则来去判别这个物体,发现这个物体都满足我们的规则,那就可以断定这个物体就是一棵树,反之不是。Maybe这是一个不错的Solution。但是存在一些问题,比如:
① 我们又如何保证能写出所有关于树的规则(存在规则较多,我们不太可能全部列出的规则, 或者说有些规则列出来不太容易做到,如speech/visual recognition)?
② 像Tree Recognition问题的规则还好一些,毕竟我们人类还是可以写出来一些formula的,但是对于为我们不知道或者之前从来没有碰到的事情,又该如何定义规则呢?这个时候我们就不能去定义规则了,因为我们之前没有碰到过这种情况,如课程中提到的navigating on Mars。
③ 还有有些需要快速决策的应用,依靠人的经验,虽然也可以,但是太慢,满足不了实际应用的需求,就是一些high-frequency的问题,如股票交易,广告交易市场(Ad exchange RTB, 行业标准是100ms内完成受众定向、广告检索/排序、广告出价等一系列工作)。
很明显,以上问题我们人靠规则formula、program the system是无法解决的,幸运的是,Machine Learning可以帮助我们完成,它可以从data中通过Learning Algorithm来学习data中的规律,形成有用的skill(通过g来体现)。
以上问题正是互联网、智能领域当前正在面临的重大问题
3. 如何判断该不该使用ML?
课程中提到,如果同时满足以下问题,就可以考虑使用机器学习了?
① 存在可以被学习的"隐藏模式/规则"。如果data中毫无规则,不管使用什么样的学习算法和学习多久,都无济于事;
② 规则/程式不能或不太容易被定义,此时机器学习能帮忙;
③ 要有data(with the pattern)。
4. ML的应用
课程中分别阐述了ML与生活相关的几个方面的应用:
① Food: 使用Twitter数据,根据语义分析和位置信息,来帮助用户判断某一家餐厅的食物安全状况;
② Clothing:根据销售数据和客户调研,为顾客推荐更时尚流行的服装搭配;
③ Housing:依据建筑特征和能耗状况,预测其它建筑的能耗;
④ Transportation:通过交通信号image and meanings数据,使自动驾驶汽车更准确的识别信号灯;
⑤ Education:教学系统上学生的答题数据,来预测学生回答正确某一题的可能性;
⑥ Entertainment:推荐系统,电影推荐:将电影描述成特征向量,用户对电影的喜好也描述成特征向量,这样电影和用户之间可以采取某种方法算出用户对电影的喜好程度,同时可以预测未评分用户对电影的可能喜好程度;
5. ML的组成元素(组间)
① Input:x ;
② Output: y;
③ 待学习的unknown pattern(目标函数):f: x --> y(理想的未知的formula);
④ data(训练样本):D={(xi, yi)};
⑤ 假设(skill with hopefully good performance): g: x---->y(从data中学来的pattern)
解读:数据是从一个未知的pattern中(用f表示)生成的(这个pattern,即模式/规则,可以是某种分布,亦或者是满足某个formula),我们是利用observed data通过学习算法得到一个假设g,目标是希望g尽可能的接近f。这个就类似于统计学中数据是从某一分布中抽样而来,然后通过假设,计算样本统计量推断总体参数,进而在假设检验,验证假设的正确性,从而退出data的pattern。
6. 学习模型
我们要找的g(formula)认为是在一个set of candidate formula中,即假设空间H中,我们的学习算法A就是要在H中找到一个g,使得g更好的拟合数据(此时g越接近f)。
学习模型=学习算法(A)+假设空间(H).
下面的slides给出了很好的解释:
7. ML与DM,IA,Stats之间的关系
这些本来就是交叉学科,再加上数据时代的来临,他们的边界变得越来越模糊...
附:第一讲中关于ML的几个解读
ML:acquiring skill with experience accumulated/computed from data.
skill <==> improve some performance measure(e.g. prediction accuracy)
ML: improving some performance measure with experience computed from data.
ML: an alternative route to build complicated system.( compared to hand-programmed system)
ML: use data to compute hypothesis g that approximates target f.
参考资料:
1. Courera公开课:机器学习基石(台湾大学)
2. Learning from data