1、全連接神經網路解析:對n-1層和n層而言,n-1層的任意一個節點,都和第n層所有節點有連接。即第n層的每個節點在進行計算的時候,激活函數的輸入是n-1層所有節點的加權。
2、全連接的神經網路示意圖:
3、「全連接」是一種不錯的模式,但是網路很大的時候,訓練速度回很慢。部分連接就是認為的切斷某兩個節點直接的連接,這樣訓練時計算量大大減小。
『貳』 第一代圖卷積網路:圖的頻域網路與深度局部連接網路
本文需要的前置知識:傅里葉變換與譜圖理論基礎
鏈接:
① 傅里葉級數與傅里葉變換
② 圖神經網路中的譜圖理論基礎
CNN在機器學習領域內的一些問題上取得了比較成功的效果,這主要得益於它處理的底層數據通常有一個坐標網格結構(在1,2,3維度上),因此這些數據就存在平移不變性( translational equivariance/invariance)。圖像、語音、視頻就屬於這一類數據。由於網路不具備平移不變性(網路中的每個節點的鄰居數量是不固定的),因此在網路上直接應用CNN是比較困難的。
對於常規的網格數據,CNN能夠利用以下幾個很好地結合在一起的結構來大大減少系統中的參數數量:
①平移結構(translation structure),使用濾波器在數據的網格結構上平移處理數據,從而實現參數共享,並沒有使用線性映射;
②網格上的度量,使用緊湊支持濾波器(compactly supported filters),緊湊支持濾波器是指與輸入數據大小無關的濾波器,它的大小可能遠小於輸入數據的大小;
③網格的多尺度二元聚類(multiscale dyadic clustering),是指CNN應用了跨步卷積(stride convolution)和池化(pooling)來進行下采樣(subsampling)。
如果網格數據有 個坐標,數據的維度為 (舉例來說,圖片的坐標數就是像素點數,維度就是圖片的通道數,彩色圖為 ,灰度圖為 ),如果使用有 的輸出節點的全連接網路就需要 個參數,相當於 的參數復雜度。使用任意的濾波器(也就是①)而非全連接網路能將參數復雜度降低到 ,使用網格上的度量結構(也就是②)來構建局部連接網路也可以。而如果兩種一起使用能夠將復雜度降低到 ,這里的 代表數據feature map的數量, 代表卷積核的數量,此時復雜度與 無關。最後使用網格的多尺度二元聚類(也就是③)可以進一步降低復雜度。
然而某些數據並不具備上述幾何結構,比如表面張力或溫度、從一個氣象台網路中觀測到的數據、來自社交網路或協同過濾的數據,這些數據都不能直接應用CNN。雖然CNN可以應用於多層,但是在特徵維度上沒有假設任何幾何屬性,導致一個4-D tensor只能沿其空間坐標進行卷積,即對於一個4-D的tensor而言,其有 四個維度,典型的CNN只能對 三個維度(即空間維度)進行卷積操作(通過3D convolution 操作),而不能對 維度(特徵維度)進行操作。
網路提供了低維網格數據的一種泛化的框架,也就是GCN是CNN在domain上的推廣,推廣的方式是通過推廣卷積的概念。在本文中將會討論將深度卷積應用於網路數據的方法。本文一共提供兩種架構。第一種為空域架構(spatial construction),這種架構能夠對網路數據應用上述②和③,應用它們可以構建網路數據的局部連接網路,參數復雜度為 而非 。另一種架構稱為頻域架構(spectral construction),能夠在傅里葉域內應用卷積。頻域架構對於每一個feature map最多需要 的參數復雜度,也可以構建參數數量與 無關的架構。這兩種架構都可以應用高效的前向傳播並且能夠應用在有多個坐標的數據的數據集上。
網路數據將由一個加權圖 來表示, 是一個離散的節點集合,大小為 , 是一個對稱半正定矩陣,也就是加權鄰接矩陣。將CNN泛化到網路數據的最直接想法是應用多尺度的、層級的局部感受野。
在網路上可以輕松的定義局部性(locality)的概念。邊的權重決定了節點的局部性,舉例來說,可以設置一個閾值 來決定一個節點的鄰居節點集合:
我們可以將注意力限制在稀疏的濾波器上,這些濾波器通過節點的鄰居節點集合來定義感受野,以此來構建局部連接網路,這樣可以將參數量降低為 ,這里的 代表平均鄰居節點數量。
CNN通過池化和下采樣來降低網格的大小,這一操作也就是網格的多尺度聚類( multiscale clustering):為每個cluster輸入多個特徵,輸出一個特徵。在圖上被證明更為有效的聚類方法仍然有待研究,在本文中選擇了一種比較樸素的聚類方法。如下圖所示,下圖中有兩層聚類,灰色的點為數據中的無向圖節點,然後進行聚類得到下一層帶顏色的節點,然後再對這些帶顏色的節點進行聚類,第一層為12個節點,第二層6個節點,第三層3個節點:
本文提出的空域架構也叫做深度局部連接網路(Deep Locally Connected Networks)。在這個架構中使用了網路的多尺度聚類,事實上這里的尺度可以認為是下采樣的層數,在這里我們考慮 個尺度,實際上也就是說這個架構由 個卷積層,每個卷積層後面都有一個池化層(也就是進行一次聚類),因此這個架構中總共有 層,每層包括一個個卷積層和一個池化層。
我們設置 ,也就是輸入層的節點集合,可以認為是第0層,每一層的節點集合記作 ,這里 , 可以認為是將 聚成 個簇的一個劃分,因此 就表示第 層的節點個數,有 。另外定義 的節點的鄰居節點集合的表示:
注意這里 的下標雖然為 ,但它代表的是第 的節點集合 的每個節點的鄰域的表示,裡面的每個 都是一個集合。
有了上述定義現在我們可以定義網路的第 層。假設輸入信號是 上的實值信號,以 來代表第 層的卷積核的數量,也代表了第 層feature map的數量和信號的維度(類比CNN,卷積核的數量等於feature map的數量,也就是卷積後的信號特徵的維度)。每一層都會將 上的 維的信號轉換成 上的 維的信號,這一過程會權衡空間解析度和新創建的特徵坐標,也就是說,雖然經過每一層的節點數量降低了,但是卷積核的數量會逐層增加以保證特徵的維度會增加,也就是說每層有兩個結果:
①空間解析度降低(loses spatial resolution),即空間點數減少;
②濾波器數目增加(increases the number of filters),即每個點特徵數 增加。
第 層的輸入用 來表示,這里的 是一個 的矩陣, 可以認為是一個列向量, 也就相當於第 個feature map的信號。那麼第 層的輸出 就被定義為:
這里的 代表第 層的第 個卷積核對第 層的第 個feature map進行卷積的部分,注意由於圖的節點的鄰居分布情況不同,所以卷積核不像CNN那樣是共享的。這里的 是一個 的稀疏矩陣,矩陣的第 行的非零值都只會存在於 所指定的第 個節點的鄰居節點位置。 代表非線性激活函數。 代表對卷積的結果進行之前所述的池化操作來降低節點的數量, 相當於聚類的結果,是一個 的稀疏矩陣,每一行指示一個簇的分布,如果採用平均池化,那麼 的一個例子( )可以是:
整個過程可以用下圖來表示:
另外通過以下過程構建第 層的 和 :
這里 的計算過程是指:由於 中的節點來自 中的節點的聚類,所以 之間的權重是 和 對應的聚類之前的 中節點之間所有權重的累加。 是對 的聚類,圖聚類的方法是多種多樣的,可以自行選取,這里的方法是採用 的 - covering,使用核函數 的 的 - covering是一個劃分 ,滿足:
以 代表平均節點數量,那麼第 層用來學習的參數量為:
實踐中通常有 , 是下采樣因子,滿足 。
這種架構的優點在於不需要很強的前提假設,只需要圖具備鄰域結構即可,甚至不需要很好的embedding向量。但是缺點在於沒辦法進行參數共享,對於每一層的每一個節點都要有單獨的參數進行卷積而不能像CNN那樣使用同一個卷積核在數據網格上進行平移。
在這里,以 代表圖的度矩陣, 代表圖的加權鄰接矩陣,常用的圖的拉普拉斯矩陣有三種:
①Combinatorial Laplacian,也就是普通形式的拉普拉斯矩陣:
其中的元素為:
②Symmetric normalized Laplacian,也就是對稱歸一化的拉普拉斯矩陣:
其中的元素為:
③Random walk normalized Laplacian,也就是隨機遊走歸一化拉普拉斯矩陣:
其中的元素為:
為簡便起見,本文應用的是第①種。對於一個固定的加權鄰接矩陣 ,不同的節點信號列向量 (也就是說網路有 個節點)有不同的平滑性(smoothness)度量 ,在節點 處的平滑性度量為:
所有信號的平滑性度量為:
其實 也就是 ,關於拉普拉斯矩陣與信號平滑性的關系已經在本文開頭給出的文章鏈接里介紹過了,這里不再贅述。
有了上面的公式我們可以得出最平滑的信號 其實是一個歸一化的全 向量:
事實上 空間中最平滑的 個相互正交的單位向量其實就是 的特徵向量:
每個特徵向量 的平滑性度量的值其實也就是特徵值 ,這一點只需要代入計算一下就可以得出,拉普拉斯矩陣的譜分解為 ,這里的 為特徵值構成的對角矩陣, 為特徵向量構成的正交矩陣, 的每一列都是一個特徵向量,那麼 計算一下就可以得到等於特徵值 ,因此最平滑的信號向量就是特徵值最小的特徵向量,拉普拉斯矩陣的特徵值就代表了特徵向量的平滑度。
上面提到的一組特徵向量其實就是 空間的一組基,前面的文章里說過圖傅里葉變換其實就是將信號向量投影到拉普拉斯矩陣的各個特徵向量上:
特徵值的大小表示平滑程度,它對應傳統傅里葉變換中的頻率,頻率高表示短時間內變動多,和這里的相鄰節點變動大(變動越大越不平滑)能對應起來。因此圖傅里葉變換就是在將一個圖信號分解到不同平滑程度的圖信號上,就像傳統傅里葉變換將函數分解到不同頻率的函數上一樣。
一個任意信號向量 分解到所有的特徵向量上對應的每個系數用 ( ,這些系數也就是圖傅里葉變換後的系數)表示, 可以表示為 ,也就是 ,那麼 的平滑性度量的值可以用這些系數和特徵值表示:
兩個函數 和 進行卷積可以應用卷積定理,用公式表達卷積定理就是:
應用卷積定理可以在頻域上進行圖的卷積操作,具體的方法是將濾波器 和圖信號 都通過圖傅里葉變換轉換到頻域然後計算轉換後的結果的乘積(哈達瑪積,也就是向量對應元素相乘),然後將相乘的結果再通過圖傅里葉逆變換轉換回空域,整個過程如下:
這里將 組織成對角矩陣 , 也就是神經網路要學習的參數。
在這里我們仍然使用 來代表網路的第 層, , 仍然代表卷積核的數量。這種架構的卷積的過程主要依照卷積定理,首先來描述卷積的過程,之後再描述如何進行下采樣,因此現在假設第 層和第 層的節點數都是 ,那麼第 層的輸入 就是一個 的矩陣,輸出 就是一個 的矩陣。第 層的計算過程可以表示為:
這里的 仍然相當於第 個feature map的信號。 也就是第 個卷積核中對第 個feature map進行卷積的部分,每一個 都是一個對角矩陣,其實就是前面的 ,這里之所以有一個連加號是因為要將多個feature map的結果累加起來, 仍然表示非線性激活,另外這里的 的每一列的特徵向量是按照特徵值的大小依次排列的(降序)。
通常只有拉普拉斯矩陣的前 個特徵向量是有意義的,因為後面的特徵向量對應的特徵值比較小,特徵向量非常的平滑,因此在實際中可以取拉普拉斯矩陣的前 列構成的矩陣 代替 ,這個過程就相當於頻域架構的下采樣的過程,這里的 就相當於空域架構中的 ,每一層可以取不同的值。按照目前這種架構所需的參數復雜度為 。
本文中提出的兩種架構在兩個數據集上進行了實驗驗證效果。具體實驗設置參看原論文,這里不做贅述。
這個數據集是從MNIST數據集的每張圖片( )上采樣 個樣本點構建圖。實驗樣本如下圖:
實驗結果如下圖所示:
這個數據集將MNIST數據集中的樣本提升到3維空間中。實驗樣本如下圖:
實驗結果如下圖所示:
ref: 圖傅里葉變換
ref: paper reading:[第一代GCN] Spectral Networks and Deep Locally Connected Networks on Graphs
『叄』 為什麼全連接神經網路在圖像識別中不如卷積神經網路
輸入數據是n*n的像素矩陣,再使用全連接神經網路,那麼參數的個數會是指數級的增長,需要訓練的數據太多。
而CNN的話,可以通過共享同一個參數,來提取特定方向上的特徵,所以訓練量將比全連接神經網路小了很多。
『肆』 網路矩陣問題
1、連接方式沒錯,矩陣一個解碼100個攝像機不現實,而且100個攝像機大概在500M左右的每秒碼流,要多個矩陣解碼才行。
2、目前的網路矩陣直接連到交換機就可以,但是交換機的轉發能力和網路介面要千兆級。
3、不用太高的矩陣,一般解析16或者32路的矩陣就可以。
4、矩陣最好對應你的攝像機和錄像機品牌。
5、錄像機和矩陣可以同時訪問攝像機,不會沖突。
『伍』 什麼叫互聯矩陣 網路方面
網路矩陣是將網路視頻信號轉換為數字視頻信號在液晶電視牆上顯示的設備.網路矩陣又叫網路數字矩陣.是以視頻編碼軟體代替模擬矩陣中的視頻輸入模式,以數字高速處理CPU代替模擬電開關,以視頻解碼軟體代替模擬矩陣中的視頻輸入模塊,以網路矩陣主機代替模擬矩陣主機,以基於TCP/IP協議的IP網代替模 擬匯流排(或模擬視頻匯流排結合IP控制匯流排),運用計算機高速處理晶元的運算完成視頻從輸入到輸出的切換設備.
『陸』 理解神經網路卷積層、全連接層
https://zhuanlan.hu.com/p/32472241
卷積神經網路,這玩意兒乍一聽像是生物和數學再帶點計算機技術混合起來的奇怪東西。奇怪歸奇怪,不得不說,卷積神經網路是計算機視覺領域最有影響力的創造之一。
2012年是卷積神經網路崛起之年。這一年,Alex Krizhevsky帶著卷積神經網路參加了ImageNet競賽(其重要程度相當於奧運會)並一鳴驚人,將識別錯誤率從26%降到了15%,。從那開始,很多公司開始使用深度學習作為他們服務的核心。比如,Facebook在他們的自動標記演算法中使用了它,Google在照片搜索中使用了,Amazon在商品推薦中使用,Printerst應用於為他們的家庭飼養服務提供個性化定製,而Instagram應用於他們的搜索引擎。
然而,神經網路最開始也是最多的應用領域是圖像處理。那我們就挑這塊來聊聊,怎樣使用卷積神經網路(下面簡稱CNN)來進行圖像分類。
圖像分類是指,向機器輸入一張圖片,然後機器告訴我們這張圖片的類別(一隻貓,一條狗等等),或者如果它不確定的話,它會告訴我們屬於某個類別的可能性(很可能是條狗但是我不太確定)。對我們人類來說,這件事情簡單的不能再簡單了,從出生起,我們就可以很快地識別周圍的物體是什麼。當我們看到一個場景,我們總能快速地識別出所有物體,甚至是下意識的,沒有經過有意的思考。但這種能力,機器並不具有。所以我們更加要好好珍惜自己的大腦呀! (:зゝ∠)
電腦和人看到的圖片並不相同。當我們輸入一張圖片時,電腦得到的只是一個數組,記錄著像素的信息。數組的大小由圖像的清晰度和大小決定。假設我們有一張jpg格式的480 480大小的圖片,那麼表示它的數組便是480 480*3大小的。數組中所有數字都描述了在那個位置處的像素信息,大小在[0,255]之間。
這些數字對我們來說毫無意義,但這是電腦們可以得到的唯一的信息(也足夠了)。抽象而簡單的說,我們需要一個接受數組為輸入,輸出一個數組表示屬於各個類別概率的模型。
既然問題我們已經搞明白了,現在我們得想想辦法解決它。我們想讓電腦做的事情是找出不同圖片之間的差別,並可以識別狗狗(舉個例子)的特徵。
我們人類可以通過一些與眾不同的特徵來識別圖片,比如狗狗的爪子和狗有四條腿。同樣地,電腦也可以通過識別更低層次的特徵(曲線,直線)來進行圖像識別。電腦用卷積層識別這些特徵,並通過更多層卷積層結合在一起,就可以像人類一樣識別出爪子和腿之類的高層次特徵,從而完成任務。這正是CNN所做的事情的大概脈絡。下面,我們進行更具體的討論。
在正式開始之前,我們先來聊聊CNN的背景故事。當你第一次聽說卷積神經網路的時候,你可能就會聯想到一些與神經學或者生物學有關的東西,不得不說,卷積神經網路還真的與他們有某種關系。
CNN的靈感的確來自大腦中的視覺皮層。視覺皮層某些區域中的神經元只對特定視野區域敏感。1962年,在一個Hubel與Wiesel進行的試驗( 視頻 )中,這一想法被證實並且拓展了。他們發現,一些獨立的神經元只有在特定方向的邊界在視野中出現時才會興奮。比如,一些神經元在水平邊出現時興奮,而另一些只有垂直邊出現時才會。並且所有這種類型的神經元都在一個柱狀組織中,並且被認為有能力產生視覺。
在一個系統中,一些特定的組件發揮特定的作用(視覺皮層中的神經元尋找各自特定的特徵)。這一想法應用於很多機器中,並且也是CNN背後的基本原理。 (譯者註:作者沒有說清楚。類比到CNN中,應是不同的卷積核尋找圖像中不同的特徵)
回到主題。
更詳細的說,CNN的工作流程是這樣的:你把一張圖片傳遞給模型,經過一些卷積層,非線性化(激活函數),池化,以及全連層,最後得到結果。就像我們之前所說的那樣,輸出可以是單獨的一個類型,也可以是一組屬於不同類型的概率。現在,最不容易的部分來了:理解各個層的作用。
首先,你要搞清楚的是,什麼樣的數據輸入了卷積層。就像我們之前提到的那樣,輸入是一個32 × 32 × 3(打個比方)的記錄像素值的數組。現在,讓我來解釋卷積層是什麼。解釋卷積層最好的方法,是想像一個手電筒照在圖片的左上角。讓我們假設手電筒的光可以招到一個5 × 5的區域。現在,讓我們想像這個手電筒照過了圖片的所有區域。在機器學習術語中,這樣一個手電筒被稱為卷積核(或者說過濾器,神經元) (kernel, filter, neuron) 。而它照到的區域被稱為感知域 (receptive field) 。卷積核同樣也是一個數組(其中的數被稱為權重或者參數)。很重要的一點就是卷積核的深度和輸入圖像的深度是一樣的(這保證可它能正常工作),所以這里卷積核的大小是5 × 5 × 3。
現在,讓我們拿卷積核的初始位置作為例子,它應該在圖像的左上角。當卷積核掃描它的感知域(也就是這張圖左上角5 × 5 × 3的區域)的時候,它會將自己保存的權重與圖像中的像素值相乘(或者說,矩陣元素各自相乘,注意與矩陣乘法區分),所得的積會相加在一起(在這個位置,卷積核會得到5 × 5 × 3 = 75個積)。現在你得到了一個數字。然而,這個數字只表示了卷積核在圖像左上角的情況。現在,我們重復這一過程,讓卷積核掃描完整張圖片,(下一步應該往右移動一格,再下一步就再往右一格,以此類推),每一個不同的位置都產生了一個數字。當掃描完整張圖片以後,你會得到一組新的28 × 28 × 1的數。 (譯者註:(32 - 5 + 1) × (32 - 5 + 1) × 1) 。這組數,我們稱為激活圖或者特徵圖 (activation map or feature map) 。
如果增加卷積核的數目,比如,我們現在有兩個卷積核,那麼我們就會得到一個28 × 28 × 2的數組。通過使用更多的卷積核,我們可以更好的保留數據的空間尺寸。
在數學層面上說,這就是卷積層所做的事情。
讓我們來談談,從更高角度來說,卷積在做什麼。每一個卷積核都可以被看做特徵識別器。我所說的特徵,是指直線、簡單的顏色、曲線之類的東西。這些都是所有圖片共有的特點。拿一個7 × 7 × 3的卷積核作為例子,它的作用是識別一種曲線。(在這一章節,簡單起見,我們忽略卷積核的深度,只考慮第一層的情況)。作為一個曲線識別器,這個卷積核的結構中,曲線區域內的數字更大。(記住,卷積核是一個數組)
現在我們來直觀的看看這個。舉個例子,假設我們要把這張圖片分類。讓我們把我們手頭的這個卷積核放在圖片的左上角。
記住,我們要做的事情是把卷積核中的權重和輸入圖片中的像素值相乘。
(譯者註:圖中最下方應是由於很多都是0所以把0略過不寫了。)
基本上,如果輸入圖像中有與卷積核代表的形狀很相似的圖形,那麼所有乘積的和會很大。現在我們來看看,如果我們移動了卷積核呢?
可以看到,得到的值小多了!這是因為感知域中沒有與卷積核表示的相一致的形狀。還記得嗎,卷積層的輸出是一張激活圖。所以,在單卷積核卷積的簡單情況下,假設卷積核是一個曲線識別器,那麼所得的激活圖會顯示出哪些地方最有可能有曲線。在這個例子中,我們所得激活圖的左上角的值為6600。這樣大的數字表明很有可能這片區域中有一些曲線,從而導致了卷積核的激活 (譯者註:也就是產生了很大的數值。) 而激活圖中右上角的數值是0,因為那裡沒有曲線來讓卷積核激活(簡單來說就是輸入圖像的那片區域沒有曲線)。
但請記住,這只是一個卷積核的情況,只有一個找出向右彎曲的曲線的卷積核。我們可以添加其他卷積核,比如識別向左彎曲的曲線的。卷積核越多,激活圖的深度就越深,我們得到的關於輸入圖像的信息就越多。
在傳統的CNN結構中,還會有其他層穿插在卷積層之間。我強烈建議有興趣的人去閱覽並理解他們。但總的來說,他們提供了非線性化,保留了數據的維度,有助於提升網路的穩定度並且抑制過擬合。一個經典的CNN結構是這樣的:
網路的最後一層很重要,我們稍後會講到它。
現在,然我們回頭看看我們已經學到了什麼。
我們講到了第一層卷積層的卷積核的目的是識別特徵,他們識別像曲線和邊這樣的低層次特徵。但可以想像,如果想預測一個圖片的類別,必須讓網路有能力識別高層次的特徵,例如手、爪子或者耳朵。讓我們想想網路第一層的輸出是什麼。假設我們有5個5 × 5 × 3的卷積核,輸入圖像是32 × 32 × 3的,那麼我們會得到一個28 × 28 × 5的數組。來到第二層卷積層,第一層的輸出便成了第二層的輸入。這有些難以可視化。第一層的輸入是原始圖片,可第二層的輸入只是第一層產生的激活圖,激活圖的每一層都表示了低層次特徵的出現位置。如果用一些卷積核處理它,得到的會是表示高層次特徵出現的激活圖。這些特徵的類型可能是半圓(曲線和邊的組合)或者矩形(四條邊的組合)。隨著卷積層的增多,到最後,你可能會得到可以識別手寫字跡、粉色物體等等的卷積核。
如果,你想知道更多關於可視化卷積核的信息,可以看這篇 研究報告 ,以及這個 視頻 。
還有一件事情很有趣,當網路越來越深,卷積核會有越來越大的相對於輸入圖像的感知域。這意味著他們有能力考慮來自輸入圖像的更大范圍的信息(或者說,他們對一片更大的像素區域負責)。
到目前為止,我們已經識別出了那些高層次的特徵吧。網路最後的畫龍點睛之筆是全連層。
簡單地說,這一層接受輸入(來自卷積層,池化層或者激活函數都可以),並輸出一個N維向量,其中,N是所有有可能的類別的總數。例如,如果你想寫一個識別數字的程序,那麼N就是10,因為總共有10個數字。N維向量中的每一個數字都代表了屬於某個類別的概率。打個比方,如果你得到了[0 0.1 0.1 0.75 0 0 0 0 0 0.05],這代表著這張圖片是1的概率是10%,是2的概率是10%,是3的概率是75%,是9的概率5%(小貼士:你還有其他表示輸出的方法,但現在我只拿softmax (譯者註:一種常用於分類問題的激活函數) 來展示)。全連層的工作方式是根據上一層的輸出(也就是之前提到的可以用來表示特徵的激活圖)來決定這張圖片有可能屬於哪個類別。例如,如果程序需要預測哪些圖片是狗,那麼全連層在接收到一個包含類似於一個爪子和四條腿的激活圖時輸出一個很大的值。同樣的,如果要預測鳥,那麼全連層會對含有翅膀和喙的激活圖更感興趣。
基本上,全連層尋找那些最符合特定類別的特徵,並且具有相應的權重,來使你可以得到正確的概率。
現在讓我們來說說我之前有意沒有提到的神經網路的可能是最重要的一個方面。剛剛在你閱讀的時候,可能會有一大堆問題想問。第一層卷積層的卷積核們是怎麼知道自己該識別邊還是曲線的?全連層怎麼知道該找哪一種激活圖?每一層中的參數是怎麼確定的?機器確定參數(或者說權重)的方法叫做反向傳播演算法。
在講反向傳播之前,我們得回頭看看一個神經網路需要什麼才能工作。我們出生的時候並不知道一條狗或者一隻鳥長什麼樣。同樣的,在CNN開始之前,權重都是隨機生成的。卷積核並不知道要找邊還是曲線。更深的卷積層也不知道要找爪子還是喙。
等我們慢慢長大了,我們的老師和父母給我們看不同的圖片,並且告訴我們那是什麼(或者說,他們的類別)。這種輸入一幅圖像以及這幅圖像所屬的類別的想法,是CNN訓練的基本思路。在細細講反向傳播之前,我們先假設我們有一個包含上千張不同種類的動物以及他們所屬類別的訓練集。
反向傳播可以被分成四個不同的部分。前向傳播、損失函數、反向傳播和權重更新。
在前向傳播的階段,我們輸入一張訓練圖片,並讓它通過整個神經網路。對於第一個輸入圖像,由於所有權重都是隨機生成的,網路的輸出很有可能是類似於[.1 .1 .1 .1 .1 .1 .1 .1 .1 .1]的東西,一般來說並不對任一類別有偏好。具有當前權重的網路並沒有能力找出低層次的特徵並且總結出可能的類別。
下一步,是損失函數部分。注意,我們現在使用的是訓練數據。這些數據又有圖片又有類別。打個比方,第一張輸入的圖片是數字「3」。那麼它的標簽應該是[0 0 0 1 0 0 0 0 0 0]。一個損失函數可以有很多定義的方法,但比較常見的是MSE(均方誤差)。被定義為(實際−預測)22(實際−預測)22。
記變數L為損失函數的值。正如你想像的那樣,在第一組訓練圖片輸入的時候,損失函數的值可能非常非常高。來直觀地看看這個問題。我們想到達CNN的預測與數據標簽完全一樣的點(這意味著我們的網路預測的很對)。為了到達那裡,我們想要最小化誤差。如果把這個看成一個微積分問題,那我們只要找到哪些權重與網路的誤差關系最大。
這就相當於數學中的δLδWδLδW (譯者註:對L關於W求導) ,其中,W是某個層的權重。現在,我們要對網路進行 反向傳播 。這決定了哪些權重與誤差的關系最大,並且決定了怎樣調整他們來讓誤差減小。計算完這些導數以後,我們就來到了最後一步: 更新權重 。在這里,我們以與梯度相反的方向調整層中的權重。
學習率是一個有程序員決定的參數。一個很高的學習率意味著權重調整的幅度會很大,這可能會讓模型更快的擁有一組優秀的權重。然而,一個太高的學習率可能會讓調整的步伐過大,而不能精確地到達最佳點。
前向傳播、損失函數、反向傳播和更新權重,這四個過程是一次迭代。程序會對每一組訓練圖片重復這一過程(一組圖片通常稱為一個batch)。當對每一張圖片都訓練完之後,很有可能你的網路就已經訓練好了,權重已經被調整的很好。
最後,為了驗證CNN是否工作的很好,我們還有另一組特殊的數據。我們把這組數據中的圖片輸入到網路中,得到輸出並和標簽比較,這樣就能看出網路的表現如何了。
『柒』 剛入手一Blackmagic Design的矩陣,通過網路連接電腦,不知道怎麼設置
1、電腦安裝軟體,打開Blackmagic
Videohub
用USB線把電腦和矩陣連接。
2、在菜單欄里找到【videohub
Server
Preferences】
3、【Videohub
ServerConfiguration】下設定Videhub的IP地址
4、【Use
Locally
connected
Videohub】前不要打勾!!
5、【Remote
Videohub
IP
address】後輸入Videohub的IP地址就可以了
一台電腦不可以同時使用USB和網路一起控制
『捌』 視頻矩陣怎樣連接組網
首先聯網的矩陣需具備網路介面及兼容組網功能。組網一般是主從結構,從機矩陣的視頻輸出口連接到主機矩陣的視頻輸入口,在主機的矩陣鍵盤上可以切換從機的輸入輸出視頻到監控中心。
視頻矩陣之間組網需要視頻線和網路線連接。
『玖』 視頻矩陣,交換機,拼接屏,電腦,怎麼連接
第一種情況:硬信號介面的視頻矩陣
視頻矩陣是用於切換信號源的,一般是電腦或者其他信號源直接輸入到矩陣的「IN」,再由"OUT「直接輸出到拼接屏的輸入介面,可以是HDMI、DVI、VGA或者BNC根據視頻矩陣的介面來。
第二種情況:解碼視頻矩陣
網路及攝像機信號,全部接入交換機,然後再由交換機輸出網線到解碼視頻矩陣,然後再由視頻矩陣接入拼接屏,而電腦則連接矩陣串口起到控制的作用!
『拾』 卷積神經網路的 卷積層、激活層、池化層、全連接層
數據輸入的是一張圖片(輸入層),CONV表示卷積層,RELU表示激勵層,POOL表示池化層,Fc表示全連接層
全連接神經網路需要非常多的計算資源才能支撐它來做反向傳播和前向傳播,所以說全連接神經網路可以存儲非常多的參數,如果你給它的樣本如果沒有達到它的量級的時候,它可以輕輕鬆鬆把你給他的樣本全部都記下來,這會出現過擬合的情況。
所以我們應該把神經元和神經元之間的連接的權重個數降下來,但是降下來我們又不能保證它有較強的學習能力,所以這是一個糾結的地方,所以有一個方法就是 局部連接+權值共享 ,局部連接+權值共享不僅權重參數降下來了,而且學習能力並沒有實質的降低,除此之外還有其它的好處,下來看一下,下面的這幾張圖片:
一個圖像的不同表示方式
這幾張圖片描述的都是一個東西,但是有的大有的小,有的靠左邊,有的靠右邊,有的位置不同,但是我們構建的網路識別這些東西的時候應該是同一結果。為了能夠達到這個目的,我們可以讓圖片的不同位置具有相同的權重(權值共享),也就是上面所有的圖片,我們只需要在訓練集中放一張,我們的神經網路就可以識別出上面所有的,這也是 權值共享 的好處。
而卷積神經網路就是局部連接+權值共享的神經網路。
現在我們對卷積神經網路有一個初步認識了,下面具體來講解一下卷積神經網路,卷積神經網路依舊是層級結構,但層的功能和形式做了改變,卷積神經網路常用來處理圖片數據,比如識別一輛汽車:
在圖片輸出到神經網路之前,常常先進行圖像處理,有 三種 常見的圖像的處理方式:
均值化和歸一化
去相關和白化
圖片有一個性質叫做局部關聯性質,一個圖片的像素點影響最大的是它周邊的像素點,而距離這個像素點比較遠的像素點二者之間關系不大。這個性質意味著每一個神經元我們不用處理全局的圖片了(和上一層全連接),我們的每一個神經元只需要和上一層局部連接,相當於每一個神經元掃描一小區域,然後許多神經元(這些神經元權值共享)合起來就相當於掃描了全局,這樣就構成一個特徵圖,n個特徵圖就提取了這個圖片的n維特徵,每個特徵圖是由很多神經元來完成的。
在卷積神經網路中,我們先選擇一個局部區域(filter),用這個局部區域(filter)去掃描整張圖片。 局部區域所圈起來的所有節點會被連接到下一層的 一個節點上 。我們拿灰度圖(只有一維)來舉例:
局部區域
圖片是矩陣式的,將這些以矩陣排列的節點展成了向量。就能更好的看出來卷積層和輸入層之間的連接,並不是全連接的,我們將上圖中的紅色方框稱為filter,它是2*2的,這是它的尺寸,這不是固定的,我們可以指定它的尺寸。
我們可以看出來當前filter是2*2的小窗口,這個小窗口會將圖片矩陣從左上角滑到右下角,每滑一次就會一下子圈起來四個,連接到下一層的一個神經元,然後產生四個權重,這四個權重(w1、w2、w3、w4)構成的矩陣就叫做卷積核。
卷積核是演算法自己學習得到的,它會和上一層計算,比如,第二層的0節點的數值就是局部區域的線性組合(w1 0+w2 1+w3 4+w4 5),即被圈中節點的數值乘以對應的權重後相加。
卷積核計算
卷積操作
我們前面說過圖片不用向量表示是為了保留圖片平面結構的信息。 同樣的,卷積後的輸出若用上圖的向量排列方式則丟失了平面結構信息。 所以我們依然用矩陣的方式排列它們,就得到了下圖所展示的連接,每一個藍色結點連接四個黃色的結點。
卷積層的連接方式
圖片是一個矩陣然後卷積神經網路的下一層也是一個矩陣,我們用一個卷積核從圖片矩陣左上角到右下角滑動,每滑動一次,當然被圈起來的神經元們就會連接下一層的一個神經元,形成參數矩陣這個就是卷積核,每次滑動雖然圈起來的神經元不同,連接下一層的神經元也不同,但是產生的參數矩陣確是一樣的,這就是 權值共享 。
卷積核會和掃描的圖片的那個局部矩陣作用產生一個值,比如第一次的時候,(w1 0+w2 1+w3 4+w4 5),所以,filter從左上到右下的這個過程中會得到一個矩陣(這就是下一層也是一個矩陣的原因),具體過程如下所示:
卷積計算過程
上圖中左邊是圖矩陣,我們使用的filter的大小是3 3的,第一次滑動的時候,卷積核和圖片矩陣作用(1 1+1 0+1 1+0 0+1 1+1 0+0 1+0 0+1 1)=4,會產生一個值,這個值就是右邊矩陣的第一個值,filter滑動9次之後,會產生9個值,也就是說下一層有9個神經元,這9個神經元產生的值就構成了一個矩陣,這矩陣叫做特徵圖,表示image的某一維度的特徵,當然具體哪一維度可能並不知道,可能是這個圖像的顏色,也有可能是這個圖像的輪廓等等。
單通道圖片總結 :以上就是單通道的圖片的卷積處理,圖片是一個矩陣,我們用指定大小的卷積核從左上角到右下角來滑動,每次滑動所圈起來的結點會和下一層的一個結點相連,連接之後就會形成局部連接,每一條連接都會產生權重,這些權重就是卷積核,所以每次滑動都會產生一個卷積核,因為權值共享,所以這些卷積核都是一樣的。卷積核會不斷和當時卷積核所圈起來的局部矩陣作用,每次產生的值就是下一層結點的值了,這樣多次產生的值組合起來就是一個特徵圖,表示某一維度的特徵。也就是從左上滑動到右下這一過程中會形成一個特徵圖矩陣(共享一個卷積核),再從左上滑動到右下又會形成另一個特徵圖矩陣(共享另一個卷積核),這些特徵圖都是表示特徵的某一維度。
三個通道的圖片如何進行卷積操作?
至此我們應該已經知道了單通道的灰度圖是如何處理的,實際上我們的圖片都是RGB的圖像,有三個通道,那麼此時圖像是如何卷積的呢?
彩色圖像
filter窗口滑的時候,我們只是從width和height的角度來滑動的,並沒有考慮depth,所以每滑動一次實際上是產生一個卷積核,共享這一個卷積核,而現在depth=3了,所以每滑動一次實際上產生了具有三個通道的卷積核(它們分別作用於輸入圖片的藍色、綠色、紅色通道),卷積核的一個通道核藍色的矩陣作用產生一個值,另一個和綠色的矩陣作用產生一個值,最後一個和紅色的矩陣作用產生一個值,然後這些值加起來就是下一層結點的值,結果也是一個矩陣,也就是一張特徵圖。
三通道的計算過程
要想有多張特徵圖的話,我們可以再用新的卷積核來進行左上到右下的滑動,這樣就會形成 新的特徵圖 。
三通道圖片的卷積過程
也就是說增加一個卷積核,就會產生一個特徵圖,總的來說就是輸入圖片有多少通道,我們的卷積核就需要對應多少通道,而本層中卷積核有多少個,就會產生多少個特徵圖。這樣卷積後輸出可以作為新的輸入送入另一個卷積層中處理,有幾個特徵圖那麼depth就是幾,那麼下一層的每一個特徵圖就得用相應的通道的卷積核來對應處理,這個邏輯要清楚,我們需要先了解一下 基本的概念:
卷積計算的公式
4x4的圖片在邊緣Zero padding一圈後,再用3x3的filter卷積後,得到的Feature Map尺寸依然是4x4不變。
填充
當然也可以使用5x5的filte和2的zero padding可以保持圖片的原始尺寸,3x3的filter考慮到了像素與其距離為1以內的所有其他像素的關系,而5x5則是考慮像素與其距離為2以內的所有其他像素的關系。
規律: Feature Map的尺寸等於
(input_size + 2 * padding_size − filter_size)/stride+1
我們可以把卷積層的作用 總結一點: 卷積層其實就是在提取特徵,卷積層中最重要的是卷積核(訓練出來的),不同的卷積核可以探測特定的形狀、顏色、對比度等,然後特徵圖保持了抓取後的空間結構,所以不同卷積核對應的特徵圖表示某一維度的特徵,具體什麼特徵可能我們並不知道。特徵圖作為輸入再被卷積的話,可以則可以由此探測到"更大"的形狀概念,也就是說隨著卷積神經網路層數的增加,特徵提取的越來越具體化。
激勵層的作用可以理解為把卷積層的結果做 非線性映射 。
激勵層
上圖中的f表示激勵函數,常用的激勵函數幾下幾種:
常用的激勵函數
我們先來看一下激勵函數Sigmoid導數最小為0,最大為1/4,
激勵函數Sigmoid
Tanh激活函數:和sigmoid相似,它會關於x軸上下對應,不至於朝某一方面偏向
Tanh激活函數
ReLU激活函數(修正線性單元):收斂快,求梯度快,但較脆弱,左邊的梯度為0
ReLU激活函數
Leaky ReLU激活函數:不會飽和或者掛掉,計算也很快,但是計算量比較大
Leaky ReLU激活函數
一些激勵函數的使用技巧 :一般不要用sigmoid,首先試RELU,因為快,但要小心點,如果RELU失效,請用Leaky ReLU,某些情況下tanh倒是有不錯的結果。
這就是卷積神經網路的激勵層,它就是將卷積層的線性計算的結果進行了非線性映射。可以從下面的圖中理解。它展示的是將非線性操作應用到一個特徵圖中。這里的輸出特徵圖也可以看作是"修正"過的特徵圖。如下所示:
非線性操作
池化層:降低了各個特徵圖的維度,但可以保持大分重要的信息。池化層夾在連續的卷積層中間,壓縮數據和參數的量,減小過擬合,池化層並沒有參數,它只不過是把上層給它的結果做了一個下采樣(數據壓縮)。下采樣有 兩種 常用的方式:
Max pooling :選取最大的,我們定義一個空間鄰域(比如,2x2 的窗口),並從窗口內的修正特徵圖中取出最大的元素,最大池化被證明效果更好一些。
Average pooling :平均的,我們定義一個空間鄰域(比如,2x2 的窗口),並從窗口內的修正特徵圖算出平均值
Max pooling
我們要注意一點的是:pooling在不同的depth上是分開執行的,也就是depth=5的話,pooling進行5次,產生5個池化後的矩陣,池化不需要參數控制。池化操作是分開應用到各個特徵圖的,我們可以從五個輸入圖中得到五個輸出圖。
池化操作
無論是max pool還是average pool都有分信息被舍棄,那麼部分信息被舍棄後會損壞識別結果嗎?
因為卷積後的Feature Map中有對於識別物體不必要的冗餘信息,我們下采樣就是為了去掉這些冗餘信息,所以並不會損壞識別結果。
我們來看一下卷積之後的冗餘信息是怎麼產生的?
我們知道卷積核就是為了找到特定維度的信息,比如說某個形狀,但是圖像中並不會任何地方都出現這個形狀,但卷積核在卷積過程中沒有出現特定形狀的圖片位置卷積也會產生一個值,但是這個值的意義就不是很大了,所以我們使用池化層的作用,將這個值去掉的話,自然也不會損害識別結果了。
比如下圖中,假如卷積核探測"橫折"這個形狀。 卷積後得到3x3的Feature Map中,真正有用的就是數字為3的那個節點,其餘數值對於這個任務而言都是無關的。 所以用3x3的Max pooling後,並沒有對"橫折"的探測產生影響。 試想在這里例子中如果不使用Max pooling,而讓網路自己去學習。 網路也會去學習與Max pooling近似效果的權重。因為是近似效果,增加了更多的參數的代價,卻還不如直接進行最大池化處理。
最大池化處理
在全連接層中所有神經元都有權重連接,通常全連接層在卷積神經網路尾部。當前面卷積層抓取到足以用來識別圖片的特徵後,接下來的就是如何進行分類。 通常卷積網路的最後會將末端得到的長方體平攤成一個長長的向量,並送入全連接層配合輸出層進行分類。比如,在下面圖中我們進行的圖像分類為四分類問題,所以卷積神經網路的輸出層就會有四個神經元。
四分類問題
我們從卷積神經網路的輸入層、卷積層、激活層、池化層以及全連接層來講解卷積神經網路,我們可以認為全連接層之間的在做特徵提取,而全連接層在做分類,這就是卷積神經網路的核心。