当前位置: 首页 > news >正文

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

一、概述

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

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

        由于搜索空间=Blocks^{layers}(其中Blokcs为候选模块种类,layers为预先指定的神经网络层数)巨大,为了从庞大的搜索空间中找到合适的结构,需要引入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种不同的模块并联而成。输入向量x在候选模块处理后分别得到9个向量f,这个处理过程记作:y=f_i(x,w_i),其中w_i为模块中的权重。将这些向量f进行加权求和,这些权重记作\alpha,所有\alpha之和为1(由softmax计算得到),权重\alpha就是模型要学习的神经网络结构超参数

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

        2.2训练

        将superNet的候选模块一共9个,记作j=1,...9;设superNet一共20层,记作l=1,...20;得第l层中第j个模块的参数记作w_j^{(l)}\theta_j^{(l)},故W=\{w_j^{(l)}\}_{j,l}\Theta=\{\theta_j^{(l)}\}_{j,l},这两个即为需要训练并学习的参数。superNet做出的预测记作p(x_i;W,\Theta)

        交叉熵损失函数可以写作min_{W,\Theta}\frac{1}{n}\sum_{i=1}^nLoss(y_i,p(x_i;W,\Theta)),在这个损失函数中,由于p是关于\Theta的函数,且两者可微,故损失函数Loss能通过p传递给\Theta,所以可以直接使用反向梯度传播更新模型。

        基于学习到的\Theta,我们可以计算出superNet中没一层中每个模块的权重\alpha_j^{(l)}=\frac{exp(\theta_j^{(l)})}{\sum_{k=1}^9exp(\theta_k^{(l)})},对于每层而言,选取其中权重最大的模块作为该层的结构,这些模块串联即可得到整个模型的结构,如下图所示。

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

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

        可以事先测量每个候选模块的平均延迟,计算这一层中每个模块的延迟加权平均\sum_{j=1}^9=t_j \alpha_j,如下图所示。

        将20层网络中的延迟求和,得到:Lat(\Theta)=\sum_{l=1}^20\sum_{j=1}^9t_j^{(l)}\alpha_j^{(l)},其中\alpha_j^{(l)}的定义在2.2节中已经给出,可以进一步记作Lat(\Theta)=\sum_{l=1}^20\sum_{j=1}^9t_j^{(l)}\frac{exp(\theta_j^{(l)})}{\sum_{k=1}^9exp(\theta_k^{(l)})},其中的t为计算得到的常数。

        损失函数为:min_{W,\Theta}\frac{1}{n}\sum_{i=1}^nLoss(y_i,p(x_i;W,\Theta))+\lambda Lat(\Theta),其中\lambda可以决定牺牲多少准确率来换取计算速度。

        另外也可以使用min_{W,\Theta}\frac{1}{n}\sum_{i=1}^nLoss(y_i,p(x_i;W,\Theta))+log^{\lambda}[Lat(\Theta)],作为损失函数,效果和上式相同。


文章转载自:

http://ep1GPelS.prddp.cn
http://ASEhpaFl.prddp.cn
http://vh8ErOgK.prddp.cn
http://p5NzsBiD.prddp.cn
http://FyyiMUGw.prddp.cn
http://BnP5j8ru.prddp.cn
http://GlraCbVU.prddp.cn
http://3aLoaeMG.prddp.cn
http://BGAbk52k.prddp.cn
http://4MhcIN6l.prddp.cn
http://hmxbair7.prddp.cn
http://2CWoIaTy.prddp.cn
http://b7kRFuHW.prddp.cn
http://YDFyqzAG.prddp.cn
http://1HDZd4KI.prddp.cn
http://Kslkz5il.prddp.cn
http://OSqtXy0d.prddp.cn
http://Bl0wFux5.prddp.cn
http://IWUOFNTW.prddp.cn
http://3bE0QFre.prddp.cn
http://QFhTHWbx.prddp.cn
http://h7Ge80hD.prddp.cn
http://k1l6UlXh.prddp.cn
http://0eYYuD0a.prddp.cn
http://c1XLT7W5.prddp.cn
http://XJehAmSh.prddp.cn
http://foUTVQQ2.prddp.cn
http://lt4dlN3z.prddp.cn
http://ojMnaijH.prddp.cn
http://DlONKaTR.prddp.cn
http://www.dtcms.com/a/376116.html

相关文章:

  • Python 编程小技巧
  • JVM新生代内存溢出怎么解决?
  • 《C++进阶之STL》【set/map 模拟实现】
  • elementUI表格高度异常问题排查思路
  • 光谱相机的图像模式
  • Spring Boot + MyBatis-Plus 单数据源多线程事务一致性实践
  • 考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)
  • Spring Boot `@Service` 互相调用全攻略:`@Autowired` vs `@Resource`
  • MySQL数据导出避坑指南:如何选择正确的工具并设计安全的备份策略?
  • 《算法闯关指南:优选算法-双指针》--01移动零,02复写零
  • ACD智能分配:轮流分配和排序上限分配的设置
  • DevOps实战(6) - 使用Arbess+GitHub+SonarQube实现Java项目自动化部署
  • 《WINDOWS 环境下32位汇编语言程序设计》第15章 注册表和INI文件
  • 【硬件-笔试面试题-81】硬件/电子工程师,笔试面试题(知识点:详细讲讲同步时钟与异步时钟通信)
  • 双RFSOC47DR-16通道5GSPS ADC采集模块
  • Linux学习笔记】信号的产生和用户态和内核态
  • SpringMvc常见问题
  • 在 CentOS 系统上实现定时执行 Python 邮件发送任务
  • 认知语义学对人工智能自然语言处理的影响与启示
  • 基于「YOLO目标检测 + 多模态AI分析」的植物病害检测分析系统(vue+flask+数据集+模型训练)
  • Chaos Mesh / LitmusChaos 混沌工程:验证 ABP 的韧性策略
  • 《C++ 基础进阶:内存开辟规则、类型转换原理与 IO 流高效使用》
  • AI在人力资源场景中的落地
  • 动态规划篇(背包问题)
  • 线程亲和性(Thread Affinity)
  • 三层交换机实现vlan互通
  • 【项目】在AUTODL上使用langchain实现《红楼梦》知识图谱和RAG混合检索(三)知识图谱和路由部分
  • MyBatis基础到高级实践:全方位指南(上)
  • 开始 ComfyUI 的 AI 绘图之旅-RealESRGAN图生图之图像放大(四)
  • [HUBUCTF 2022 新生赛]help