淺層神經網路
朋友們,如需轉載請標明出處公眾號:jack床長
新手請點擊公眾號里的「歷史文章」從序言看起,否則你可能看不懂本篇文章
在講人工智慧之前,第一段我先講講其它的,講一些我想講的,講一些大家需要知道的,講一些對大家的人生有幫助的。在上一篇文章(教你編寫第一個人工智慧程序),我開通了讚賞功能,想不到還真的有幾位朋友打賞我了。在此真心的感謝你們!!雖然就幾塊錢,但那是對我的一種認可!也讓我更有動力寫出更好的文章。沒有打賞的朋友也沒有關係,只要大家肯努力學習人工智慧,這也就是對我的一種回報了。大家加油吧!!
在上一小節1.2中給大家介紹了最簡單的神經網路——單神經元神經網路,並且手把手教大家編寫了能識別貓的神經網路程序。由於神經網路太簡單,所以識別率不是很高。本小節將給大家介紹稍微複雜一點的神經網路——淺層神經網路。然後下一小節1.4中再給大家介紹更複雜的神經網路——深層神經網路。
先回顧一下上一節我們所學的單神經元神經網路。
如下圖所示
上面這個唯一的神經元,其實負責執行了如下運算。
這個神經元通過對x,w,b進行運算,得出z,然後再由z得出a。
a就是預測結果,我們通過a和真實的標籤y就可以構建一個損失函數L來計算出損失。同時我們可以從損失函數開始反向傳播回到這個神經元來計算出w和b相對於損失函數的偏導數/梯度,以便進行梯度下降,然後再次進行前向傳播,這樣不停地反覆來優化w和b…
對於多神經元神經網路,其實也是一樣的。簡單來說就是重複單神經元的流程。
下面是一個多神經元神經網路。
很多個箭頭,看起來很亂。
我們可以把它拆分成一個一個單獨的神經元來看,就可以清楚地看出複雜的神經網路其實就是由我們學習過的最簡單的單神經元網路組成的。例如我們先只看第一個神經元。
然後再單獨看第二個神經元。
後面的神經元同理。
最前面的負責輸入特徵的層叫做輸入層,當我們在統計層數的時候通常不會把這一層計算在內,所以這是一個兩層的神經網路(雖然上面看起來有3層);最後一層我們叫做輸出層;在中間的所有層統稱為隱藏層。
那麼這個兩層的神經網路是如何進行運算的呢。下面我們先簡單地介紹一下,如果不懂也沒關係,因為下一篇文章我會詳細地給大家講解運算過程。運算本質上還是和單神經元神經網路一樣的。如下圖所示。
我們先算出第一層的四個神經元的a。然後再將這四個a當做x輸入到第二層的神經元中進行計算。上面的w[1]表示的是第一層的神經元關於輸入層x的權重,所以w[1]是一個4x3的矩陣,因為第一層有4個神經元,每一個神經元都有3個特徵輸入。細節下一篇文章再和大家解釋。反向傳播計算也是一樣。先算出第二層的梯度dw和db,然後再向第一層傳播,算出第一層四個神經元的dw和db。
請大家加我的微信,之後會用微信向大家公布測試題答案和一些通知,以及統一回答大家遇到的常見問題,有項目也可以招集大家一起做。加我時請註明「人工智慧」。
TAG:jack床長 |