如果您对使用Python进行深度学习一无所知
2022年2月7日整理发布:自学深度学习是一个漫长而艰巨的过程。你需要有很强的线性代数和微积分背景,良好的 Python 编程技能,以及对数据科学、机器学习和数据工程的扎实掌握。即使这样,也可能需要一年多的学习和实践,才能开始将深度学习应用于现实世界的问题,并可能找到一份深度学习工程师的工作。
然而,知道从哪里开始有助于缓和学习曲线。如果我必须重新学习 Python 的深度学习,我会从Andrew Trask 编写的Grokking Deep Learning开始。大多数关于深度学习的书籍都需要机器学习概念和算法的基本知识。Trask 的书教你深度学习的基础知识,除了基本的数学和编程技能外,没有任何先决条件。
这本书不会让你成为一个深度学习向导(它也没有做出这样的声明),但它会让你走上一条更容易从更高级的书籍和课程中学习的道路。
用 Python 构建人工神经元
大多数深度学习书籍都基于几个流行的 Python 库之一,例如 TensorFlow、PyTorch 或 Keras。相比之下,Grokking 深度学习通过逐行从头开始构建所有内容来教您深度学习。
您从开发单个人工神经元开始,这是深度学习的最基本元素。Trask 将带您了解线性变换的基础知识,这是由人工神经元完成的主要计算。然后,您可以在纯 Python 代码中实现人工神经元,而无需使用任何特殊库。
这不是进行深度学习的最有效方法,因为 Python 有许多库可以利用计算机的显卡和 CPU 的并行处理能力来加速计算。但是用普通的 Python 编写所有东西对于学习深度学习的来龙去脉非常有用。
在Grokking Deep Learning中,您的第一个人工神经元将采用单个输入,将其乘以随机权重,然后进行预测。然后,您将测量预测误差并应用梯度下降将神经元的权重调整到正确的方向。使用单个神经元、单个输入和单个输出,理解和实现这个概念变得非常容易。您将逐渐增加模型的复杂性,使用多个输入维度、预测多个输出、应用批量学习、调整学习率等等。
您将通过逐渐添加和更改您在前几章中编写的 Python 代码位来实现每个新概念,逐渐创建用于进行预测、计算错误、应用更正等的函数列表。当您从标量计算转向向量计算时,您将从普通的 Python 操作转向 Numpy,这是一个特别擅长并行计算并且在机器学习和深度学习社区中非常流行的库。
使用 Python 的深度神经网络
掌握了人工神经元的基本构建块,您将开始创建深度神经网络,这基本上是当您将几层人工神经元堆叠在一起时得到的。
在创建深度神经网络时,您将了解激活函数并应用它们来打破堆叠层的线性并创建分类输出。同样,您将在 Numpy 函数的帮助下自己实现一切。您还将学习计算梯度并通过层传播错误,以在不同的神经元之间传播校正。
随着您对深度学习的基础知识越来越熟悉,您将学习和实施更高级的概念。本书介绍了一些流行的正则化技术,例如提前停止和辍学。您还将制作自己的卷积神经网络(CNN) 和递归神经网络(RNN)。
在本书的最后,你将把所有东西打包到一个完整的 Python 深度学习库中,创建你自己的层级、激活函数和神经网络架构的类层次结构(这部分你需要面向对象的编程技能)。如果您已经使用过 Keras 和 PyTorch 等其他 Python 库,您会发现最终的架构非常熟悉。如果你还没有,那么将来你会更容易适应这些库。
在整本书中,Trask 提醒您熟能生巧;他鼓励你用心编写自己的神经网络,而不用复制粘贴任何东西。
代码库有点麻烦
并非关于Grokking 深度学习的一切都是完美的。在上一篇文章中,我说过定义一本好书的主要内容之一是代码存储库。在这方面,特拉斯克本可以做得更好。
Grokking Deep Learning的GitHub 存储库中包含丰富的 Jupyter Notebook 文件,适用于每一章。Jupyter Notebook 是学习 Python 机器学习和深度学习的绝佳工具。但是,Jupyter 的优势在于将代码分解为几个可以独立执行和测试的小单元。Grokking Deep Learning的一些笔记本由非常大的单元组成,其中包含大量未注释的代码。
这在后面的章节中变得尤其成问题,代码变得更长更复杂,在笔记本中找到自己的方式变得非常乏味。原则上,教育材料的代码应分解为小单元,并在关键领域包含注释。
此外,Trask 使用 Python 2.7 编写了代码。虽然他确保代码在 Python 3 中也能顺利运行,但它包含了在 Python 开发人员中已被弃用的旧编码技术(例如使用“ for i in range(len(array)) ”范式来迭代数组) )。
更广泛的人工智能图景
Trask 在编写一本书方面做得非常出色,这本书既可以服务于新手,也可以服务于想要填补知识空白的 Python 深度学习开发人员。
但正如 Tywin Lannister 所说(每个工程师都会同意),“每个任务都有一个工具,每个工具都有一个任务。” 深度学习并不是可以解决所有 AI 问题的魔杖。事实上,对于许多问题,更简单的机器学习算法(如线性回归和决策树)的性能与深度学习一样好,而对于其他问题,基于规则的技术(如正则表达式和几个 if-else 子句)的性能将优于两者。
关键是,你需要一整套工具和技术来解决人工智能问题。希望Grokking 深度学习能够帮助您开始获取这些工具。
你从这里去哪里?我当然会建议阅读一本关于 Python 深度学习的深入书籍,例如Deep Learning With PyTorch或Deep Learning With Python。您还应该加深对其他机器学习算法和技术的了解。我最喜欢的两本书是Hands-on Machine Learning和Python Machine Learning。
您还可以在r/MachineLearning和r/deeplearning 子版块、AI 和深度学习 Facebook 群组等机器学习和深度学习论坛上浏览大量知识,或者在 Twitter 上关注 AI 研究人员。
人工智能宇宙广阔且迅速扩展,有很多东西要学。如果这是您关于深度学习的第一本书,那么这就是一段奇妙旅程的开始。