一、概述

        相较于基于强化学习的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://www.pswp.cn/diannao/99189.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/99189.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/99189.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch安装启动常见问题全解析

文章目录📚 Elasticsearch 安装与启动问题总结一、核心问题概览二、详细问题分析与解决方案1. 🔐 **权限问题:AccessDeniedException**❌ 错误日志:📌 原因:✅ 解决方案:2. ⚙️ **配置冲突&…

Uniapp中使用renderjs实现OpenLayers+天地图的展示与操作

Uniapp中自带的地图组件对支持的地图服务略有局限,同时,该组件在样式布局上层级过高且无法控制,无法满足部分高度自定义化的需求。故引入renderjs视图层工具搭配OpenLayers框架对地图功能进行实现,但由于renderjs的限制&#xff0…

从C++开始的编程生活(8)——内部类、匿名对象、对象拷贝时的编译器优化和内存管理

前言 本系列文章承接C语言的学习,需要有C语言的基础才能学会哦~ 第8篇主要讲的是有关于C的内部类、匿名对象、对象拷贝时的编译器优化和内存管理。 C才起步,都很简单!! 目录 前言 内部类 性质 匿名对象 性质 ※对象拷贝时的…

MT5追大速率回测BUG

将MT5策略测试器中的回测速率调到最大(最快速度),**确实非常容易导致出现不符合策略逻辑的秒级成交(闪电交易)**。这并非MT5的“bug”,而是由**回测引擎的工作方式**与**策略代码的编写方法**在高速运行下不匹配所导致的。 --- ### 为什么最大速率会导致问题? MT5回测…

[数据结构——lesson10.堆及堆的调整算法]

引言 上节我们学习完二叉树后[数据结构——lesson9.二叉树],这节我们将学习数据结构——堆 学习目标 1.堆的概念及结构 堆是一种特殊的完全二叉树结构,在计算机科学和数据结构中广泛应用,特别是在堆排序算法和优先队列的实现中,…

九识智能与北控北斗合作研发的L4级燃气超微量高精准泄漏检测无人车闪耀服贸会,守护城市安全

2025年9月10日至14日,2025年中国国际服务贸易交易会将于北京首钢园举办。在这场国际盛会上,九识智能与北京北控北斗科技投资有限公司(以下简称“北控北斗”)合作研发的L4级燃气超微量高精准泄漏检测无人车及相关系统解决方案&…

【C语言入门】手把手教你实现顺序栈

栈是计算机科学中最基础且重要的数据结构之一,它遵循"后进先出"(LIFO)的原则。想象一下一叠盘子,你只能从最上面取放,这就是栈的直观体现。本文将用C语言带你一步步实现一个顺序栈,即使你是编程小…

北斗导航 | ARAIM(高级接收机自主完好性监测)算法在民航LPV-200进近中的具体实现流程

要详细说明ARAIM(高级接收机自主完好性监测)算法在民航LPV-200进近中的具体实现流程,需结合ARAIM的核心逻辑(多星座融合、多假设解分离、风险优化分配)与LPV-200的严格要求(垂直保护级VPL≤35米、垂直告警限VAL=35米、有效监测门限EMT≤15米等),以下是 step-by-step 的…

AIPex:AI + 自然语言驱动的浏览器自动化扩展

AIPex:AI + 自然语言驱动的浏览器自动化扩展 引言 一、快速上手 1.1 安装AIPex扩展 1.2 首次配置 1.3 界面介绍 第二章:30+工具详解 2.1 标签页管理工具集 🗂️ **get_all_tabs - 全局标签页概览** 🎯 **switch_to_tab - 智能标签页切换** 📋 **标签页批量操作** 📋 …

机器学习模型可信度与交叉验证:通俗讲解

先从一个故事说起:农场里的火鸡科学家,观察了一年发现“每天上午11点必有食物”,结果感恩节当天,它没等到食物,反而成了人类的食物。这个故事告诉我们:只靠过去的经验下结论,很可能出错——机器…

HTML5和CSS3新增的一些属性

1、HTML5新增特性这些新特性都有兼容性问题&#xff0c;基本是IE9以上版本浏览器才支持1&#xff09;新增语义化标签2&#xff09;新增多媒体标签音频&#xff1a;<audio>视频&#xff1a;<video>&#xff08;1&#xff09;视频<video>---尽量使用mp4格式<…

Redis的RedLock

RedLock算法深度解析RedLock是Redis作者针对分布式环境设计的多节点锁算法&#xff0c;核心目标是解决单点Redis在分布式锁场景中的可靠性缺陷。传统方案的局限性单节点Redis锁的问题单点故障&#xff1a;单个Redis实例宕机导致所有锁服务不可用可靠性不足&#xff1a;无法保证…

SpringMVC @RequestMapping的使用演示和细节 详解

目录 一、RequestMapping是什么&#xff1f; 二、RequestMapping 的使用演示 1.RequestMapping在方法上的使用&#xff1a; 2.RequestMapping同时在类和方法上使用&#xff1a; 3.RequestMapping指定请求参数&#xff1a; 4.RequestMapping使用Ant风格URL&#xff1a; 5.Requ…

flutter项目 -- 换logo、名称 、签名、打包

1、换logo, 透明底&#xff0c;下面5个尺寸&#xff0c;需要UI设计2、换名没配置型的改名方式如下 打开app/src/main/AndroidManifest.xml3、签名 运行 flutter doctor -vD:\project\Apk\keystore 自己建立的keystore文件夹&#xff0c; 注意命令后是 megoai-release-key(自…

【贪心算法】day9

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人的贪心算法学习以及LeetCode刷题记录&#xff0c;按专题划分每题主要记录&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代码&#xff1b;&#xff08;2&#xff09;优质解法 优质代码&#xff1b;&#xff…

linux C 语言开发 (八) 进程基础

文章的目的为了记录使用C语言进行linux 开发学习的经历。开发流程和要点有些记忆模糊&#xff0c;赶紧记录&#xff0c;防止忘记。 相关链接&#xff1a; linux C 语言开发 (一) Window下用gcc编译和gdb调试 linux C 语言开发 (二) VsCode远程开发 linux linux C 语言开发 (…

从零学算法1094

1094.拼车 车上最初有 capacity 个空座位。车 只能 向一个方向行驶&#xff08;也就是说&#xff0c;不允许掉头或改变方向&#xff09; 给定整数 capacity 和一个数组 trips , trips[i] [numPassengersi, fromi, toi] 表示第 i 次旅行有 numPassengersi 乘客&#xff0c;接他…

B2B企业营销型AI Agent服务商推荐:谁更专业?如何选型?

一、引言&#xff1a;为什么B2B企业需要营销型AI Agent&#xff1f;在当前竞争激烈的B2B市场中&#xff0c;企业普遍面临几大挑战&#xff1a;线索获取难&#xff1a;获客成本持续上升&#xff0c;高质量线索难以筛选。销售周期长&#xff1a;从初步接触到签单&#xff0c;往往…

算法-双指针5.6

目录 &#x1f33f;力扣611-有效三角形得个数 &#x1f9ca;题目链接&#xff1a;https://leetcode.cn/problems/valid-triangle-number/description/ &#x1f9ca;题目描述&#xff1a;​编辑 &#x1f9ca;解题思路&#xff1a; &#x1f9ca;解题代码&#xff1a; &a…

超参数自动化调优指南:Optuna vs. Ray Tune 对比评测

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;注册即送-H卡级别算力&#xff0c;80G大显存&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生更享专属优惠。 引言&#xff1a;从"手动炼丹"到"自动化…