新闻
NEWS
浅谈与机器人息息相关的算法和机器学习
来源: 微信公众号“机器人漫谈”
发布时间:2017-09-20
浏览量:6855

本文转载自微信公众号“机器人漫谈”。

 

小编在上期漫谈中说到,机器人的发展已经由硬件趋向软件的纵深发展。软件系统与人工智能等技术的结合成为未来机器人“赋智”的关键,让机器人“机智灵巧“起来是现在机器人应用研发的重点方向。而提到软件系统和人工智能,就不得不言及“算法”与”机器学习“。可能很多人和小编一样,并没有直接参与软件系统开发工作。但作为一个机器人应用的业务爱好者和参与者,有必要对这些概念及背后的原理做些基本了解,这在一定程度上将有助于理解机器人系统的运行原理。因此,本期小编就根据自己对这方面信息的梳理,做下浅薄的分享。



一、什么是算法

 

1.1算法是一系列的指令


我们所生活的这个时代,处处都存在着算法。比如当今已经普及的的手机或笔记本电脑、汽车、家电等都留有算法的印记,再如,银行系统、航空系统、物流系统就是各类复杂算法的集成体。算法能够经营工厂、进行交易、运输物品,还能保存记录。在人未知道“算法”这个词以先,算法已走进生活生产方方面面的实际。那么算法究竟是什么呢?算法其实是一系列的指令,告诉计算机该做什么。

 

1.2算法的运算逻辑是“与、或、非”


众所周知,计算机是由海量个微小开关即晶体管所组成,而算法能够在一秒内打开并关闭这些开关上亿次,这是算法的物理底层构造。最简单的算法就是触动开关。如果开关打开,信息就是1;如果开关关闭,信息就是0。这样的一个晶体管信息就构成一个比特信息。两个比特信息形成并列组合并与另外一个比特信息进行串联,就可以形成一组简单算法。所有的算法都是基于这样开关的物理基础组合。通过这种组合的原理分析,无论有多么复杂,算法的逻辑都能被分解为“与、或、非”三种。实际应用中,这些“与、或、非”的逻辑是用不同的符号来代替运算,简单的算法就可以用图表来表示。举个形象化点的例子,如下图所示,这就是一个简单的算法表达,按照这个算法逻辑,发烧可由感冒或者咳嗽引起,而发烧又有头疼,则可用泰诺进行治疗。



通过许多这样的逻辑单元组合,能够进行极其复杂的逻辑推理运算。但归源溯本,就是上述算法的三种运算逻辑:与、或、非。因此,从这样严谨的逻辑结构可以看出,这是一套既精确又严格的指令系列,而非模糊的要求。


1.3算法是有效的程序设计结果


算法的设计就是人借着计算机语言的媒介设计指令要求匹配到计算机中去的过程,所以,所要求的算法要先经过设计,所设计的算法未必就能复合计算机的物理属性逻辑,需要加以验证调节。一个有效的算法应该含有三个重要特性:


A)它必须是有限的:如果设计的算法永无休止地尝试解决问题,那么它是无用的。
B)它必须具备明确定义的指令:算法的每一步都必须准确定义,在任何场景下指令都应当没有歧义。
C)它必须是有效的:一个算法被设计用以解决某个问题,那么它就应当能解决这个问题,并且仅仅使用纸和笔就能证明该算法是收敛的。


上述这些特性在小编看来可以是作为两个方面的验证必要:


一方面是所设计的算法逻辑与计算机物理晶体管的实际层面的一致性验证,即设计的算法是能够运行得通的算法。


另一方面就是所设计的算法与要达到的运行目的的一致性,即设计的算法能够实现既定的目标功能。 

       

设计算法并非易事。首先是算法的构思,然后是要用一种计算机能理解的语言来将算法记录下来,如Java、Python、C++等。接下来就需要进行纠错,找出每个误差并修正,直到计算机能够运行程序为止。


二、什么是机器学习

 

小编通过上述对算法的分享可知,算法是由人定义设计的一系列的指令。一旦人能够完成所愿的程序后,计算机就会以飞快的速度按照我们的意旨办事。然而,即便是事先做了较为充分的算法设计和录入,不可避免的是,仍会不时遇到一些靠现有算法不能发挥作用的应用场景。这分为三类情况:


情况一:没有对应的算法存储。

情况二:有算法存储,却无足够内存,算法不能发挥作用。

情况三:有算法存储,且有内存,但运算步骤繁多,运行时间占用很长,不能满足效率要求。


为此,聪明的人类科学家就换了一个思路,提出机器学习的出路,顾名思义,就是让机器在运行过程中学习形成新的应用算法。按小编的理解,机器学习就是对算法的算法。

 

2.1机器学习是求算法的算法


体验过编程的各位亲们都知道,每个程序都会有输入和输出。同理,算法也是按照这个顺序进行:数据输入计算机,算法利用数据完成接下来的事,然后结果就出来了。


而机器学习则是倒过来的顺序:输入数据和想要的结果,输出的则是算法,即把数据转换成结果的算法。举个简单例子,算法相当于对已经函数关系式y=ax+b,代入具体的X数值,求解对应的y结果,而机器学习则是已知多组(x,y)的数值,对应求解函数关系式的过程。这些数学函数关系式的正推和逆推在我们从小到大所受的教育中已经是司空见惯之事。其实,算法和机器学习的关系正式这个类似之理。机器学习就是对算法的逆运算过程,就是算法的函数关系式求解,是属于归纳的过程,相应的算法应用就属于演绎的过程。学习算法能够制作出其它的算法。通过机器学习,计算机就会自己编写程序,码农们就等着“下岗”了。这个技术是目前人工智能技术的核心之一,正在发展之中。

 

2.2机器学习的运行逻辑是统计方法和数学模型


小编小时候是在农村中长大,就以农场作个比方:学习算法就像是种子,大量的数据是土壤,被掌握的程序算法则是成熟的作物。机器学习专家就像是农民,他们散播种子,浇水施肥,时时留意作物生长状况。这颗种子就是统计方法的设定,土壤就是大量所掌握的相关数据信息,看顾的过程就相当于验证修正调整的过程。这和人的学习思维是有明显差别的。人是有浅意识和自由意志,而计算机是没有的,计算机里有的是基于物理结构和数学统计所形成的逻辑知识。在机器学习中,知识往往以统计模型的形式出现,因为多数知识都是可以统计的。因此,截至目前,许多人们能够编写的程序是计算机学习的内容,而令人诧异的是,也有许多人们无法编写的程序,计算机却能学习出来算法。比如,我们会认出某人的笔迹,这个技能是从人的潜意识里发出的,无法向计算机解释这些事情在我们脑海里是如何完成的。但是,如果我们把关于这个人足够多的笔迹交给机器学习算法,机器则会根据图像笔迹的导入做统计分析和比对,继而会按照机器的统计思维来判断出某人的笔迹来。这类的技术目前在国内图像和声音识别技术方面得到了较为广泛的应用。

 

2.3机器学习的核心是基于过去经验的分析预测


计算机自身并没有创造性,它们只能做人让它们做的事情,这点上是与人脑意识本质性的差别。只是机器学习算法是一种人让它们去做的特殊指令,但其背后仍是基于过去所获得的经验数据进行分析,把数据变成算法,用这种基于过去经验数据所得出的规律来进行分析预测。在小编看来,这种基于经验数据所得出的规律算法是能够适应变化的周围环境和对象需求或行为,但仍是限制于机器学习算法的本身——预设的数理统计模型。从这个角度而言,也许是机器学习难以取代人脑思维的重要因素所在。

 

2.4机器学习是机器人本身实现自动化智能化的技术


没有机器学习,计算机就无法跟上人类的步伐,有了学习,一切都能与时俱进。机器学习目前应用的领域已经较为广泛,包括数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人运用等多个方面。由于小编目前是处在工业领域之中,对比下几次工业革命的特点后发现,工业的一次、二次革命使得工业实现了自动化,工业的第三次革命,即信息革命,使得脑力劳动生产力得到了解放,机器学习则是使得自动化本身自动化。一旦这类技术成熟且应用面广泛起来,将会大有助于提升”智造”的水平。特别是在机器人的应用方面,目前生产中绝大多数的机器人是以第一代傻瓜示教式为主,这对于制造的柔性要求是一种局限,要求做的事情只能依靠现有编程输入为主,难以满足变化环境中快速响应的要求。诸如焊接、打磨、喷涂等诸多的应用,都是需要时时跟踪监控反馈和补偿,目前在这方面已经有一些推广应用的机器学习集成产品,如机器人焊接的焊缝时时跟踪系统,机器人打磨的力传感系统等等。但相关应用的面还较窄,成本较高。这块的需求潜力较大,机器学习是软件系统的活,确是硬件相关的事,是机器人本身实现自动化智能化的赋智关键。


三、机器学习的基本思路

 

机器学习的研究和探索正如火如荼,每年都会出现上百种新的算法,但它们都是基于几个相似的基本思路。对于小编这样一个非算法研究人士而言,了解下这些基本思路的类型是有助于明白机器学习究竟是如何带来改变。不同的基本思路提供的是不同的侧重方面,可以帮助我们建立立体化的认识。目前主要有5大基本思路学派,他们分别是符号学派、联结学派、演化学派、贝叶斯学派、类推学派。下面小编就概括性的介绍下这五种思路的要点。


5.1符号学派


其核心理念是所有与智力相关的工作都可以简化为对符号的操纵,符号和它们所待播啊的概念是一一对应的关系。它将机器学习看所是逆向演绎。就像数学家求解方程式的过程,是透过用其他表达式来替换表达式的方法。持符号学派思路者已经弄明白如何将现有的知识纳入学习中,与动态的知识进行结合,来解决新的问题。因为他们清楚你不能从零开始学习:除了数据,你还需要一些原始的知识。其主算法是逆向演绎,主要侧重在找寻哪些知识被忽略了,然后作出逻辑的演绎推论,尽可能地被通则所应用。


5.2联结学派


符号学派的方法是简洁快捷直接,但这种逻辑规则定义出的概念好像冰山一角,其表面之下还有很多东西是形式推理无法看到的。联结学派的思路认为学习就是大脑那样的模式,每个概念由许多神经元来表示,而每个神经元又会和其它神经元一起代表许多不同的概念。让计算机模拟大脑是有一定的物理基础的:目前计算机里面的晶体管数量已经赶上人类大脑里神经元的数量。但在连接数量上,人类的大脑轻易获胜,因为本质原理还是差别的,计算机本质上是0/1的晶体管通电状态组合,而人脑却是由生理机能的神经元细胞组成。两者单从耗能和连接反应速度方面就显出巨大落差。比如人在大街上认出一个熟人只需要0.1秒,而这个时间,供计算机识别最多勉强完成100个处理步骤。不过,联结学派的思路是模拟大脑进行逆向演绎。大脑通过调整神经元之间连接的强度来进行学习,关键问题是找到哪些连接导致了误差,以及如何纠正这些误差。它的主算法是反向传播学习算法,该算法将系统的输出与想要的结果做比较,然后连续一层一层地改变神经元之间的连接,目的就是为了使得输出的东西更接近想要的东西。


5.3演化学派


该学派的思路是认为所有形式的学习是基于自然选择。因此,他们就在计算机上模拟自然选择。其关键性的问题是学习结果:不只是像反向传播那样调整参数,它还要创造一个类大脑,用来对参数进行微调。其主算法是基因式编程,模拟自然环境对有机体进行交配和演化那样,基因式编程也对计算机程序进行配对和提升。其实,演化学派和连接学派有着共同的点:他们都因为受到自然启发而设计了学习算法。不过后来往不同方面去侧重。演化学派者关注的学习结构,就像基因关注DNA的结构一样。而联结学派则更喜欢用一个简单、手工编写的结构,加上许多连接行为,然后让权值学习来完成所有工作。前者是侧重结构学习,后者是侧重权值学习。受小编能力有限,再下去就太抽象了,且这些学派的思路之于应用的实际还在路上,所以,就只能先表达到这个程度。


5.4贝叶斯学派


提及贝叶斯,就会想到概率论课堂上曾经上过的贝叶斯定理。没错,贝叶斯学派就是基于贝叶斯定理进行构思。先来下温故,贝叶斯定理:


P( A | B )=P( A )P( B | A)/P( B )


贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理.


贝氏定理学派最关注的问题是不确定性。这门学派主张所有学到的知识都是不确定的,而且学习本身就是一种不确定的推理形式。那么这个问题就变成在不破坏信息的情况下如何处理嘈杂、不完整,以及相互矛盾的信息。解决的办法就是运用概率推理,而主算法就是贝叶斯定理与其衍生定理。贝叶斯定理告诉我们如何把新证据转化为信念,而概率推理算法则尽可能有效地做到这一点。可以将上述公式可以按照如下理解转化:


P(原因|结果)=P(原因)P(结果|原因 )/P(结果)


举个例子,假设我是一位医生,上个月已经为100名病人进行诊疗。其中有16名病人患感冒,24名发烧,12名既感冒又发烧。因此感冒的人群中有发烧的病人条件概率为12/24。


设立条件缩小了我们正在考虑的集合,在这个例子中,所有病人的范围就缩小为患有感冒的病人群。在所有病人的群中,发烧的概率是24/100;而在感冒病人的集合中,发烧的概率则是12/24。病人既发烧又感冒的概率,是患感冒病人的概率乘以发烧病人的概率:


P(感冒,发烧)=P(感冒) X P(发烧|感冒 )=24/100 X 12/24=12/100


而贝叶斯定理的算法思路就是将这个公式变换来计算:


P(感冒) X P(发烧|感冒 )=P(发烧) X P(感冒|发烧 )


推出:P(感冒|发烧)=P(感冒)P(发烧|感冒 )/P(发烧)


如此一来,可以由原因推出结果,又可以由结果知道原因,其内在的逻辑关系固定,而未知的解则可以根据此计算出来。不过,贝叶斯学派面临着难题之一就是实际机器学习的处境,受制于环境样本的有限,往往难以得到相对确切地概率。因此,当机器学习通过有限的样本统计出概率,以此作为推导出新解时,其本身就是存在不确定性。因此,这个思路也是要看应用处境需要而定。

 

5.5类推学派


对于类推推理学派而言,机器学习的关键是认识各种场景之间的相似之处,从而推断其它情境的相似地方。如果两位患者都有相似的症状,也许他们患有相同的疾病,问题的关键是要判断两件事情之间是如何相似。类推推理学派的主算法是支持向量机,可以找出哪些经验是需要记住的,以及如何结合这些经验,做出新的预测。类比学派的技巧在于跨越问题领域来进行学习。它是五个学派里最不具有凝聚力的一个学派。它的统一依靠的是对于作为学习基础的、相似性判断的信任。

 

小编大致地简略地介绍下这五大机器学习算法学派的特点,若对此方面想做进一步了解,推荐一本书:美国人佩德罗*多明戈斯著作的《终极算法》,国内由中信出版社出版。



总而言之,这些思路各有所长和针对面,对于那些专业做机器学习研究的专业人士,定是立足与自己所要研究的对象领域,采取适当的思路进行开发。对于小编而言,只是做下基本了解。


四、有关机器学习的部分探讨

 

即将要结束本次的漫谈,最后小编想从两个有关的问题来探讨下对机器学习的看法,一个务实的问题和一个务虚的问题。

 

4.1机器学习与一般算法的关系


小编刚才花了大篇幅对一般算法和机器学习这一算法的算法做了介绍,可以看出机器学习相对于一般算法是要高级。但这并不意味着在实际应用中机器学习一定是最合适的算法。相反,对于特定场景的应用,最好的算法应该是已经变慢了大多数只是的一般算法。因为这样做更简单,成本也更低。而机器学习可以应用在变化环境中,通过自学习实现自应对的功能。且目前机器学习还处在发展的初级阶段,很多应用是将两者结合起来。

 

4.2机器学习会否失控,对人类构成威胁

 

这个问题有点务虚,不过还是值得去探讨。目前有两大观点阵营。一类认为随着机器学习技术的提高,类似像机器人的智能会超过人类,恐怕会有可能发生替代人类接管世界的可能。另一类观点则是以《终极算法》作者佩德罗*多明戈斯为代表的乐观学派,认为由于计算机本身并没有自己的一直,它们只是工程师生产的产品,而不是生命体。每种学习算法无非是有表示方法、评估功能和优化功能三个部分组成。其中,表示方法本身就限制了它能够学习的内容,且评估功能又是由人决定,以此建立的优化功能更是受制于前两者。因此,机器算法不会凌驾于人类之上,像只脱缰的野马般失控,构成威胁。


而在小编看来,机器学习本身不会对人类构成威胁,而真正的威胁在于掌握这些技术的人。如果21世纪发生战争(绝对不希望发生),数据、算法模型等的控制权一定会是各势力之间主要争夺的内容。这是一面双刃的剑,爱好和平者可以将其用于更好的人类服务,而恐怖分子、犯罪分子可能会将其用于犯罪作恶行径。因为机器学习本身没有意志,这是由其0/1晶体管的物理基础属性决定的。希望这类技术能够被牢牢地掌握在正义之士、和平之士手中。


浙江拓峰智能装备有限公司
Zhejiang TOFine Intelligent Equipment Co.,Ltd
浙江省杭州市西湖区紫金港科技城西园七路6号
400-757-1818