接着上次的人工智能入门后,今天我们一起继续来探讨AI。说到AI呢,像大家都比较熟悉的“深蓝”和“AlphaGo”是两个避不开的AI系统,其实简单的来讲,“深蓝”主要利用的是alpha-beta pruning 算法(alpha-beta 剪枝算法),和强大的硬件系统,包括特殊设计的芯片和并行计算系统,在国际象棋的比赛中,每次可以计算2亿个位置的可能性,击败了当时的世界冠军,名噪一时。但现在“深蓝”已经被放在了博物馆。AlphaGo除了先进的硬件系统之外,利用了蒙特卡洛树算法和深度学习,击败了当时排名世界第一的我国选手柯洁。当此为止,棋类游戏的AI系统的设计告一段落。
除了棋类应用之外,AI的其他应用非常广泛,包括像,自然语言处理,包括翻译,问答,居家机器人,演讲识别和演讲者情绪的变化,股票市场的预测和交易,医学图像处理等。从最基础的开始,我们一起来看一下一种非常简单的AI机制---Agent, 通常被翻译为“代理”。在计算机领域,Agent 指那些在特定的环境可以执行特定任务的实体。想要具有这样的功能,Agent必须有感知系统,可以执行一定的动作,并且是具有目的性的,而不是随意的。从简单的说起,Stimulus -response agent (姑且理解为:实时反应机器人),这样的一类设计是基于机器人所接受到的状态来做出反应。后面我们会考虑利用一些规则,神经网络或者遗传算法来控制这样的agent。
后面我们基于一个绕着墙壁边缘行走的机器人来一步步认识agent,实际上很多大学的人工智能课程都参考UC Berkeley 的pacman 设计,具体参考:http://ai.berkeley.edu/project_overview.html 。假设我们要设计这样一个机器人,如果处在内部物体的边缘就逆时针绕着走;如果处在外部墙壁边缘,就顺时针绕着墙壁走。由图也可以看到,作为这样的一个agent,这个机器人要8个sensor(感应器),来感知这8个位置是否被占了。机器人相应的可以往四个方向走,东南西北。我们的任务是要设计一套方法,根据感应器感知到的周围的环境,做出不同的反应来。通常这样的一套方法分两个部分,机器人Perception process (感知的过程) 和 action process ( 实施行动) 的部分。
Perception
比较简单的,每一个空格的状态可以作为一个变量输入,这样8个方向总共占8位,也就是说sensor感知到的信息被整理成8个bit,1代表这个位置被占,0表示为空。
这样的话,其实总共有2的8次方种不同的状态,但这样考虑会有一些复杂,不妨这样考虑:
当左面的空格和左上方的空格都被占用,并且正上方和右上方的空格都是空的时候,往北走,这一点无论对于顺时针绕着外墙壁还是逆时针绕着内部物体,都是行得通的。
这样,不妨把左面,左上方的两个空格归并为x4, 上方和右上方的两个空格归并为x1, 右方和右下方归并为x2, 下方和左下方归并为x3,当其中的某一个空格为1(被占用的时候),这个状态就为1。
举个例子,右上方的空格为1,右方和右下方都是空,那么需要往右走。这种情形可能出现在机器人绕着内部物体逆时针行走到左下方的时候,需要往右行走。
这个步骤是非常关键的一步,算是人力寻找特征这样一个过程。
Action
我们规定:x1到x4都是空的时候,往北(上)走。其余情况:
X4 = 1, x1= 0, 北走;X3 = 1, x4= 0, 西走;
X2 = 1, x3= 0, 南走;X1 = 1, x2= 0, 东走;
好,这次大概这些,略微枯燥一点,后面一起探讨Threshold Logic Unit(阈值逻辑单元) 的使用,这将是神经网络的开始。