《Deep Learning with Python》一书为Keras框架作者弗朗索瓦·肖莱所撰写,其内容深入浅出,并带有几十个示例以帮助读者理解深度学习的特点,及相关的工程技巧,称得上是一本深度学习入门的优质读物。
第1章 什么是深度学习
1、深度学习发展得如此迅速,主要原因在于它在很多问题上都表现出更好的性能,此外深度学习还让解决问题变得更加简单,因为它将特征工程完全自动化,而这曾经是机器学习工作流程中最关键的一步。
2、深度学习将普通机器学习复杂的多阶段流程替换为一个简单的、端到端的深度学习模型。
如果问题的关键在于有多个连续表示层,那么能否重复应用浅层方法,以实现和深度学习类似的效果?
——在实践中,如果连续应用浅层学习方法,其收益会随着层数增加迅速降低,因为三层模型中最优的第一表示层并不是单层或双层模型中最优的第一表示层。深度学习的变革性在于,模型可以在同一时间共同学习所有表示层,而不是依次连续学习(这被称为贪婪学习)。通过共同的特征学习,一旦模型修改某个内部特征,所有依赖于该特征的其他特征都会相应地自动调节适应,无须人为干预。一切都由单一反馈信号来监督:模型中的每一处变化都是为了最终目标服务。这种方法比贪婪地叠加浅层模型更加强大,因为它可以通过将复杂、抽象的表示拆解为很多个中间空间(层)来学习这些表示,每个中间空间仅仅是前一个空间的简单变换。
3、在2016 年和2017 年,Kaggle 上主要有两大方法:梯度提升机和深度学习。具体而言,梯度提升机用于处理结构化数据的问题,而深度学习则用于图像分类等感知问题。
第2章 神经网络的数学基础
1、0D张量:即为标量;1D张量:即向量;2D张量:即矩阵
2、张量的关键属性:轴的个数(张量的ndim)、形状、数据类型(dtype)
3、数据批量:深度学习模型不会同时处理整个数据集,而是将数据拆分成小批量。对于批量张量,第一个轴(0 轴)叫作批量轴(batch axis)或批量维度(batch dimension)。在使用Keras 和其他深度学习库时,会经常遇到这个术语。
4、现实世界中的数据张量:
3章 神经网络入门
1、Keras 支持任意网络架构,包括多输入或多输出模型、层共享、模型共享等。也就是说, Keras能够构建任意深度学习模型,无论是生成式对抗网络还是神经图灵机。
2、Keras 是一个模型级(model-level)的库,为开发深度学习模型提供了高层次的构建模块。它依赖于一个专门的、高度优化的张量库来完成这些运算,这个张量库就是 Keras 的后端引擎(backend engine)。 Keras 没有选择单个张量库并将 Keras 实现与这个库绑定,而是以模块化的方式处理这个问题(见图 深度学习的软件栈和硬件栈)。因此,几个不同的后端引擎都可以无缝嵌入到 Keras 中。目前, Keras 有三个后端实现: TensorFlow 后端、Theano 后端和微软认知工具包(CNTK, Microsoft cognitive toolkit)后端。
3、通过 TensorFlow(或 Theano、 CNTK), Keras 可以在 CPU 和 GPU 上无缝运行。在 CPU 上运行时, TensorFlow 本身封装了一个低层次的张量运算库,叫作 Eigen;在 GPU 上运行时,TensorFlow封装了一个高度优化的深度学习运算库,叫作 NVIDIA CUDA 深度神经网络库(cuDNN)。
未完待续。。。