深度學習之神經網絡的結構


神經元

3B1B先討論最簡單的MLP(多層感知器),只是經典的原版,就已經能識別手寫數字。

這里一開始我們把神經元看作裝有數字的容器,裝着一個0~1之間的數字。但是最后更准確一些,我們把神經元看作一個函數,它輸入的是上一層所有神經元的輸出。

 

手寫數字識別示例

看下面這個手寫數字的例子

這個神經網絡一開始的地方有很多神經元,分別對應了$28 x 28$的輸入圖像中的每個像素,總共784個神經元。

神經元中裝的數字代表對應像素的灰度值(0代表純黑像素,1代表純白像素),我們把神經元里裝着的數叫做激活值(Activation)。這個784個神經元就組成了網絡的第一層。

網絡的最后一層的10個神經元分別代表0~9這10個數字,它們的激活值也同樣介於0~1。這些值表示系統認為輸入圖像對應哪個數字的可能性。

網絡中間還有幾層隱含層,暫時看作暗箱。在這個網絡中,3B1B加入兩層隱含層,每層16個神經元。

神經網絡運作的時候,上一層激活值決定下一層激活值。

為什么要分層

(視頻在層數這里貌似不太嚴謹,輸入層應該算作第0層)

先來看隱含層第二層

我們希望倒數第二層中的各個神經元分別對應上一個筆畫部件。

再來看隱含層第一層

識別圓圈的任務同理可以拆分成更細微的問題。

於是我們希望網絡第二層的各個神經元對應這些短邊

但神經網絡真的是這么做的嗎?視頻里提了這個問題,但貌似沒有給出答案。

連線的作用

如何讓第二層(隱含層的第一層)中的這一個神經元能夠能夠識別出圖像的這一塊區域是否存在一條邊?

我們拿出第一層(輸入層/第0層)的激活值,並賦上權重(要關注區域的權重為正值,否則為0),這樣對所有像素值求加權和,就只會累加關注區域的像素值了。將這個加權和輸入到$Sigmoid$函數。

情況一下子變得很糟,因為要考慮的東西很多


這里有13000多個參數需要調整,所以這里所謂的學習就是找到正確的權重和偏置。

注:

現在的神經網絡基本不用$sigmoid$函數了,用的是$ReLU$

 

 

參考鏈接:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM