机器学习入门(01)— 感知机概念、实现、局限性以及多层感知机
1. 感知機概念
下圖是一個接收兩個輸入信號的感知機的例子。
x1 、 x2 是輸入信號, y 是輸出信號, w1 、 w2 是權重( w 是 weight 的首字母)。圖中的 ○ 稱為“神經元”或者“節(jié)點”。輸入信號被送往神經元時,會被分別乘以固定的權重( w1*x1 、 w2*x2 )。神經元會計算傳送過來的信號的總和,只有當這個總和超過了某個界限值時,才會輸出 1。這也稱為“神經元被激活” 。這里將這個界限值稱為閾值,用符號 θ 表示。
把上述內容用數(shù)學式來表示,見下公式
感知機的多個輸入信號都有各自固有的權重,這些權重發(fā)揮著控制各個信號的重要性的作用。也就是說,權重越大,對應該權重的信號的重要性就越高。
2. 感知機實現(xiàn)
2.1 簡單實現(xiàn)
與門是有兩個輸入和一個輸出的門電路。這種輸入信號和輸出信號的對應表稱為“真值表”。如圖所示,與門僅在兩個輸入均為 1 時輸出1,其他時候則輸出 0。
以邏輯與門為例來看看如何實現(xiàn):
In [1]: def AND(x1, x2):...: w1, w2, theta = 0.5, 0.5, 0.7...: result = x1 * w1 + x2 * w2...: if result >= theta:...: return 1...: else:...: return 0...: In [2]:
按照同樣的步驟,也可以實現(xiàn)與非門和或門,不過讓我們來對它們的實現(xiàn)稍作修改。
2.2 導入權重和偏置
式(2.1)的 θ 換成 ?b ,于是就可以用式(2.2)來表示感知機的行為。
式(2.1)和式(2.2)雖然有一個符號不同,但表達的內容是完全相同的。此處,b 稱為偏置,w1 和 w2 稱為權重。如式(2.2)所示,感知機會計算輸入信號和權重的乘積,然后加上偏置,如果這個值大于 0 則輸出 1,否則輸出 0。
使用 NumPy 實現(xiàn) 2.2 所描述的感知機,代碼如下:
In [2]: import numpy as npIn [3]: x = np.array([0, 1]) # 輸入In [5]: w = np.array([0.5, 0.5]) # 權重In [6]: b = -0.7 # 偏置In [7]: w * x
Out[7]: array([0. , 0.5])In [8]: np.sum(w*x)
Out[8]: 0.5In [9]: np.sum(w*x) + b
Out[9]: -0.19999999999999996 # 大約為-0.2(由浮點小數(shù)造成的運算誤差)In [10]:
在 NumPy 數(shù)組的乘法運算中,當兩個數(shù)組的元素個數(shù)相同時,各個元素分別相乘,因此 w*x 的結果就是它們的各個元素分別相乘([0, 1] *[0.5, 0.5] => [0, 0.5])。之后, np.sum(w*x) 再計算相乘后的各個元素的總和。最后再把偏置加到這個加權總和上,就完成了式(2.2)的計算。
2.3 使用權重和偏置的實現(xiàn)
代碼如下:
In [11]: def AND(x1, x2):...: x = np.array([x1, x2])...: w = np.array([0.5, 0.5])...: b = -0.7...: result = np.sum(w*x) + b...: if result <= 0:...: return 0...: else:...: return 1In [12]:
這里把 ?θ 命名為偏置 b ,但是請注意,偏置和權重 w1 、 w2 的作用是不一樣的。
具體地說, w1 和 w2 是控制輸入信號的重要性的參數(shù),而偏置是調整神經元被激活的容易程度(輸出信號為 1 的程度)的參數(shù)。
例如:
- 若
b為?0.1,則只要輸入信號的加權總和超過0.1,神經元就會被激活。 - 但是如果
b為?20.0,則輸入信號的加權總和必須超過20.0,神經元才會被激活。
像這樣,偏置的值決定了神經元被激活的容易程度。另外,這里我們將 w1 和 w2 稱為權重,將 b 稱為偏置,但是根據(jù)上下文,有時也會將 b 、 w1 、 w2 這些參數(shù)統(tǒng)稱為權重。
3. 感知機局限性
感知機的局限性就在于它只能表示由一條直線分割的空間。下圖這樣彎曲的曲線無法用感知機表示。另外,由下圖這樣的曲線分割而成的空間稱為非線性空間,由直線分割而成的空間稱為線性空間。
4. 多層感知機
與門、或門是單層感知機,而異或門是 2 層感知機。疊加了多層的感知機也稱為多層感知機( multi-layered perceptron )。
圖2-13中的感知機總共由 3 層構成,但是因為擁有權重的層實質上只有 2 層(第 0 層和第 1 層之間,第 1 層和第 2 層之間),所以稱為 “2 層感知機”。不過,有的文獻認為圖 2-13 的感知機是由 3 層構成的,因而將其稱為“3 層感知機”。
在圖2-13所示的 2 層感知機中,先在第 0 層和第 1 層的神經元之間進行信號的傳送和接收,然后在第 1 層和第 2 層之間進行信號的傳送和接收,具體如下所示。
- 第 0 層的兩個神經元接收輸入信號,并將信號發(fā)送至第 1 層的神經元。
- 第 1 層的神經元將信號發(fā)送至第 2 層的神經元,第 2 層的神經元輸出 y。
這種 2 層感知機的運行過程可以比作流水線的組裝作業(yè)。第 1 段(第 1 層)的工人對傳送過來的零件進行加工,完成后再傳送給第 2 段(第 2 層)的工人。第 2 層的工人對第 1 層的工人傳過來的零件進行加工,完成這個零件后出貨(輸出)。
通過這樣的結構( 2 層結構),感知機得以實現(xiàn)異或門。這可以解釋為 “單層感知機無法表示的東西,通過增加一層就可以解決”。也就是說,通過疊加層(加深層),感知機能進行更加靈活的表示。
5. 總結
? 感知機是具有輸入和輸出的算法。給定一個輸入后,將輸出一個既定的值;
? 感知機將權重和偏置設定為參數(shù);
? 使用感知機可以表示與門和或門等邏輯電路;
? 異或門無法通過單層感知機來表示;
? 使用 2 層感知機可以表示異或門;
? 單層感知機只能表示線性空間,而多層感知機可以表示非線性空間;
? 多層感知機(在理論上)可以表示計算機;
參考:《深度學習入門:基于Python的理論與實現(xiàn)》
總結
以上是生活随笔為你收集整理的机器学习入门(01)— 感知机概念、实现、局限性以及多层感知机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求大佬给个百度云破解版
- 下一篇: 机器学习入门(02)— 由感知机到神经网