区苏
摘要:人工智能是当前一个非常热门的话题,其技术的学习方法也是举足轻重。本文以计算机科学与技术专业学生的编程学习为讨论对象,从人工智能符号主义观点的角度,介绍知识获取和表示的一些学习方式。通过抽象与形象两类实例差异的对比,来阐述编程学习中目标问题真实性的重要意义。
关键词:编程学习;目标问题;人工智能
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2020)14-0140-02
知识获取是指人类利用感官对外部环境、社会、物体等知识源进行基础的数据捕捉。基础数据可以是人类反映目标对象的记号、文字、图像等媒体形式,从而形成了知识的表示。数据作为相关对象的信息载体,其具体的表示与组合中蕴含着更深层次且丰富的内容,即信息。信息在长期的规范化的描述和使用中,逐渐被发掘出其本质的规律和结构,即知识。所以,知识的形成所表现出来的是一个漫长而又复杂的演变过程,掌握基础的知识获取和表示方法,是学习人工智能程序设计的一种有效的途径。
知识表示多种多样,其不同的表现形式,对人工智能编程的学习会有很大的差异。现以计科专业中一个常见的题目为例来展开介绍——迷宫问题。本文以抽象和形象两种形式来展开,对比两类编程中需要考量的部分设计内容:
1抽象模型
1)抽象模型迷宫的设计一般较为简单,如二维坐标系,利用行和列的坐标把迷宫等分为四边相互连接的正方形单元格。迷宫的单元格通常分类为通道单元格和障碍物单元格。迷宫问题要求移动体由起点位置出发,沿连续的通道单元格行走,找到迷宫的终点(如图1)。编程代码中可以用数据结构的二维数组和单元格标识来表示。
2)抽象模型的移动体可以没有具体的形状,一般设计成在某一个单元之内,并由所在位置单元格的坐标来表示。移动体寻径设计如下。
(1)移动体的移动方向。参考迷宫的单元格四边形的特点,可以简单地分为四个方向(上下左右)。如移动体向下移动,行坐标x+0,列坐标y-1,其他三个方向坐标变化同理可得。坐标系变化时还需要做越界检测,看看移动体是否异常走出迷宫的坐标范围。
(2)方向优先顺序。在方向抉择时,会出现多个方向同时都可通行的状况,那么采用冲突消解的策略来优先其中一个移动方向。如简单的顺时针方向策略,方向选择优先级顺序可为上一>右一>下一>左。全程只用到迷宫坐标系,无须考虑移动体的个体坐标系,。
(3)寻径方式。整个迷宫的移动采用盲目搜索方式,在选择了一个方向后,以深度优先对新的位置上的四个方向进一步地搜索,并反复这个步骤。当移动体遇到障碍物单元格时,可以采用栈的形式回溯到上一层的搜索状态,并对已走过的通道单元格和接触到的障碍物单元格进行标识。二维数组保存迷宫路径的标识信息,方便移动体原路返回和避免重复搜索。
2形象模型
形象模型区别于抽象模型,要采用实体或趋近于实体的模型。形象模型会增加模型制作和编程设计的工作量,同时会伴随实体误差积累等复杂因素。不擅长硬件技术的计科专业学生,可以选择采用仿真形式的形象模型,即节省经费,也便于制作维护。本文在此以Gazebo仿真软件为编程设计平台翻。该软件是一款3D动态模拟器,能够在复杂的室内或室外环境中准确有效地模拟机器人群。由于篇幅的关系,Gazebo和关联的软件的使用介绍就不在文中赘述。
形象模型的迷宫问题需要设计的几个内容(效果见图2)。
1)形象模型迷宫的设计需要用到3D建模软件绘制三维迷宫。三维的迷宫需要设置具体的仿真属性。
(1)迷宫的样式。如设置成墙体,则有规格(长宽高)、质量、惯性等。
(2)迷宫制作的细节。如迷宫制作一般会分成多个墙体段,并拼接起来,和设置各墙体段在空间坐标系的具体位置。
2)形象模型的移动体也是要用到3D建模软件,需要设置仿真移动体的具体属性。
(1)移动体的样式,如设置成小车,需要3D建模小车的车体、质量、惯性、行进方式(轮式、履带式等)、感应部件(镭射、摄像头等)、动力单元、部件关联等。
(2)方向搜索策略。如本文以轮式带镭射的小车为例,其移动可以借鉴抽象模型移动的四个方向的方法,但需要对其改进。四个方向改进成以小车镭射感应器为主体坐标系视角的前后左右,沿用顺时针方向策略搜索。小车为主体时,按照深度优先的原则,向后移动的方向应该排序在最后,以提高移动体的搜索效率。改进后的顺时针的顺序如:左一>前一>右一>后,即左手法则。
(3)移动细节设计。如小车前进左转时是否前进一>原地左转一>再前进,还是行进过程中弧度左转。这里需要设定小车的动力单元的轮转速度,如实现原地左转,需要设定左轮后退转动,右轮继续前进转动;如实现进行过程中弧度左转,则设定左轮慢速前进转动,右轮快速前进转动。小车的直行前进、右转、掉头可参考前进左转的方法实现。对比两者的代码,前者的设计比较简单、重用性较高,小车移动的代码更关注向左边和向前的行走,其向右行走可以由旋转和直行的代码搭配来重用实现。后者的设计使小车在转弯时路径更短,且加灵活轻巧。
(4)小车的方向判断机制。如左转的判断机制,根据判断感应部件(镭射)的感应数据实现。镭射数据可以进一步处理成ROI(感兴趣区域),如镭射感应器返回的是辐射线型的数据,则截取線型数据的最左端、中间、最右端的数据点,通过多点数据值的不同状态,归纳出判断左转的知识(见图4、图5)。
(5)更多可扩展内容。如编程中的误差校准、记忆功能、智能优化、数据挖掘、人机交互、进程通信等都可以进一步地学习和研究。制作的过程中把计科专业的课程知识与问题处理相互融合是非常有意义的。
3总结
在两种类型的迷宫问题的编程学习中,我们可以清晰地看到目标问题对象的真实性对编程设计的难度是不同的,所带来的编程体验和效果也有大的差异。在实体或仿真模型中,会更多地要求对问题细节进行处理设计,对代码编程进行智能展现,如。
(1)迷宫的特征与属性设定好后,其如何存储表示和知识转化,并应用与问题求解。
(2)移动体及其部件外形和性能的比较和选取,对编程设计中的知识、决策和算法的使用会有很大的影响。
(3)智能化编程应用方面。实体或仿真模型会带来更多复杂的现实问题,但同时给智能编程设计者提供了指导思路,也为计科专业课程知识的应用与实践提供了测试平台。
学习人工智能编程需要认识到人工智能的“AI+”特性,搭配某个具体问题来学习是个不错的方法。越真实的问题模型,越会对智能的编程设计起到良好的锻炼效果,而这些学习成果也会更加有实际作用和应用价值。