MobileNet_v2
研究動(dòng)機(jī): 神經(jīng)網(wǎng)絡(luò)徹底改變了機(jī)器智能的許多領(lǐng)域,實(shí)現(xiàn)了超人的準(zhǔn)確性。然而,提高準(zhǔn)確性的驅(qū)動(dòng)力往往需要付出代價(jià):現(xiàn)代先進(jìn)網(wǎng)絡(luò)需要高度計(jì)算資源,超出許多移動(dòng)和嵌入式應(yīng)用的能力。
主要貢獻(xiàn): 發(fā)明了一個(gè)新的層模塊, 具有線性瓶頸的倒置殘差(inverted residual)。
相關(guān)工作: 里面介紹了近來(lái)整個(gè)領(lǐng)域的發(fā)展概況, 看論文就看介紹的吧.
基本概念
深度可分離卷積
Depthwise Separable Convolutions = depthwise + pointwise如果卷積核大小為 3x3, 深度可分離卷積的計(jì)算量為常規(guī)卷積的 (1/9, 1/8)
流形(manifold)
花書 <> 介紹:
\(\color{red}{流形(manifold)}\) 指連接在一起的區(qū)域。數(shù)學(xué)上,它是指一組點(diǎn),且每個(gè)點(diǎn)都 有其鄰域。給定一個(gè)任意的點(diǎn),其流形局部看起來(lái)像是歐幾里得空間。日常生活中, 我們將地球視為二維平面,但實(shí)際上它是三維空間中的球狀流形。
每個(gè)點(diǎn)周圍鄰域的定義暗示著存在變換能夠從一個(gè)位置移動(dòng)到其鄰域位置。例 如在地球表面這個(gè)流形中,我們可以朝東南西北走。
盡管術(shù)語(yǔ) “流形’’ 有正式的數(shù)學(xué)定義, 但是機(jī)器學(xué)習(xí)傾向于更松散地定義一組 點(diǎn),只需要考慮少數(shù)嵌入在高維空間中的自由度或維數(shù)就能很好地近似。每一維都對(duì)應(yīng)著局部的變化方向。如圖 5.11 所示, 訓(xùn)練數(shù)據(jù)位于二維空間中的一維流形中。 在機(jī)器學(xué)習(xí)中,我們?cè)试S流形的維數(shù)從一個(gè)點(diǎn)到另一個(gè)點(diǎn)有所變化。這經(jīng)常發(fā)生于流形和自身相交的情況中。例如,數(shù)字 "8" 形狀的流形在大多數(shù)位置只有一維,但 在中心的相交處有兩維。
\(\color{red}{流形學(xué)習(xí)(manifold\space learning)}\) 算法假設(shè): 該假設(shè)認(rèn)為 \(R^n\) 中大部分區(qū)域都是無(wú)效的輸入,有意義的輸入只分布在包 含少量數(shù)據(jù)點(diǎn)的子集構(gòu)成的一組流形中,而學(xué)習(xí)函數(shù)的輸出中,有意義的變化都沿著流形的方向或僅發(fā)生在我們切換到另一流形時(shí)。
數(shù)據(jù)位于低維流形的假設(shè)并不總是對(duì)的或者有用的。我們認(rèn)為在人工智能的一 些場(chǎng)景中,如涉及到處理圖像、聲音或者文本時(shí),流形假設(shè)至少是近似對(duì)的。
Linear Bottlenecks
Linear Bottlenecks 理論支持:
考慮由 n 層 \(L_i\) 組成的深層神經(jīng)網(wǎng)絡(luò),其中每一層都具有尺寸為 \(h_i×w_i×d_i\)的激活張量。在本節(jié)中,我們將討論這些激活張量的基本屬性,我們將其視為具有 \(d_i\) 維度的 \(h_i×w_i\)“像素”的容器。非正式地說(shuō),對(duì)于輸入的一組真實(shí)圖像,我們說(shuō)層激活(對(duì)于任何層 \(L_i\))形成一個(gè)“流形”。由于這種流形通常不能用分析方法描述,因此我們將憑經(jīng)驗(yàn)研究它們的性質(zhì)。例如,長(zhǎng)期以來(lái)一直認(rèn)為神經(jīng)網(wǎng)絡(luò)中感興趣的流形可以嵌入到低維子空間中。換句話說(shuō),當(dāng)我們查看深卷積層的所有單個(gè)通道像素時(shí),這些值中編碼的信息實(shí)際上位于某個(gè)流形中,而這又可嵌入到低維子空間中。
乍一看,這樣的事實(shí)可以通過(guò)簡(jiǎn)單地減少層的維度來(lái)捕獲和利用,從而降低操作空間的維度。這已經(jīng)被 MobileNetV1 成功利用,通過(guò)寬度乘法器參數(shù)在計(jì)算和精度之間進(jìn)行有效的折中. 遵循這種直覺(jué),寬度乘法器方法允許減小激活空間的維度,直到感興趣的流形橫跨整個(gè)空間為止。然而,當(dāng)我們回想到深度卷積神經(jīng)網(wǎng)絡(luò)實(shí)際上具有非線性的坐標(biāo)變換(例如ReLU)時(shí),這種直覺(jué)就會(huì)崩潰。例如,ReLU應(yīng)用于1D空間中的線會(huì)產(chǎn)生'射線',在 \(R^n\) 空間中,其通常導(dǎo)致具有 n 截的分段線性曲線。
insight:
這兩個(gè)見(jiàn)解為我們提供了一個(gè)優(yōu)化現(xiàn)有神經(jīng)架構(gòu)的經(jīng)驗(yàn)提示:假設(shè)感興趣的流形是低維的,我們可以通過(guò)將線性瓶頸層插入卷積模塊來(lái)捕獲這一點(diǎn)。 實(shí)驗(yàn)證據(jù)表明,使用線性層非常重要,因?yàn)樗梢苑乐狗蔷€性破壞太多的信息。
Inverted residuals

We will refer to the ratio between the size of the input bottleneck and the inner size as the expansion ratio.
\(\color{red}{由于 Inverted \space residuals 兩邊 thin, 所以該設(shè)計(jì)想比較傳統(tǒng)殘差設(shè)計(jì)更加節(jié)省內(nèi)存}\)
論文觀點(diǎn)
架構(gòu)的一個(gè)有趣特性是它在構(gòu)建塊(瓶頸層)的輸入/輸出域與層轉(zhuǎn)換(這是一種將輸入轉(zhuǎn)換為輸出的非線性函數(shù))之間提供了自然分離. 前者(層輸入/輸出)可以看作是網(wǎng)絡(luò)在每一層的容量,而后者(層轉(zhuǎn)換)則是表達(dá)力。這與常規(guī)和可分離的傳統(tǒng)卷積塊相反,其中表現(xiàn)力和容量都纏結(jié)在一起,并且是輸出層深度的函數(shù)。
\(\color{red}{在論文的最后提出}\):
On the theoretical side: the proposed convolutional block has a unique property that allows to separate the network expressivity (encoded by expansion layers) from its capacity (encoded by bottleneck inputs). Exploring this is an important direction for future research.
這種解釋使我們能夠獨(dú)立于其容量研究網(wǎng)絡(luò)的表現(xiàn)力,并且我們認(rèn)為需要進(jìn)一步探索這種分離,以便更好地理解網(wǎng)絡(luò)性質(zhì).
我的理解:
## 網(wǎng)絡(luò)結(jié)構(gòu)
實(shí)現(xiàn)細(xì)節(jié):
base learning rate = 0.045 weight decay = 0.00004 t = 5 - 10 dropout + bn + relu6 RMSPropOptimizer momentum = 0.9 decay = 0.9網(wǎng)絡(luò)結(jié)構(gòu)


表中錯(cuò)誤已修正
內(nèi)存節(jié)約型 inference
計(jì)算圖 G, 在推導(dǎo)時(shí)(inference ), 內(nèi)存總量和邊界如下:
\[ \begin{align*} M(G) &= \max_{op \in G}\left[\sum_{A\in op_{input}}A + \sum_{B\in op_{output}}B + |op| \right] \\ \end{align*} \]
內(nèi)存占用量是所有操作對(duì)應(yīng)輸入和輸出張量的總大小與操作本身所占內(nèi)存之和決定。 如果我們將瓶頸殘差塊視為單一操作(并將內(nèi)部卷積視為一次性張量[即用完就丟]),則總內(nèi)存量將由瓶頸張量的大小決定,而不是瓶頸內(nèi)部張量的大小決定
轉(zhuǎn)載于:https://www.cnblogs.com/nowgood/p/MobileNetv2.html
總結(jié)
以上是生活随笔為你收集整理的MobileNet_v2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python3 JSON处理
- 下一篇: Docker镜像加速器配置