脉冲神经网络(Spiking Neural Network, SNN)与知识蒸馏(Knowledge Distillation, KD)
目录
脉冲神经网络(Spiking Neural Network, SNN)
知识蒸馏(Knowledge Distillation, KD)
三种类别
三种变体
脉冲神经网络(Spiking Neural Network, SNN)
收到生物神经系统的启发,设计的,比传统的ANN接近于神经元的运作方式,神经元接收来自其他神经元的脉冲信号(输入)。当接收到的输入信号累积到一定程度(超过某个阈值)时,神经元自身也会“放电”,产生一个脉冲,并将这个脉冲传递给下游连接的神经元。
与ANN的输入是连续的不同,SNN的输入是离散的脉冲信号,脉冲信号的强度频率、发出的时间点以及多个神经元的脉冲之间的时间顺序记录着信息。
计算只在有脉冲事件(输入或输出)发生时被触发。没有脉冲时,神经元可能处于相对“静息”状态。这可以带来潜在的高能效优势,特别适合在专用硬件(神经形态芯片)上运行。
目前脉冲的离散性和时间依赖性使得标准的反向传播难以直接应用,需要开发新的训练算法(如代理梯度法)
知识蒸馏(Knowledge Distillation, KD)
是一种模型压缩和知识迁移技术,其核心思想是让一个小型的学生模型(Student Model) 学习一个大型的教师模型(Teacher Model) 的“知识”,从而使学生模型在保持较小规模的同时,获得接近甚至超越教师模型的性能。
大的teacher model 经过knowledge transfer把学到的知识传递给student model。
三种类别
基于响应 data分别给teacher模型和student模型,各自生成自己的logits然后disillusioned loss
基于特征 data分别给teacher模型和student模型,模型训练时候各自交流
基于关系 相关性学习
三种变体
-
自蒸馏(Self-Distillation)同一模型的不同部分互为师生(例如:深层网络指导浅层网络)。
-
离线 教师模型预先训练固定。
-
在线蒸馏 教师和学生模型同步更新(如相互学习)。