人工智能的核心就是通过不断地机器学习,而让自己变得更加智能。机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。
机器学习最成功的应用领域是计算机视觉,虽然也还是需要大量的手工编码来完成工作。以识别停止标志牌为例:人们需要手工编写形状检测程序来判断检测对象是不是有八条边;写分类器来识别字母“S-T-O-P”。使用以上这些手工编写的分类器与边缘检测滤波器,人们总算可以开发算法来识别标志牌从哪里开始、到哪里结束,从而感知图像,判断图像是不是一个停止标志牌。
这个结果还算不错,但并不是那种能让人为之一振的成功。特别是遇到雾霾天,标志牌变得不是那么清晰可见,又或者被树遮挡一部分,算法就难以成功了。这就是为什么很长一段时间,计算机视觉的性能一直无法接近到人的能力。它太僵化,太容易受环境条件的干扰。
人工神经网络:赋予机器学习以深度 人工神经网络是早期机器学习中的一个重要的算法,历经数十年风风雨雨。神经网络的原理是受我们大脑的生理结构——互相交叉相连的神经元启发。但与大脑中一个神经元可以连接一定距离内的任意神经元不同,人工神经网络具有离散的层,每一次只连接符合数据传播方向的其它层。
例如,我们可以把一幅图像切分成图像块,输入到神经网络的第一层。在第一层的每一个神经元都把数据传递到第二层。第二层的神经元也是完成类似的工作,把数据传递到第三层,以此类推,直到最后一层,然后生成结果。
每一个神经元都为它的输入分配权重,这个权重的正确与否与其执行的任务直接相关。最终的输出由这些权重加总来决定。
我们仍以停止标志牌为例:将一个停止标志牌图像的所有元素都打碎,然后用神经元进行“检查”:八边形的外形、救火车般的红颜色、鲜明突出的字母、交通标志的典型尺寸和静止不动运动特性等等。神经网络的任务就是给出结论,它到底是不是一个停止标志牌。神经网络会根据所有权重,给出一个经过深思熟虑的猜测——“概率向量”。
这个例子里,系统可能会给出这样的结果:86%可能是一个停止标志牌;7%的可能是一个限速标志牌;5%的可能是一个风筝挂在树上等等。然后网络结构告知神经网络,它的结论是否正确。
即使是这个例子,也算是比较超前了。直到前不久,神经网络也还是为人工智能圈所淡忘。其实在人工智能出现的早期,神经网络就已经存在了,但神经网络对于“智能”的贡献微乎其微。主要问题是,即使是最基本的神经网络,也需要大量的运算,而这种运算需求难以得到满足。
深度学习:剔除神经网络之误差 深度学习由人工神经网络衍生而来,是一种需要训练的具有大型神经网络的多隐层层次结构,其每层相当于一个可以解决问题不同方面的机器学习。利用这种深层非线性的网络结构,深度学习可以实现复杂函数的逼近,将表征输入数据分布式表示,继而展现强大的从少数样本集中学习数据集本质特征的能力,并使概率向量更加收敛。
简单来说,深度学习神经网络对数据的处理方式和学习方式与人类大脑的神经元更加相似,比传统的神经网络更准确。
难以满足的硬件需求 骤然爆发的数据洪流满足了深度学习算法对于训练数据量的要求,但是算法的实现还需要相应处理器极高的运算速度作为支撑。当前流行的包括X86和ARM在内的传统CPU处理器架构往往需要数百甚至上千条指令才能完成一个神经元的处理,但对于并不需要太多的程序指令,却需要海量数据运算的深度学习的计算需求,这种结构就显得非常笨拙。尤其是在当前功耗限制下无法通过提升CPU主频来加快指令执行速度,这种矛盾愈发不可调和,深度学习研究人员迫切需要一种替代硬件来满足海量数据的运算需求。
将图形处理器GPU用作矢量处理器。在这种架构中,GPU擅长浮点运算的特点将得到充分利用,使其成为可以进行并行处理的通用计算芯片GPGPU。英伟达公司从2006年下半年已经开始陆续推出相关的硬件产品以及软件开发工具,目前是人工智能硬件市场的主导。
将GPU或FPGA等其他处理器内核集成到CPU上。在这种架构中,CPU内核所不擅长的浮点运算以及信号处理等工作,将由集成在同一块芯片上的其它可编程内核执行,而GPU与FPGA都以擅长浮点运算著称。AMD与Intel公司分别致力于基于GPU与FPGA的异构处理器,希望借此切入人工智能市场。
|