機器學習:二維卷積層及其參數的視覺和數學解釋

2021-01-15 不靠譜的貓

介紹

目前存在許多的深度學習庫和平臺(如Tensorflow、Keras、Pytorch、Caffe或Theano),在這篇文章中,我將嘗試列出所有這些參數,以了解它們對計算時間、訓練參數數量和卷積輸出通道大小的影響。

輸入形狀:(3,7,7)-輸出形狀:(2,3,3)-K:(3,3)-P:(1,1)-S:(2,2)-D:(2 ,2)— G:1

這篇文章的各部分將根據以下參數進行劃分。這些參數可以在Conv2d模塊的Pytorch文檔中找到:

in_channels(int)—輸入圖像中的通道數out_channels(int)—卷積產生的通道數kernel_size(int或元組)—卷積核的大小stride(int或tuple,可選)—卷積的步長。默認值:1padding(int或tuple,可選)—在輸入的兩側都添加了零填充。默認值:0dilation(int或tuple,可選)—核元素之間的間距。默認值:1groups(int,可選)—從輸入通道到輸出通道的blocked connections數量。默認值:1bias(布爾值,可選)—如果為True,則將可學習的偏差添加到輸出中。默認:True最後,我們將根據參數和輸入通道的大小計算輸出通道的大小。

什麼是核?

輸入圖像與核之間的卷積

簡單來說,通過應用Convolution product,核將從左到右,從上到下移動整個圖像。

Convolution product

輸入形狀:(1,9,9)-輸出形狀:(1,7,7)-K:(3,3)-P:(0,0)-S:(1,1)-D:(1 ,1)— G:1

如果你還不熟悉濾波器和卷積矩陣,那麼我強烈建議你多花點時間來理解卷積核。它們是二維卷積層的核心。

可訓練參數和偏差

可訓練參數,簡稱「參數」,是神經網絡訓練時需要更新的所有參數。在Conv2d中,可訓練元素是組成核的值。對於3×3的卷積核,我們有3*3=9個可訓練的參數。

我們可以包含偏差,也可以不包含。偏差的作用將加到convolution product的總和上。這個偏差也是一個可訓練的 參數,它使3 x 3核的可訓練參數數量增加到了10。

輸入輸出通道數

輸入形狀:(1,7,7)-輸出形狀:(4,5,5)-K:(3,3)-P:(0,0)-S:(1,1)-D:(1 ,1)— G:1

使用層的好處是能夠在同一時間執行類似的操作。換句話說,如果我們想要對一個輸入通道應用4個相同大小的不同的filters,那麼我們將有4個輸出通道。這些通道是4個不同的filters的結果。因此產生於4個不同的核。

在上一節中,我們看到了可訓練參數是構成卷積核的要素。因此參數的數量隨卷積核的數量線性增加。因此與所需輸出通道的數量成線性關係。還要注意,還要注意,計算時間也與輸入通道的大小成比例地變化,與內核的數量成比例地變化。

請注意,「參數」圖中的曲線是相同的

同樣的原理也適用於輸入通道的數量。讓我們考慮RGB編碼圖像的情況。這幅圖像有3個通道:紅色,藍色和綠色。我們可以決定在這3個通道上使用相同大小的filters來提取信息,以獲得4個新通道。

輸入形狀:(3,7,7)-輸出形狀:(4,5,5)-K:(3,3)-P:(0,0)-S:(1,1)-D:(1 ,1)— G:1

每個輸出通道都是經過過濾的輸入通道的和。對於4個輸出通道和3個輸入通道,每個輸出通道都是3個經過過濾的輸入通道的和。換句話說,卷積層由4*3=12個卷積核組成。

需要注意的是,參數的數量和計算時間與輸出通道的數量成比例地變化。這是因為每個輸出通道都連結到不同於其他通道的核。輸入通道的數量也是如此。計算時間和參數數量成比例增長。

核大小

到目前為止,所有示例都給出了3 x 3大小的核。實際上,其大小的選擇完全取決於您。可以創建核心大小為1 * 1或19 * 19的卷積層。

輸入形狀:(3,7,9)-輸出形狀:(2,3,9)-K:(5,2)-P:(0,0)-S:(1,1)-D:(1 ,1)— G:1

可以使用不同高度和寬度的核。在信號圖像分析中通常是這種情況。如果知道要掃描信號或聲音的圖像,那麼我們可能希望使用5 * 1大小的核。

最後,您會注意到所有大小均由奇數定義。定義均勻的核大小也是可以接受的,實際上,很少這樣做。通常,選擇奇數大小的核是因為在中心像素周圍存在對稱性。

由於卷積層的所有可訓練參數都在核中,因此參數的數量隨核的大小線性增長。計算時間也成比例地變化。

Strides

默認情況下,核從左到右,從下到上,從一個像素移動到另一個像素。但是這個動作也可以改變,通常用於對輸出通道進行下採樣。例如,當步長為(1,3)時,兩個數分別代表了垂直滑動和水平滑動步長值。這將產生水平下採樣3的輸出通道。

輸入形狀:(3,9,9)-輸出形狀:(2,7,3)-K:(3,3)-P:(0,0)-S:(1,3)-D:(1 ,1)— G:1

Strides對參數的數量沒有影響,但是計算時間在邏輯上隨Strides線性減少。

Padding

Padding定義在卷積濾波之前添加到輸入通道側面的像素數量。通常,padding像素設置為零。

輸入形狀:(2,7,7)-輸出形狀:(1,7,7)-K:(3,3)-P:(1,1)-S:(1,1)-D:(1 ,1)— G:1

當您希望輸出通道的大小與輸入通道的大小相等時,這是非常有用的。簡單來說,當核為3*3時,輸出通道的大小每邊少1。為了解決這個問題,我們可以使用padding 1。

因此,padding對參數的數量沒有影響,但是會產生與padding的大小成比例的額外計算時間。但是通常來說,與輸入通道的大小相比,padding通常足夠小,可以認為對計算時間沒有影響。

Dilation

默認值為1,對應的是卷積時輸入通道上的核的每個像素之間的偏移量。

輸入形狀:(2,7,7)-輸出形狀:(1,1,5)-K:(3,3)-P:(1,1)-S:(1,1)-D:(4 ,2)— G:1

如果我們以(4,2)的Dilation為例,那麼輸入通道上核的感受野會在垂直方向上擴大了4 *(3 -1)= 8,水平方向是2 * (3–1)=4 (對於3乘3的核)。

就像padding一樣,Dilation對參數的數量沒有影響,對計算時間的影響非常有限。

Groups

在特定的情況下,Groups是非常有用的。例如,如果我們有幾個連接的數據源,當沒有相互依賴的時候,輸入通道可以獨立分組。最後,輸出通道在最後連接起來。

如果有2個輸入通道和4個輸出通道,有2組。這就像把輸入通道分成兩組(每組一個輸入通道),然後使其經過卷積層,而卷積層的輸出通道數是原來的一半。然後將輸出通道連接起來。

輸入形狀:(2,7,7)-輸出形狀:(4,5,5)-K:(3,3)-P:(2,2)-S:(2,2)-D:(1 ,1)— G:2

重要的是要注意兩件事。首先,組的數量必須能整除輸入通道數和輸出通道數(公約數)。其次,每個組共享核。

對於Pytorch的計算時間,該算法針對組進行了優化,因此可以減少計算時間。但是,還應考慮必須用於組形成和連接輸出通道的計算時間。

輸出通道大小

在知道所有參數的情況下,可以根據輸入通道的大小計算輸出通道的大小。

相關焦點

  • 機器學習模型評估和超參數調優實踐
    在這篇文章中,我們將詳細探討如何評估機器學習模型結果,以及優化超參數的最佳實踐。模型評估就像學生為考試複習一樣,機器學習模型在準備完成預期任務之前必須經過一個學習和訓練的過程。這種訓練將使它能夠從實際數據中歸納和派生模式,但是我們如何評估我們的模型是否提供了數據的良好表示呢?我們如何驗證模型,並預測它將如何處理以前沒有見過的數據呢?
  • 機器學習:向量的直觀解釋
    在機器學習中我們經常提到向量,究竟什麼是向量呢?在本文中,我們將首先研究向量的定義,然後對其數學運算進行直觀的解釋。定義向量我們在X、Y數字網格上繪製一個點(1,2),其中X代表水平方向,Y代表垂直方向。我們已經很好地定義了一個向量。
  • 深入卷積神經網絡:高級卷積層原理和計算的可視化
    在深度計算機視覺領域中,有幾種類型的卷積層與我們經常使用的原始卷積層不同。在計算機視覺的深度學習研究方面,許多流行的高級卷積神經網絡實現都使用了這些層。這些層中的每一層都有不同於原始卷積層的機制,這使得每種類型的層都有一個特別特殊的功能。在進入這些高級的卷積層之前,讓我們先快速回顧一下原始的卷積層是如何工作的。
  • 機器學習才不只是統計學的美化!
    本文論述的目的在於要正確的評估機器學習。人工智慧可見的發展不僅僅局限於大型計算機和更優的數據集。近期在深度神經網絡及其相關領域的成功,正說明了機器學習代表著科學技術進步的最前沿。機器學習!=統計學「當你集資時,需要人工智慧。當你招聘時,需要機器學習。當你執行任務時,需要邏輯回歸。」
  • 計算機視覺和圖像處理之間有什麼區別?
    整個過程是一個非常複雜的現象,並且使機器在人類層面上解釋這一點一直是一個挑戰。現代機器視覺系統背後的的核心動機在於模擬人類視覺,用於識別圖案,面部以及將將2D圖像轉化為3D模型等。在概念層面,圖像處理和計算機視覺之間存在很多重疊,並且經常被誤解的術語可以互換使用。
  • 機器學習中參數更新規則背後的數學
    在本文中,我們將討論機器學習中參數更新規則背後的數學。我們的目標是找到一種算法,該算法可在任何時間戳下告訴我們如何更改w的值,以使我們在新值下計算的損失小於在當前值下的損失。無論從哪裡開始,如果我們每一步都這樣做,損失一定會減少,最終達到最小值。
  • 可解釋的機器學習
    可解釋的機器學習理解(interpret)表示用可被認知(understandable)的說法去解釋(explain)或呈現(present)。在機器學習的場景中,可解釋性(interpretability)就表示模型能夠使用人類可認知的說法進行解釋和呈現。[Finale Doshi-Velez]
  • 資料| 機器學習中的數學
    以下書籍介紹來自豆瓣內容簡介 · · · · · ·《機器學習中的數學》是一本系統介紹機器學習中涉及的數學知識的入門圖書,本書從機器學習中的數學入門開始,以展示數學的友好性為原則,講述了機器學習中的一些常見的數學知識
  • 卷積層非常稀疏存在採樣誤差
    卷積網絡在卷積層為常用。從一個張量的角度看,常用卷積層為梯度下降層的一個中間層。這是因為,在一般地,要實現多層卷積層,需要採用上一層的上一層的結果作為結果損失進行梯度下降的輸入,但卷積層非常稀疏,存在採樣誤差。因此對於多層的卷積網絡來說,通常需要採用中間層的卷積,以放棄採樣誤差。循環神經網絡是現代很多神經網絡都基於神經元之間的依賴關係進行的組合傳播。
  • 選機器學習課程怕踩雷?有人幫你選出了top 5優質課
    包含編程作業和實踐。解釋算法運行的數學原理。學員可以自己調節進度,大約每月可以獲取新的課程。講師有趣、課堂有趣。在不同網站和論壇上的評分和評價高於平均值。若想儘快全面地學習機器學習,那麼學習者還應該在在線學習之外看一些相關書籍。作者推薦了以下兩本書籍,這兩本書對作者的學習帶來了很大影響。書籍1.
  • 免費在線閱讀:用於計算機視覺、機器學習、機器人的線性代數
    郭一璞 發自 凹非寺量子位 報導 | 公眾號 QbitAI研究機器學習、計算機視覺,總離不開數學,尤其是……線性代數。要是沒有一定數學基礎的話,當你看到SVM、拉格朗日乘數等各種複雜術語的時候,可能會頭禿。所以,為了有更堅實的理論基礎,從根源上理解機器學習背後的數學問題,還是好好學一下數學吧~現在,這本《用於計算機視覺、機器人和機器學習的線性代數》可能會幫上你。
  • 觀點| 我們該如何學習機器學習中的數學
    本文的寫作目的是介紹構建機器學習產品或進行相關學術研究所必需的數學背景,以及數學在工程和研究中的重要性。這些建議是根據我和機器學習工程師、研究者和教育者交流而得到的,當然也有我自己在機器學習研究和業界工作中的個人經驗。為了構建必備的數學背景,我首先提出不同的思維模式和策略,幫助大家在學校之外也可以接受數學教育。
  • 可解釋機器學習技術之後置全局可解釋詳解
    後置全局可解釋機器學習模型從大量訓練數據中自動地學習有用模式,並將學到的知識保存到模型結構和參數中。後置全局可解釋旨在為預先訓練的模型所獲得的知識提供全局解釋,並以直觀的方式對模型參數或學習得到的表示進行說明。我們將現有的模型分為傳統機器學習和深度學習兩類,這樣分類是因為我們能夠從每個類別中提取一些類似的解釋範例。
  • 基于田間條件下的動態高光譜成像和機器學習對於葡萄品種分類的研究
    打開APP 基于田間條件下的動態高光譜成像和機器學習對於葡萄品種分類的研究 新機器視覺 發表於 2021-01-07 14:02:47
  • 一文介紹機器學習中基本的數學符號
    在本教程中,你將學到機器學習技術描述中遇到的基本數學符號。在學完整個教程後,你會知道:算術符號,包括若干種乘法、指數、平方根以及對數數列和集合符號,包括索引、求和以及集合關係5 種當你看不明白數學符號的時候可以採用的應急方法讓我們開始學習吧!
  • 通俗的解釋卷積神經網絡
    視覺,源於天然哺乳動物視覺皮層中的神經元被構造成一層一層地處分圖像,此中少許神經元在辨認線和邊等部分特性方面具備分外的功效;當地位和偏向轉變時,少許層被激活;其餘層對繁雜的樣式(如穿插線)做出反饋。這引發了堆疊的卷積層,它包含將每個神經元的視線限定在輸入圖像的一小塊地區。
  • 機器學習未來十年:你需要把握的趨勢和熱點
    從利用數據相關性來解決問題,過渡到利用數據間的因果邏輯來解釋和解決問題,是可解釋性機器學習需要完成的核心任務之一。為什麼需要解釋:知之為知之,不知為不知,是知也。機器學習模型基於歷史數據進行分析和決策。
  • 入門 | 一文介紹機器學習中基本的數學符號
    具體來說有算數符號,包括各種乘法、指數、平方根以及對數;數列和集合符號,包括索引、累加以及集合關係。此外,本文還給出了 5 個當你在理解數學符號遇到困難時可以應急的小技巧。在機器學習中,你永遠都繞不過數學符號。通常,只要有一個代數項或一個方程符號看不懂,你就完全看不懂整個過程是怎麼回事了。
  • 卷積神經網絡中的參數共享/權重複制
    conv層還包括層內的幾個過濾器,這是一個預定義的超參數。一個層內過濾器的數量表示激活/特徵映射的輸出量的深度維度,該映射由conv層創建,作為下一層的輸入。每一個濾波器都有一個設定的寬度和高度,對應於層內單個單元的局部接收場。作用於輸入數據的濾波器產生一個卷積層的輸出,即特徵映射。在CNN的訓練階段,可以學習過濾器中的權重值。