在普通笔记本电脑上训练深度网络

数据挖掘 机器学习 深度学习
2021-09-22 08:23:26

有兴趣在设计和训练深度神经网络方面获得一些“动手”经验的业余爱好者,是否有可能为此目的使用普通笔记本电脑(没有 GPU),或者在没有强大的计算机/集群/GPU 的合理时间?

更具体地说,笔记本电脑的 CPU 是 Intel Core i7 5500U 第 5 代,具有 8GB RAM。

现在,由于我没有具体说明我想解决什么问题,我将以不同的方式提出我的问题:您建议我尝试使用我的硬件实现哪些深层架构,以便实现以下目标:获得有关如何以及何时使用过去 10 年引入的技术的直觉和知识,这些技术对于深度网络的兴起至关重要(例如对初始化、辍学、rmsprop 的理解,仅举几例)。

我阅读了这些技术,但当然如果不亲自尝试它们,我将不确切知道如何以及何时以有效的方式实施这些技术。另一方面,我担心如果我尝试使用不够强大的PC,那么我自己的学习速度会很慢,说我获得了更好的理解是没有意义的。如果我尝试在浅网络上使用这些技术,也许我不会建立正确的直觉。

我想象(我的)学习的过程如下:我实现了一个神经网络,让它练习长达几个小时,看看我有什么,然后重复这个过程。如果我每天这样做一两次,如果在 6 个月后我将获得与该领域的专业人士应该知道的相当的实用知识,我会很高兴。

2个回答

是的,笔记本电脑可以很好地熟悉一些深度学习项目:

您可以选择一个较小的深度学习问题并使用笔记本电脑获得一些易于理解的见解,因此请尝试一下。

Theano项目有一组关于数字识别的教程,我在笔记本电脑上玩过并模拟了这些教程。

Tensorflow有一套教程

我让一些较长的跑步一夜之间完成,但没有什么是棘手的。

您也可以考虑使用AWS或其他云服务之一。只需 20-30 美元,您就可以在某种弹性计算节点上的云中执行一些更大的计算。第二个优势是您还可以在简历中将 AWS 或其他云服务列为技能 :-)

希望这可以帮助!

[...] 如果没有强大的计算机/集群/GPU,在合理的时间内获得好的结果是没有希望的吗?

这并非没有希望,毫无疑问,您可以使用您提到的计算机规范获得大量与深度学习相关的经验。它将归结为您的神经网络架构(层数和神经元数)、数据集的大小(输入数)、数据的性质(固有模式)和实现。尽管你可能需要在这些方面限制自己,但它不会阻止你获得你所指的直觉和知识。您将很容易遇到过拟合、正则化的影响、预训练的影响、不同神经元类型和架构的影响等问题。

我会给你一个更具体的例子。我在 Julia 中实现了几个深度学习算法(全部基于 CPU)并在 MacBook Air 上运行它们(类似于你的规范)。由于神经元和层是由实际的数据结构而不是单个巨型矩阵表示的,因此代码并没有得到很好的优化。因此,进一步的性能改进是可能的。

对于 56x300x300x300x1(56 个输入和大约 200k 连接)和 250 个训练示例的全连接网络,我能够在一天内获得 5k 次反向传播。通常这足以过度拟合数据或完全拟合训练集(但这将取决于您的数据集和其他上述因素)。如果数据具有很强的模式和少于 10k 的示例,您通常不需要那么多迭代。几百次预训练和细化迭代导致良好结果的情况并不少见。所以,是的,你的笔记本电脑已经足够好了,你可以运行需要几个小时的有意义的实验。

[...] 您会建议我尝试使用我的硬件实现哪些深度架构,以实现以下目标: 获得关于如何以及何时使用过去 10 年引入的技术的直觉和知识,这些技术是必不可少的到深网的起义。

我建议选择具有强模式的较小数据集。而且我建议研究诸如自动编码器之类的预训练技术,因为它们通常需要更少的迭代来获得更好的结果。从反向传播开始并从那里构建,尝试不同的架构、神经元类型、使用正则化、自动编码器、辍学......

还要确保为您的实验选择一种高性能的语言或库。