[返回杂论闲侃首页]·[所有跟帖]·[ 回复本帖 ] ·[热门原创] ·[繁體閱讀]·[版主管理]
漫谈机器学习
送交者: PRChina[☆★★人民共和★★☆] 于 2019-08-12 18:43 已读 6117 次 8 赞  

PRChina的个人频道

我在上一篇《漫谈人工智能》中曾经提到(https://web.6parkbbs.com/index.php?app=forum&act=view&tid=1118),基于数据的(data-driven)AI主要靠机器学习技术(machine learning,ML,这么巧,那什么也是ML,我喜欢ML,哈哈哈)。那到底什么是ML,咳咳,严肃一点哈,用一个最初的定义,ML就是“A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E”。这个定义的几个要点,首先,ML是个计算机程序,其次它要完成一些任务T,然后它需要从以往的经验E中学习,最后通过学习改善性能P。如果你把机器想象成一个人,当他对一个任务毫无所知的时候,你有两个方法让他完成这个任务,一个是事无巨细地给他安排好步骤,遇到什么情况用什么方法应对都有详细说明;另一个是给他一堆以前完成这件任务的案例,让他自己去寻找其中的规律。这前一种就是我上文所说的基于规则的AI,第二种就是ML的方法啦。

很多人谈ML都侧重ML的算法,比如现在最流行的深度学习deep learning(我未来会另开一文),是基于神经网络的算法,或者随机森林random forest,基于树算法,等等,各种算法不一而足。我在这行十几年,也不敢说每种算法都精通。但我觉得谈ML最根本的应该谈框架。这篇漫谈,我就避谈一些复杂算法,而是从框架入手,聊一聊我对ML的理解。

传统上,ML分监督型(supervised)和非监督型(unsupervised)(现在又派生出很多门类,我在这不细说,未来有时间再另帖谈)。监督型就是在训练机器的过程中,你要告诉他任务完成得对不对,而非监督型是,你不告诉他对不对(有可能你自己也不知道对不对)。但不管监督还是非监督,它都离不开我刚刚讲的几个要素,任务T,经验E和性能指标P。所以首先我们要给机器一个任务去完成,这个任务必须是预测型的任务,比如你问一个人昨天发生什么事,这不是ML范畴,你只有问他明天会发生什么,才需要ML。完成任务T需要机器去学习经验E,E即以数据data的形式存在,比如要预测明天天气,你要告诉机器,今天天晴,昨天多云,前天下雨之类的数据。机器通过算法对数据进行分析学习,这个过程叫做训练(training)。所谓的学习就是一个优化的过程,你需要给机器一个性能指标P,比如一个代价函数(cost function),拿天气预测的例子来说,它的代价函数可以是预测误差。逐渐最小化这个代价函数就能达到预测的效果。如果按照任务的类型,ML又可以分为分类型(classification/clustering)和回归型(regression)。分类型是给机器两个或以上类别,让机器把未知类别的数据归入各个类别,比如天气预测可以把天气分为天晴,多云,下雨,下雪等等类别,机器需要把明天的天气归入这些类别,就是分类型。分类型ML的应用非常普遍,比如给机器一堆图片,让它分清图片中是猫还是狗。回归型ML是预测一个连续数值,比如预测明天的温度,或者某支股票明天的价格。

我大概介绍了ML的概念,是不是觉得好像不复杂。确实,概念上ML不难理解。但是实际实现层面,ML有很多技术难点,我简要的介绍一下。

首先,任何一个ML项目都需要选定对的任务和好的数据。人常说,好的开始是成功的一半,这在ML项目中尤为重要。对任务和数据(至少)有三个要求,首先是基于已有数据可预测的问题,比如你有消费者的消费数据,你可以用其预测消费者的消费习惯,但是很难预测消费者的健康状况,第二是需要给机器较难的任务,比如你让机器分辨黑白对机器来说就太容易了,只需简单设置个门限即可,根本不需要学习,而机器比人类擅长的地方是它可以发现复杂且细微的pattern图案。第三数据的质量要好,且多多益善。我们有句行话:Rubbish in,rubbish out,垃圾进垃圾出。现实中,数据会参杂很多随机错误和遗失,需要在驯练之前对数据作预处理,也就是所谓的清洁数据。同时,很多领域里优质数据非常难采集,这给ML项目增加很多困难。

第二,一旦任务选定,数据也采集清理结束,就要进入建模训练阶段。我们还有句行话:No free lunch,没有免费午餐,即不可能有一个模型或算法对所用问题都适用。这就逼迫我们不能只使用一种模型,而要测试不同类型的模型,选择效果最好的。我们建模的时候,尤其是工业应用时,首先测试简单算法模型,然后再测试复杂算法。如果简单算法就可以达到复杂算法的效果,就不会使用复杂算法,这就是所谓奥卡姆剃刀原理啦(Occam's Razor),一个14世纪的古老哲学。

在ML算法优化的过程中,overfitting是最大的问题。用咱们中国人的哲学来理解,这叫过犹不及。我们说过,ML就是用现有数据预测未知,如果对现有数据研究太精细,甚至对每个情况划定一个规则,反而会影响对大局的判断,在对未知数据的预测上犯更多错误。这非常符合中国人哲学,抓大放小,难得糊涂,哈哈。为了防止overfitting,有很多技术和技巧,同时也决定了ML训练的标准流程,即cross-validation,所谓交叉验证,即把已知的数据分成若干小块,每一小块都被当作未知数据进行预测评估,其他数据当作训练数据,最后得到平均性能。对于如何防止overfitting,我这里就不深入了,否则需要讲好几天。

最后,ML的难点在于对性能评估。这又有好几层难点,首先是选用是么样的性能指标。不同的问题需要选择不同的性能指标,有时性能指标选择错误会严重影响实际预测的性能。再者是时间线。因为我们是预测未来,不是放马后炮,所以一种方法是作回顾型研究,假设自己是在过去的某个时间点,对“未来”作预测,再用已知“未来”对预测做评估;另一种方法是现在用已有的数据对未来作预测,然后封存,等待一段时间,用后来发生的结果作评估,这种时间胶囊型的方式较多的采用在一些国际科研竞赛上,比如我曾经参与的预测蛋白质功能和结构的国际比赛就是采用这种方式,比较公平。

最后,做个总结,ML的要素:任务,数据,评估和算法。我们的目标是,预测!预测!!预测!!!
欢迎转载,标明出处

评分完成:已经给 PRChina 加上 1000 银元!

评分完成:已经给 PRChina 加上 1000 银元!

喜欢PRChina朋友的这个贴子的话, 请点这里投票,“赞”助支持!
[举报反馈]·[ PRChina的个人频道 ]·[-->>参与评论回复]·[用户前期主贴]·[手机扫描浏览分享]·[返回杂论闲侃首页]
PRChina 已标注本帖为原创内容,若需转载授权请联系网友本人。如果内容违规或侵权,请告知我们。

所有跟帖:        ( 主贴楼主有权删除不文明回复,拉黑不受欢迎的用户 )


用户名:密码:[--注册ID--]

标 题:

粗体 斜体 下划线 居中 插入图片插入图片 插入Flash插入Flash动画


     图片上传  Youtube代码器  预览辅助

打开微信,扫一扫[Scan QR Code]
进入内容页点击屏幕右上分享按钮

楼主本栏目热帖推荐:

>>>>查看更多楼主社区动态...






[ 留园条例 ] [ 广告服务 ] [ 联系我们 ] [ 个人帐户 ] [ 版主申请 ] [ Contact us ]