[智能算法]可微的神经网络搜索算法-FBNet

一、概述

相较于基于强化学习的NAS,可微NAS能直接使用梯度下降更新模型结构超参数,其中较为有名的算法就是DARTS,其具体做法如下。

首先,用户需要定义一些**候选模块,**这些模块内部结构可以互不相同(如设置不同种类和数量的卷积,使用不同种类的连接结构等);其次,用户也需要指定神经网络的层数,每一层由候选模块的其中之一构成。

由于搜索空间 =(其中为候选模块种类,为预先指定的神经网络层数)巨大,为了从庞大的搜索空间中找到合适的结构,需要引入superNet

二、SuperNet

以下内容均基于论文:FBNethttps://openaccess.thecvf.com/content_CVPR_2019/papers/Wu_FBNet_Hardware-Aware_Efficient_ConvNet_Design_via_Differentiable_Neural_Architecture_Search_CVPR_2019_paper.pdf

2.1模型结构

这里以SuperNet 中的某一层为例,设置候选模块一共9种,这层superNet由9种不同的模块并联而成。输入向量在候选模块处理后分别得到9个向量,这个处理过程记作:,其中为模块中的权重。将这些向量进行加权求和,这些权重记作,所有之和为1(由softmax计算得到),权重就是模型要学习的神经网络结构超参数

通过堆叠上述模块,组成一个完整的superNet,经过训练,每一层最终会保留一个模块。

2.2训练

将superNet的候选模块一共9个,记作;设superNet一共20层,记作;得第层中第个模块的参数记作,故,这两个即为需要训练并学习的参数。superNet做出的预测记作

交叉熵损失函数可以写作,在这个损失函数中,由于是关于的函数,且两者可微,故损失函数能通过传递给,所以可以直接使用反向梯度传播更新模型。

基于学习到的,我们可以计算出superNet中没一层中每个模块的权重 ,对于每层而言,选取其中权重最大的模块作为该层的结构,这些模块串联即可得到整个模型的结构,如下图所示。

三、使用额外的性能指标优化superNet

以应用于移动设备的轻量化神经网络举例,这类神经网络由于需要考虑移动设备的算力限制,往往需要延迟(latency,推理时间)越小越好。

可以事先测量每个候选模块的平均延迟,计算这一层中每个模块的延迟加权平均,如下图所示。

将20层网络中的延迟求和,得到:,其中的定义在2.2节中已经给出,可以进一步记作,其中的为计算得到的常数。

损失函数为:,其中可以决定牺牲多少准确率来换取计算速度。

另外也可以使用,作为损失函数,效果和上式相同。

相关推荐
. . . . .11 小时前
GPT的前世今生及发展
人工智能·gpt
DatGuy12 小时前
Week 19: 深度学习补遗:自注意力和Transformer Encoder架构
人工智能·深度学习·transformer
colus_SEU12 小时前
【循环神经网络5】GRU模型实战,从零开始构建文本生成器
人工智能·rnn·深度学习·gru
Penguin大阪12 小时前
GRU模型这波牛市应用股价预测
人工智能·深度学习·gru
格林威12 小时前
UV紫外相机在工业视觉检测中的应用
人工智能·深度学习·数码相机·算法·计算机视觉·视觉检测·uv
格林威13 小时前
工业视觉检测里的 “柔性” 是什么?
图像处理·人工智能·深度学习·yolo·计算机视觉·视觉检测
停走的风13 小时前
(CVPR2025)DEIM模型训练自己的数据集教程(基于Pycharm)
python·深度学习·pycharm·模型训练·deim
丁学文武13 小时前
大模型原理与实践:第三章-预训练语言模型详解_第3部分-Decoder-Only(GPT、LLama、GLM)
人工智能·gpt·语言模型·自然语言处理·大模型·llama·glm
说私域13 小时前
公域流量转化困境下开源AI智能名片与链动2+1模式的S2B2C商城小程序应用研究
人工智能·小程序·开源
每天一个java小知识13 小时前
Spring-AI 接入(本地大模型 deepseek + 阿里云百炼 + 硅基流动)
java·人工智能·spring