实用机器学习笔记第八章-迁移学习

1. 迁移学习

1.1 概念

  • 在一个人任务上学习一个模型,用于解决一个相关任务
  • 常用于深度学习,原因是数据难获取、训练模型很贵

1.2 方法

  • 训练好一个模型,做成特征抽取模块(WordVec、ResNet-50 feature、I3D feature)
  • 在一个相关的任务上训练一个模型,然后在另一任务上直接使用它
  • 训练一个模型,对模型做微调(本章关注的重点)

1.3 相关领域

  • 半监督学习
  • zero-shot/few-shot learning
  • 多任务学习

2. 微调(Fine-tuning)在CV(计算机视觉)中的应用

微调Fine—Tuning就是把预训练好的模型用的我的新任务中上

2.1 迁移知识 Transferring Knowledge

  • 计算机视觉(CV)有大规模的标注好的数据集
    • 特别是图片分类(容易标记)
  • 从别人已经标好的数据集上,学习(迁移Transfer)一些知识(Knowledge)到自己的CV应用上面(自己的应用的数据要比数据集小10-100X)

2.2 迁移知识手段-预训练模型

2.2.1 把神经网络分成两部分:

  • 编码器(特征提取器):把原始像素转换成线性可分的特征(语义表示特征)
  • 解码器(线性分类器):用于做决策

实用机器学习笔记第八章-迁移学习_第1张图片

2.2.2 预训练模型

在比较大和通用的的数据集上训练好一个神经网络

  • 编码器可能有一定的泛化能力的
    • 在不同的数据集上能泛化(医学/卫星图片)
    • 在不同的任务上能泛化(目标检测、分割)

2.3 微调(Fine-Tuning)技巧

在新任务上构建一个新的模型,模型架构和预训练模型的架构要一样

2.3.1 初始化新模型

  • 新模型的特征提取器的权重,直接用预训练模型的权重
  • 输出层权重用随机初始化

实用机器学习笔记第八章-迁移学习_第2张图片

2.3.2 用较小的学习率、训练较短的时间

  • 目的:为了限制搜索空间,不要走太远

2.4 固定住底层那些层

2.4.1 神经网络学习的是层级化的特征

  • 底层的特征通常更通用、泛化(边、块)
  • 高层特征通常更具体、更与语义相关(人、东西)

2.4.1 在微调的时候固定住下面的几个层不动(学习率=0)

  • 需要固定住几层,是需要学习的参数

2.5 找到预训练模型

  • Tensorflow Hub
  • TIMM

2.6 微调的应用

  • 在一个预训练好的模型上微调,然后用于CV
    • 检测/分割(图片像但是任务不一样)
    • 医学/卫星图片(任务相同,图片不一样)
  • 微调加速了收敛
  • 不一定会提升精度,但是不会变差
  • 所以通常尽量使用微调

3. 微调在NLP中的应用(待更新)

你可能感兴趣的:(迁移学习,机器学习,神经网络)