[置顶] 实践篇之论机器人的环境感知与智主运动

论机器人的环境感知与智主运动

–兼谈基于微分几何的人工智能

标签(空格分隔): 人工智能 计算机视觉 自主移动 微分流形 Ricci流


版权声明:本文为作者原创文章,未经作者允许不得转载。

前言

人工智能是分主观与客观的,是硬币的两个方面,
客观智能是世界的本质描述,是物理的是数学的,
主观智能是来自于客观智能,是哲学的是宗教的。
抛开物理与数学只讲方法是走不远的,如无本之木、无源之水,
单讲物理与数学只会得到一个静默纷扰的世界,无乐无诗无书无画。

序言

什么是智能,这是一个令人思绪飞扬的问题,本文的内容经过了我的理论计算及实践,其中的方法及算法全部在我的六个发明专利里,既反映了我的想法和兴趣,也暴露了我的局限和偏见,这里要感谢我太太对我研究工作的持续激励,也感谢我可爱的孩子Andie,在这段时间里所带给我的欢乐与慰藉。

加州大学圣塔芭芭拉分校(UCSB)著名的理论和实验物理学家Matthew Fisher就笃信,人的意识、记忆和思维是量子纠缠的,要用量子理论来解释,这也从一个方面说明当前各种xx学习远不足以解释AI的现象,根源在所用数学理论,绕不开梯度散射等局限性,理不顺长短记忆,道不清缘由,指不明方向;最有可能统一物理的微分几何,可做人脸识别表情识别,携带了原始三维信息,其应用前景不可估量;几何决定了光的弯曲与时空弯曲,可做环境识别,可做智主移动,远不是巡线、避障、定位建图的层次;物理将统一于几何,宏微观将统一于几何,主客观将统一于几何,智能在微分几何,莫比乌斯带上的“蚂蚁”将揭开其中奥妙。

第一章 机器对环境的感知

人类无时无刻不在通过眼、耳、鼻、舌等器官来摄取环境的信息,动物也是同样通过各自的器官获得环境信息。而对无生命的机器来说,若要体现出类人的智能,首要就是要考虑如何感知环境的信息。

1.1 机器的感官之传感器

借鉴人与动物的感官,我们创造出了各种各样的传感器,以辅助机器感知周围的环境,部分如下:

  • 重力传感器G-sensor,可以感知静态的重力加速度,游戏设计中多用于感知姿态
  • 陀螺仪Gyroscope,常用来获取运动中的物体的各种姿态
  • 激光测距传感器,可以测量环境物的距离信息,类似的还有红外、超声波等传感器
  • 光线传感器,感知环境光亮的强度
  • 温湿度传感器,测量周围环境的温度与湿度
  • 光学编码器,可以计算电机的转速

1.2 机器的思考与学习特征

机器在通过传感器摄取到环境信息后,它是怎么识别的?它是怎么记忆的?它又是怎么触类旁通的?,说实话,如果真正解决了这些问题,那么也就离发展出通用智能不远了。单就视觉与运动这一方向来说,还是有路可循的。

从人类的视觉出发,一般来讲,人们通过物体的色彩、材质、形状及拓扑信息来辨识与比较物体。对机器来说,色彩可以由camera的感光器件可以识别,材质也有各种传感器做出些许识别,形状可以由基于测距的扫描scanner感知,进而再计算建模得出其表面形状信息,更进一步可以计算其拓扑信息。所以,机器视觉还是可以在一定程度上比肩人类,根据视频感知,实时做出路径规划与自主运动,类似的无人驾驶汽车,已经研制出来,相信不远的将来就可以走向商业应用。

1.3 机器的路径规划与避障

有了前面章节的基础感知信息,机器就可以大规模的计算,基本上可以做到实时的路径规划与避障。当前常见的这方面的算法有A*算法、D*算法等,应用方面,大到火星车上面,小到游戏应用设计里,都能见到其身影。这些路径规划算法,其应用基础就是要有一个环境地图,而这地图的获取方面,同步定位与建图之SLAM算法,名满全行业,而且已经有了初步的商业应用,如扫地机器人,像美国的iRobot公司、中国的科沃斯公司等等,都已经做了较深入的研究与产品的商业化推广。

1.4 蝙蝠的运动特征

蝙蝠的飞行不是靠眼睛看的,众所周知,而是靠耳朵和发音器官嘴与鼻以飞行的。蝙蝠在飞行时,会发出一种尖叫声,这是一种超声波信号,是人类无法听到的,因为它的音频超出人耳能接收到的范围20Hz~20kHz。这些超声波的信号在发出之后几乎呈直线传播,如果在传播时碰到其他物体,就会立刻反射回来,在接收到返回的信息之后,蝙蝠会实时对这些信号进行计算,感知周围环境,并且快速地绕开障碍物,去捕捉适合自己品味的猎物。

喉咙是蝙蝠发出超声波的源泉,嘴和鼻子是其超声波的发射天线,再通过耳朵接收返回的声波。进而分辨出物体是大是小,是远是近,是活是死,从而也就能知道他所需要的食物在什么方向。

科学家把蝙蝠的这一行为叫做回声定位,并且根据这一原理制造出了雷达,这一可以利用无线电波进行探测的装置。时至今日,雷达已经被广泛应用在军事、天文、气象、航海、航空等领域里。

第二章 当前智能算法与应用

现代意义上的人工智能AI(Artificial Intelligence),其诞生标志被广泛承认是1956年达特矛斯会议,人工智能几十年来的发展经历了多次高潮与低谷。截止目前,我们所接触到的智能学习算法包括有以下几大类:模式识别(Pattern recognition)、机器学习(machine learning)、深度学习(deep learning),其中深度学习近年来明显被热捧,以下图所示为来自谷歌趋势的“2004年1月到2016年6月间三种学习热度”,借Tomasz Malisiewicz博士的话说:

模式识别一开始主要是作为机器学习的代名词;
模式识别正在慢慢没落和消亡;
机器学习就像是一个真正的冠军一样持续昂首而上;
深度学习是个崭新的和快速攀升的领域。
2004年1月到2016年6月间三种学习热度,来自谷歌趋势
2004年1月到2016年6月间三种学习热度,来自谷歌趋势

2.1 一种机器学习算法与应用

什么是机器学习,各家定义不尽相同,然而个人喜好Tom Mitchell在《Machine Learning(中文版:计算机科学丛书:机器学习 )》一书中的提法:这门学科所关注的问题是“计算机程序如何随着经验积累自动提高性能”。初学者可以简单认为机器学习分类为监督学习与无监督学习,监督学习多用于解决分类、回归等问题,无监督学习多用于解决聚类、密度估计等问题。我们常见的一种机器学习应用便是手写数字识别,例如邮政编码自动识别系统、税表与银行支票自动识别系统。

2.2 一种深度学习算法与应用

深度学习的灵感源自于人脑视觉系统,在某种程度上,可以认为深度学习是机器学习的一个分支,深度学习的概念源于人工神经网络的研究,在语音识别和图像识别等领域获得了不小的成功,从识别率方面来讲可以说是超过了其他方法,微软将其应用的语音识别中,Google Brain系统用其识别图像。

以下是典型的多层深度学习结构
多隐层深度学习结构
经典的多隐层深度学习结构

第三章 微分几何与人工智能

截止目前,人类的智能是如何运转的仍然是未解。对于未来人工智能的发展,有乐观派,也有悲观派。另一方面,微分几何的技术应用,对人们认识自身的智能及医辽方面,有了不小的进展,可以参考顾险峰老师的文章:纯粹数学的雪崩效应:庞加莱猜想何以造福了精准医疗?

3.1 视觉中枢与微分几何

诺贝尔奖获得者David Hunter Hubel与Torsen Wiesel,通过对猫的视觉中枢研究,证明视觉中枢系统具有由简单模式构成复杂模式的功能,这对人工神经网络的发展有一定的启发。后来,通过对猴子视觉中枢的解剖,发现从视网膜到第一视觉中枢的大脑皮层曲面之间存在共形映射。而,共形映射属于微分几何的范畴,再配以庞加莱猜想的单值化定理,所有现实的物体及环境都可以在微分几何的范围内施以更形象化的运算。参考顾险峰老师的文章:人工智能中的符号主义和联结主义

3.2 微分几何在医学中的应用

近些年来,北美和日本采用了虚拟肠镜技术,用以微分几何的Ricci曲率流方法计算器官的共形映射,从而提高早期直肠癌的发现几率,降低了直肠癌的死亡率。另一应用就是脑神经疾病的预防与诊断,例如癫痫、儿童自闭症等脑神经疾病,利用微分几何的知识就可以将相关器官共形映射到球面上,进而就可以加以精确分析比对。

第四章 机器视觉数字化

机器视觉,类似于尚未被认知的生物视觉,同样是没有彻底的、通用的方法加以实现,截止目前,机器视觉仍是工程领域、科学领域中的一个极富挑战性的重要研究领域,它是一门综合性的学科,包括计算机科学和工程、信号处理、物理学、应用数学和统计学、神经生理学和认知科学等。本文从一个新的角度切入,对机器人的环境感知与自主运动的问题进行了探讨,通过探讨,笔者提出了一些自己的看法,给出了一套视觉感知算法,以期能起到抛砖引玉的效果。

4.1 环境物体的视觉特征

相比于同时定位与建图的SLAM算法与图像处理的SIFT算法,笔者这里给出的视觉感知算法Dog-like AI与其有相同点,也有明显的区别。与SLAM一样要依赖测距传感器扫描做为信息的输入,与SIFT算法一样是基于特征运算的,不同的是,Dog-like AI算法是基于几何拓扑的,数学基础是微分几何,从结构上来讲,由简单到复杂、由局部到整体,一定程度上可以认为比较符合生物的认知原理,人类的视觉中枢本身由多个区域,分层、抽象是其重大特征。

如下图所示的,基于微分几何的等曲率共形变换
基于微分几何的共形变换
图片参考顾险峰老师的文章:纯粹数学的雪崩效应:庞加莱猜想何以造福了精准医疗?

在一个等曲率的几何拓扑空间上,对所有的物体加以分析运算,这有可能是人工智能一种通用模型,既有局部又有整体,既有简单又有复杂,既有低级刻画又有高级抽象,也体现了连续与离散的统一。Dog-like AI算法也是建立在“信息存储与记忆皆在几何结构中”之假设基础上。

4.2 视觉特征的空间结构

在实践中,针对现实生活中的物体或环境,在空间某一点用测距传感器扫描,获取物体表面各点的距离信息,可以将物体表面双射到某一基准面上,即双射,

f:M(x,y,z)S(β,θ)=dS(β,θ,d)
M(x,y,z)表示三维空间中物体表面上的任一点,S(β,θ)表示二维基准面上的任一点,d表示基准面上该点的畸变系数,这里的基准面可以是欧氏平面、球面或双曲平面,但是如果直接这样映射的话会有两个局限点,一是不能保证映射的双射性质,另一是不能确保映射的共形性质,例如当物体表面不是凸性的,此时就会破坏映射的双射性质,就不能统一化到同一个基准面上分析比对,同样道理,如果不是共形到同一个基准面上,也会对分析结果造成错位,相同的两个物体表面双射共形映射到同一个基准面上,变换后的结果之间顶多相差一个莫比乌斯(Mobius)变换。详细的等曲率双射共形变换到基准面的数学知识及算法后续详解。

由上我们得出,实际物体双射共形变换到基准面上后,其对应的点云空间,如下:

f(M)=S(β1,θ1,d11)S(β2,θ1,d21)S(βn,θ1,dn1)S(β1,θ2,d12)S(β2,θ2,d22)S(βn,θ2,dn2)S(β1,θs,d1s)S(β2,θs,d2s)S(βn,θs,dns)
然后,把所有的点S(β,θ,d)按位置(β,θ)离散化成二维矩阵,此二维矩阵称为共形矩阵,如下,其中的元素是由畸变系数d分解而得,
c(M)=f11f21fn1f12f22fn2f1sf2sfns
根据共形矩阵,我们可以求出物体的特征矩阵,如下,
F(M)=φ(c(M))=F11F21Fn1F12F22Fn2F1sF2sFns
其中,φ可以是一种变换,可以是但不限于二维Fourier变换、二维Walsh变换等,从特征矩阵中,我们可以方便地分析物体之间的对称性(镜像对称性、平移不变性及旋转不变性)与差异性,为了更方便地分析物体之间的差异性,可以进而求取特征矩阵的特征谱,如下,
P(M)=Ψ(F(M))
其中,Ψ是一种变换,随后我们举例,单从Walsh变换详解之。

4.2.1 什么是Walsh变换

Walsh变换全称Walsh Hadama变换,是一种离散正交变换,也是一种完备的正交变换方法,它本身也是一种矩阵,记为Hn,n2m,mN

H2n=(HnHnHnHn),H1=(1)
Walsh Hadama矩阵可以作用于一维的数组,也可以作用于二维的矩阵。

4.2.2 Walsh变换应用

根据Walsh Hadama矩阵,我们就可以利用Walsh Hadama变换求出物体的特征矩阵(二维空间)或特征向量(一维空间),如下,

F(M)=φ(c(M))=φf11f21fn1f12f22fn2f1sf2sfns=1nsHnf11f

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

理解镜像、容器和存储驱动 - 2016-07-23 19:07:52

理解镜像、容器和存储驱动 为了更有效地使用存储驱动,你必须理解Docker如何创建和存储镜像。接下来,需要理解容器是如何使用这些镜像的。最后,你需要一个对镜像和容器操作者都需要的技术简介。   镜像和图层layers 每一个Docker镜像都参考了一系列的只读层,这些层代表着文件系统的区别。层级是从底层开始,逐一建立组成容器的root文件系统。下面的图显示了Ubuntu镜像有4层: Docker的存储驱动是负责堆放这些层级并且提供一个统一的视图。 当你创建一个新的容器,你会在底层栈上加入一个新的、稀疏的、
Flume简介 Flume安装 1. 解压 flume安装包到 /itcast/ 目录下 tar -zxvf /*flume安装包*/ /itcast/ 2. 修改 flume配置文件: 2.1 flume-env.sh 修改文件名称: mv flume-env.sh.template flume-env.sh 添加 java_home ,保证 flume 所使用的jdk和hdfs是一样的(可以使用 echo JAVA_HOME 查看当前机器所使用的javaHome所在路径) 2.2 编写agent配置文
注:本文为自用,随时更新。 一.系统环境 Windows7、Ecplise 4.4.0,Hadoop2.7.2 Hadoop安装教程请看: Hadoop2.7.2安装教程 此处需要注意的是:你的hadoop运行在远程的虚拟机上,但是你的windows上也需要有hadoop的运行环境,这样eclipse才能进行远程调试,所按照上面教程安装完虚拟机上的hadoop,还需要下载同样版本的Hadoop加压到windows上即可,还需要配置相应的环境变量,拷贝winutil.exe.hadoop.dll等文件到ha
2、spark wordCount程序深度剖析 标签: spark 一、Eclipse(scala IDE)开发local和cluster (一). 配置开发环境 要在本地安装好java和scala。  由于spark1.6需要scala 2.10.X版本的。推荐 2.10.4,java版本最好是1.8。所以提前我们要需要安装好java和scala并在环境变量中配置好。 下载scala IDE for eclipse安装 连接: http://scala-ide.org/download/sdk.html
1、spark 部署 标签: spark 0 apache spark项目架构 spark SQL -- spark streaming -- MLlib -- GraphX 0.1 hadoop快速搭建,主要利用hdfs存储框架 下载hadoop-2.6.0,解压,到etc/hadoop/目录下 0.2 快速配置文件 cat core-site.xml configuration property name fs.defaultFS /name value hdfs://worker1:9000 /va

Devstack单节点环境实战配置 - 2016-07-23 14:07:05

本实验是在VMware12下建立虚机的一个测试环境。 1 前期准备工作 真机环境win10 Linux版本 centos-everything-7.0 VMware版本 VMwareworkstations12 虚机配置如下: 8G内存 2核cpu(开启虚拟化) 网络配置为桥接模式 /boot 500M(一定要分大点不然之后会遇到问题) swap分区4G 其余的空间全部分给/分区 配置yum源,你可以保持装机自带的centos自带官方yum源,或者使用国内的给的镜像,本次试验中用的国外镜像并且使用fast
Openstack自动化部署工具, 主要用于生产环境. 一. 环境准备 这里用的是Openstack 9.0版本. Fuel Documentation 下载 Fuel for OpenStack镜像文件 , 用于安装Feul Master. 安装 Xshell , 用于远程连接. 安装 xftp , 用于从Windows主机向虚拟机传输文件. 二. 安装fuel_master节点 1. VirtualBox网络配置 管理-全局设定-网络-仅主机(Host-Only)网络 新建三张新的网卡: Host-O
本篇主要阐述通过DeveStack 去部署Openstack(mitaka),对大多数来说安装部署Openstack 来说是个痛苦的过程,尤其是 OpenStack和它依赖的一些组件在快速发展中,经常出现这个版本组件对不上那个版本 dashboard等情况。如果只是看看或者初期玩玩 OpenStack的话,使用DevStack也是个不错的办法。DevStack采用了自动化源码部署的方式,适用于开发环境的部署和Openstack开发者,单节点,小环境;这里采用的操作系统为Ubuntu14.04。 一、操作系
操作过程: 第一步删除phoenix中系统的表格信息,主要为SYSTEM.CATALOG,第二步删除Hbase中的表格信息。 操作步骤: (1)查询phoenix系统表 SYSTEM.CATALOG 内容是所有表格的信息,系统表和自建表 SYSTEM.FUNCTION 内容是所有函数信息,系统函数和自定义函数 SYSTEM.SEQUENCE 我也不知道 SYSTEM.STATS 内容是所有表格的最后状态信息 (2)查询SYSTEM.CATALOG表结构 (3)我要删除的表格 DELETE from SYS
1.查看mysql中metastore数据存储结构 Metastore中只保存了表的描述信息( 名字,列,类型,对应目录 ) 使用SQLYog连接itcast05 的mysql数据库 查看hive数据库的表结构: 2.建表(默认是内部表(先建表,后有数据)) (建表时必须指定列的分隔符) create table trade_detail(id bigint, account string, income double, expenses double, time string) row format d