1. 程式人生 > 其它 >E: Failed to fetch http://ppa.launchpad.net/jonathonf/python-3.6/...

E: Failed to fetch http://ppa.launchpad.net/jonathonf/python-3.6/...

技術標籤:python深度學習

感知機

感知機(perceptron)是由美國學者Frank Rosenblatt在1957年提出來的。可以說是最古老的分類演算法之一。 為何我們現在還要學習這一很久以前就有的演算法呢?因為感知機也是作為神經網路(深度學習)的起源的演算法。 因此,學習感知機的構造也就是學習通向神經網路和深度學習的一種重要思想。 在這裡我們將會簡單介紹一下感知機,並用感知機解決一些簡單的問題。

感知機是什麼

感知機接收多個輸入訊號,輸出一個訊號。這裡所說的“訊號”可以想象成電流或河流那樣具備“流動性”的東西。像 電流流過導線,向前方輸送電子一樣,感知機的訊號也會形成流,向前方輸送資訊。

但是,和實際的電流不同的 是,感知機的訊號只有“流/不流” (1/0)兩種取值。0對應“不傳遞訊號”,1對應“傳遞訊號”。

下圖是一個接收兩個輸入訊號的感知機的例子。x1 、x2 是輸入訊號,y是輸出訊號,w1 、w2 是權重(w是weight的首 字母)。圖中的○稱為“神經元”或者“節點”。輸入訊號被送往神經元時,會被分別乘以固定的權重(w1 x1 、w2 x2 )。神經元會計算由上一層神經元傳送過來的訊號的總和,只有當這個總和大於某個界限值時,才會輸出1。這也稱為“神經元被 啟用” 。這裡將這個界限值稱為閾值,用符號θ表示

感知機的多個輸入訊號都有各自固定的權重,這些權重發揮控制各個訊號的重要性的作用。也就是說,權重越大,對應權重的訊號的重要性就越高。

權重相當於電流裡所說的電阻。電阻是決定電流流動難度的引數,電阻越低,通過的電流就會越大。而感知機則是權重越大,通過的訊號的可能性就會越大。不管是電阻還是權重,在控制訊號流的作用是一樣的。

使用感知機實現邏輯電路

閘電路

  • 用以實現基本邏輯運算和複合邏輯運算的單元電路稱為閘電路。
  • 常用的閘電路在邏輯功能上有與門、或門、非門、與非門、或非門、與或非門、異或門等幾種。
  • “門”是這樣的一種電路:它規定各個輸入訊號之間滿足某種邏輯關係時,才有訊號輸出,通常有下列三種閘電路: 與門、或門、非門。
  • 從邏輯關係看,閘電路的輸入端或輸出端只有兩種狀態,無訊號以“0”表示,有訊號以“1”表示。

匯入權重和偏置

公式雖然看起來有所變化, 但是實際內容並沒有發生任何變化.
在後面, 我們統一把b稱為偏置, w1, w2 稱為權重, b稱為偏置.
感知機會計算輸入訊號的權重的乘積, 然後再乘積的基礎上加上偏置, 這個這個值大於0就輸出結果1, 如果小於等於0
就輸出0.
為了後面計算起來比較方便, 我們把這個函式的實現利用Numpy進行編寫:

def 與門(x1, x2):
    input_x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    temp = np.sum(input_x * w) + b
    if temp <= 0:
        return 0
    else:
        return 1

這裡我們可以對公式中各個引數的作用, 做出一定程度的理解:
w1, w2 與樣本值相乘, 決定了每個不同的特徵在最終輸出結果中的重要程度, 權重越大, 則起的作用越大. 而偏置b 的作用是調整, 這個神經元啟用的容易程度.如果b為-1, 則只要輸出訊號的加權總和超過0.1, 神經元就會被 激活了. 但如果b是100, 那麼神經元的訊號加權總和必須超過20, 神經元才能被啟用.(這兒這個值的計算原理)。