導航:首頁 > 網路安全 > 如何給視覺應用中的神經網路加速

如何給視覺應用中的神經網路加速

發布時間:2022-12-09 20:34:51

A. 針對移動端與嵌入式視覺應用的卷積神經網路MobileNet系列解析

MobileNet V1 (2017)

(1)MobileNets基於一種流線型結構使用深度可分離卷積來構造輕型權重深度神經網路,核心部件就是 深度可分離卷積

(2)MobileNet是一種基於深度可分離卷積的模型,深度可分離卷積是一種將標准卷積分解成深度卷積以及一個1x1的卷積即逐點卷積

(3)深度卷積針對每個單個輸入通道應用單個濾波器進行濾波,然後逐點卷積應用1x1的卷積操作來結合所有深度卷積得到的輸出

(4)對深度卷積,它的卷積核厚度不是輸入張量的通道數,而是1,輸出通道就是卷積核數目。經典卷積的卷積核厚度默認是圖片的通道數

(5)可分離卷積tf內置函數: tf.layers.separable_conv2d

公式計算:

MobileNet V2 (2018)

(1)Mobilenet V2實在Mobilenet V1的基礎上發展而來,V2 主要引入了兩個改動:Linear Bottleneck 和 Inverted Resial Blocks。兩個改動分別對應V1和Resnet

(2)MobileNetV1遺留的問題

(3) 對比 MobileNet V1 與 V2 的微結構

(4) 對比 ResNet 與 MobileNet V2 的微結構

MobileNet V3 (2019)

論文地址:https://arxiv.org/pdf/1905.02244.pdf

(1)具體的內容可以看論文,這里我只是重點說明其中的激活函數改進(swish/h-swish)和網路結構改進(bneck)

(2)激活函數:作者發現一種新出的激活函數swish x 能有效改進網路精度

但就是計算量太大了,於是作者對這個函數進行了數值近似:

近似結果:

(3)網路結構:在大體思路上引用mobilenet v2的結構pw-dw-pw,其中激活函數添加了h-swish,同時在v2基礎上添加了Squeeze excitation layer,具體的設置可查閱論文中的網路參數圖對照,

其中Squeeze excitation layer

Squeeze excitation layer是引入基於squeeze and excitation結構的輕量級注意力模型SENet

論文:《Squeeze-and-Excitation Networks》

論文鏈接:https://arxiv.org/abs/1709.01507

B. 中科院提出圖神經網路加速晶元設計,這是一種怎樣的晶元呢

隨著技術發展,人工智慧技術也在不斷的發展。現有的晶元已經難以滿足一些神經網路的計算了,中科院提出了圖神經網路加速晶元,這種晶元專用於圖神經網路的運算。讓我們一起來了解一下什麼是圖神經網路,這種晶元有什麼重大的突破。

圖神經網路的應用前景非常廣泛,不僅用在日常交通預測、網約車調度、運動檢測等民用領域,還可以助力科研的知識推理、化學研究以及在知識圖譜、視覺推理等學科發展方向上。

C. 卷積神經網路CNN在圖像識別問題應用綜述(20191219)

   這兩天在公司做PM實習,主要是自學一些CV的知識,以了解產品在解決一些在圖像識別、圖像搜索方面的問題,學習的主要方式是在知網檢索了6.7篇國內近3年計算機視覺和物體識別的碩博士論文。由於時間關系,後面還會繼續更新圖片相似度計算(以圖搜圖)等方面的學習成果
   將這兩天的學習成果在這里總結一下。你將會看到計算機視覺在解決特定物體識別問題(主要是卷積神經網路CNNs)的基礎過程和原理,但這里不會深入到技術的實現層面。

  計算機視覺(Computer vision)是一門研究如何使機器「看」的科學,更進一步的說,就是指用攝影機和計算機代替人眼對目標進行識別、跟蹤和測量等機器視覺,並進一步做圖像處理,用計算機處理成為更適合人眼觀察或傳送給儀器檢測的圖像。
                                         ————維基網路
  通常而言,計算機視覺的研究包括三個層次:
(1)底層特徵的研究:
  這一層次的研究主要聚焦如何高效提取出圖像對象具有判別性能的特徵,具體的研究內容通常包括:物體識別、字元識別等
(2)中層語義特徵的研究:
   該層次的研究在於在識別出對象的基礎上,對其位置、邊緣等信息能夠准確區分。現在比較熱門的:圖像分割;語義分割;場景標注等,都屬於該領域的范疇
(3)高層語義理解:
  這一層次建立在前兩層的基礎上,其核心在於「理解」一詞。 目標在於對復雜圖像中的各個對象完成語義級別的理解。這一層次的研究常常應用於:場景識別、圖像摘要生成及圖像語義回答等。
  而我研究的問題主要隸屬於底層特徵和中層語義特徵研究中的物體識別和場景標注問題。

人類的視覺工作模式是這樣的:
   首先,我們大腦中的神經元接收到大量的信息微粒,但我們的大腦還並不能處理它們。
   於是接著神經元與神經元之間交互將大量的微粒信息整合成一條又一條的線。
   接著,無數條線又整合成一個個輪廓。
   最後多個輪廓累加終於聚合我們現在眼前看到的樣子。
  計算機科學受到神經科學的啟發,也採用了類似的工作方式。具體而言,圖像識別問題一般都遵循下面幾個流程

  (1)獲取底層信息。獲取充分且清潔的高質量數據往往是圖像識別工作能否成功的關鍵所在
  (2)數據預處理工作,在圖像識別領域主要包括四個方面的技術:去噪處理(提升信噪比)、圖像增強和圖像修復(主要針對不夠清晰或有破損缺失的圖像);歸一化處理(一方面是為了減少開銷、提高演算法的性能,另一方面則是為了能成功使用深度學習等演算法,這類演算法必須使用歸一化數據)。
  (3)特徵提取,這一點是該領域的核心,也是本文的核心。圖像識別的基礎是能夠提取出足夠高質量,能體現圖像獨特性和區分度的特徵。
  過去在10年代之前我們主要還是更多的使用傳統的人工特徵提取方法,如PCALCA等來提取一些人工設計的特徵,主要的方法有(HOG、LBP以及十分著名的SIFT演算法)。但是這些方法普遍存在(a)一般基於圖像的一些提層特徵信息(如色彩、紋理等)難以表達復雜的圖像高層語義,故泛化能力普遍比較弱。(b)這些方法一般都針對特定領域的特定應用設計,泛化能力和遷移的能力大多比較弱。
  另外一種思路是使用BP方法,但是畢竟BP方法是一個全連接的神經網路。這以為這我們非常容易發生過擬合問題(每個元素都要負責底層的所有參數),另外也不能根據樣本對訓練過程進行優化,實在是費時又費力。
  因此,一些研究者開始嘗試把諸如神經網路、深度學習等方法運用到特徵提取的過程中,以十幾年前深度學習方法在業界最重要的比賽ImageNet中第一次戰勝了SIFT演算法為分界線,由於其使用權重共享和特徵降采樣,充分利用了數據的特徵。幾乎每次比賽的冠軍和主流都被深度學習演算法及其各自改進型所佔領。其中,目前使用較多又最為主流的是CNN演算法,在第四部分主要也研究CNN方法的機理。

  上圖是一個簡易的神經網路,只有一層隱含層,而且是全連接的(如圖,上一層的每個節點都要對下一層的每個節點負責。)具體神經元與神經元的作用過程可見下圖。

  在諸多傳統的神經網路中,BP演算法可能是性能最好、應用最廣泛的演算法之一了。其核心思想是:導入訓練樣本、計算期望值和實際值之間的差值,不斷地調整權重,使得誤差減少的規定值的范圍內。其具體過程如下圖:

  一般來說,機器學習又分成淺層學習和深度學習。傳統的機器學習演算法,如SVM、貝葉斯、神經網路等都屬於淺層模型,其特點是只有一個隱含層。邏輯簡單易懂、但是其存在理論上缺乏深度、訓練時間較長、參數很大程度上依賴經驗和運氣等問題。
  如果是有多個隱含層的多層神經網路(一般定義為大於5層),那麼我們將把這個模型稱為深度學習,其往往也和分層訓練配套使用。這也是目前AI最火的領域之一了。如果是淺層模型的問題在於對一個復雜函數的表示能力不夠,特別是在復雜問題分類情況上容易出現分類不足的弊端,深度網路的優勢則在於其多層的架構可以分層表示邏輯,這樣就可以用簡單的方法表示出復雜的問題,一個簡單的例子是:
  如果我們想計算sin(cos(log(exp(x)))),
  那麼深度學習則可分層表示為exp(x)—>log(x)—>cos(x)—>sin(x)

  圖像識別問題是物體識別的一個子問題,其魯棒性往往是解決該類問題一個非常重要的指標,該指標是指分類結果對於傳入數據中的一些轉化和扭曲具有保持不變的特性。這些轉化和扭曲具體主要包括了:
(1)噪音(2)尺度變化(3)旋轉(4)光線變化(5)位移

  該部分具體的內容,想要快速理解原理的話推薦看[知乎相關文章] ( https://www.hu.com/search?type=content&q=CNN ),
  特別是其中有些高贊回答中都有很多動圖和動畫,非常有助於理解。
  但核心而言,CNN的核心優勢在於 共享權重 以及 感受野 ,減少了網路的參數,實現了更快的訓練速度和同樣預測結果下更少的訓練樣本,而且相對於人工方法,一般使用深度學習實現的CNN演算法使用無監督學習,其也不需要手工提取特徵。

CNN演算法的過程給我的感覺,個人很像一個「擦玻璃」的過程。其技術主要包括了三個特性:局部感知、權重共享和池化。

  CNN中的神經元主要分成了兩種:
(a)用於特徵提取的S元,它們一起組成了卷積層,用於對於圖片中的每一個特徵首先局部感知。其又包含很關鍵的閾值參數(控制輸出對輸入的反映敏感度)和感受野參數(決定了從輸入層中提取多大的空間進行輸入,可以簡單理解為擦玻璃的抹布有多大)
(b)抗形變的C元,它們一起組成了池化層,也被稱為欠采樣或下采樣。主要用於特徵降維,壓縮數據和參數的數量,減小過擬合,同時提高模型的容錯性。
(c*)激活函數,及卷積層輸出的結果要經過一次激勵函數才會映射到池化層中,主要的激活函數有Sigmoid函數、Tanh函數、ReLU、Leaky ReLU、ELU、Maxout等。

  也許你會抱有疑問,CNN演算法和傳統的BP演算法等究竟有什麼區別呢。這就會引出區域感受野的概念。在前面我們提到,一個全連接中,較高一層的每個神經元要對低層的每一個神經元負責,從而導致了過擬合和維度災難的問題。但是有了區域感受野和,每個神經元只需要記錄一個小區域,而高層會把這些信息綜合起來,從而解決了全連接的問題。

  了解區域感受野後,你也許會想,區域感受野的底層神經元具體是怎麼聚合信息映射到上一層的神經元呢,這就要提到重要的卷積核的概念。這個過程非常像上面曾提到的「神經元與神經元的聯系」一圖,下面給大家一個很直觀的理解。

  上面的這個過程就被稱為一個卷積核。在實際應用中,單特徵不足以被系統學習分類,因此我們往往會使用多個濾波器,每個濾波器對應1個卷積核,也對應了一個不同的特徵。比如:我們現在有一個人臉識別應用,我們使用一個卷積核提取出眼睛的特徵,然後使用另一個卷積核提取出鼻子的特徵,再用一個卷積核提取出嘴巴的特徵,最後高層把這些信息聚合起來,就形成了分辨一個人與另一個人不同的判斷特徵。

  現在我們已經有了區域感受野,也已經了解了卷積核的概念。但你會發現在實際應用中還是有問題:
  給一個100 100的參數空間,假設我們的感受野大小是10 10,那麼一共有squar(1000-10+1)個,即10的六次方個感受野。每個感受野中就有100個參數特徵,及時每個感受野只對應一個卷積核,那麼空間內也會有10的八次方個次數,,更何況我們常常使用很多個卷積核。巨大的參數要求我們還需要進一步減少權重參數,這就引出了權重共享的概念。
   用一句話概括就是,對同一個特徵圖,每個感受野的卷積核是一樣的,如這樣操作後上例只需要100個參數。

  池化是CNN技術的最後一個特性,其基本思想是: 一塊區域有用的圖像特徵,在另一塊相似的區域中很可能仍然有用。即我們通過卷積得到了大量的邊緣EDGE數據,但往往相鄰的邊緣具有相似的特性,就好像我們已經得到了一個強邊緣,再擁有大量相似的次邊緣特徵其實是沒有太大增量價值的,因為這樣會使得系統里充斥大量冗餘信息消耗計算資源。 具體而言,池化層把語義上相似的特徵合並起來,通過池化操作減少卷積層輸出的特徵向量,減少了參數,緩解了過擬合問題。常見的池化操作主要包括3種:
分別是最大值池化(保留了圖像的紋理特徵)、均值池化(保留了圖像的整體特徵)和隨機值池化。該技術的弊端是容易過快減小數據尺寸,目前趨勢是用其他方法代替池化的作用,比如膠囊網路推薦採用動態路由來代替傳統池化方法,原因是池化會帶來一定程度上表徵的位移不變性,傳統觀點認為這是一個優勢,但是膠囊網路的作者Hinton et al.認為圖像中位置信息是應該保留的有價值信息,利用特別的聚類評分演算法和動態路由的方式可以學習到更高級且靈活的表徵,有望沖破目前卷積網路構架的瓶頸。

  CNN總體來說是一種結構,其包含了多種網路模型結構,數目繁多的的網路模型結構決定了數據擬合能力和泛化能力的差異。其中的復雜性對用戶的技術能力有較高的要求。此外,CNN仍然沒有很好的解決過擬合問題和計算速度較慢的問題。

   該部分的核心參考文獻:
《深度學習在圖像識別中的應用研究綜述》鄭遠攀,李廣陽,李曄.[J].計算機工程與應用,2019,55(12):20-36.

  深度學習技術在計算機圖像識別方面的領域應用研究是目前以及可預見的未來的主流趨勢,在這里首先對深度學習的基本概念作一簡介,其次對深度學習常用的結構模型進行概述說明,主要簡述了深度信念網路(DBN)、卷積神經網路(CNN)、循環神經網路(RNN)、生成式對抗網路(GAN)、膠囊網路(CapsNet)以及對各個深度模型的改進模型做一對比分析。

  深度學習按照學習架構可分為生成架構、判別架構及混合架構。
其生成架構模型主要包括:
  受限波爾茲曼機、自編碼器、深層信念網路等。判別架構模型主要包括:深層前饋網路、卷積神經網路等。混合架構模型則是這兩種架構的集合。深度學習按數據是否具有標簽可分為非監督學習與監督學習。非監督學習方法主要包括:受限玻爾茲曼機、自動編碼器、深層信念網路、深層玻爾茲曼機等。
  監督學習方法主要包括:深層感知器、深層前饋網路、卷積神經網路、深層堆疊網路、循環神經網路等。大量實驗研究表明,監督學習與非監督學習之間無明確的界限,如:深度信念網路在訓練過程中既用到監督學習方法又涉及非監督學習方法。

[1]周彬. 多視圖視覺檢測關鍵技術及其應用研究[D].浙江大學,2019.
[2]鄭遠攀,李廣陽,李曄.深度學習在圖像識別中的應用研究綜述[J].計算機工程與應用,2019,55(12):20-36.
[3]逄淑超. 深度學習在計算機視覺領域的若干關鍵技術研究[D].吉林大學,2017.
[4]段萌. 基於卷積神經網路的圖像識別方法研究[D].鄭州大學,2017.
[5]李彥冬. 基於卷積神經網路的計算機視覺關鍵技術研究[D].電子科技大學,2017.
[6]李衛. 深度學習在圖像識別中的研究及應用[D].武漢理工大學,2014.
[7]許可. 卷積神經網路在圖像識別上的應用的研究[D].浙江大學,2012.
[8]CSDN、知乎、機器之心、維基網路

D. 吳恩達 卷積神經網路 CNN

應用計算機視覺時要面臨的一個挑戰是數據的輸入可能會非常大。例如一張 1000x1000x3 的圖片,神經網路輸入層的維度將高達三百萬,使得網路權重 W 非常龐大。這樣會造成兩個後果:

神經網路結構復雜,數據量相對較少,容易出現過擬合;
所需內存和計算量巨大。
因此,一般的神經網路很難處理蘊含著大量數據的圖像。解決這一問題的方法就是使用卷積神經網路

我們之前提到過,神經網路由淺層到深層,分別可以檢測出圖片的邊緣特徵、局部特徵(例如眼睛、鼻子等),到最後面的一層就可以根據前面檢測的特徵來識別整體面部輪廓。這些工作都是依託卷積神經網路來實現的。

卷積運算(Convolutional Operation)是卷積神經網路最基本的組成部分。我們以邊緣檢測為例,來解釋卷積是怎樣運算的。

圖片最常做的邊緣檢測有兩類:垂直邊緣(Vertical Edges)檢測和水平邊緣(Horizontal Edges)檢測。

比如檢測一張6x6像素的灰度圖片的vertical edge,設計一個3x3的矩陣(稱之為filter或kernel),讓原始圖片和filter矩陣做卷積運算(convolution),得到一個4x4的圖片。 具體的做法是,將filter矩陣貼到原始矩陣上(從左到右從上到下),依次可以貼出4x4種情況。 讓原始矩陣與filter重合的部分做element wise的乘積運算再求和 ,所得的值作為4x4矩陣對應元素的值。如下圖是第一個元素的計算方法,以此類推。

可以看到,卷積運算的求解過程是從左到右,由上到下,每次在原始圖片矩陣中取與濾波器同等大小的一部分,每一部分中的值與濾波器中的值對應相乘後求和,將結果組成一個矩陣。

下圖對應一個垂直邊緣檢測的例子:

如果將最右邊的矩陣當作圖像,那麼中間一段亮一些的區域對應最左邊的圖像中間的垂直邊緣。

下圖3x3濾波器,通常稱為垂直 索伯濾波器 (Sobel filter):

看看用它來處理知名的Lena照片會得到什麼:

現在可以解釋卷積操作的用處了:用輸出圖像中更亮的像素表示原始圖像中存在的邊緣。

你能看出為什麼邊緣檢測圖像可能比原始圖像更有用嗎?

回想一下MNIST手寫數字分類問題。在MNIST上訓練的CNN可以找到某個特定的數字。比如發現數字1,可以通過使用邊緣檢測發現圖像上兩個突出的垂直邊緣。

通常,卷積有助於我們找到特定的局部圖像特徵(如邊緣),用在後面的網路中。

假設輸入圖片的大小為 n×n,而濾波器的大小為 f×f,則卷積後的輸出圖片大小為 (n−f+1)×(n−f+1)。

這樣就有兩個問題:

為了解決這些問題,可以在進行卷積操作前,對原始圖片在邊界上進行填充(Padding),以增加矩陣的大小。通常將 0 作為填充值。

設每個方向擴展像素點數量為 p,則填充後原始圖片的大小為 (n+2p)×(n+2p),濾波器大小保持 f×f不變,則輸出圖片大小為 (n+2p−f+1)×(n+2p−f+1)。

因此,在進行卷積運算時,我們有兩種選擇:

在計算機視覺領域,f通常為奇數。原因包括 Same 卷積中 p=(f−1)/ 2 能得到自然數結果,並且濾波器有一個便於表示其所在位置的中心點。

卷積過程中,有時需要通過填充來避免信息損失,有時也需要通過設置 步長(Stride) 來壓縮一部分信息。

步長表示濾波器在原始圖片的水平方向和垂直方向上每次移動的距離。之前,步長被默認為 1。而如果我們設置步長為 2,則卷積過程如下圖所示:

設步長為 s,填充長度為p, 輸入圖片大小為n x n, 濾波器大小為f x f, 則卷積後圖片的尺寸為:

注意公式中有一個向下取整的符號,用於處理商不為整數的情況。向下取整反映著當取原始矩陣的圖示藍框完全包括在圖像內部時,才對它進行運算。

如果我們想要對三通道的 RGB 圖片進行卷積運算,那麼其對應的濾波器組也同樣是三通道的。過程是將每個單通道(R,G,B)與對應的濾波器進行卷積運算求和,然後再將三個通道的和相加,將 27 個乘積的和作為輸出圖片的一個像素值。

如果想同時檢測垂直和水平邊緣,或者更多的邊緣檢測,可以增加更多的濾波器組。例如設置第一個濾波器組實現垂直邊緣檢測,第二個濾波器組實現水平邊緣檢測。設輸入圖片的尺寸為 n×n×nc(nc為通道數),濾波器尺寸為 f×f×nc,則卷積後的輸出圖片尺寸為 (n−f+1)×(n−f+1)×n′c,n′c為濾波器組的個數。

與之前的卷積過程相比較,卷積神經網路的單層結構多了激活函數和偏移量;而與標准神經網路相比,濾波器的數值對應著權重 W[l],卷積運算對應著 W[l]與 A[l−1]的乘積運算,所選的激活函數變為 ReLU。

對於一個 3x3x3 的濾波器,包括偏移量 b(27+1)在內共有 28 個參數。不論輸入的圖片有多大,用這一個濾波器來提取特徵時,參數始終都是 28 個,固定不變。即選定濾波器組後,參數的數目與輸入圖片的尺寸無關。因此,卷積神經網路的參數相較於標准神經網路來說要少得多。這是 CNN 的優點之一。

圖像中的相鄰像素傾向於具有相似的值,因此通常卷積層相鄰的輸出像素也具有相似的值。這意味著,卷積層輸出中包含的大部分信息都是冗餘的。如果我們使用邊緣檢測濾波器並在某個位置找到強邊緣,那麼我們也可能會在距離這個像素1個偏移的位置找到相對較強的邊緣。但是它們都一樣是邊緣,我們並沒有找到任何新東西。池化層解決了這個問題。這個網路層所做的就是通過減小輸入的大小降低輸出值的數量。池化一般通過簡單的最大值、最小值或平均值操作完成。以下是池大小為2的最大池層的示例:

在計算神經網路的層數時,通常只統計具有權重和參數的層,因此池化層通常和之前的卷積層共同計為一層。

圖中的 FC3 和 FC4 為全連接層,與標準的神經網路結構一致。

個人推薦 一個直觀感受卷積神經網路的網站 。

相比標准神經網路,對於大量的輸入數據,卷積過程有效地減少了 CNN 的參數數量,原因有以下兩點:

-參數共享(Parameter sharing):特徵檢測如果適用於圖片的某個區域,那麼它也可能適用於圖片的其他區域。即在卷積過程中,不管輸入有多大,一個特徵探測器(濾波器)就能對整個輸入的某一特徵進行探測。

-稀疏連接(Sparsity of connections):在每一層中,由於濾波器的尺寸限制,輸入和輸出之間的連接是稀疏的,每個輸出值只取決於輸入在局部的一小部分值。

池化過程則在卷積後很好地聚合了特徵,通過降維來減少運算量。

由於 CNN 參數數量較小,所需的訓練樣本就相對較少,因此在一定程度上不容易發生過擬合現象。並且 CNN 比較擅長捕捉區域位置偏移。即進行物體檢測時,不太受物體在圖片中位置的影響,增加檢測的准確性和系統的健壯性。

在神經網路可以收斂的前提下,隨著網路深度增加,網路的表現先是逐漸增加至飽和,然後迅速下降

需要注意,網路退化問題不是過擬合導致的,即便在模型訓練過程中,同樣的訓練輪次下,退化的網路也比稍淺層的網路的訓練錯誤更高,如下圖所示。

這一點並不符合常理:如果存在某個 K層網路是當前F的最優的網路,我們構造更深的網路。那麼K之後的層數可以擬合成恆等映射,就可以取得和F一直的結果。如果K不是最佳層數,那麼我們比K深,可以訓練出的一定會不差於K的。總而言之,與淺層網路相比,更深的網路的表現不應該更差。因此,一個合理的猜測就是, 對神經網路來說,恆等映射並不容易擬合。

也許我們可以對網路單元進行一定的改造,來改善退化問題?這也就引出了殘差網路的基本思路

既然神經網路不容易擬合一個恆等映射,那麼一種思路就是構造天然的恆等映射。

實驗表明,殘差網路 很好地解決了深度神經網路的退化問題 ,並在ImageNet和CIFAR-10等圖像任務上取得了非常好的結果,同等層數的前提下殘差網路也 收斂得更快 。這使得前饋神經網路可以採用更深的設計。除此之外, 去除個別神經網路層,殘差網路的表現不會受到顯著影響 ,這與傳統的前饋神經網路大相徑庭。

2018年的一篇論文,The Shattered Gradients Problem: If resnets are the answer, then what is the question,指出了一個新的觀點,盡管殘差網路提出是為了解決梯度彌散和網路退化的問題, 它解決的實際上是梯度破碎問題

作者通過可視化的小型實驗(構建和訓練一個神經網路發現,在淺層神經網路中,梯度呈現為棕色雜訊(brown noise),深層神經網路的梯度呈現為白雜訊。在標准前饋神經網路中,隨著深度增加, 神經元梯度的相關性(corelation)按指數級減少 (1 / 2^L) ;同時, 梯度的空間結構也隨著深度增加被逐漸消除 。這也就是梯度破碎現象。

梯度破碎為什麼是一個問題呢?這是因為許多優化方法假設梯度在相鄰點上是相似的,破碎的梯度會大大減小這類優化方法的有效性。另外,如果梯度表現得像白雜訊,那麼某個神經元對網路輸出的影響將會很不穩定。

相較標准前饋網路, 殘差網路中梯度相關性減少的速度從指數級下降到亞線性級 ) (1 / sqrt(L)) ,深度殘差網路中,神經元梯度介於棕色雜訊與白雜訊之間(參見上圖中的c,d,e);殘差連接可以 極大地保留梯度的空間結構 。殘差結構緩解了梯度破碎問題。

1x1 卷積指濾波器的尺寸為 1。當通道數為 1 時,1x1 卷積意味著卷積操作等同於乘積操作。
而當通道數更多時,1x1 卷積的作用實際上類似全連接層的神經網路結構,從而降低(或升高,取決於濾波器組數)數據的維度。

池化能壓縮數據的高度(nH)及寬度(nW),而 1×1 卷積能壓縮數據的通道數(nC)。在如下圖所示的例子中,用 filters個大小為 1×1×32 的濾波器進行卷積,就能使原先數據包含的 32個通道壓縮為 filters 個。

在這之前,網路大都是這樣子的:

也就是卷積層和池化層的順序連接。這樣的話,要想提高精度,增加網路深度和寬度是一個有效途徑,但也面臨著參數量過多、過擬合等問題。(當然,改改超參數也可以提高性能)

有沒有可能在同一層就可以提取不同(稀疏或不稀疏)的特徵呢(使用不同尺寸的卷積核)?於是,2014年,在其他人都還在一味的增加網路深度時(比如vgg),GoogleNet就率先提出了卷積核的並行合並(也稱Bottleneck Layer),如下圖。

和卷積層、池化層順序連接的結構(如VGG網路)相比,這樣的結構主要有以下改進:

按照這樣的結構來增加網路的深度,雖然可以提升性能,但是還面臨計算量大(參數多)的問題。為改善這種現象,GooLeNet借鑒Network-in-Network的思想,使用1x1的卷積核實現降維操作(也間接增加了網路的深度),以此來減小網路的參數量(這里就不對兩種結構的參數量進行定量比較了),如圖所示。

最後實現的inception v1網路是上圖結構的順序連接

由於卷積這門課的其他內容和計算機視覺關系比較密切。對我理解推薦系統幫助不大。所以這個系列就到這里。吳恩達的課還是很好的,作業和課和測驗我都認真做啦。

E. 有視覺障礙如何給電腦加速

視覺障礙如果想電腦加速的話可以期待一下騰訊電腦管家的新功能啊,前倆天管家的公益活動不是炒的挺火么,就是專門關愛視覺障礙人群的,大明星喬振宇還參加了,而且管家還表明會推出視覺障礙人群也能使用的新型功能,不妨保持關注

F. 深度神經網路dnn怎麼調節參數

深度神經網路(DNN)目前是許多現代AI應用的基礎。
自從DNN在語音識別和圖像識別任務中展現出突破性的成果,使用DNN的應用數量呈爆炸式增加。這些DNN方法被大量應用在無人駕駛汽車,癌症檢測,游戲AI等方面。
在許多領域中,DNN目前的准確性已經超過人類。與早期的專家手動提取特徵或制定規則不同,DNN的優越性能來自於在大量數據上使用統計學習方法,從原始數據中提取高級特徵的能力,從而對輸入空間進行有效的表示。

然而,DNN超高的准確性是以超高的計算復雜度為代價的。
通常意義下的計算引擎,尤其是GPU,是DNN的基礎。因此,能夠在不犧牲准確性和增加硬體成本的前提下,提高深度神經網路的能量效率和吞吐量的方法,對於DNN在AI系統中更廣泛的應用是至關重要的。研究人員目前已經更多的將關注點放在針對DNN計算開發專用的加速方法。
鑒於篇幅,本文主要針對論文中的如下幾部分詳細介紹:
DNN的背景,歷史和應用
DNN的組成部分,以及常見的DNN模型
簡介如何使用硬體加速DNN運算
DNN的背景
人工智慧與深度神經網路

深度神經網路,也被稱為深度學習,是人工智慧領域的重要分支,根據麥卡錫(人工智慧之父)的定義,人工智慧是創造像人一樣的智能機械的科學工程。深度學習與人工智慧的關系如圖1所示:

圖1:深度神經網路與人工智慧的關系
人工智慧領域內,一個大的子領域是機器學習,由Arthur Samuel在1959年定義為:讓計算機擁有不需要明確編程即可學習的能力。
這意味著創建一個程序,這個程序可以被訓練去學習如何去做一些智能的行為,然後這個程序就可以自己完成任務。而傳統的人工啟發式方法,需要對每個新問題重新設計程序。
高效的機器學習演算法的優點是顯而易見的。一個機器學習演算法,只需通過訓練,就可以解決某一領域中每一個新問題,而不是對每個新問題特定地進行編程。
在機器學習領域,有一個部分被稱作brain-inspired computation。因為人類大腦是目前學習和解決問題最好的「機器」,很自然的,人們會從中尋找機器學習的方法。
盡管科學家們仍在探索大腦工作的細節,但是有一點被公認的是:神經元是大腦的主要計算單元。
人類大腦平均有860億個神經元。神經元相互連接,通過樹突接受其他神經元的信號,對這些信號進行計算之後,通過軸突將信號傳遞給下一個神經元。一個神經元的軸突分支出來並連接到許多其他神經元的樹突上,軸突分支和樹突之間的連接被稱為突觸。據估計,人類大腦平均有1014-1015個突觸。
突觸的一個關鍵特性是它可以縮放通過它的信號大小。這個比例因子可以被稱為權重(weight),普遍認為,大腦學習的方式是通過改變突觸的權重實現的。因此,不同的權重導致對輸入產生不同的響應。注意,學習過程是學習刺激導致的權重調整,而大腦組織(可以被認為是程序)並不改變。
大腦的這個特徵對機器學習演算法有很好的啟示。
神經網路與深度神經網路

神經元的計算是輸入值的加權和這個概念啟發了神經網路的研究。這些加權和對應於突觸的縮放值以及神經元所接收的值的組合。此外,神經元並不僅僅是輸入信號的加權和,如果是這樣的話,級聯的神經元的計算將是一種簡單的線性代數運算。
相反的是,神經元組合輸入的操作似乎是一種非線性函數,只有輸入達到某個閾值的時候,神經元才會生成輸出。因此,通過類比,我們可以知道神經網路在輸入值的加權和的基礎上應用了非線性函數。
圖2(a)展示了計算神經網路的示意圖,圖的最左邊是接受數值的「輸入層」。這些值被傳播到中間層神經元,通常也叫做網路的「隱藏層」。通過一個或更多隱藏層的加權和最終被傳播到「輸出層」,將神經網路的最終結果輸出給用戶。

圖2:神經網路示意圖

在神經網路領域,一個子領域被稱為深度學習。最初的神經網路通常只有幾層的網路。而深度網路通常有更多的層數,今天的網路一般在五層以上,甚至達到一千多層。
目前在視覺應用中使用深度神經網路的解釋是:將圖像所有像素輸入到網路的第一層之後,該層的加權和可以被解釋為表示圖像不同的低階特徵。隨著層數的加深,這些特徵被組合,從而代表更高階的圖像特徵。
例如,線可以被組合成形狀,再進一步,可以被組合成一系列形狀的集合。最後,再訓練好這些信息之後,針對各個圖像類別,網路給出由這些高階特徵組成各個對象的概率,即分類結果。
推理(Inference)與訓練(Training)
既然DNN是機器學習演算法中的一員,那麼它的基本編程思想仍然是學習。DNN的學習即確定網路的權重值。通常,學習過程被稱為訓練網路(training)。一旦訓練完成,程序可以使用由訓練確定的權值進行計算,這個使用網路完成任務的操作被被稱為推斷(inference)。
接下來,如圖3所示,我們用圖像分類作為例子來展示如何訓練一個深度神經網路。當我們使用一個DNN的時候,我們輸入一幅圖片,DNN輸出一個得分向量,每一個分數對應一個物體分類;得到最高分數的分類意味著這幅圖片最有可能屬於這個分類。
訓練DNN的首要目標就是確定如何設置權重,使得正確分類的得分最高(圖片所對應的正確分類在訓練數據集中標出),而使其他不正確分類的得分盡可能低。理想的正確分類得分與目前的權重所計算出的得分之間的差距被稱為損失函數(loss)。
因此訓練DNN的目標即找到一組權重,使得對一個較大規模數據集的loss最小。

圖3:圖像分類

權重(weight)的優化過程類似爬山的過程,這種方法被稱為梯度下降(gradient decent)。損失函數對每個權值的梯度,即損失函數對每個權值求偏導數,被用來更新權值(例:第t到t+1次迭代:,其中α被稱為學習率(Learning rate)。梯度值表明權值應該如何變化以減小loss。這個減小loss值的過程是重復迭代進行的。
梯度可以通過反向傳播(Back-Propagation)過程很高效地進行計算,loss的影響反向通過網路來計算loss是如何被每個權重影響的。
訓練權重有很多種方法。前面提到的是最常見的方法,被稱為監督學習,其中所有的訓練樣本是有標簽的。
無監督學習是另一種方法,其中所有訓練樣本都沒有標簽,最終目標是在數據中查找結構或聚類。半監督學習結合了兩種方法,只有訓練數據的一小部分被標記(例如,使用未標記的數據來定義集群邊界,並使用少量的標記數據來標記集群)。
最後,強化學習可以用來訓練一個DNN作為一個策略網路,對策略網路給出一個輸入,它可以做出一個決定,使得下一步的行動得到相應的獎勵;訓練這個網路的過程是使網路能夠做出使獎勵(即獎勵函數)最大化的決策,並且訓練過程必須平衡嘗試新行為(Exploration)和使用已知能給予高回報的行為(Exploitation)兩種方法。

用於確定權重的另一種常用方法是fine-tune,使用預先訓練好的模型的權重用作初始化,然後針對新的數據集(例如,傳遞學習)或新的約束(例如,降低的精度)調整權重。與從隨機初始化開始相比,能夠更快的訓練,並且有時會有更好的准確性。

G. 機器學習之人工神經網路演算法

機器學習中有一個重要的演算法,那就是人工神經網路演算法,聽到這個名稱相信大家能夠想到人體中的神經。其實這種演算法和人工神經有一點點相似。當然,這種演算法能夠解決很多的問題,因此在機器學習中有著很高的地位。下面我們就給大家介紹一下關於人工神經網路演算法的知識。
1.神經網路的來源
我們聽到神經網路的時候也時候近一段時間,其實神經網路出現有了一段時間了。神經網路的誕生起源於對大腦工作機理的研究。早期生物界學者們使用神經網路來模擬大腦。機器學習的學者們使用神經網路進行機器學習的實驗,發現在視覺與語音的識別上效果都相當好。在BP演算法誕生以後,神經網路的發展進入了一個熱潮。
2.神經網路的原理
那麼神經網路的學習機理是什麼?簡單來說,就是分解與整合。一個復雜的圖像變成了大量的細節進入神經元,神經元處理以後再進行整合,最後得出了看到的是正確的結論。這就是大腦視覺識別的機理,也是神經網路工作的機理。所以可以看出神經網路有很明顯的優點。
3.神經網路的邏輯架構
讓我們看一個簡單的神經網路的邏輯架構。在這個網路中,分成輸入層,隱藏層,和輸出層。輸入層負責接收信號,隱藏層負責對數據的分解與處理,最後的結果被整合到輸出層。每層中的一個圓代表一個處理單元,可以認為是模擬了一個神經元,若干個處理單元組成了一個層,若干個層再組成了一個網路,也就是」神經網路」。在神經網路中,每個處理單元事實上就是一個邏輯回歸模型,邏輯回歸模型接收上層的輸入,把模型的預測結果作為輸出傳輸到下一個層次。通過這樣的過程,神經網路可以完成非常復雜的非線性分類。
4.神經網路的應用。
圖像識別領域是神經網路中的一個著名應用,這個程序是一個基於多個隱層構建的神經網路。通過這個程序可以識別多種手寫數字,並且達到很高的識別精度與擁有較好的魯棒性。可以看出,隨著層次的不斷深入,越深的層次處理的細節越低。但是進入90年代,神經網路的發展進入了一個瓶頸期。其主要原因是盡管有BP演算法的加速,神經網路的訓練過程仍然很困難。因此90年代後期支持向量機演算法取代了神經網路的地位。
在這篇文章中我們大家介紹了關於神經網路的相關知識,具體的內容就是神經網路的起源、神經網路的原理、神經網路的邏輯架構和神經網路的應用,相信大家看到這里對神經網路知識有了一定的了解,希望這篇文章能夠幫助到大家。

閱讀全文

與如何給視覺應用中的神經網路加速相關的資料

熱點內容
公共網路延時特別高怎麼辦 瀏覽:541
日本蘋果4網路設置 瀏覽:724
天童美語網路上課軟體 瀏覽:254
網路合夥人如何找 瀏覽:169
帶無線路由器網路信號弱 瀏覽:384
如何用電話知道對方網路密碼 瀏覽:118
九江公安局網路安全支隊 瀏覽:994
無線網路連接密碼錯誤 瀏覽:428
隨身wifi沒有網路怎麼用 瀏覽:36
如何切換至廣電網路信號 瀏覽:314
網路收款助手在哪裡 瀏覽:300
移動網路設置接哪個位置 瀏覽:20
網路安全宣傳語錄簡短 瀏覽:310
網路上虛擬視頻用哪一個軟體 瀏覽:464
蘋果xsmax網路天線在哪裡 瀏覽:692
移動網路無法使用電信dns解析 瀏覽:663
4g網路如何解析信號 瀏覽:137
移動的網路台式電腦掉線 瀏覽:952
注冊微信網路打不開什麼原因 瀏覽:544
王者榮耀手機網路模式怎麼設置 瀏覽:362

友情鏈接