从代码蜕变成人工智能,AlphaGo在围棋界证明了自己后,已经向游戏《星际争霸2》正式发起挑战。对我们的生活而言,竞赛只是他崭露头角的第一步。
电脑 人脑 VS 2016年3月,科技界的TOP 1热词非“AlphaGo”莫属了。AlphaGo这个围棋人工智能程序以4:1的总比分战胜世界围棋冠军、职业九段选手李世石。虽然只是一次测试赛,但可以说在一定程度上,代表着人工智能最新成果的“机器”打败了“人脑”。
大多数人脑海里不禁陆续涌现出美国好莱坞电影里各种机器人大战的桥段,像《机械公敌》里的NS-5型机器人,有着酷似人类的外形,可以取代人类的各种工作,从保姆、厨师、快递、遛狗到管理家庭收支,简直无所不能;又如帅酷的施瓦辛格主演的《终结者》系列电影,机器人统治了地球,而“落后”的人类奋起反抗;又如《黑客帝国》里的男主穿梭于虚拟与现实世界不断与机器人PK……
这些故事在AlphaGo战胜李世石事件后似乎即将发生,于是大量文科毕业的编辑们开始撰文“机器要统治人类”“人工智能就是人类的终点”云云,以吸引网友们无辜的眼球,获取大量点击率。
现在,让我们通过“AlphaGo”来看看:
• 什么是人工智能?• 人工智能如何影响我们的生活?• Maker们又可以做些什么?
1 什么是人工智能
AlphaGo是一款围棋人工智能程序,由位于英国伦敦的谷歌(Google)旗下DeepMind公司的戴维·西尔弗、艾佳·黄和戴密斯·哈萨比斯与他们的团队开发,据说AlphaGo的主要算法是利用“价值网络”计算局面,用“策略网络”选择下子,可以说AlphaGo是用上面两个算法去“思考”的。
人工智能,说简单点,就是机器能够自主学习、自主判断,就像AlphaGo一样“思考”。那么,人工智能如何学习便是其中关键。
在说人工智能如何学习之前,我们解释一个名词“人工神经网络”。人类的大脑是好多好多的神经元组成的,就好比公路上的十字路口(神经元实际有多个路口),路口多了,选择的路线也就多了,走不同的路线,两旁的内容与风景也是不同的,这也就影响了人们的思考,形成了不同人对于同一个事物的不同看法。“人工神经网络”就是模拟生物神经网络,建立某种简单模型,根据不同的连接方式组成不同的网络。其由大量的神经元之间相互联接构成,每个神经元代表一种特定的输出函数;每两个神经元间的连接都代表一个对于通过该连接信号的加权值,这就相当于人工神经网络的记忆。虽然,人工神经网络提出已经六七十年,但最近几年才兴起,其典型应用的模式识别技术、自动控制,在相关领域解决了大量实际问题,表现出良好的智能特性。
人工神经网络是一个过于庞大的概念,对于AlphaGo来说,它使用了“深度学习”算法具体实现。“深度学习”是指多层的人工神经网络和训练它的方法。一层神经网络会把大量矩阵数字作为输入,通过非线性激活方法取权重,再产生另一个数据集合作为输出。这就像生物神经大脑的工作机理一样,通过合适的矩阵数量,多层组织链接一起,形成神经网络“大脑”,进行精准复杂的处理,就像人们识别物体标注图片一样。
说了这么多高深的学术知识,相信不少人会认为人工智能离我们普通人的生活比较远,其实不然。
2 人工智能如何影响我们的生活?
生活在帝都,笔者每天开车出入小区、学校,行驶在道路上都会遇到摄像头,它们忠诚地识别我的车牌,而这个识别的过程就是应用了人工神经网络的算法的人工智能。如果我们的车牌溅上泥点或者污渍导致车牌缺划,亦或未能保持完整水平,是否会影响识别进程?如果人眼识别,非常容易完成,我们的大脑会根据笔画的方向与趋势评估可能的数字,但是在人工智能未发展前,电脑仅能保证与样本完全一致才会正确识别,这个显然不符合日常快速、模糊判断的应用。而现在应用了人工智能的车牌识别系统,车牌在少量污浊情况下准确识别成功率已经接近100%。
3 Maker们又可以做些什么?
AlphaGo只有一个,还属于谷歌公司。
话题还要转回来,对于我们这些Maker们来说,想玩这么高大上的人工智能也是挺容易的。我们就拿这个车牌识别系统的人工智能来说,在我们的英特尔开发板上,例如Edison,安装OpenCV模块,用来进行图形图像处理,这里提示一下,要将有关GUI的代码全部注释掉,因为英特尔开发没有GUI。然后,我们再从github上面获取有关车牌识别的代码,https:\github.com/liuruoze/easyPR。之后,我们创建一个项目,并在项目中添加OpenCV的支持,参考示例代码如下:
//添加OpenCV头文件 ${DEVKIT_HOME}/devkit-x86/sysroots/i586-poky-linux/usr/include/opencv ${DEVKIT_HOME}/devkit-x86/sysroots/i586-poky-linux/usr/include/ ${DEVKIT_HOME}/devkit-x86/sysroots/i586-poky-linux/usr/include/c++ ${DEVKIT_HOME}/devkit-x86/sysroots/i586-poky-linux/usr/include/c++/i586-poky-linux ${DEVKIT_HOME}/devkit-x86/sysroots/i586-poky-linux/usr/include/c++/bits //添加链接库 ${LDFLAGS} lopencv_calib3d –lopencv_contril –lopencv_core –lopencv_features2d –lopencv_flann –lopencv_gpu –lopencv_highgui –lopencv_imgproc –lopencv_legacy –lopencv_ml –lopencv_nonfree –lopencv_objdetect –lopencv_ocl –lopencv_photo –lopencv_stitching –lopencv_superres –lopencv_video –lopencv_videostab –lrt –lpthread –lm –ldl //主函数 Int main(int argc, char *argv[]){ Input_carmera = cvCaptureFromCAM(-1);//打开摄像头 Signal(SIGINT, sigroutine); While(1){ Frame = cvQueryFrame(input_carmera);//读入一帧图像 If(frame != NULL){ cvSaveImage(“car_detect.png”, frame); } Mat src = imread(“car_detect.png”); CPlateRecognize pr; Pr.LoadANN(“model/ann.xml”); Pr.LoadSVM(“model/svm.xml”); Pr.setLifemode(true); Pr.setDebug(true); Vertor plateVec; Result = pr.plateRecognize(src, plateVec); }
Result里存储的便是我们利用人工智能识别出来的车牌号了。如果显示出来?利用什么显示出来?限于篇幅的原因不再一一讲述。
AlphaGo的出现带动了人工智能产业,人工智能的前景将非常乐观。对于科学家们要努力的还有很多,任重道远;对于我们普通民众,只需要安心享受人工智能带给我们的舒适、便捷即可。
全部0条评论
快来发表一下你的评论吧 !