11.1.3 人工智能框架分析
首先,先了解清楚什么是语义分析。读者如果通过搜索引擎查找语义分析,其给出的定义通常是“语义分析是编译过程的一个逻辑阶段,语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查。语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息。”然而,这个解释好像跟读者想的不一样,也没有解释清楚的感觉。那本文中所指的语义分析是什么呢?其实,自然语言处理中的语义分析主要是对自然语言本身自带的语义进行分析(包括字、词、词组、句子、段落等),可以使用不同的方式将语义所表示的本体含义表示出来。
在运用人工智能、机器学习、深度学习等方法的过程中,相信读者都会借助一些热门的人工智能框架来帮助自己实现功能。实际上,Tensorflow、Caffe、Theano、Deeplearning4j等框架在搭建模型、训练模型等方面都发挥着重要的作用,这些工具都可以让读者根据实际情况选用来搭建所需的模型。因此,本小节接下来对现在流行的机器学习框架以及工具做一些简单介绍。
TensorFlow是一个相对高阶的分布式深度学习框架,它支持自动求导,用户不用再通过反向传播求解梯度;通过SWIG实现了Python、Java、go等接口;有内置TF.Learn和TF.Slim等组件能快速设计新网络;轻松实现深度学习以外的机器学习算法(只要将计算表示为计算图);面向内存足以装载模型参数环境,最大化计算效率;具有灵活移植性、极快编译速度和可视化组件;支持分布式深度学习。此外,TensorFlow包含了常见的网络结构,是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的框架。TensorFlow可用于图像处理、语音识别、自然语言处理、图像识别等多项机器深度学习领域。
Caffe是一个被广泛使用的开源深度学习框架,Caffe有以下的优势:容易上手,网络结构都是以配置文件形式定义,不需要用代码设计网络;训练速度快,能够训练state-of-art的模型与大规模的数据;组件模块化,可以方便地拓展到新的模型和学习任务上;Caffe核心是Layer,最开始设计时的目标只针对图像,没有考虑文本、语音或时间序列的数据,对CNN支持很好,但是对RNN、LSTM支持不充分;拥有大量训练好的经典模型;在计算机视觉领域应用多;面向学术圈和研究者、运行稳定、代码质量高,是一个主流的工业级深度学习框架;理论上,不用写代码,定义网络结构就可以完成模型训练;Caffe在GPU上训练性能好,但目前仅支持单机多GPU训练;借助Spark的分布式框架实现Caffe的大规模分布式训练。(https://www.daowen.com)
Theano是一个高性能的符号计算及深度学习库,其核心是一个数学表达式的编译器,专门为处理大规模神经网络训练的计算而设计。其具有以下优势:集成NumPy,可以直接使用NumPy的ndarray,API接口学习成本低;计算稳定性好,可以精准计算输出值很小的函数;动态的生成C或CUDA代码,用以编译成高效的机器代码,对卷积神经网络的支持很好。
Deeplearning4j是一个基于java和Scala的开源分布式深度学习库,其核心目标是创建一个即插即用的解决方案原型,Deeplearning4j拥有一个多用途的n-dimensional array的类,可以方便地对数据进行各种操作;拥有多种后端计算核心,用以支持CPU及GPU加速;可以与Hadoop及Spark自动整合,同时可以方便地在现有集群上进行扩展;DL4J的并行化是根据集群的节点和连接自动优化,可被用于图像识别、自然语言处理等多项领域。
在各种框架的支持下,对需求工程的相关文档集进行语义分析将会成为一个能够实现落地的任务和目标。分析需求工程文档也能够为后续章节介绍的需求文档标记、标签,软件文档自动生成以及软件系统设计方案的智能推荐提供坚实可靠的基础。
基于框架工具的协助,读者怎样使用工具来完成语义分析呢?语义分析主要包括什么内容呢?读者不用着急,在接下来的小节中,将会带读者了解基本的语义分析的研究内容。