本节书摘来自华章出版社《面向机器智能的TensorFlow实践》一书中的第1章,第1.2节,作者 山姆·亚伯拉罕(Sam Abrahams)丹尼亚尔·哈夫纳(Danijar Hafner)[美] 埃里克·厄威特(Erik Erwitt)阿里尔·斯卡尔皮内里(Ariel Scarpinelli),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2 深度学习
“深度学习”已成为用于描述使用多层神经网络的过程的标准术语,多层神经网络是一类极为灵活的可利用种类繁多的数学方法以及不同数学方法组合的模型。这类模型极为强大,但直到最近几年,人们才有能力卓有成效地利用神经网络,其背后原因主要有两点,一是获取足够数量的数据成为现实;二是得益于通用GPU的快速发展,多层神经网络拥有了超越其他机器学习方法所必需的计算能力。
深度学习的强大之处在于当决定如何最有效地利用数据时,它能够赋予模型更大的灵活性。人们无需盲目猜测应当选择何种输入。一个调校好的深度学习模型可以接收所有的参数,并自动确定输入值的有用高阶组合。这种能力使得更为复杂的决策过程成为可能,并使计算机比以往任何时候都更加智能。借助深度学习,我们可以制造出具有自动驾驶能力的汽车和能够理解人类语音的电话。由于深度学习的出现,机器翻译、人脸识别、预测分析、机器作曲以及无数的人工智能任务都成为可能,或相比以往有了显著改进。
虽然深度学习背后的数学概念几十年前便提出,但致力于创建和训练这些深度模型的编程库是近年来才出现的。遗憾的是,这些库中的大多数都会在灵活性和生产价值之间进行取舍。灵活的库对于研究新的模型架构极有价值,但常常或者运行效率太低,或者无法运用于产品中。另一方面,虽然出现了可托管在分布式硬件上的快速、高效的库,但它们往往专注于特定类型的神经网络,并不适宜研究新的和更好的模型。这就使决策制定者陷于两难境地:是应当用缺乏灵活性的库来从事研究,以避免重新实现代码,还是应当在研究阶段和产品开发阶段分别使用两个完全不同的库?如果选择前一种方案,可能便无法测试不同类型的神经网络模型;如果选择后一种方案,则需要维护可能调用了完全不同的两套API的代码。由此甚至会引发另一个问题—我们是否拥有这样的资源?
解决这个两难问题正是TensorFlow的设计初衷。