我一直相信,检验学习效果最好的方法是给别人讲,让别人听明白,自己也算是学成了。因此,我打算认认真真写一写关于机器学习的这一系列笔记,一是做个笔记,二是用自己的话把机器学习讲一讲。
机器学习,就是通过利用已有的经验(这里的经验在计算机科学中通常以数据的形式存在),来改善系统自身的性能。
举个例子,我们想通过训练使自己具备判别西瓜熟生的能力。一开始我们并不会挑哪些是熟的,哪些是生的。我们先记录一个西瓜的特征,比如说颜色深浅,有没有根蒂,响声是沉闷还是清脆等等,然后用刀切开,看看是不是熟的,并做好记录。切了第一个,我们发现原来颜色深的、没有根蒂的、声音沉闷的瓜是熟的,于是我们就知道了原来这样的瓜是熟的。这个过程就是一个学习过程。利用已有的数据,学会了识别什么样的西瓜是熟的好的。
继续我们的西瓜事业。我们发现第二个西瓜是颜色深的、有根蒂的、声音沉闷的,根据从第一个西瓜学到的经验,我们可以判别他不是熟的(颜色深的、没有根蒂的、声音沉闷的),但是当我们切开以后发现第二个西瓜也是熟的。那么问题就来了,究竟什么样的西瓜是熟的?难道由第一个西瓜判断得到的经验不准?又或者,难道熟的西瓜是颜色深的、声音沉闷的,与有没有根蒂没有任何关系?
带着这些疑问,我们继续重复这一行为:记录西瓜特征,然后切开记录生熟结果。直到重复了一万次,记录了一万个西瓜的特征和切开后的生熟结果,我们对这些数据进行分析,然后进一步调整了自己的认知,进一步得到了关于熟瓜好瓜的判别标准。这一过程就是通过数据训练自己,提升自己判别能力。也许虽然经历了一万个西瓜训练,但是我们也无法能够100%准确判断第一万零一个西瓜的生熟好坏。但是,经过这一万个西瓜的训练后,我们的判别能力肯定比只切开第一个瓜的时候判别能力强,或者说,经过一万个样本的训练,我们判别新西瓜生熟好坏的准确率比最开始提高了很多。
以上例子虽然说的是人学习判断熟瓜好瓜这一技能的过程,但机器学习也是同样的过程。
几个基本术语:
以上学习过程的每个西瓜的记录(包括颜色、有无根蒂、声响等等)叫做一个样本;一万个西瓜整体叫做样本集;每个记录中的每一项(比如颜色)叫做属性;每个属性的值(比如深/浅)叫做属性值;属性的数目(颜色、有无根蒂、声音共3项)叫做维数。
我们关于什么是熟瓜的认知(比如我们认为颜色深的、有根蒂的、声音沉闷的瓜是熟的)叫做模型。
从数据中学得模型的过程称为学习,或训练。
人的一切行为都是有目的的,我们切开一个又一个西瓜,提升了我们的判断能力或判断的准确率,最终的目的是为了更准确地判断下一个西瓜的生与熟。与此类似,机器学习的最终目的是通过大量的训练建立更好的模型,用来很好预测新事物的结果。
我们希望我们的模型,在输入新事物的属性值后,所得到的预测结果与真实结果一致,这是我们的目标。由训练样本的集合所得的模型适用于新事物的能力,我们称之为模型的泛化能力。换句话讲,我们期望我们的模型的泛化能力越强越好。
这里很自然的谈到了机器学习的用途,机器学习与我们的生活密切相关,举几个生活中常见的例子:
1.当我们打开淘宝京东这些购物APP,他们根据我们买东西的历史数据预测我们的喜好,推荐我们感兴趣的商品,以及各种音乐APP根据我们喜好进行的歌单推送等等;
3.自动驾驶,如果把车载传感器作为输入,把方向盘、刹车、油门的控制行为作为输出,那么就可以抽象为一个机器学习问题;
3.在天气预报、能源勘探、环境监测等方面对数据进行分析,提高预报和检测的准确性;在商业营销中对销售数据、客户数据进行分析,优化库存降低成本,进行个性营销等等;
……
现在,我们一方面拥有了大量的数据,另一方面拥有了强大的计算能力,数据背后的价值将是一座金矿,机器学习正是金矿之上所开出的一朵绚烂美丽的花朵。