深度学习框架

近年来深度学习在很多机器学习领域都有着非常出色表现,在图像识别、语音识别、自然语言处理、机器人、网络广告投放、医学自动诊断和金融等领域有着广泛应用。面对繁多的应用场景,深度学习框架有助于建模者节省大量而繁琐的外围工作,更聚焦业务场景和模型设计本身。

深度学习框架优势

使用深度学习框架完成模型构建有如下两个优势:

  • 节省编写大量底层代码的精力:屏蔽底层实现,用户只需关注模型的逻辑结构。同时,深度学习工具简化了计算,降低了深度学习入门门槛
  • 省去了部署和适配环境的烦恼:具备灵活的移植性,可将代码部署到CPU/GPU/移动端上,选择具有分布式性能的深度学习工具会使模型训练更高效。

深度学习框架设计思路

深度学习框架的本质是框架自动实现建模过程中相对通用的模块,建模者只实现模型个性化的部分,这样可以在“节省投入”和“产出强大”之间达到一个平衡。我们想象一下:假设你是一个深度框架的创造者,你期望让框架实现哪些功能呢?

相信对神经网络模型有所了解的读者都会得出如 表1 所示的设计思路。在构建模型的过程中,每一步所需要完成的任务均可以拆分成个性化和通用化两个部分。

  • 个性化部分:往往是指定模型由哪些逻辑元素组合,由建模者完成。
  • 通用部分:聚焦这些元素的算法实现,由深度学习框架完成。

深度学习框架 - 图1

表1:深度学习框架设计示意图

无论是计算机视觉任务还是自然语言处理任务,使用的深度学习模型结构都是类似的,只是在每个环节指定的实现算法不同。因此,多数情况下,算法实现只是相对有限的一些选择,如常见的Loss函数不超过十种、常用的网络配置也就十几种、常用优化算法不超过五种等等。这些特性使得基于框架建模更像一个编写“模型配置”的过程。