2018-10-25
今天是挑战从零开始自学人工智能的第9天。
看完机器学习的基本原理后,我最大的感受是:计算机是用一种很笨的方式来学习的。
举个例子,有一些红点的分布情况如下图所示,我们现在要找到一条直线,使所有红点到直线的竖直距离的和最小,我们把这条直线称为“最佳直线”。凭直觉,你可以一下子画出这条直线,而且只需要非常简单的几何、代数知识你就能证明,图中的蓝色直线就是我们要找的最佳直线。非常简单的一个任务,不是吗?
在机器学习中,要让计算机找到这条直线,它会怎么做呢?它会先画一条直线,然后傻傻地把每一个红点到直线上的竖直距离全部算一遍,再求和,得到一个数;然后再画一条直线,把刚刚的计算再做一遍,得到第二个数,再把这两个数相比较,然后把较大的数丢掉,留下较小的数,接下来,计算机会不停地重复这个过程,并把每次的计算结果跟上一个数相比较,然后舍大取小,这样不停重复地用新的模型替代原来的模型的过程,称为迭代。通过很多次很多次的迭代以后,电脑终于得到一条尽可能接近最佳直线的直线。这种方法很笨,不是吗?
但是,问题是,如果红点的数量变得很多、规律也没那么明显时,你又要如何找到最佳直线呢?这个时候你已经不能再一眼看出答案,只能像电脑一样,用这种最笨的方式慢慢算出来。可见,对于大量数据的项目,这种迭代的“笨”方法,其实是一种好方法。但这种简单粗暴的方法只有电脑使用起来才能发挥全部威力,因为它依赖于超快速的计算能力,否则,就算是电脑,计算百万个以上的数据,也要花费不少时间。
这也能解释为什么在机器学习领域,GPU会比CPU更受欢迎。我们看上面的例子,在红点数量很多时,虽然要计算所有红点到直线的竖直距离的计算量是很大的,但是单个红点的竖直距离是很好算的,这么简单的计算GPU的一个计算核心就能胜任,而GPU一般有成千上万个计算核心,这些核心同时计算的话,速度是很快的。而CPU虽然每个核的计算能力更强,但计算这么简单的题目有点大材小用了,而且它一般只有几个核,处理这里这么多数据的速度当然更慢。打个比方,要计算成千上万道小学计算题,GPU的处理方式是让成千上万个小学生各算一道,而CPU的处理方式是让几个博士生去算,虽然每个博士生的计算能力更强,但总的速度却没有小学生快,果然是三个臭皮匠,胜过一个诸葛亮……
我已经把所有跟人工智能有关的文件分享到网上,大家可以在公众号或头条号:“深读小栈”里给我发私信:“人工智能文件”,自行获取。
声明:所有的文件仅作学习交流,请大家自觉于下载后的24小时内删除。
领取专属 10元无门槛券
私享最新 技术干货