0
点赞
收藏
分享

微信扫一扫

迁移学习笔记

书坊尚 2022-01-04 阅读 164
迁移学习

迁移学习

动机

  • 利用在一项任务上训练的模型执行相关任务

  • 由于DNN需要大量数据且训练成本高,因此在深度学习中很受欢迎

方法

  • 特征提取。

  • 针对相关任务培训模型并重新使用它

  • 从相关模型进行微调

相关性

  • 半监督学习

  • 在极端情况下,zero-shot/few-shot学习

  • 多任务学习,其中每个任务都有一些标记数据可用

迁移知识

  • 在普通大的数据集训练好后,把模型再迁移到自己的数据集上

预训练模型

将神经网络划分为

  • 特征提取器(编码器),将原始像素映射到线性可分特征
  • 线性分类器(解码器),进行决策

预训练模型

  • 在大规模通用数据集上训练的神经网络

  • 特征提取器可以很好的推广到其他数据集或者是任务

微调技术

  • 初始化新模型,使用预训练模型的特征提取器参数初始化特征提取器
  • 随机初始化输出层
  • 在局部最小值附近开始参数优化
  • 用一个小的学习率模型训练几个epochs,规范化搜索空间

固定底层

  • 神经网络学习到层级之间的特征
  • 低级的特征是普遍存在的,例如曲线、边、斑点
  • 高级特征更多特定于任务和数据集,例如分类标签
  • 在微调中,固定底层,从头开始训练顶层,这样保留低层的通用特性完整

预训练模型网址

  • TensorFlow 模型:https://tfhub.dev/

  • pytorch模型:https://github.com/rwightman/pytorch-image-models

import timm
from torch import nn

model = timm.create_model('resnet18', pretrained=True) 
model.fc = nn.Linear(model.fc.in_features, n_classes)
# Train model as a normal training job

应用

微调预训练模型被广泛应用于各种CV应用中

  • 检测、分割(相似的图像但不同的目标)
  • 医学、卫星图像(相同的任务,但不同的图像)

微调加速了收敛速度,可以获得相似的精度

总结

  • 大规模数据集上的训练前模型(通常是图像分类)
  • 使用针对下游任务的预训练模型来初始化权重
  • 微调可以加速收敛,可能提高精度
举报

相关推荐

0 条评论