其实计算机也就只会点头和摇头,人工智能又是啥回事?
这几天看了几本与算法相关的书籍,有了写篇文章的想法,觉得编码归根结底就是一门问问题的艺术。
计算机的思维和人类的思维
很多年以前,看到能使用电脑玩游戏、播放视频 、音乐……感觉神奇的很。后来学习编程后,在编写程序时,才发现编码就是一个不停发送询问指令的过程。还发现没有 if 语法几乎是寸步难行。原来计算机也没有想象中的那么聪明,除了会些基本运算,最历害不过的就是会点头和摇头。
编程的本质上就站在人的思维角度去迁就计算机的思维,因为人的思维相比较计算机思维几乎是降维大击。
先来一个简单例子:如有 1,2 ,3,4 ,5几个数字,请问那两个数字相加等于 5。
如果问的是一个人类,人的思维是学习性思维也是经验性思维,能快速的找出 1 和 4,2 和 3。
原因在于人类在思考某一个问题的时候,是可以凭借曾经的学习经历,用问题匹配经验记忆,这是一个数学问题去找到数字相关的经验,然后得出最终的答案,一切得益于记忆存储和记忆查找。
如果让计算机回答这个问题,则问问题的方式就要发生改变。不能直接问它,嘿!计算机,你知道 1,2,3,4,5 中哪 2 个数字相加等于 5吗?,它会一脸懵逼。
你要轻言细语地这样问它:嘿,1+2 等于5吗?这个它可以告诉你不是;然后再问它 1+3 等于5吗?它会说不是的;再问它 1+4 等于 5 吗,它会点头…… 然后依次类推,最后计算机会给你所有答案。
所以,你会发现,要计算机给你答案可真够累的。这计算机也忒笨,感觉就只会比较似的,用户也只能通过它的比较结果自己根据结论做什么事情。
是的,计算机的思维本质就是如此,它也就只会摇头或点头。
所以,你需要计算机解决某个实际问题的时候,你需要不停的试探型的问,让它不停的比较,再通过比较得到某些结论,这就是计算机的穷举思维。
所以,问问题的方式也就编写代码的方式就很有讲究,问的方式不对,可能就问不出结果 。
问的方式可以,可能需要很长时候给你结果。
如果问的方式很好,就有可能很快告诉你答案。这就是所谓的算法设计,用一种非常艺术的方式问计算机,通过它的点头或摇头快速得到结果。
村头晃悠的傻大个
归纳其来是不是有点象问村头的傻大个问题一样。
有天我家狗丢了,我去问天天在村头晃悠的傻大个:
如果你这么问他:你看到我家狗了吗?他会摇头。傻大个即使看到过我家的狗,但他人傻,记忆是混乱的。所以他摇头了,没有问出结果,所以说问问题的方式有问题。
如果你这么问他:你看到一只狗了吗?他点头,说明确实有一只狗从他身边经过。
你再问他,是黑色(我家的狗是黑色)的吗?他点头,虽然我得到了结论,有一只黑色的狗从他身边经过,但我不能马上得到结论一定是我家的。所以需要继续问。
这只狗是不是大概 2 岁的样子?这时,他就懵逼了,因为这个问题对他来讲太深奥了。他怎么能区分一只狗究竟是几岁了,他没有对于狗的年龄判断的知识库,他是一个傻大个呀。
如果你这么问他:你看到一只狗了吗?他点头,说明确实有一只狗从他身边经过。
你再问他,是黑色(我家的狗是黑色)的吗?他点头,虽然我得到了结论,有一只黑色的狗从他身边经过,但我不能马上得到结论一定是我家的。所以我需要继续问。
小狗会对你摇尾巴,还要添你的手(我家的狗较热情,碰到人就这样),是的吗?傻大个点头。到此,我应该差不多问到了我要问的问题答案。
所以,面对傻大个时,问问题的方式是很重要的。当然,应该也能发现,问问题时,找到问题的特征描述是很重要的。问问题时,用正确的特征描述去匹配傻大头的认知世界,就能得到答案。
现在,应该能理解前面所说的:编程的本质上就站在人的思维角度去迁就计算机的思维,因为人的思维相比较计算机思维几乎是降维大击。
人工智能的关键:知识库和经验模型
计算机为什么不能如正常人类的思考方式思考,而感觉就像傻大头。
分析结论,发现计算机没有知识库。你看,我们从小就学习这样那样的知识,随着年龄的增长,关脑中的知识库越来越多。当你问我问题时,只要能在知识库找到的答案我就能给你答案。
当然,我们会有想法,把所有现实世界中的知识存储在电脑中不就可以吗?这就如同给你买很多书,放在桌面,我问你问题时,你是否能马上给我答案,不能。但是你可能通过翻阅相关知识书籍给我答案。所以,如果直接把知识库保存在计算机,计算机也只能通过查询的方式进行一一匹配,这很显然,依然还是穷举思维,而不是主观性思维。穷举思维面对大量的知识库查询时,就会变得非常慢。
所以除了知识库之外,还应该有经验性思维,也就是经历性记忆,才能从知识库中快速找到答案。我们学知识的时候,都会使用知识,如此建立起经历性记忆。
现代计算机中所谓的人工智能,其本质就是为计算机提供大量的知识库,然后让计算机如同人类的方式不停自主学习知识库,然后积累起经验模型(专业叫特征模型),当你再次问计算机的时候,他就能通过学习好的经验模式给你答案。当然,最重要的是如何让计算机学习,这便是所谓的人工智能算法。
最后陈词
好的算法,是较复杂的,这不亚于是要给电脑彻底洗脑。