关于机器学习的简单理解
什么是机器学习?
现实生活中通常碰到的两类问题:
1.一类问题,是给定输入,通过施加一定条件(或算法),得到最终的输出。就像下图这样:
典型的例子,在用计算机解决问题的时候很常见,比如给定一个数的集合(输入),通过编写算法实现数组从小到大排序。输出是一个有序列表。
对于这类问题,人类能够自己设定一种模式(函数),把输入映射成想要的输出。
2.另一类问题,人类找不到这样的模式。以OCR字符识别为例,输入是手写体(数字)图片,输出是0-9字符串,我们并不知道怎么把输入转换成输出,因为手写体因人而异,随机性很大。
换句话说,这个时候,我们缺的是知识(如何映射),不过幸运的是,我们有(实例)数据。
而把这个知识通过机器(计算机)学出来的过程,叫做机器学习。所谓“机器学习”,并不是说机器有思想,它学会了一项技能。机器学习就是用一组数据建立一个统计模型,这个统计模型能对新的数据做出预言。输入数据越多越精确,模型能做的预言就越准确,就好像是它在不断地“学习”一样。数学家管这叫“统计模型”,计算机科学家给起了个更值钱的名字叫“机器学习(Machine Learning,经常缩写为“ML”)”
这个学出来的知识(或经验),可以用于新的输入,产生新的输出。
无论哪种问题,产生我们想要的输出才是目的,机器学习或计算机程序只是手段。
机器学习的运用与分类
从本质上来看,机器学习是通过大量的数据分析寻找最优函数并输出结果的过程。目前,机器学习热门的应用领域包括:在语音信号识别中,函数输入语音、输出对应文本;在图像识别中,函数输入图像、输出对应文本;在围棋对弈中,函数输入当前局面,输出下一步走法;在对话系统中,函数输入提问,输出对应的回答。
基于达到学习目的的方式的不同,可将机器学习算法分为三类:监督学习、无监督学习、强化学习。
有监督学习是从机器的角度来说,它是被动的。就是需要人来“教授”,所以需要人来告诉机器一个前提,例如:人要吃饭,那么通过后期的机器学习,机器可以告诉我们,什么样的人爱吃什么样的饭,吃咖喱饭的人又有什么性格等等。但是如果没有人的干预,来告诉机器人要吃饭的话,机器现在是不具备主动学习能力的。
无监督学习是从机器的角度来说,它是主动的,它需要观察很多的数据。例如你把机器人放到餐馆里,他观察一段时间后,可以发现,人是需要吃饭的。然后可以得出很多结论,例如上面所说的。但是会得到更多结果,例如人们大都几点来吃饭,这个时间来吃饭的人会是什么职业等等。比上面得到的结论更多。
强化学习是通过对未知环境一边探索一边建立环境模型以及学得一个最优策略。有监督学习则是事先给你了一批样本,并告诉你哪些样本是优的哪些是劣的(样本的标记信息),通过学习这些样本而建立起对象的模型及其策略。在强化学习中没有人事先告诉你在什么状态下应该做什么,只有在摸索中反思之前的动作是否正确来学习。从这个角度看,可以认为强化学习是有时间延迟标记信息的有监督学习。
三、如何入门机器学习
如果说一点基础都没有,怎么能一下子就写一个机器学习程序呢?答案当然是很难的,不过好消息是我们可以站在了巨人的肩膀上快速入门。现在机器学习的算法已经非常成熟,连专业人士都不需要自己从头到尾写一个算法,网上都有现成的。常用的机器学习算法大概有十几个,都做成了 Python 的库函数,我们可以直接调用。
对于想认真地自学机器学习,Kaggle 和 DataCamp 是两个非常好的教学和比赛网站。
当然,对于连python基础都没有的小白来说,花个一两周时间甚至学习python语言基础也是必须的。网易云课堂上有不少关于python免费入门课程还不错。
总之,学习的动力源于好奇和兴趣,或者某种需求,现在所学的不一定能够给你带来实际用处,但是相信通过不断的积累,未来碰到问题时一定能够在某个方面给你带来启发和帮助。