机器学习——压缩网络作业

文章目录

任务描述

  • 网络压缩:使用小模型模拟大模型的预测/准确性。
  • 在这个任务中,需要训练一个非常小的模型来完成HW3,即在food-11数据集上进行分类。

介绍

有许多种网络/模型压缩的类型,这里介绍两种:

  • 知识蒸馏:让小模型通过观察大模型学习时的行为(预测)来学习得更好。(字面上:让小模型从大模型中提取知识)
  • 设计架构:使用更少的参数来表示原始层。(例如,普通卷积 - 深度卷积和逐点卷积)
  • 如果对网络剪枝感兴趣,可以查看ML-Spring2020-HW7中的Colab教程。

知识蒸馏

  • 在训练小模型时,添加大模型的一些信息(例如预测的概率分布)以帮助小模型更好地学习
  • 提供了一个训练良好的网络,以帮助您进行知识蒸馏(准确率约为0.855)
  • 请注意,在写作业时,只能使用我们提供的预训练模型

网络设计

  • 深度卷积和逐点卷积层(MobileNet中提出)
    • 可以将原始卷积视为密集/线性层,但每行/每个权重是一个滤波器,原始乘法变成了卷积操作。(输入权重 - 输入滤波器)
    • 深度卷积depthwise:让每个通道首先通过各自的滤波器,然后让每个像素通过共享权重的密集/线性层。
    • 逐点卷积pointwise:是一个1x1卷积。
  • 强烈建议使用类似的技术来设计您的模型。 ( N M k k / N k k + N M ) (NMkk / Nkk+NM) (NMkk/Nkk+NM)
    参数量变少很多

Baseline

  • 简单基准(2分,准确率≥0.59856,2小时)
    • 只需运行代码并提交答案。
  • 中等基准(2分,准确率≥0.65412,2小时)
    • 完成知识蒸馏中的损失并控制 alpha 和 T。
  • 强基准(1.5分,准确率≥0.72819,4小时)
    • 通过深度和逐点卷积层修改模型架构。
      • 可以从 MobileNet、ShuffleNet、DenseNet、SqueezeNet、GhostNet 等获取优秀的想法。
    • 在 HW3 - CNN 中学到的任何技术和方法。例如,加强数据增强,修改半监督学习等。
  • Boss Baseline (0.5 pts, acc ≥ 0.81003)
    • 让教师网络更加强大。
      • 如果教师网络太强大,可以考虑TAKD技术。
    • 实施其他高级知识蒸馏。
      • 例如,DML,关系KD ...
    • 如果模型参数数量略大于约束值(100,000),可以使用网络剪枝。
    • 如果对之前的技术感到困惑,可以查看去年TA的课程。(幻灯片,视频)

实践









  • group convolution: 类似于Alexnet,分成一组一组的,alexnet里面是一半一半
  • depthwise,需要将groups设置成in_chs







  • 语料要干净
  • 由于有一个学习过的大模型,让它教导其他小模型。在实现中,让训练目标为大模型的预测,而不是地面真相。

为什么有效?

  • 如果数据不干净,那么大模型的预测可能会忽略带有错误标记数据的噪声。
  • 标签可能具有某些关系。例如,数字8更类似于6、9、0,而不是1、7。
  • hard loss + soft loss

    教师模型设置
  • 提供一个经过良好训练的教师模型,以帮助进行知识蒸馏到学生模型。请注意,如果想更改转换函数,应该考虑是否适合这个经过良好训练的教师模型。
  • 如果无法成功下载,请更改链接(在此Colab教程的底部提供了备用链接)。

在未标记的数据中生成伪标签是一种半监督学习的技术,它可以帮助利用未标记数据来提高模型的性能。生成伪标签的一般步骤如下:

  1. 使用已训练的模型进行推理:首先,使用已经在标记数据上训练好的模型对未标记数据进行推理,得出模型对这些数据的预测结果。

  2. 选择置信度阈值:为了生成可靠的伪标签,需要设置一个置信度阈值。只有当模型对样本的预测置信度高于这个阈值时,才会为该样本生成伪标签。

  3. 生成伪标签:对于那些置信度高于阈值的样本,将模型的预测结果作为它们的伪标签。

  4. 结合标记数据和伪标签数据:将生成的伪标签与已有的标记数据结合起来,形成一个扩充的训练集。

  5. 重新训练模型:使用包含标记数据和伪标签数据的扩充训练集重新训练模型,以提高模型性能和泛化能力。

需要注意的是,在生成伪标签时要谨慎选择置信度阈值,以确保伪标签的质量和对模型性能的提升有益处。








相关推荐
蓝天星空2 分钟前
Python调用open ai接口
人工智能·python
睡觉狂魔er3 分钟前
自动驾驶控制与规划——Project 3: LQR车辆横向控制
人工智能·机器学习·自动驾驶
scan72426 分钟前
LILAC采样算法
人工智能·算法·机器学习
leaf_leaves_leaf29 分钟前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
夜雨飘零134 分钟前
基于Pytorch实现的说话人日志(说话人分离)
人工智能·pytorch·python·声纹识别·说话人分离·说话人日志
菌菌的快乐生活1 小时前
理解支持向量机
算法·机器学习·支持向量机
爱喝热水的呀哈喽1 小时前
《机器学习》支持向量机
人工智能·决策树·机器学习
大山同学1 小时前
第三章线性判别函数(二)
线性代数·算法·机器学习
minstbe1 小时前
AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python
人工智能·python·支持向量机
月眠老师1 小时前
AI在生活各处的利与弊
人工智能