共计 2306 个字符,预计需要花费 6 分钟才能阅读完成。
在深度学习领域,Caffe 框架是人们无法绕过的一座山。这不仅是因为它无论在结构、性能上,还是在代码质量上,都称得上一款十分出色的开源框架。更重要的是,它将深度学习的每一个细节都原原本本地展现出来,大大降低了人们学习研究和开发的难度。
一、从 Caffe 的开发中了解到的用户需求:深度学习的框架总会不断改变,Caffe 也会有被新框架代替的一天。但是在开发 Caffe 的过程中,贾扬清发现大家喜欢的框架其实有着很多相似的地方,这些闪光点拥有很长的生命周期,发现并掌握人们这些共同偏好将为以后开发新的框架积累经验。Caffe 之所以广受欢迎可能是因为有以下的四个特点:1、稳定的模型架构 Caffe 通过 Protobuf 来定义一个网络的结构,而这个由 Google 开源的库具有优秀的版本兼容性。随着 Caffe 的框架源码的不断更新迭代,之前定义的网络结构依然能兼容解析,模型仍然能正确加载运行。2、较好的设备抽象 合理的设备抽象能够精简代码,提高框架适用性。在这方面 Caffe 做了比较好的尝试,模型的训练和使用与不同的平台耦合比较低,只要平台能解析网络结构并读取二进制的模型参数,就能运行该模型。这样大大拓展了框架的应用范围,自然更加符合用户的使用需求。3、清晰的说明教程 如何让首次接触到框架的人通过说明教程就能最快地熟悉运用,这对于一个新面世的框架来说尤为重要。以 Caffe 为例,用户只需要将官方文档的例子跑一遍,基本就能清楚 Caffe 的操作过程和细节,这给它的广泛传播提供了最坚实的基础。4、开放的模型仓库 目前 Caffe 还维护了一个 Model Zoo,许多论文的作者会将模型发布到这里,其它用户可以利用这些材料轻松地将模型复现,还可以在 github 上参与开发讨论,从而更深入地学习实践。
二、现有深度学习框架的侧重点:1、人们的需求多种多样,目前,还没有任何一种深度学习的框架能够满足人们所有的需求。对于工业界而言,从业者看重的是框架的稳定性强、数据量大、速度快、容易进行数据整合等。2、对于学术界来说,学者们更希望框架容易调试、灵活性要强、迭代要快。因此,比照现有深度学习框架的特点,Theano、Torch 可能会更加适合学术界,而 D4J 等可能就要更适合工业界一些,至于 Caffe、Tensorflow 等为代表的框架则是介于二者之间。三、对未来机器学习框架设计的一些思考:1、使用计算图 (computation graph) Caffe 框架在实现网络的 forward, backward, update 时,是通过 Solver, Net, Layer 之间递进地逐步回调对应的 forward, backward, update 来实现的,在加入并行化之后,为了用计算来覆盖数据传输的时间,这些回调的运用会变得相对复杂。因此,目前许多框架都在往 computation graph 的风格上偏移。这种基于 computation graph 的深度学习框架不仅在网络的更新方面更加直接,而且在并行方面,无论是数据并行方式还是模型并行方式,都能做到接近线性的提速。大家未来也可以在这个方向做些尝试。2、高效方便地输入数据 对于 Caffe 用户而言,首要问题便是如何导入数据。尤其是在算法比较简单时,保证数据输入的高效性将成为制约模型的首要因素。之前进行的某个项目里,在 8 个 GPU(Titan X) 上训练 AlexNet,需要达到每秒钟处理 1600 张图片(3.14GB/s)的要求。甚至对于另外一些模型而言,还需要更多的吞吐量。如果数据接口没有做好,是绝对无法达到这样的要求的。3、更快的速度 网络结构实现需要在灵活性和速度上进行权衡,这种权衡可以体现在框架设计的粗细粒度上。例如一个 Inception 的结构,是做成像 Caffe 这样通过各个层的累积来形成,还是直接由 Conv2D, BiasAdd, Relu 这样的基本计算来直接构造一个 Inception 结构。这样不同粗细粒度的构建方法体现了整个框架对速度或是灵活性的权衡。另外,对于底层的实现,最好用硬件供应商提供的数值计算库,比如 CuDNN, MKL-DNN,Accelerate,Eigen,NNPack 等。4、可移植性 要提升框架的实用价值,就必须提升其训练出的模型的可移植性。换句话说,也就是要让框架训练出的模型具有平台无关性,包括了系统层面(windows、linux、android、iOS、OS X 等)及硬件层面(CPU、GPU、FPGA、ARM 等)。这就必须使得设计出的模型更加轻量。
—————————————–
人工智能范畴及深度学习主流框架
工业机器人,家用机器人这些只是人工智能的一个细分应用而已。图像识别,语音识别,推荐算法,NLP 自然语言,广告算法,预测算法,数据挖掘,无人驾驶、医疗咨询机器人、聊天机器人,这些都属于人工智能的范畴。
人工智能现在用到的基础算法是深度学习里面的神经网络算法,具体应用场景有不同的专业算法实际上很多细分领域的,差别还是很多的机器人的对运动控制算法,图像识别算法要求比较高像 alphaGo,推荐算法,语音识别这些就主要靠深度学习算法和大数据训练了
深度学习的开源框架现在主流的有:caffeonspark(微软), tensorflow(google),Theano,dl4j, Torch,Kerascaffeonspark 用在视觉图片识别上比较好,dl4j 用在 NLP 上做类似问答搜索的比较多,tensorflow 用在学习新的算法上比较好
关注主页一起学习交流