當前位置:
首頁 > 最新 > 多層感知機與神經網路結構

多層感知機與神經網路結構

為了盡量能形成系統的體系,作為最基本的入門的知識,請參考一下之前的一篇:感知機 神經網路 。

上篇文章讓你形成對於神經網路最感性的理解。有些看不懂的直接忽略就行,最基本的符號的記法應該要會。後面會用到這篇文章中的一些記號和用法的約定什麼的之後就不再啰嗦了。

01

基本結構

看完上面給出的文章或者已經有基本概念的同學應該對於神經網路的基本結構有基本的認識了。但是上面那個還只是涉及到單層結構,並沒有推廣到多層結構,同時,也沒有在實踐中使用這種結構的經驗。所以,這節的內容就是以手寫體識別為例子來講一下基本結構,和實踐中的基本使用思想。

這是推廣到更加複雜任務上的基礎。

假設你現在已經有了神經網路的一些感性認識了,那就就看下面這幅圖。

輸入層(最左邊),隱藏層(中間兩層),和輸出層(最右邊),在之前列出的博客就講過了,這裡回顧一下。感受一下大概的架構。

神經網路的流程分為前向過程和反向過程。反向過程一般用於訓練,後面講,這裡只講前向過程。

還記得每個神經元上面都有對於一個輸入的權值,以及一個偏置,還有一個激活函數。(不知道的話看之前列出來的博客,後面不再強調了),所以一個前向過程的流程就是input輸入,然後經過第一層神經元運算(乘上權值,加上偏執,激活函數運算一次),得到輸出,然後第一層的輸出作為第二層的輸入,運算,得到第二層的輸出…..直到到輸出層運算,然後得到結果。神經網路就是依靠這樣一套機制來進行計算和預測的。

假如你的權值和偏置已經是被訓練好了。對於一個新的輸入,進行這樣的過程,就能夠得到一個預測。那麼你就能夠通過這個預測來解決一些問題了。所以有機器學習思想的話,這些概念是很容易理解的。而我們的任務就是找到權值和偏置這些參數的值,使得輸出的東西讓我們滿意,達到我們的要求。

這裡先補充一個思想:

假如我們改變了某個神經元或者某幾個神經元的權值或者偏置一點點,那麼該神經元的輸出肯定會變得不同,這些不同最終將反應在輸出上面。如上面的圖所示。所以,我們可以通過合理地改變權值和偏置一點點的方式來讓這個神經網路最後的結果向我們預期的結果進軍(sorry,我想不到好詞了)。

然後說激活函數,還是在前面的博客鏈接中,給了很多的激活函數類型。激活函數的選擇對於神經網路的訓練來說,也是很重要的,這個後面再講到。

現代神經網路激活函數總結,可以看這篇文章:

這裡先以sigmoid函數為例子,講講激活函數的作用。所以,你這裡先暫時假設我們沒得選,只有sigmoid函數。

這個時候,有沒有發現對於感知機前向過程的形式很像logistic回歸的形式?

那我們為什麼要選擇sigmoid函數呢?

我們知道一個神經元還是選擇了sigmoid函數之後,他的輸出為,這也就是我為什麼說這個形式很像logistic回歸的原因。

上面的文章裡面給出過這個函數的形狀,這裡再貼一次。其實你肯定也很熟悉了。

這個函數變動不大,很溫和。不像閾值函數那樣粗暴的從0到1,這是很符合之前的那個思想的。當然這個函數還有另外一個優點,就是平滑。平滑能夠使得權值和偏置非常微小的變動能夠使得最終的結果也產生非常微小的變動。這才是很重要的。

寫成公式,就應該是這樣:

怎麼理解這個公式呢?

首先在機器學習裡面我們不是說過,我們的任務就是找一個函數f(w,b),然後他的輸出output就是由這個函數產生。你再來看這裡,這裡雖然是神經網路,但是整個神經網路還是一個函數。

然後回顧一下全微分的定義:

同樣可以推廣到多元的形式,再看上面的那個公式就不難了吧。

這裡還有一個要注意的就是,從上面公式的形式來看,就是和的一個線性函數,於是我們能夠選擇一個小的權值和偏置的改變,使得結果以我們期望的方式改變。

講了這麼多,現在根據一個例子來談談實踐中是怎麼設計網路的結構的,很簡單,也很重要。

以MNIST手寫體為例子,裡面都是28x28的灰度圖,假如以我們現在這麼簡單的網路形式,我們可以考慮把所有28x28的圖片統一展開為一個一維數列(這樣可能會丟掉某些位置信息,後面CNN會講到這個),然後得到一個結構,含有784(28x28)個值。

回到網路這裡來,對於輸入層而言,我們可以「設定」784個單元,分別接受每一個像素的值。對於輸出層而言,我們可以只設定一個神經元,用來輸出這個數字是幾,我們也可以設定10個神經元,分別代表0到9,然後輸出這個那個數字更加有可能。

從上面看,設計輸入層和輸出層還是比較輕鬆的,但是設計隱藏層是比較難的。後面再討論。

02

訓練神經網路

這裡暫時默認訓練神經網路的損失函數為二次損失函數:

右邊的為L-2範數,當做歐氏距離理解就行。我們的目標就是找到合適的w(權值)和偏置(b)使得這個損失函數最小。意味著網路輸出的值會越來越接近真實值。

訓練神經網路的方法為隨機梯度下降法:

寫成梯度下降的形式為:

也就是說,通過不停的迭代,找到最合適的權值和偏置,使得損失最小。這在機器學習裡面是很基礎的東西了。

最終,我們的任務就成了計算偏導:和了。

但是這裡是神經網路啊,那麼多層,那麼多參數,傳統方式怎麼計算偏導?所以對於偏導的計算就是反向傳播的任務了。

BY CSDN

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 公眾號 的精彩文章:

古渡口的迴響
漂亮妹子誤進男廁所,巧化男妝大膽走出來,竟沒有人發現
文再寅蒙圈!
姜語靈:現貨黃金大幅下挫驗多頭,倫敦金注1325得失
華爾街已死,智能金融來臨

TAG:公眾號 |