一、神经网络
单层感知器、线性神经网络、BP神经网络、径向基神经网络
自组织竞争神经网络、反馈神经网络、随机神经网络
小脑神经网络CMAC、脉冲耦合神经网络PCNN
BP是二代的训练算法,不是特定网络,这是深度学习的基础。PCNN也是二十多年的老技术了,而且是NN界的非主流,这种非主流还有很多。
神经网络的每一层的作用实际上就是先将输入向量左乘一个数组进行线性变换,得到一个新的向量,然后再对这个向量逐元素应用一个激活函数。
事实上,现在神经网络成熟的开源实现多如牛毛,除了练手之外,你可能都没有机会需要去写一个神经网络。
显然,计算一个节点的误差项,需要先计算每个与其相连的下一层节点的误差项。这就要求误差项的计算顺序必须是从输出层开始,然后反向依次计算每个隐藏层的误差项,直到与输入层相连的那个隐藏层。
目前业界有很多开源的神经网络实现,它们的功能也要强大的多,因此你并不需要事必躬亲的去实现自己的神经网络。我们在上半场不断的从头发明轮子,是为了让你明白神经网络的基本原理,这样你就能非常迅速的掌握这些工具。
二、智能芯片
%2017/7/26调研
(1)冯诺依曼结构的CPU:串行执行方式,无法高效处理大量并行性计算;没有针对“乘累加”方式进行专门的优化,执行神经网络算法效率低
(2)图形处理器GPU:初衷是为3D图形处理设计的,功耗大,价值高;不适合嵌入式环境
(3)信号处理器DSP:串行执行方式,无法高效处理大量并行性计算;针对“乘累加”方式执行一定的优化,执行神经网络算法效率比CPU高,但远低于NPU和GPU
(4)可编程门阵列FPGA:可灵活实现各种算法架构;功耗大,价格高,一般用于算法原理性验证或者原型机构建
(5)颠覆冯诺依曼结构的NPU:数据流”类型的处理器,极大地提升了计算能力与功耗的比例,高度并行化运算单元,比较适合神经网络的大量并行运算方式
在过去的十年里,很多公司对神经形态芯片产生了兴趣并希望借此提升自己的竞争力,比如:
IBM的TrueNorth芯片、高通的Zeroth芯片
高通 Zeroth:“Zeroth”平台,有应用在骁龙820之中(图像识别、指纹识别等应用)
IBM TrueNorth:IBM的百万神经元类人脑芯片
中星微电子:“星光中国芯工程” “星光智能一号“
中科院:“寒武纪1号”
有待更正:IBM公司的仿脑计算机TrueNorth已经实现了4百万个神经元的集成,支持10亿个突触连接,功耗为4kw。
斯坦福大学的Neurogrid实现了16X256X256个神经元,功耗仅5W。
CogniMem公司的CM1K实现了1024个神经元的集成,可以通过串并联实现更大规模的网络构建,单个芯片的功耗4W,售价在几千美元。
一些学术研究和开发中,采用FPGA芯片实现了小规模的神经网络芯片,用于图像处理等应用。
2016年,国内的中星微电子公司率先研制了嵌入式的神经网络处理器NPU。
这些芯片优化了硬件设计,更加方便的模拟神经网络,降低了计算功耗,实现了大规模的并行处理。
高通开发NPU使用的是脉冲驱动型(脉冲传递机制,并非权重),而中星微电子基于CNN神经网络,这是NPU开发的两个主要路径。前者的特点是功耗相对更低,而后者的优势在于芯片能够支持主流深度学习的软件框架,因此和深度学习配合较好。
参考链接 美空军成功测试IBM最新仿人脑芯片,以超低能耗识别俄罗斯坦克精度高达95%|独家
除了计算能力出众之外,IBM TrueNorth芯片的优势还在于其强大的认知能力。随着物联网技术的发展,无数传感器会记录下大量的数据,而如何通过分析这些数据来做出对未来趋势的预判,就变成了一个对计算机能力的考验。一般情况下,传统的计算机是无法完成这一任务的,直到TrueNorth的出现才使这一切变为可能。
那为什么这种架构效率更高呢?Wu Qing 解释道,这是因为芯片的神经元和突触既可以存储数据,也可以处理数据。而在如Jetson Tx-1的传统系统中,执行计算的组件与存储器是相分离的。这意味着,数据必须从存储器传送到处理器进行分析,然后再返回到存储器被存储,这个过程消耗了大量的时间和能量。
“仿人脑超级计算机”已经在美国空军服役。这种超级计算机采用了IBM的TrueNorth神经形态64芯片数组,适合飞机,以及尺寸、重量和功耗受限的其他嵌入式、行动和自动系统等潜在应用使用。
除了目标识别外,TrueNorth电子大脑的神经突触64芯片数组还能提供其他实时的人工智能功能,比如视讯分析、语音识别、机器语言翻译、音频和文本分析、信息发现,以及扩展针对民用应用的类似任务。
特别介绍:
NeuroMem即Neuromorphic Memory,技术核心在于neurons,就是神经元。
NeuroMem有两种可选方案,CM1K 和 NeuroMem IP
CM1K具有1024个平行作业的神经元,能在数毫秒内学习并辨识高达256位元组的模式。CM1K支援两个非线性分类器(RBF和KNN),可分类样式,同时处理定义不清的数据、未知事件,脉络和工作条件的变化。
CM1K的平行架构能将众多晶片以菊链方式结合,以1024个神经元作为增量,扩大神经网络的尺寸。
它可以解决从文本和数据分析、视觉、听觉、多传感器数据融合等模式识别问题,比现代微处理器更强大、更节能。
NeuroMem IP可以看作一堆神经形态芯片,可以称为“硅神经元”,是一种能够在低功耗下高速学习和识别模式。识别的内容可以来源于任何数据类型,文本、科学数据集,生物信号、音频文件、图片和视频这些通通都可以。
由于其独特的并行架构体系,无论持有模型的数量有多少都能在很短的时间内完成识别。
三、神经计算、神经科学+脑科学
脑模拟软件:Nengo、Brain、GoodAI、CoreNEURON、Neuron
Nengo模型
瑞士国家脑倡议书(Swiss national brain initiative)的蓝脑计划(Blue Brain Project)采用了超级计算机CoreNEURON模型实现了小鼠脑模拟。
Nengo模拟软件在机器人运动控制、手写体识别、语音识别、人脸识别等多个方面都有了很好的应用案例。
Brain模拟软件得到的结果还可以通过一些转换工具导出到仿脑芯片中,完成并行计算的硬件实现。
脑科学和类脑智能
新一代人工智能需要在上述脑研究启发下,以多脑区、多模态和多任务协同为核心,研究神经网络微观刺激调控和宏观动态演化、视听触感认知通道及协同、长时短时记忆与决策、运动视觉与规划控制等,建立具有生物和数学基础的计算模型与学习方法,实现具有自主学习能力的智能系统。
人脑可以在形态学上分成下列结构:
大脑:额叶、顶叶、枕叶、颞叶、岛叶
小脑:蚓部、小脑半球
脑干:中脑、桥脑、延髓、间脑(视丘、下视丘)
中枢神经系统(英文:Central Nervous System,缩写:CNS)是神经系统中神经细胞集中的结构,在脊椎动物包括脑和脊髓;在高等无脊椎动物如环节动物和昆虫等,则主要包括腹神经索和一系列的神经节。
人的中枢神经系统构造最复杂而完整,特别是大脑半球的皮层获得高度的发展,成为神经系统最重要和高级的部分,保证了机体各器官的协调活动,以及机体与外界环境间的统一和协调。
中枢神经系统与周围神经系统组成了神经系统,控制了生物的行为。
整个中枢神经系统位于背腔,脑在颅腔,脊髓在脊椎管;颅骨保护脑,脊椎保护脊髓。
可以思考一下如何构造一个模型,借助深度网络进行运动控制,比如如何将深度网络与小脑模型相结合?
运动皮层:人体的自主运动都是由大脑控制的。控制自主运动的大脑区域称作运动皮层。
基底神经节:基底神经节由一些深埋在小脑中的神经结构组成。主要包括尾状核(caudate nucleus),壳核(putamen)和苍白球(globus pallidus)(尾状核和壳核共同构成背侧纹状体(dorsal striatum))。基底神经节内的神经细胞紧密互联,接收来自大脑皮层多个不同区域的信息。一旦基底神经节处理了这个信息,这个信息就会通过丘脑传递给运动皮层。这个回路的一个可能功能是,与另一个涉及小脑的回路合作,来挑选和出发已经妥善协调过的自主运动。
基底神经节对于该部位受损害的人(如帕金森病人)来说在初始化和调节运动命令方面的功能十分明显。这些病人对开始执行已经计划好的运动十分困难,即使启动了也会十分震颤和缓慢。
小脑:当你要执行诸如触碰一下鼻子这么简单的动作时,对你的大脑来说,简单的命令你的手和臂的肌肉去收缩是不够的。为了使你的手和臂的各个部分都能平顺地施展,
你需要一个内部时钟可以精确地调控动作序列和每个肌肉部分每个子运动的具体周期。这个时钟就是小脑。
正如神经生物学常用的办法,为了理解小脑做了什么,只需观察小脑受损的病人。当这些病人试图抓住一个东西时,他们的手会启动的很慢,并且高度地不稳定,要么在到达目标前停下,要么经常会加速错过目标。
姿态方面,小脑损害的人会存在明显的平衡问题,就像喝醉了一样。事实上,过量饮酒导致的笨拙就是因为酒精抑制了小脑的活动。
对于健康人来说,小脑首先接受来自感觉运动皮层的预期运动信息,然后再将方位、力度、该运动的持续时间传回给运动皮层。因为这个涉及小脑的回路就跟另外一个涉及基底神经节的回路协作调控运动的细节。
有一个比喻恰当地总结了小脑的功能:它就像一个飞行器驾驶员,收集每个时刻的大量信息,包括手、臂和鼻子的位置,移动的速度,路径上潜在的障碍等等,以便你的手指能够在你的鼻尖上“软着陆”。
即使像拿起水杯这样简单的动作,你都无法想象去有意识地指定每一个序列、力度、每块肌肉收缩的速度。甚至,如果健康的话,我们做这些动作几乎都不用想的。
拿起水杯的决定伴随着额叶的活跃,这些神经元发出神经脉冲去激活运动皮层。使用视觉皮层传来的信息,运动皮层计划了让手到达杯子的理想路径。
运动皮层然后调用大脑其他部分,如中央灰色核和小脑来启动和协调肌肉群的按序激活。初级运动皮层的轴突向下传递进入脊髓,在那里向运动神经元做最后的信息转移。这些神经元直接与肌肉相连,能导致他们收缩。最终,通过收缩、拉动手臂的骨头,肌肉完成了拿起水杯的运动。
另外,为了确保所有的运动足够的快、精准和协调,神经系统必须持续地接受来自外界的感觉信息,并使用这些信息来调整和校正手的运动轨迹。神经系统能够仅仅利用小脑就完成这些调整,因为小脑可以直接接收本体感受器的关于关节和身体的空间位置信息。
仿脑控制链接整理
登录Ubuntu看了一下Google Chrome的收藏文件夹
相当混乱
Nengo
Frontiers | Nengo: a Python tool for building large-scale functional brain models | Frontiers in Neuroinformatics
芯片造脑:科幻照进现实?
芯片造脑:科幻照进现实?| 果壳 科技有意思
运动控制:AI尚未完成的挑战
运动控制:AI尚未完成的挑战| 果壳 科技有意思
神经信号“绕道”,让瘫痪的手动起来!
神经信号“绕道”,让瘫痪的手动起来!| 果壳 科技有意思
神曲、神舞与神经
神曲、神舞与神经| 果壳 科技有意思
神经科学,仍在等待它的牛顿
神经科学,仍在等待它的牛顿| 果壳 科技有意思
增强学习对于机器人控制的六字真言
增强学习对于机器人运动控制的六字真言 | 干货 | 雷峰网
无痛的增强学习入门:基本概念篇
无痛的增强学习入门:基本概念篇-InfoQ
四、飞行控制
开源飞控PX4:PX4是一个软、硬件开源项目(遵守BSD协议),目的在于为学术、爱好和工业团体提供一款低成本高性能的高端的自驾仪。这个项目源于 ETH Zurich (苏黎世联邦理工大学)的计算机视觉与几何实验室的PIXHAWK项目、并得到了自主系统实验室和 自动控制实验室的支持 ,以及一些出色的个人(Contact and Credits)也参与其中,包括 3D Robotics 和 international 3DR distributors的成员。
飞控:APM、PX4、零度、大疆
VTOL:尾座式、复合式、倾转旋翼
Mavlink协议是在串口通讯基础上的一种更高层的开源通讯协议,主要应用在微型飞行器(micro aerial vehicle)的通讯上。Mavlink是为小型飞行器和地面站(或者其他飞行器)通讯时常常用到的那些数据制定一种发送和接收的规则并加入了校验(checksum)功能。
http://www.amovauto.com/portal.php?mod=view&aid=44
flightplot飞行日志分析
无人机的飞行控制是无人机研究领域主要问题之一。在飞行过程中会受到各种干扰,如传感器的噪音与漂移、强风与乱气流、载重量变化及倾角过大引起的模型变动等等。这些都会严重影响飞行器的飞行品质,因此无人机的控制技术便显得尤为重要。传统的控制方法主要集中于姿态和高度的控制,除此之外还有一些用来控制速度、位置、航向、3D轨迹跟踪控制。
基于人体学习的方法(Human-based learning) 美国MIT的科研人员为了寻找能更好地控制小型无人飞行器的控制方法,从参加军事演习进行特技飞行的飞机中采集数据,分析飞行员对不同情况下飞机的操作,从而更好地理解无人机的输入序列和反馈机制。这种方法已经被运用到小型无人机的自主飞行中。
路径规划:多旋翼在飞行中不仅受到自身约束的限制,还会受到环境约束的影响。路径规划是为了给多旋翼提供既满足自身约束又满足环境约束的可飞路径。
全局路径规划和局部路径规划:根据任务生成航路点,并用直线将航路点连接起来,这一过程称为全局路径规划;
根据局部环境条件和多旋翼的动力学运动学约束将直线路径提炼为可飞路径,这一过程称为局部路径规划。
人工势场法: 给目标航路点和直线路径分配吸引势场,给障碍物分配排斥势场,使三维飞行区域处于目标航路点、直线路径和障碍物的叠加势场中,飞行在该区域中的多旋翼将会被目标航路点和直线路径同时吸引,而被障碍物排斥,使得多旋翼在飞向目标航路点的同时沿着直线飞行,且能避开障碍物。
机动动作:
飞行包线:
僚机:军事术语,僚机(wingman)是编队飞行中跟随长机执行任务的飞机。僚机应保持在编队中规定的位置,观察空中情况,执行长机的命令。长机为主,僚机为辅。
全动平尾:全动平尾是将飞机的水平安定面和升降舵合而为一的部件,它通过转轴与机身结合,飞行员可以控制整个平尾偏转,这使得飞机的操纵性能大大提高。一般来说,传统飞机的水平尾翼都是由固定的水平安定面和可偏转的升降舵组成。随着飞机的不断发展,为了进一步提高飞机的操纵性能,尤其是在超音速飞行时的操纵能力,如今许多超音速飞机(尤其是高性能的战斗机,如俄罗斯的Su-27、美国的F-15“鹰”战斗机等)都将水平尾翼设计成可偏转的整体,称为全动平尾。
空速是指飞行器相对于空气的速度,空速可分为指示空速、校准空速、当量空速、真实空速等几种。地速、马赫数。
真实空速:飞行器的飞行真空速定义为飞机的重心相对于空气气流的运动速度投影到飞机纵轴对称平面内的分量。真实空速表示飞行器的快慢,在进行领航和轰炸时等任务时就需要了解真实空速。由于真空速的刻度盘是按照海平面标准大气状态标定的,随着飞行高度改变,空气密度也相应改变,速度表的指示速度就与航空器相对空气的真实空速不同了。
指示空速:又称表速, 它是根据测量得到的动压,并按海平面标准大气条件下(760毫米水银柱,气温零上15度)空速与动压的关系而表示的速度值。指示空速表示的是飞行器空气动力的大小,它对飞机的操纵性能和飞行安全有着重要的意义。
表速和真速的数值是不同的,主要原因是飞机空速管并不能测出飞机的飞行速度,而只能测量q=0.5*ro*v*v(其中ro是空气密度,v是飞机相对于空气的速度),然后用q除以密度ro再除以0.5,将结果开方(通过电路或机构实现)即可得到飞行速度。但除以密度时只能用海平面的密度值,而空气密度随着高度升高在减小,所以
表速(仪表显示的速度)就和真速不一致,比真速要小,高度越高,差别越大。如果飞行器在标准海平面飞行时,则二者相等。如果飞行器在空中为了保持一定的迎角平直飞行,其指示空速是不变的,但是高度越高,大气密度越小,真空速越大。因此,飞机上通常有一块组合空速表,它有2个指针:粗指针,指示的是“指示空速”;细指针,指示的是“真空速”。
地速:在无风的状态下,真速和地速是一致的;有风的情况下,真速和地速是不一致的,真速和风速之和(矢量和)等于地速。注意这种情况仅适用于平飞,如果你是在爬升或者下降状态,无风时地速不等于真速,这种情况下地速只等于飞机真速的水平分量。
2017/9/16
多旋翼无人飞行器动力子系统:
螺旋桨截面迎角的变化
桨叶尖部线速度比靠近毂轴部位的要快,因为相同时间内叶尖要旋转的距离比毂轴附近要长。从毂轴到叶尖迎角的变化能够在桨叶长度上产生一致的升力。
定距桨只有在一定的桨距和转速组合下才能获得最高的效率
桨叶和桨距:1英寸=2.54厘米
理论桨距和实际桨距,实际桨距就是考虑流体的可压缩性后在实际使用时螺旋桨旋转一周所前进的距离,一般而言。实际桨距都小于理论桨距。
顶视逆时针旋转的桨是正桨
升力公式,升力系数在迎角到了13°左右会突然变小,因为气流乱了,这就是失速迎角。
升力系数最大时,阻力系数可能更大。
最佳效率的角度,我们一般挑升力系数比上阻力系数最大的那一个角度,也就是最大升阻比的角度。
动力冗余配置
多旋翼无人飞行器飞控子系统:
只要是飞控就离不开捷联惯导、卡尔曼滤波和PID控制这三大算法
捷联式惯导系统是为了飞控的小型化,能够单独同时测量无人机的线速度和角速度。
Kalman滤波算法是为了更好的对多种传感器数据融合进行姿态解算。
Kalman滤波是Kalman于1960年提出的从与被提取信号有关的观测量中通过算法估计所需信号的一种滤波算法,它创新地将状态空间的概念引入随机估计理论中,将信号过程看作是具有白噪声影响的线性系统输入输出过程,在估计过程中利用系统的多种方程构成滤波算法。此外,Kalman滤波的输入输出是由时间更新和观测更新算法联系在一起的,根据系统状态方程和观测方程估计出所需处理的信号。
利用该算法,可以将来自惯性导航系统与其他导航装置的数据(如惯性导航系统计算的位置对照GPS接收机给出的位置信息)加以混合利用,估计和校正未知的惯性导航系统误差。
目前主流的几款开源飞控中,无一例外地都是采用PID控制算法来实现无人机的姿态和轨迹控制。
PID控制器算法能解决什么问题呢?以多旋翼为例,在没有控制系统的情况下,直接用信号驱动电机带动螺旋桨旋转产生控制力,会出现动态响应太快,或者太慢,或者控制过冲或者不足的现象,多旋翼根本无法顺利完成起飞和悬停动作。为了解决这些问题,就需要在控制系统回路中加入PID控制器算法。在姿态信息和螺旋桨转速(泡沫机应该是舵机和螺旋桨)之间建立比例、积分和微分的关系,通过调节各个环节的参数大小,使多旋翼系统控制达到动态响应迅速、既不过冲、也不欠缺的现象。
上层控制根据路径规划算法计算期望的位置指令,然后运动导航控制算法将位置指令转化为期望的欧拉角,作为最终的期望角度输入到控制器。
多旋翼飞行器实现各种功能(轨迹跟踪、多机编队等)的核心是快速、稳定的姿态控制和精确的位置控制。
飞行器姿态控制回路,飞行器位置控制回路。
姿态运动模态的频带宽,运动速率快,所以作为内回路进行设计;而位置运动模态的频带窄,运动速度慢,作为外回路设计。
位置控制回路可以使飞行器能够悬停在指定位置或者按照设定好的轨迹飞行,姿态控制回路的作用是使多轴飞行器保持稳定的飞行状态。
由于内回路姿态与外回路位置具有直接的耦合关系(滚转/俯仰姿态运动引起水平方向的左右/前后运动)。因此所有控制的核心便集中在内回路。考虑到内回路控制算法的可实现性,合理的方法和控制策略是决定控制性能的重点。
内回路姿态控制的策略一般有两种,第一种是直接对姿态角进行控制,另外一种是将姿态角误差转化为期望的修正角速度,对实际角速度进行控制以达到跟踪角速度、消除姿态角误差的目的。由于角速度可构成更快回路,因此第二种策略具有更快的响应速度。