《深度學習入門》第 2 章 感知機 筆記

cage發表於2018-11-30

感應機

康奈爾大學的實驗心理學家羅森布拉特(Frank Rosenblatt)在一臺IBM-704計算機上模擬實現了一種他發明的叫作“感知機”(Perceptron)的神經網路模型。這個模型可以完成一些簡單的視覺處理任務。

羅森布拉特在理論上證明了單層神經網路在處理線性可分的模式識別問題時,可以收斂,並以此為基礎做了若干“感知機”有學習能力的實驗。

其中可以用於表現簡單邏輯電路

  • 與門: 兩個條件同為一個為1,為true.
  • 或門: 其中一個條件為true,為true.
  • 非與門: 與門相反,任其中一個條件不為true,為true,即兩個都不為true時,為true。
  • 異或門: 當兩者不相同為true,相同為false

與門,程式碼如下:

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

使用權重和偏置的實現

def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
tmp = np.sum(w*x) + b
if tmp <= 0:
   return 0
else:
   return 1

與非門,或門

def NAND(x1, x2):
x = np.array([x1, x2])
w = np.array([-0.5, -0.5])
b = 0.7
tmp = np.sum(w*x) + b
if tmp <= 0:
    return 0
else:
    return 1

def OR(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5]) 
tmp = np.sum(w*x) + b
if tmp <= 0:
    return 0
else:
    return 1

缺陷:當時羅森布拉特的感應機只能處理線性空間,而無法處理異或門這類曲線空間

通過文中介紹,異或門是一條曲線。而感應機只能表示一條直線分割的空間。

多層感應機

感知機的絕妙之處在於它可以“疊加層”,可以通過疊加感應機來表示異或門。

單層感知機無法表示的東西,通過增加一層就可以解決。彌補了單層感知機只能表示線性空間,從而可以表示非線性空間。

從圖看可以是XOR是NAND和OR的共有子集。

程式碼如下:

def XOR(x1,x2)
s1 = NAND(x1,x2)
s2 = OR(x1,x2)
return AND(S1,S2)

參考 關於感應機由來介紹,參考於 人工智慧簡史 尼克

相關文章