最近一直在看深度學習,作為一個新手,首先從神經(jīng)網(wǎng)絡開始入手,并開始理解神經(jīng)網(wǎng)絡中的基本原理,親自動手通過python語言搭建了屬于自己的簡單的神經(jīng)網(wǎng)絡,用于識別mnist數(shù)據(jù)集中的圖片(參照了 Rashid大神寫的Make your own neutral network)。在接觸神經(jīng)網(wǎng)絡之前覺得神經(jīng)網(wǎng)絡完全是一個黑盒子,我們像做樂高一樣,接入神經(jīng)網(wǎng)絡中的每個層次就可以構建出屬于自己的神經(jīng)網(wǎng)絡(利用tensorflow),通過自己手動搭建神經(jīng)網(wǎng)絡發(fā)現(xiàn),里面蘊含了豐富的數(shù)學原理,非常有意思。
神經(jīng)網(wǎng)絡的基本思想
不知道是不是我接觸神經(jīng)網(wǎng)絡時間過于少,但是就我目前的理解來看,神經(jīng)網(wǎng)絡的最簡單的基本原理就是我們的一次多項式y(tǒng)=a×x ,所有復雜的神經(jīng)網(wǎng)絡就是我們找到一個輸入,尋找輸入與輸出的關系,但是我們按照一定規(guī)律去查找就像二分法找找,我們反復去修正,最終總能得到系數(shù)a。以這個一次多項式為例,我們給定一個輸入x1,我們隨機給a一個值a1吧,x1就是我們輸入神經(jīng)網(wǎng)絡中的輸入,a1×x1就是我們這個神經(jīng)網(wǎng)絡得到的值即預測值,而x1實際對應的值是y1,當y1(實際值)比a1×x1(預測值)大的時候,我們要做的就是調整a變大,當y1(實際值)比a1×x1(預測值)小的時候,我們要做的就是調整a變小。到現(xiàn)在我們可以知道神經(jīng)網(wǎng)絡的一個基本思路就是數(shù)據(jù)從神經(jīng)網(wǎng)絡中輸入,然后與實際的數(shù)據(jù)比較會產(chǎn)生誤差,通過誤差去調整系數(shù)的大小,然后我們換個說法,就是數(shù)據(jù)在神經(jīng)網(wǎng)絡中通過一定的方式正向傳遞流動,最終傳遞后的計算結果與實際值會產(chǎn)生一個誤差,通過誤差的大小反向去糾正神經(jīng)網(wǎng)絡中的各項系數(shù),這就是我理解的神經(jīng)網(wǎng)絡。下面給出了一個具有三層網(wǎng)絡架構的神經(jīng)網(wǎng)絡,在構建屬于自己的神經(jīng)第二部分,我會將上述講到的原理,應用到這個三層神經(jīng)網(wǎng)絡中,然后深入剖析。
