我們都知道電路設計上是有一定的邏輯性,最基本的就是閘電路單元。無論是與、非、或門,最終都會輸出乙個1(是)或0(不是)的值。然後我們從生物的角度看神經網路,神經網路的最基礎單元就是神經元,當神經元接收到刺激訊號並能夠做出相應的應激性反應。我們可以將神經元訊號分為傳遞或是不傳遞。
有時可能乙個神經元會接收到多個刺激,那麼如何去判別神經元需要做出什麼反應?假設有且僅有x1與x2是兩個輸入訊號,而y為輸出訊號。而x1與x2代表的含義不一樣,或者說權重不一樣,我們用w1、w2來分別表示。所以這個神經元接收到的刺激總和是(x1w1,x2w2),用圖可以是一下表示(○表示神經元,——表示連線並且有方向):
當這個兩個刺激的綜合滿足乙個閾值的時候,我們可以認為神經元y滿足產生反應的條件,反之無反應,可以以一下數學公式1表示(其中θ為閾值大小):
那麼和閘電路是不是很像,比如與門只有x1與x2都為1的時候y就為1。我們引入乙個感知機的概念,什麼是感知機?感知機是接收多個訊號,通過一定規律輸出乙個訊號。所以門也可以叫做感知機,我們例項一段與門的python**:
def and(x1, x2)
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1
根據上面函式,我們只有執行and(1, 1)的時候輸出才為1,也就是我們實現了與門。
數學是個神奇的東西,我們將公式1的式子變化一下就可以得到另乙個公式2和說法:
我們一般習慣性將式子右邊變為0,所以這裡的b可以當作(-θ),這裡稱它為偏置,w為權重,與上面**實現與門不同,上面兩個權重是相當的,很多時候我們會遇到兩個變數權重不同並且所得到的值有一定的偏移才是我們想要的結果。通過公式2我們就能夠更好的理解感知機的概念:感知機是接收多個訊號,通過一定規律(權重與偏置)輸出乙個訊號。
單層感知機也就是類似於公式2一樣,只能是線性的關係。它只能是如下圖1所示的樣子,以直線為分隔,線以下是1(0),線以上是0(1)。
圖 1
但我們其實更多的要求是類似與下圖2,曲線以下是1(0),曲線以上是0(1)。
圖 2
參考閘電路,當我們實現複雜電路的時候,很多情況是多個簡單閘電路的疊加從而實現更複雜的功能。那我們感知機也可以通過多層疊加的方式來實現更加複雜的功能,也就是我們將第一層感知機的輸出同時又作為了第二層感知機的輸入,以此類推,最終獲得我們想要的值。如圖3所示:為兩層感知機,可以實現異或門的邏輯。
圖3那我們計算機的邏輯是不是可以通過上述的邏輯實現呢?可以,而且理論上可以兩層就實現。
通過神經網路作為鋪墊,閘電路作為參考,最終的得到感知機的概念。
Python深度學習 學習筆記(十三)
上一節,我們提到了rnn已經rnn在keras中最簡單的層 rnn。但 rnn由於過於簡化,沒有實用價值。實際上,它不可以學到長期依賴。原因在於梯度消失問題,當運用比較多的非迴圈層時,而讓網變得無法訓練。同樣的問題其實也普遍發生在密集連線層。今天介紹的lstm long short term mem...
Python 深度學習 學習筆記(十四)
用一維卷積神經網路處理序列 今天,我們將學習到用一維卷積理解序列資料。一維卷積的卷積核是 n,1 的形狀。這裡需要注意的一點是,我們在二維卷積是大部分時間用到的卷積核為 3,3 3x3 9 在一維卷積層,卷積視窗的大小可以提公升到 7,或 9,一維卷積處理的思路與二維的大致相同,這裡直接貼上 例項 ...
Python深度學習 學習筆記(十七)
結合 cnn 和 rnn 來處理長序列 運用一維卷積與迴圈層對文字進行學習,這裡我們依然拿耶拿的天氣資料進行舉例。import os data dir c users administrator desktop keras learn jena climate fname os.path.join ...