0%

实用ML_9.迁移学习

迁移学习

由于深度网络的训练对数据要求较大,且训练成本较高,对在其他任务训练好的深度模型使用到相关任务的需求较大,主要方式有

  1. 使用深度模型做特征抽取(bert,word2vec等),输入到不同模型,解决不同任务
  2. 在方便训练的相近的任务(可能是 训练数据充足等)上训练模型,在目标任务上重用训练好的模型
  3. 微调预训练模型

Fine-tuning(从CV方向进行讲解)

CV领域存在很多良好的数据集(imagenet),如何将在这些大数据集上训练好的模型(学到的知识)迁移到自己的任务上来?这就是Fine-tuning要做的任务。

Pre-trained Model

如何进行Fine-Tuning

模型构建

  • 直接使用预训练模型的所有参数和架构
  • 只随机初始化最后一个输出层的参数

模型学习

  • 使用小学习率寻找解(预训练模型已在解附近,小步探索)

Freeze Bottom Layers

深度神经网络不同层在具体任务中捕捉不同层级的特征信息,更接近输出层的网络层更加倾向于捕捉任务相关特征(task specific),底层网络更加倾向于捕捉通用的、一般的特征(图片中的曲线、边等)

针对预训练模型该特性以及要Fine-tuning目标任务,对底层和高层网络采用不同训练手段

  • 底层冻结或者低学习率
  • 高层正常训练

应用

Fine-tuning in NLP

NLP领域面临的问题与CV不同,NLP没有大规模良好标记的数据集,只有大量未标记的文本数据(维基百科、电子书、爬取的数据等)

只能使用自监督学习学习的方式进行模型预训练

  • 生成伪标签,然后在伪标签上进行监督学习
  • 主要的两种类型
    1. 语言模型:给定序列预测下一个词
    2. Masked language model:给定序列,预测序列中的某一个词

常见预训练模型

  1. 词嵌入模型:获得包含语义信息的词向量
  2. 基于transformer的预训练模型
    • BERT:encoder 适用于文本分类等的NLU任务
    • GPT: decoder 适用于摘要、总结等NLG任务
    • T5: encoder-decoder 适用于摘要、总结等NLG任务

bert微调小技巧

  • 在将bert应用到自己任务时,可以将bert接近输出层的几层权重默认初始化

  • Hugging Face 获取预训练模型

应用

总结