[智能算法]可微的神經網絡搜索算法-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://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;從"手動煉丹"到"自動化…