关于Pretrain、Fine-tuning、train

[转载]关于Pretrain、Fine-tuning - 别再闹了 - 博客园

这两种tricks的意思其实就是字面意思,pre-train(预训练)和fine -tuning(微调)

来源:Pre-train 与 Fine-tuning_yjl9122的博客-CSDN博客

Pre-train的model:

就是指之前被训练好的Model, 比如很大很耗时间的model, 你又不想从头training一遍。这时候可以直接download别人训练好的model, 里面保存的都是每一层的parameter配置情况。(Caffe里对于ImageNet的一个model, 我记得是200+M的model大小)。你有了这样的model之后,可以直接拿来做testing, 前提是你的output的类别是一样的。

关于为什么可以直接使用别人的模型:

来源:fine-tuning:利用已有模型训练其他数据集 - 知乎

由于ImageNet数以百万计带标签的训练集数据,使得如CaffeNet之类的预训练的模型具有非常强大的泛化能力,这些预训练的模型的中间层包含非常多一般性的视觉元素,我们只需要对他的后几层进行微调,在应用到我们的数据上,通常就可以得到非常好的结果最重要的是,在目标任务上达到很高performance所需要的数据的量相对很少

如果不一样咋办,但是恰巧你又有一小部分的图片可以留着做fine-tuning, 一般的做法是修改最后一层softmax层的output数量,比如从Imagenet的1000类,降到只有20个类,那么自然最后的InnerProducet层,你需要重新训练,然后再经过Softmax层,再训练的时候,可以把除了最后一层之外的所有层的learning rate设置成为0, 这样在traing过程,他们的parameter 就不会变,而把最后一层的learning rate 调的大一点,让他尽快收敛,也就是Training Error尽快等于0.

这位博主写了几种fine-tuning的方法:

来源:迁移学习和fine-tuning的区别_tianguiyuyu的博客-CSDN博客

举个例子,假设今天老板给你一个新的数据集,让你做一下图片分类,这个数据集是关于Flowers的。问题是,数据集中flower的类别很少,数据集中的数据也不多,你发现从零训练开始训练CNN的效果很差,很容易过拟合。怎么办呢,于是你想到了使用Transfer Learning,用别人已经训练好的Imagenet的模型来做。

做的方法有很多:

  1. 把Alexnet里卷积层最后一层输出的特征拿出来,然后直接用SVM分类。这是Transfer Learning,因为你用到了Alexnet中已经学到了的“知识”

  2. 把Vggnet卷积层最后的输出拿出来,用贝叶斯分类器分类。思想基本同上。

  3. 甚至你可以把Alexnet、Vggnet的输出拿出来进行组合,自己设计一个分类器分类。这个过程中你不仅用了Alexnet的“知识”,也用了Vggnet的“知识”。

  4. 最后,你也可以直接使用fine-tune这种方法,在Alexnet的基础上,重新加上全连接层,再去训练网络。

    综上,Transfer Learning关心的问题是:什么是“知识”以及如何更好地运用之前得到的“知识”。这可以有很多方法和手段。而fine-tune只是其中的一种手段。img

    1. 简单来说
      Transfer learning可以看成是一套完整的体系,是一种处理流程
      目的是为了不抛弃从之前数据里得到的有用信息,也是为了应对新进来的大量数据的缺少标签或者由于数据更新而导致的标签变异情况

      至于说Fine-tune,在深度学习里面,这仅仅是一个处理手段
      之所以现在大量采用fine-tune,是因为有很多人用实验证实了:单纯从自己的训练样本训练的model,效果没有fine-tune的好

      学术界的风气本就如此,一个被大家证实的行之有效的方法会在短时间内大量被采用。
      所以很多人在大数据下面先按照标准参数训练一个模型

    这位答主在这篇中给出了一个关于fine-tuning非常practical的例子:https://zhuanlan.zhihu.com/p/22624331

关于train和fin-tuning的区别

train(自己模型里面的训练代码)和fin-tuning定义上都是对该任务下特定数据集的模型训练,差异性不大,硬要说不同的话,就是对象不同,fin-tuning一般针对预训练模型,train则是针对自己的神经网络。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VITS(Variational Inference for Text-to-Speech)是一种端到端的文本到语音合成方法,它可以将文本转化为自然流畅的语音。VITS-Fast Fine-Tuning是对VITS模型进行快速微调的方法。 在传统的语音合成任务中,需要大量的语音对齐标注数据来训练模型。然而,这个过程非常耗时和昂贵。VITS-Fast Fine-Tuning的目标就是通过少量的标注数据来快速微调已有的VITS模型,以在新的任务上取得更好的性能。 VITS-Fast Fine-Tuning方法的关键在于使用变分推断(variational inference)来构建先验和后验分布。通过这个方法,我们可以使用其他大型语音合成数据集训练好的模型作为先验分布,然后使用少量目标任务的标注数据来估计后验分布。这样一来,我们就能够在新任务上快速微调VITS模型。 具体而言,VITS-Fast Fine-Tuning的过程分为两步。第一步是预训练,它使用大型语音数据集来训练VITS模型,并生成一个先验分布。第二步是微调,它使用目标任务的标注数据来调整VITS模型的参数,以获得更好的性能。由于预训练的先验分布已经包含了一定的知识,微调的过程可以更快速和高效。 总之,VITS-Fast Fine-Tuning是一种用于快速微调VITS模型的方法。它利用变分推断和预训练的先验分布,通过少量目标任务的标注数据来优化模型性能。这个方法可以加快语音合成模型的训练过程,降低训练的时间和成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值