深度學習入門 基於python的理論與實現 2

2021-09-10 21:16:36 字數 3130 閱讀 4356

2.3 感知器的實現

2.4 感知器的侷限性

2.5 多層感知器

感知器接受多個輸入訊號,輸出乙個訊號。

如圖是乙個接收兩個輸入訊號的感知器。

x2​是輸入訊號,y

yy是輸出訊號,w

1w_1

w1​,w

2w_2

w2​是權重。

圖中的圓圈稱為「神經元」(或「節點」)。輸入訊號被送往神經元時,會被分別乘以固定的權重(w1x

1w_1x_1

w1​x1​

,w 2x

2w_2x_2

w2​x2​

)。神經元會 計算傳送過來訊號的總和,只有當這個總和超過某個界限時,才會輸出1。將這個界限稱為閾值,用θ

\theta

θ表示。

就上述內容用數學公式表示:

y

=0 & (w_1x_1+w_2x_2 \leq \theta )\\ 1 & (w_1x_1+w_2x_2 > \theta ) \end

y=0 & (b+w_1x_1+w_2x_2 \leq 0 )\\ 1 & (b+w_1x_1+w_2x_2 > 0 ) \end

y=0 & (-0.5+x_1+x_2 \leq 0 )\\ 1 & (-0.5+x_1+x_2 > 0 ) \end

y={01​

(−0.

5+x1

​+x2

​≤0)

(−0.

5+x1

​+x2

​>0)

​ 上式表示的感知器會生成由直線−0.5 + x1 + x2 = 0分割開的兩個空間。其中乙個空間輸出1,另乙個空間輸出0,如圖所示:

或門在(x1,x2) = (0, 0)時輸出0,在(x1,x2)為(0,1)、(1,0)、(1,1)時輸出1。上圖中,○表示0,△表示1。如果想製作或門,需要用直線將圖中的○和△分開。實際上,剛才的那條直線就將這4個點正確地分開了。

那麼,換成異或門的話會如何呢?能否像或門那樣,用一條直線作出分割下面圖中的○和△的空間呢?

可以發現,想要用一條直線將圖中的○和△分開,無論如何都做不到。事實上, 用一條直線是無法將○和△分開的。

2.4.2 線性和非線性

上面圖中的○和△無法用一條直線分開,但是如果將「直線」這個限制條件去掉,就可以實現了。

比如,我們可以像下圖那樣,作出分開○和△的空間。

感知器的侷限性就在於它只能表示由一條直線分割的空間。上圖這樣彎曲的曲線無法用感知機表示。另外,由上圖這樣的曲線分割而成的空間稱為非線性空間,由直線分割而成的空間稱為線性空間

感知機不能表示異或門讓人深感遺憾,但也無需悲觀。實際上,感知機的絕妙之處在於它可以「疊加」。

2.5.1 已有閘電路的組合

異或門可以通過下圖所示的配置來實現。這裡,x1和x2表示輸入訊號, y表示輸出訊號。x1和x2是與非門和或門的輸入,而與非門和或門的輸出則是與門的輸入。

現在,我們來確認一下上圖的配置是否真正實現了異或門。這裡,把 s1作為與非門的輸出,把s2作為或門的輸出,填入真值表中。結果如圖所示,觀察x1、x2、y,可以發現確實符合異或門的輸出。

2.5.2 異或門的實現

根據上面的配置,可以來實現異或:

def

xor(x1,x2)

: s1=nand(x1,x2)

s2=or(x1,x2)

y=and(s1,s2)

return y

這個異或函式會輸出預期的結果:

xor(0, 0) # 輸出0 

xor(1, 0) # 輸出1

xor(0, 1) # 輸出1

xor(1, 1) # 輸出0

這樣,異或門的實現就完成了。下面我們試著用感知機的表示方法(明確地顯示神經元)來表示這個異或門,結果如圖所示

如圖所示,異或門是一種多層結構的神經網路。這裡,將最左邊的 一列稱為第0層,中間的一列稱為第1層,最右邊的一列稱為第2層。

上圖所示的感知機與前面介紹的與門、或門的感知機形狀不同。實際上,與門、或門是單層感知機,而異或門是2層感知機。疊加了多 層的感知機也稱為多層感知機(multi-layered perceptron)。

在上圖所示的2層感知機中,先在第0層和第1層的神經元之間進行 訊號的傳送和接收,然後在第1層和第2層之間進行訊號的傳送和接收,具體如下所示。

第0層的兩個神經元接收輸入訊號,並將訊號傳送至第1層的神經元。

第1層的神經元將訊號傳送至第2層的神經元,第2層的神經元輸出y。

像這樣,在異或門的感知機中,通過這樣的結構(2層結構),感知機得以實現異或門。這可以解釋為「單層感知機 無法表示的東西,通過增加一層就可以解決」。也就是說,通過疊加層(加深層),感知機能進行更加靈活的表示。

《深度學習入門 基於Python的理論與實現》2

輸出層的設計 對於乙個神經網路模型,輸出的個數如何確定?各層的變數數如何確定?計算中用到的各權重如何確定?都是需要考慮的問題。先給我的答案 首先明確一點,啟用函式是用來加入非線性因素的,因為線性模型的表達力不夠。假設如果沒有啟用函式的出現,你每一層節點的輸入都是上層輸出的線性函式,很容易驗證,無論你...

深度學習入門體驗 基於PaddlePaddle框架

回想整個學習安排,是比較流暢的,理論部分講解較多,實踐部分基本會提供大部分 或者baseline,一般補充幾行 就能跑通,然後進行引數配置調優,當然也可以設計更好的網路結構。這樣低門檻的設定也更好地吸引初學者加入,故為 入門打卡營 隨著大資料的發展,深度學習的優勢得以顯現。一般而言,對於乙個實際問題...

Python深度學習 01深度學習入門

深度學習是機器學習與神經網路 人工智慧 圖形化建模 優化 模型識別和訊號處理等技術融合後產生的乙個領域。簡單來說,深度神經網路是一種用多層抽象來表示概念或者特徵的方式。深度學習使用多層機器學習模型對資料進行有監督學習或者無監督學習。在學習深度學習核心思想時,採取如圖所示的的通用方法 注意 單隱藏層神...