1. 为什么⽆监督预训练可以帮助深度学习?
无监督预训练(Unsupervised Pretraining)是深度学习中的一种重要技术,它可以帮助深度学习在各种任务中取得更好的性能。以下是一些无监督预训练如何有助于深度学习的主要原因:
-
数据效用:大多数深度学习算法需要大量标记数据来进行监督学习,但获得这些标记数据通常非常昂贵和耗时。无监督预训练允许模型在未标记的数据上进行预训练,从而提高了数据的效用。模型可以在更广泛和丰富的数据上学习,这有助于更好地泛化到新任务。
-
特征学习:无监督预训练有助于深度神经网络学习更有意义的特征表示。在无监督阶段,模型通过学习数据的内在结构和统计规律来提取特征,这些特征对于不同的任务可能都具有一定的普适性。这使得神经网络更容易适应不同的任务,因为它们已经学到了通用特征。
-
避免过拟合:通过无监督预训练,神经网络在大规模未标记数据上进行学习,从而有助于防止过拟合。这提供了一种正则化机制,使模型更具鲁棒性,可以更好地泛化到有限的标记数据上。
-
初始化:无监督预训练可以作为有监督任务的初始化阶段。在这种情况下,经过无监督预训练的模型的权重和参数可以用作有监督任务的起点,从而有助于更快地收敛到一个好的解决方案。
-
多任务学习:通过在无监督任务上进行预训练,模型可以学习更丰富的知识,并且能够应对多个任务。这种多任务学习可以在许多现实世界的应用中提高模型的性能。
总之,无监督预训练在深度学习中起到了重要作用,可以帮助模型更好地利用数据、学习有用的特征表示,并在各种任务中取得更好的性能。这一方法已经在自然语言处理、计算机视觉和其他领域取得了显著的成功。
2. 什么是模型微调fine tuning
用别人的参数、修改后的网络和自己的数据进行训练,使得参数适应自己的数据,这样⼀个过程,通常称之为微调(fine tuning).
模型的微调举例说明:我们知道,CNN 在图像识别这⼀领域取得了巨⼤的进步。如果想将 CNN 应⽤到我们⾃⼰的数据集上,这时通常就会⾯临⼀个问题:通常我们的dataset 都不会特别⼤,⼀般不会超过 1 万张,甚⾄更少,每⼀类图⽚只有⼏⼗或者⼗⼏张。这时候,直接应⽤这些数据训练⼀个⽹络的想法就不可⾏了,因为深度学习成功的⼀个关键性因素就是⼤量带标签数据组成的训练集。如果只利⽤⼿头上这点数据,即使我们利⽤⾮常好的⽹络结构,也达不到很⾼的 performance。这时候,fine-tuning 的思想就可以很好解决我们的问题:我们通过对 ImageNet 上训练出来的模型(如CaffeNet,VGGNet,ResNet)
进⾏微调,然后应⽤到我们⾃⼰的数据集上。
3.微调时候网络参数是否更新?
会更新
- finetune 的过程相当于继续训练,跟直接训练的区别是初始化的时候。将原有模型的参数作为本次训练的初始化。
- 直接训练是按照⽹络定义指定的⽅式初始化。
- finetune是⽤你已经有的参数⽂件来初始化。
4. 微调模型的三种状态
1.状态⼀:只预测,不训练。特点:相对快、简单,针对那些已经训练好,现在要实际对未知数据进⾏标注的项⽬,⾮常⾼效;
2. 状态⼆:训练,但只训练最后分类层。特点:fine-tuning的模型最终的分类以及符合要求,现在只是在他们的基础上进⾏类别降维。
3. 状态三:完全训练,分类层+之前卷积层都训练
特点:跟状态⼆的差异很⼩,当然状态三⽐较耗时和需要训练GPU资源,不过⾮常适合fine-tuning到⾃⼰想要的模型⾥⾯,预测精度相比状态⼆也提⾼不少。