我想知道优点和缺点。另外,转移学习的优点和缺点是什么?
从头开始训练深度学习模型有什么优点或缺点?
(建议和编辑将不胜感激)
让我们讨论从头开始训练深度学习模型的优势:
- 从头开始构建和训练 NN 在研究领域非常有用。
- 您将对您的模型有最基本的了解,并且可以根据需要在需要时对其进行修改。
- 它在大小和训练时间方面会更有效(因为与为不止一个目的训练的任何预训练模型相比,层数可能更少)。最好的例子是 VGG16。在 VGG16 的情况下,它训练了 1000 种不同的类别,即使我们只想要 2 个类别,我们也必须训练整个模型,因为如果不深入了解 VGG16 的架构,我们就无法更改层。
- 对于任何初学者(比如我)来说,从头开始构建并使用预训练模型都是有益的。
- 不需要精通深度学习即可使用预训练模型。
缺点:
- 许多预训练模型的训练目的较少或模式不同,因此在某些情况下可能不适合。
- 从头开始训练大型模型需要大量资源(时间和计算能力)。
从头开始训练深度学习模型和迁移学习的优势是主观的。这在很大程度上取决于您要解决的问题、时间限制、数据的可用性和您拥有的计算资源。
让我们考虑一个场景,您想为基于人脸图像的情感分类等任务训练一个深度学习模型。你可以
使用预训练模型:您可以使用预训练模型(例如,Resnet-50 或 VGG-16)作为获取图像特征的主干,并在其之上训练分类器(例如两层神经网络)。在这里,你保持从预训练模型中获得的主干部分固定,只允许分类器的参数改变。当您想要快速训练模型或没有太多计算资源时,这种方法是理想的。在这种情况下,性能可能不是最好的,因为预训练的主干可能会受到域适应的影响。
从头开始训练模型:您可以针对您的问题从头开始训练深度学习模型(例如 Resnet-50 或 VGG-16)。这意味着您使用新参数初始化模型,即不是从预训练模型获得的。这需要更多的计算资源(或时间)来训练,但会从训练数据中学习所有参数。如果训练数据足够多,则在使用该方法进行训练时,与方法 1 中的模型等效的模型应该会表现得更好。
传输和微调:您可以使用预训练参数初始化模型(再说一次 Resnet-50 或 VGG-16),并对数据集进行微调。对于相同的模型,这种方法比方法 1 需要更多的计算资源,并且需要与方法 2 相当的计算资源。如果源域(模型预训练的任务)与目标域(您要训练模型的任务)相关,则迁移学习是有利的。例如,Imagenet上的分类任务与人脸图像的情感分类有关。如果您想要获得最佳性能,这是最常用的方法。
在此处了解有关迁移学习的更多信息。
TL;博士:
如果您有足够的计算资源,请从相关任务中转移一个预训练模型并对其进行微调。
如果您的计算资源或时间不足,请使用预训练模型作为主干并针对您的任务调整头部。
如果您找不到用于迁移学习的良好源域,或者您不想预训练模型,或者训练数据足够大,那么您可以在不使用预训练参数的情况下从头开始训练模型。