TensorFlow Estimators: Managing Simplicity vs. Flexibility in High-Level Machine Learning Frameworks–阅读笔记
论文来源:2017 KDD
论文链接
ABSTRACT
本文提出一个指定、培训、评估和部署机器学习模型的框架。提供抽象概念指导,允许用户编写代码来定义模型;提供统一的Estimator接口,可实现独立于模型编写下流操作,如分布式培训,超参数调整等。
- 通过提供不同抽象级别的API来平衡竞争对于灵活性和简单性的要求,使得通用模型体系结构立即可用。
- 提供一个用于加速模型体系结构实验的实用程序库。
- Estimators的参数可为传统超参数,特征列,声明性规范等。
INTRODUCTION
深度学习模型涉及训练的大量数据,以及高效运行高效计算的异构和分布式系统的复杂性,阻碍了最先进的方法被广泛应用于生产。
灵活性与简单性和鲁棒性呈紧张(负相关)关系。
- 广义的简单性:假设已知模型架构,实现模型不应该需要根本的新技能。对模型特征进行实验应该是透明的,不应该要求对用于实现模型的框架的内部工作有深入了解。
框架具有鲁棒性:容易编写正确和高质量的软件,但很难写出破坏或性能不佳的软件。
许多深度学习框架将灵活性置于一切之上。他们通过提供相对较低级别的基本操作来实现这种灵活性,并要求用户以常规编程语言编写代码以指定其模型。低级别工作也会导致大量的代码重复,也给软件维护带来的麻烦。
基于DSL的系统更可能适合特定的生产用例,可优化,也具有鲁棒性,但对性的体系结构缺少灵活性。
TensorFlow是一个用于机器学习,尤其是深度学习的开源软件库。它将计算表示为一个广义的数据流图。该图首先被构建,然后与图构建分开执行。
知识点补充
DSL
DSL(domain-specific language),指的是针对特定应用领域而设计使用的计算机语言。与之相对的是GPL(general-purpose language),GPL指的是针对跨应用领域而设计使用的计算机语言。
- 常见的DSL有:HTML,Shell,make语言,ant语言,maven语言,rpm语言,dpkg语言,awk语言,正则表达式,dc计算机语言等,有些DSL语言又被称为微型语言;
- 常见的GPL有:Java,C等