您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關瀏覽器上如何實現CNN可視化,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
本文作用
學習卷積神經網絡時,我們只知道輸入一張圖片后,通過一頓操作,便可以提取圖片中的特征,我們對于其內部的操作,只有理論了解,并沒有做到眼見為實。這個CNN解釋器讓我們在瀏覽器上,便可以清楚看到每個神經元是如何產生,以及生成的圖片長什么樣
。
什么是卷積神經網絡?
在機器學習中,分類器將類別標簽分配給數據點。例如,圖像分類器產生圖像中存在哪些對象的類別標簽(例如,鳥,飛機)。一個卷積神經網絡,或CNN的簡稱,是一種類型的分類,在解決這個問題,其過人之處!
CNN是神經網絡:一種用于識別數據模式的算法。通常,神經網絡由神經元組成,這些神經元分層組織,每個神經元都有自己可學習的權重和偏見。讓我們將CNN分解為其基本構建塊。
甲張量可以被認為是一個n維矩陣。在上面的CNN中,張量將是3維的,輸出層除外。
甲神經元可以被看作是發生在多個輸入并且產生一個輸出的功能。神經元的輸出在上面表示為紅色 → 藍色 激活圖。
阿層是簡單地用相同的操作的神經元,包括相同超參數的集合。
內核權重和偏差(雖然每個神經元都唯一)在訓練階段進行了調整,并允許分類器適應所提供的問題和數據集。它們在可視化中以黃色 → 綠色發散色標進行編碼。通過單擊神經元或將鼠標懸停在卷積彈性解釋視圖中的內核/偏差上,可以在“ 交互式公式”視圖中查看特定值。
CNN傳達了一個可微分函數,該函數在輸出層的可視化中表示為類分數。
如果您以前學習過神經網絡,那么您可能對這些術語感到熟悉。那么,什么使CNN與眾不同?CNN利用一種特殊類型的層,恰當地稱為卷積層,使它們處于適當的位置以從圖像和類似圖像的數據中學習。關于圖像數據,CNN可以用于許多不同的計算機視覺任務,例如圖像處理,分類,分割和對象檢測。
在CNN Explainer中,您可以看到如何使用簡單的CNN進行圖像分類。由于網絡的簡單性,它的性能并不完美,但這沒關系!CNN Explainer中使用的網絡架構Tiny VGG包含了當今最先進的CNN所使用的許多相同的層和操作,但是規模較小。這樣,將更容易理解入門。
網絡的每一層做什么?
讓我們遍歷網絡中的每一層。在閱讀時,單擊并懸停在上面的可視化中,即可隨意與上面的可視化進行交互。
輸入層
輸入層(最左邊的層)代表輸入到CNN中的圖像。因為我們使用RGB圖像作為輸入,所以輸入層具有三個通道,分別對應于該層中顯示的紅色,綠色和藍色通道。單擊網絡詳細信息圖標上方的圖標以顯示詳細信息(在此層以及其他層上)時,請使用色標。
卷積層
卷積層是CNN的基礎,因為它們包含學習的內核(權重),這些內核提取出可將不同圖像彼此區分開的特征-這就是我們想要的分類!與卷積層交互時,您會注意到先前各層與卷積層之間的鏈接。每個鏈接代表一個唯一的內核,該內核用于卷積操作以生成當前卷積神經元的輸出或激活圖。
卷積神經元執行具有唯一內核和上一層對應神經元輸出的元素點積。這將產生與唯一內核一樣多的中間結果。卷積神經元是所有中間結果與學習到的偏差相加的結果。
例如,讓我們看一下上面的Tiny VGG架構中的第一個卷積層。請注意,此層中有10個神經元,但上一層中只有3個神經元。在Tiny VGG架構中,卷積層是完全連接的,這意味著每個神經元都與上一層中的每個其他神經元相連。著眼于第一卷積層最頂層的卷積神經元的輸出,當我們將鼠標懸停在激活圖上時,我們看到有3個唯一的內核。
圖1.將鼠標懸停在第一個卷積層上最頂層節點的激活圖上時,您會看到應用了3個內核來生成此激活圖。單擊此激活圖后,您可以看到每個唯一內核都發生了卷積操作。
這些內核的大小是由網絡體系結構的設計人員指定的超參數。為了產生卷積神經元(激活圖)的輸出,我們必須與上一層的輸出以及網絡學習到的唯一內核一起執行元素逐點積。在TinyVGG中,點積運算使用的跨度為1,這意味著內核將每個點積移出1個像素,但這是網絡架構設計人員可以調整以使其更適合其數據集的超參數。我們必須對所有3個內核執行此操作,這將產生3個中間結果。
然后,執行包含所有3個中間結果以及網絡已獲學習的偏差的元素和。此后,所得的二維張量將是在第一卷積層中最頂層神經元的上方界面上可見的激活圖。必須應用相同的操作來生成每個神經元的激活圖。
通過一些簡單的數學運算,我們可以推斷出在第一個卷積層中應用了3 x 10 = 30個唯一的內核,每個內核的大小為3x3。卷積層與上一層之間的連通性是構建網絡體系結構時的設計決策,它將影響每個卷積層的內核數量。單擊可視化文件以更好地了解卷積層背后的操作。看看是否可以遵循上面的示例!
了解超參數
當內核擴展到激活圖之外時,通常需要填充。填充可以在激活圖的邊界處保存數據,從而獲得更好的性能,并且可以幫助保留輸入的空間大小,從而使體系結構設計人員可以構建性能更高,更流暢的網絡。存在許多填充技術,但是最常用的方法是零填充,因為它的性能,簡單性和計算效率高。該技術涉及在輸入的邊緣周圍對稱地添加零。許多高性能的CNN(例如AlexNet)都采用了這種方法。
內核大小,通常也稱為過濾器大小,是指輸入上滑動窗口的尺寸。選擇此超參數會對圖像分類任務產生重大影響。例如,較小的內核大小能夠從輸入中提取大量包含高度局部特征的信息。如您在上面的可視化中所看到的,較小的內核尺寸也導致較小的層尺寸減小,這允許更深的體系結構。相反,較大的內核會提取較少的信息,這會導致層尺寸的減小更快,從而常常導致性能下降。大內核更適合提取更大的特征。最終,選擇合適的內核大小將取決于您的任務和數據集,但是通常,越來越多的圖層一起學習越來越復雜的功能!
大步走指示內核一次應移動多少像素。例如,如上面的卷積層示例所述,Tiny VGG對其卷積層使用步幅為1,這意味著在輸入的3x3窗口上執行點積以產生輸出值,然后將其移至每進行一次后續操作,就增加一個像素。跨度對CNN的影響類似于內核大小。隨著步幅的減小,由于提取了更多的數據,因此可以了解更多的功能,這也導致了更大的輸出層。相反,隨著步幅的增加,這將導致特征提取更加受限,輸出層尺寸更小。架構設計人員的職責之一是在實現CNN時確保內核對稱地跨輸入滑動。
激活功能
ReLU
神經網絡在現代技術中極為盛行-因為它們是如此精確!當今性能最高的CNN包含大量荒謬的圖層,這些圖層能夠學習越來越多的功能。這些突破性的CNN能夠實現如此巨大的準確性的部分原因是因為它們的非線性。ReLU將急需的非線性應用到模型中。非線性是產生非線性決策邊界所必需的,因此輸出不能寫為輸入的線性組合。如果不存在非線性激活函數,那么深的CNN架構將演變為一個等效的卷積層,其性能幾乎不一樣。與其他非線性函數(例如Sigmoid)相反,ReLU激活函數專門用作非線性激活函數,因為從經驗上已經觀察到,使用ReLU的CNN的訓練速度要快于它們的對應函數。
ReLU激活函數是一對一的數學運算:
關系圖
圖3.繪制的ReLU激活函數,忽略了所有負面數據。
此激活函數逐個應用于輸入張量中的每個值。例如,如果將ReLU應用于值2.24,則結果將為2.24,因為2.24大于0。您可以通過單擊上方網絡中的ReLU神經元來觀察如何應用此激活功能。在上面概述的網絡體系結構中的每個卷積層之后執行整流線性激活功能(ReLU)。注意該層對整個網絡中各種神經元的激活圖的影響!
軟最大
softmax操作的主要目的是:確保CNN輸出的總和為1。因此,softmax操作可用于將模型輸出縮放為概率。單擊最后一層將顯示網絡中的softmax操作。請注意,展平后的對數如何不在零到一之間縮放。為了直觀顯示每個logit的影響(標量值未縮放),使用淺橙色 → 深橙色色標對它們進行編碼。通過softmax函數后,每個類現在對應一個適當的概率!
您可能會想,標準歸一化和softmax之間的區別是什么-畢竟,兩者都會在0和1之間重新調整logit。請記住,反向傳播是訓練神經網絡的關鍵方面-我們希望正確的答案具有最大的“信號”。 ” 通過使用softmax,我們可以有效地“逼近” argmax,同時獲得微分。重新縮放不會使max的權重明顯高于其他logit,而softmax的權重卻不會。簡而言之,softmax是一個“更軟”的argmax-看看我們在那里做了什么?
匯聚層
在不同的CNN架構中,池化層的類型很多,但是它們的目的都是要逐漸減小網絡的空間范圍,從而減少網絡的參數和總體計算。上面的Tiny VGG架構中使用的池類型為Max-Pooling。
最大池操作需要在體系結構設計期間選擇內核大小和步幅。一旦選定,該操作將以指定的步幅在輸入上滑動內核,同時僅從輸入中選擇每個內核切片上的最大值以產生輸出值。通過單擊上方網絡中的合并神經元,可以查看此過程。
在上面的Tiny VGG體系結構中,池化層使用2x2內核,步幅為2。使用這些規范進行此操作將導致75%的激活被丟棄。通過丟棄如此多的值,Tiny VGG的計算效率更高,并且避免了過擬合。
展平層
該層將網絡中的三維層轉換為一維向量,以適合全連接層的輸入以進行分類。例如,將一個5x5x2張量轉換為大小為50的向量。網絡的先前卷積層從輸入圖像中提取了特征,但是現在該對這些特征進行分類了。我們使用softmax函數對這些功能進行分類,這需要一維輸入。這就是為什么需要平坦層的原因。可以通過單擊任何輸出類來查看此層。
互動功能
通過選擇上傳圖片圖標以了解您的圖像如何分為10類來上傳自己的圖像。通過分析整個網絡中的神經元,您可以了解激活圖和提取的特征。
更改激活圖色標,以通過調整更好地了解不同抽象級別的激活的影響熱圖。
單擊網絡詳細信息圖標圖標,了解網絡詳細信息,例如圖層尺寸和色標。
通過單擊播放圖標按鈕來模擬網絡操作,或者通過將鼠標懸停在輸入或輸出的各個部分上來了解映射和基礎操作,從而與Interactive Formula View中的圖層切片進行交互。
通過單擊信息圖標“ 交互式公式視圖”以了解文章中的圖層詳細信息,以了解圖層功能。
影片教學
CNN解釋器簡介 (0:00-0:22)
概述 (0:27-0:37)
卷積彈性解釋視圖 (0:37-0:46)
卷積,ReLU和池化交互式公式視圖 (0:46-1:21)
展平彈性說明視圖 (1:22-1:41)
Softmax 交互式公式視圖 (1:41-2:02)
吸引學習經驗:理解分類 (2:06-2:28)
互動教程文章 (2:29-2:54)
CNN解釋器如何實施?
CNN Explainer使用TensorFlow.js(一個瀏覽器內GPU加速的深度學習庫)加載經過預訓練的模型以進行可視化。整個交互式系統使用Svelte作為框架并使用D3.js進行可視化,并以Javascript編寫。您只需要一個網絡瀏覽器就可以立即開始學習CNN!
誰開發了CNN Explainer?
CNN解釋器由 Jay Wang, Robert Turko, Omar Shaikh, Haekyu Park, Nilaksh Das, Fred Hohman, Minsuk Kahng和 Polo Chau創建,這是佐治亞理工學院與俄勒岡州立大學進行研究合作的結果。我們感謝Anmol Chhabria,Kaan Sancak,Kantwon Rogers和喬治亞州技術可視化實驗室的支持和建設性的反饋。NSF贈款IIS-1563816,CNS-1704701,NASA NSTRF,DARPA GARD以及來自英特爾,NVIDIA,Google和Amazon的禮物均部分支持了這項工作。
該在線網絡工具提供10多種經典網絡的可視化文件,如AlexNet、GoogLeNet、YOLO、ResNet系列和Inception系列等。可以清楚看到每層的參數。
https://dgschwend.github.io/netscope/quickstart.html
上述就是小編為大家分享的瀏覽器上如何實現CNN可視化了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。