知识蒸馏 Knowledge distillation(学习笔记)

知识蒸馏概述

蒸馏:把大的 复杂的东西变成小的纯净的东西

在知识蒸馏中 大的模型为 教师模型(teacher)臃肿 集成 牛逼 复杂的

                       小的       为 学生模型(student)小的精干的 轻量化

这里有一个知识的迁移

因为落地实现的终端边缘设备的算计十分有限

所以急需 将一个大的优秀的模型 压缩成一个小巧精干的轻量化 模型

知识蒸馏 Knowledge distillation(学习笔记)_第1张图片

这张图它背后的含义是预训练的大模型的增长速率时很恐怖的 比摩尔定律还大

而我们小设备的算力提升是很受限的,所以这个 知识蒸馏技术 就显得尤为重要

然而目前而言 要想调用大模型的功能 

就把大模型放在云端,通过api来调用(就会面临网络延迟网络的一系列问题)

知识蒸馏 Knowledge distillation(学习笔记)_第2张图片

  

 轻量化技术

1.压缩已经训练好的模型

知识蒸馏 权值量化 剪枝(权重剪枝 通道剪枝(结构化剪枝 非结构化剪枝)) 注意力迁移

2.直接设计训练轻量化网络

3加速卷积运算 (数值运算)

4.硬件部署

NIPS 2014 

Hinton (AI 教父)Jeff Dean(谷歌天才程序员)

如何让教师网络把知识教给学生网络

hard targets      soft targets

马 1                      马 0.7

驴 0                      驴 0.25

汽车 0                 汽车 0.05

hard targets 用来训练教师网络,缺点是不能反映出马和驴的相似之处

而soft targets课传递更多的信息供学生网络学习

 这里的hard targets 更像是死板的教科书

soft targets 就像是老师 能教授更多知识

所以 soft targets 用来训练学生网络

知识蒸馏 Knowledge distillation(学习笔记)_第3张图片

 

而知识蒸馏需要设定一个蒸馏温度 T 

当T= 1 的时候,就是学习普通的softmax 

但是softmax 的信息还不够丰富 曲线不够顺滑 

所以这里引入的蒸馏温度是想让每一个类别的相对大小更加明显

当然这里如果太极端的话 T取得很大 就会导致两极分化非常不明显 甚至有可能就是一条平行于x 轴的直线

这里学生模型想要学习的是没给类别的相对信息

知识蒸馏 Knowledge distillation(学习笔记)_第4张图片

 

知识蒸馏的好处

1.soft label可以防止过拟合

2.泛化性能very good

3.零样本学习(这里可以提及一嘴:没有标签的数据直接放进教师模型来获取标签。之后直接让学生模型去学习soft loss即可妈祖无监督训练需求)

4.学生模型是一个轻量化的网络

知识蒸馏的应用场景

1.模型压缩

2.优化训练 防止过拟合(潜在的正则化)

3.无限大的无监督数据集的数据挖掘

4.少样本 0样本的学习

这里给出迁移学习 知识蒸馏区别

迁移学习只是 domain领域知识的泛华  从猫狗分类到 x 光医学的分类

知识蒸馏 是模型到 模型的 从一个复杂 臃肿的 大模型 到一个小巧精干的 小模型完成轻量化的蜕变

知识蒸馏背后的机理

知识蒸馏 Knowledge distillation(学习笔记)_第5张图片

 

label smoothing 和 soft targets的区别

知识蒸馏 Knowledge distillation(学习笔记)_第6张图片

 

知识蒸馏的研究方向

1.教学相长 T-S S-T

2.助教 多个老师 多个学生 

3.知识的表示 (中间的featuremap(feature based) 或者是最原始的 softmax(response based) )

4.多模态(视觉语音文本)

你可能感兴趣的:(深度学习,人工智能,学习,神经网络)