前面两篇文章,姜戈已经介绍了云计算和大数据。两句话总结就是,云计算就像水电可灵活调度,大数据就是大家来一起算数据后总结得出一些数据智慧。今天就由姜戈给你讲讲人工智能。
AI人工智能机器懂人心
事情是这么来的,人类的欲望是无穷,大数据虽然能满足人们部分数据需求,但人是善变的,我想要的东西,大数据搜不到也表达不出来,就算搜出来也不是俺喜欢的。
例如现在很多音乐软件推送的歌曲,我之前连名字都不知道也没听过,也没搜过,但我感官上觉得喜欢,这就是搜索做不出来的事情。还有电商平台推送的商品,可能跟你日常购买或搜索的东西毫无关系,但确实你当时就想购买的,这比推销员还牛逼了,未卜先知,这些就有点人工智能的味道了。
人工智能不是简单的你问我答,而是深层次的推理和沟通,你感觉到对方不是机器,这就是人工智能。
让机器学习推理
人类于动物最大的区别便是大脑具有推理能力,人们就想啊,能不能把我的推理能力告诉给机器学习。其实人们慢慢地让机器能够做到一些推理了,例如证明数学公式。这是一个非常让人惊喜的一个过程,机器竟然能够证明数学公式。
但慢慢又发现这个结果也没有那么令人惊喜。因为大家发现了一个问题:数学公式非常严谨,推理过程也非常严谨,而且数学公式很容易拿机器来进行表达,程序也相对容易表达。
然而,人类的语言就没这么简单了。比如你和你女朋友约会,你女朋友对你说:如果你早来,我没来,你等着;如果我早来,你没来,你等着!
这个机器就蒙圈了,但人都懂,所以你和女朋友约会,是不敢迟到的。
让机器掌握知识
仅仅告诉机器严格的推理是不够的,还要告诉机器一些知识。但告诉机器知识这个事情,一般人可能就做不来了,这就需要各领域的专家来助力了。
例如语言领域专家在传输知识时能不能表示成像数学公式一样稍微严格点呢?例如语言专家可能会总结出主谓宾定状补这些语法规则,主语后面一定是谓语,谓语后面一定是宾语,将这些总结出来,并严格表达出来不就行了吗?
后来发现这个不行,太难总结了,语言表达千变万化。就拿主谓宾的例子,很多时候在口语里面就省略了谓语,别人问:你谁啊?我回答:我姜戈。
但你不能规定在语音识别时,要求对着机器说标准的书面语,这样还是不够智能,就像苹果siri刚出来,叫他做点事情时都是标准的书面语,siri,请帮我呼叫XXX,这是一件很尴尬的事情。
人工智能在这个阶段叫做专家系统。专家系统不易成功,一方面是知识比较难总结,另一方面总结出来的知识难以教给计算机。因为你自己还迷迷糊糊,似懂非懂,觉得似乎有规律,就是总结不出来,又怎么能够通过编程教给机器呢?
算了,你自学成才吧
于是人们想到:机器是和人完全不是一个构造的东西,干脆让机器自己学习好了。
机器怎么学习呢?既然机器的存储、统计、计算能力这么强,基于统计学习,一定能从大量的数据中发现一定的规律,大数据就派上用场了。
让机器模拟大脑的工作方式
于是人类开始从机器的世界,反思人类的大脑是怎么工作的。人类的脑子里面存储着大量的规则,记录着大量的统计数据,是通过神经元的触发实现的。
每个神经元有从其他神经元的输入,当接收到输入时,会产生一个输出来刺激其他神经元。于是大量的神经元相互反应,最终形成各种输出的结果。
例如当人们看到美女帅哥,瞳孔会放大想看的更清楚,绝不是大脑根据身材比例进行规则判断,也不是将人生中看过的所有的美女都统计一遍,而是神经元从视网膜触发到大脑再回到瞳孔。
在这个过程中,其实很难总结出每个神经元对最终的结果起到了哪些作用,反正就是起作用了。于是人们开始用一个数学单元模拟神经元。
这个神经元有输入,有输出,输入和输出之间通过一个公式来表示,输入根据重要程度不同(权重),影响着输出。
下面的图没看懂,抽象的神经元输入输出。
于是将 n 个神经元通过像一张神经网络一样连接在一起。n 这个数字可以很大很大,所有的神经元可以分成很多列,每一列很多个排列起来。
每个神经元对于输入的权重可以都不相同,从而每个神经元的公式也不相同。当人们从这张网络中输入一个东西的时候,希望输出一个对人类来讲正确的结果。
例如上面的例子,输入一个写着 2 的图片,输出的列表里面第二个数字最大,其实从机器来讲,它既不知道输入的这个图片写的是 2,也不知道输出的这一系列数字的意义,没关系,人知道意义就可以了。
正如对于神经元来说,他们既不知道视网膜看到的是美女帅哥,也不知道瞳孔放大是为了看的清楚,反正看到美女,瞳孔放大了,就可以了。
对于任何一张神经网络,谁也不敢保证输入是 2,输出一定是第二个数字最大,要保证这个结果,需要训练和学习。毕竟看到美女帅哥而瞳孔放大也是人类很多年进化的结果。
学习的过程就是,输入大量的图片,如果结果不是想要的结果,则进行调整。
如何调整呢?就是每个神经元的每个权重都向目标进行微调,由于神经元和权重实在是太多了,所以整张网络产生的结果很难表现出非此即彼的结果,而是向着结果微微地进步,最终能够达到目标结果。
当然,这些调整的策略还是非常有技巧的,需要算法的大牛专家来仔细的调整。正如人见到美女帅哥,瞳孔一开始没有放大到能看清楚,于是美女跟别人跑了,下次学习的结果是瞳孔放大一点点,而不是放大鼻孔。
没道理但做得到
听起来也没有那么有道理,但的确能做到,就是这么任性!
神经网络的普遍性定理是这样说的,假设某个人给你某种复杂奇特的函数,f(x):
不管这个函数是什么样的,总会确保有个神经网络能够对任何可能的输入 x,其值 f(x)(或者某个能够准确的近似)是神经网络的输出。
如果在函数代表着规律,也意味着这个规律无论多么奇妙,多么不能理解,都是能通过大量的神经元,通过大量权重的调整,表示出来的。
人工智能需要大数据和云计算
然而,神经网络包含这么多的节点,每个节点又包含非常多的参数,整个参数量实在是太大了,需要的计算量实在太大。
但没有关系,我们有大数据,可以汇聚多台机器的力量一起来计算,就能在有限的时间内得到想要的结果。
人工智能可以做的事情非常多,例如可以鉴别垃圾邮件、鉴别黄色暴力文字和图片等。
这也是经历了三个阶段的:
依赖于关键词黑白名单和过滤技术,包含哪些词就是黄色或者暴力的文字。随着这个网络语言越来越多,词也不断地变化,不断地更新这个词库就有点顾不过来。
基于一些新的算法,比如说贝叶斯过滤等,你不用管贝叶斯算法是什么,但是这个名字你应该听过,这是一个基于概率的算法。
基于大数据和人工智能,进行更加精准的用户画像、文本理解和图像理解。
由于人工智能算法多是依赖于大量的数据的,这些数据往往需要面向某个特定的领域(例如电商,邮箱)进行长期的积累。
如果没有数据,就算有人工智能算法也白搭,所以人工智能程序不能给某个客户安装一套,让客户去用。
因为给某个客户单独安装一套,客户没有相关的数据做训练,结果往往是很差的。
但云计算厂商往往是积累了大量数据的,于是就在云计算厂商里面安装一套,暴露一个服务接口。
后续姜戈将带你进入GitHub目前最热的人工智能开源项目-TensorFlow。
欢迎关注:Git说
网友评论