现如今,人工智能和机器学习正成为一大热潮。每天都有成百上千的人用机器学习做各种事情:如线上象棋比赛、YouTube视频推荐等。但是机器学习到底是什么,它又是如何工作的呢?
很多时候就连开发这些机器人程序的程序员也不知道它们究竟是如何运行的,对这些“机器员工&Rdquo;的工作方式大公司也常常讳莫如深。不过,程序并不会进行自我创造,除非是我们让他们进行自我创造。
人们需要教程序如何创造自己,也有一些人称其为程序制造程序或程序教程序。不管怎样,人们并非直接教程序,而是告诉程序如何自主学习。明白这一点后,就可以开始学习了,可是要想真正上手机器学习,所需时间少则几秒,多则数年。
假如给程序展示一张有猫的图片,它如何能认出这是只猫。人类可以分辨出这是只猫,但你怎么知道这是只猫呢?
可能已经有人告诉你猫的长相,然后当你看到不认识的猫时,又有人告诉你那也是只猫,但如果是你一生中从未见过的蓝猫呢,情况就不一样了,但你仍然可以根据猫的共同特征来判断它是只猫。
换个角度来思考这个问题,你就会发现其他事物也有同样的模式,比如别人告诉你这类事物都是猫,这便是你为何能分辨出蓝猫是猫的原因。这也正是机器学习的功能。它创造出一个机器人程序,给它输入大量的资源并告诉它如何分类,如果存在足够多的模式,它就能教会自己识别猫。
再比如教机器玩踩钢琴块儿的游戏。这是一款十分流行的游戏,玩家需要踩着黑块儿前进,随着歌曲节奏加快,玩家要努力跟上节奏,不能踩黑块儿以外的地方,也不能错过黑块儿。
人类当然可以认出哪个是黑块儿,然后点中它。现在如果是你自己创建游戏,可能只需要告诉机器如何操作就可以了,但对于更复杂的过程和游戏来说,就没那么简单了。
为了教机器人程序玩儿这个游戏,引入了“代&Rdquo;这个概念。第一轮游戏开始时,若干个程序齐刷刷地踩向屏幕。未踩中黑块儿或踩错黑块儿的程序要么被摧毁,要么被回收,无论是哪种方式,它们都不会再延续到下一代程序中。那些踩中了正确黑块儿的将进入下一代程序,并为下一代制造出更多的程序。
第一代程序很可能还没开始,游戏就结束了,一分也没得到。事实上,它们会经历几十代甚至数百代的时间才能连续踩对几次,但最终机器学习能教会这些程序玩这个游戏并把它们训练得非常优秀,甚至是人们做梦也想不到的优秀。
它们通过抓住几个碰巧选对正确答案的幸运儿来学习,然后重复这一过程,直到取得一个不错的成功率为止。这就像是往人身上扔大米一样,最终结果是为了把大米扔进那个人的耳朵里,扔了无数粒大米,总有那么些大米碰巧扔进去了。
既然已经有一些幸运儿成功了,那么“程序老师&Rdquo;就能看到是什么因素让这些幸运儿而非其他程序取得了成功。在钢琴块儿的例子中,幸运儿便是成功获得一分而不是直接结束游戏的一代:
击中黑色屏幕 从屏幕下方或者黑块儿下方一定高度 只点击一次
这就是程序学会不再靠运气而是实际执行的全过程。之后它们可能会渐渐意识到速度和秩序的重要性,这就是机器人程序可以很快甚至永远踩着黑块儿前进的原因。
好坏都有!好处是我们可以利用这项技术去做以前不可能做到的事情,同时还能提高做事的效率和准确度,人类实际上可以从自己创造的机器人程序上学到很多东西。
有这样一种说法:“我有很多痛苦的经历,但这些经历成就了我,成就了我的想法、我的情绪、我的反应以及未来能使我感到快乐的东西。&Rdquo;有些话看起来很荒谬,也没什么实际价值,但极具哲理性。
要想创建出有用的机器人程序,需要学习很多东西,但是提高数学技能、学习编程语言是一个良好且必要的开端,而Python无疑是最好的选择。还等什么呢?赶紧学习去!