深度學習入門 -- 感知機


感知機

    感知機(Perceptron)是二類分類的線性分類模型,對應於輸入空間(特征空間)中將實例划分為正負兩類的分離超平面,屬於判別模型。感知機關鍵字信息:二分類模型、線性可分。

    感知機預測是學習得到的感知機模型對新的輸入實例進行分類。感知機模型求解方法:導入基於誤分類的損失函數,利用梯度下降法對損失函數進行極小化,求得感知機模型。

    感知機接收多個輸入信號量,經過計算並判斷結果是否超過閾值,而決定下一個神經元是否被激活。

  以包含兩個輸入信號量為例,創建數學模型 y = w1*x1 + w2x2 + b。表達式w1*x1 + w2x2 + b作為模擬信號量完成計算,結果>0,返回1;否則返回0。

  

  1、簡單邏輯電路實現

  通過感知機顯示與門、或門等簡單電路。與門、或門、與非門對應真值表如下:

x1 x2 x1 & x2 x1 | x2 !(x1 & x2)
0 0 0 0 1
1 0 0 1 1
0 1 0 1 1
1 1 1 1 0

  由人工根據“真值表”,可設計出無窮個w1、w2、b組合的解。而機器學習的目標應是,根據數學模型和訓練數據集,設計出最優解。

  以下則通過Python代碼,給出與門的其中一種解法:

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

 

   在設計過程中,或門、與非門的實現僅僅是在參數的設定上有所區別,如下所示:

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

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

 

   2、多層感知機

  根據感知機二分類的線性分類模型的特點,因此僅能表示由一條直線分割的線性空間。

    嘗試使用感知機實現異或門電路,異或門真值表如下表所示:

x1 x2 x1 ^ x2
0 0 0
1 0 1
0 1 1
1 1 0

  通過平面圖形表示上記真值表,其中⚪表示0值,而▲表示1,如下所示:

  上記異或門的圖形無法利用一條直線進行分割,由於感知機只能表示線性空間。因此單層感知機無法表示異或門,其無法分離非線性空間。

  但是通過上文真值表的組合運算,能夠實現異或門運算。如下所示:

x1 x2

!(x1 & x2)

s1

x1 | x2

s2

s1 & s2
0 0 1 0 0
1 0 1 1 1
0 1 1 1 1
1 1 0 1 0

    借助與非門、或門的組合運算能夠實現異或操作,單層感知機可分別實現與非門和或門。因此可通過疊加感知機的方式實現異或運算,從而分離出非線性空間。

def XorGate(x1, x2):
    s1 = NAndGate(x1, x2)
    s2 = OrGate(x1, x2)
    return AndGate(s1, s2)

   上記代碼,通過圖表示如下:

  通過上圖可看出,異或門是一種多層結構的神經網絡,是一個2層的感知機。

  通過感知機的疊加,實現對非線性空間的表示。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM