最近重拾机器学习(machine learning)的一些基本概念,希望可以用在bots或者数据分析上。理了一下思路,写一篇介绍机器学习介绍短文。
机器学习是人工智能的一个分支,其目的是为了教会计算机“学习”的能力。所谓“学习”,就是将已知的数据,转换为经验,进而能提供预测或者支持决定。机器学习已经成为了很多其他数据分析、图像文字处理,乃至类人机器等应用的重要前提。最近最有名的例子便是打败人类棋手的AlphaGo。
我们来讲个案例,在案例里介绍机器学习的一些基本概念。可能比较概括或有不恰当之处,姑且听之吧。
假设我是一个大公司里的人事干部。新一年从全国各个大学毕业新入职的员工就要来报道了,我要做些准备:拿到过去几年新员工的人事档案,包括他们个人信息、入职的背景,随后公司对他们的评价,和他们发展情况。这些已知数据,经过一番分析,就是经验了。然后我们就可以做预测和决定了。如果停留在分析阶段,那最多是统计。只有用了计算机算法找到合适的模型,并应用于某些场景,才叫做机器学习。在我们的例子里,可以有以下几种场景:
- 老板说,我想知道,那些员工可能会三年内离职,那些会比较长时间服务公司。——这是一个分类预测问题。用简单的two-class classification算法,比如SVM。
- 财务说,我想给新员工制定一个细分的工资阶梯,能力高的可以起始工资高。——这还是一个分类问题,只不过类别数目多于2个。可以用multi-class classification算法。比如decision forest。
- 老板又说,公司将给每个新员工转正之后发一笔奖金。但每个人拿到的数目根据表现略有不同,要预测每个人发多少,总共多少钱也可以提交财务。——这是一个regression问题。可以用Bayesian或者Neural network之类的regression。
- 另外一个人事干部说,想要做一些新员工的兴趣活动项目。不知道新员工有那些兴趣活动,也不知道那些新员工会对某一个活动感兴趣。——这是一个clustering问题。用K-means。
我们可以看到,针对每一种需求,都需要相应的建模。每一种建模有很多算法可供选择,每一种算法的参数也有多种变化。更不要说,在建模的初期,我们还要对数据进行“清理”:保留比较多相关的信息,去除不相关的信息。而相关信息之中也有权重的区别。机器学习算法就是在数据的杂乱无章里,找到规律。
- 假设我们已经知道了一些规律,能给出一些参考或例子,那叫做supervised learning。
- 相反,如果我们两眼一抹黑,全靠算法去自己寻找,那叫做unsupervised learning。
- 还有一种,用模型预测了之后,随后得到结果。根据结果调整模型,那叫做reinforcement learning。
机器学习和人类学习目前最大的区别在于:机器还只能“举一反三”,人类还可以“触类旁通”。就拿AlphaGo来说,它可以通过10盘棋产生100种新的对战方法,但无法通过下围棋来理解”眼前富贵一枰棋,身后功名半张纸”。