機器學習Basics-第三期-神經網絡前身Perceptron

背景

機器學習Basics-第三期-神經網絡前身Perceptron

第一期覆蓋了此係列所有的數學部分,第二期覆蓋了基礎概念。本期將著手介紹一個最基礎的神經網絡及其關鍵的組成部分。

本期的主體是Perceptron,其大概是1950年代發明的,歷史部分就不過多介紹。Perceptron是一個簡單的神經網絡結構,後面的CNN、LSTM、RNN等等都是基於Perceptron上面衍生複雜化得來的。所以,瞭解與明白Perceptron尤其重要。

我將一步一步,逐步地展示Perceptron的計算和運行的結果。看完此文章大家會了解:

  • Perceptron的基本結構和計算運用過程
  • 神經網絡與Perceptron

另外,需要申明下,本篇文章所用的圖片或者Gif來自於Torward Data Science。


Perceptron

Perceptron 其實就是一個 單層的神經網絡,一般我們提到的多層神經網絡 才是神經網絡。

一般的神經網絡,大家肯定會有所印象,或者或多或少看過一些。 如下圖,就是一個神經網絡識別圖片的過程,貓or狗。

機器學習Basics-第三期-神經網絡前身Perceptron

Perceptron的整體框架如下圖,從下圖大家可以對Perceptron有一個整體的概念。其中帶方向的箭頭是代表著數據流向。Perceptron包含以下幾個步驟,將對其進行逐步講解:

  • 輸入層or輸入值
  • 參數
  • 彙總
  • 激勵函數

Perceptron整體框架

機器學習Basics-第三期-神經網絡前身Perceptron

輸入值:

不同的問題,輸入值當然不同。假設,我們面對的是一個只有五個像素點的圖片,那麼輸入值就是五個X1~5. 可能我們有50000張這種圖片,組成了一個50000*5的矩陣。最初,我在理解輸入層的時候,就像且麵包,一片一片的輸入。

機器學習Basics-第三期-神經網絡前身Perceptron

參數

這裡的參數是指的是Weights 和 Bias,假設輸入值只有一個X

那麼其結果應該是: W * X + B

通過下圖,大家可能會有一個更直觀的印象。

另外,關於參數的重要性和意義,需要再解釋下。也是我最初學習時候的一個疑問,神經網絡學的是什麼?

我們設置一個場景來試圖回答這個問題,假設我們的輸入是一個X矩陣,任務是判斷該圖片是貓?or 不是貓,輸出值為 0 or 1.神經網絡學習最直觀的結果就是判斷的準確率提高,即輸出的準確率提高。

但是,我們的輸入值並未改變,即X未改變。輸出的結果變得不同或者說更準確,那麼變更的就是參數了。

所以,對於該問題的結論是,神經網絡學習的結果是其參數的變化。在這個例子中就是Weights 和 Bias。

機器學習Basics-第三期-神經網絡前身Perceptron

彙總

我們已經有了輸入值和參數,那麼下一步就是彙總。這個步驟很簡單也很直觀,就不再解釋了。

激勵函數

在上述步驟,我們得到的是:

W*X + B

而激勵函數就是在上述結果外再加了一個F(X)

最終的結果是y=F(W*X + B)

那麼激勵函數的作用是什麼呢?

激勵函數的作用非常大,也挺複雜的。後續會單獨一篇來介紹。此處只介紹最基礎部分。

  • 線性to非線性

假設沒有激勵函數,那麼Perceptron就是一個線性公式:W * X + B

如果是特別複雜的神經網絡,很多層的那種。公式就是:

W1*(W2*X)+b2)+b1 = W1*W2 * X + W1*b2 + b1 = W*X + B

大家可以看出來,如果沒有激勵函數,再複雜的神經網絡本質也是一個線性方程,其中W1*b2 和b1 都是常數。也就是說,再複雜的神經網絡都是W*X + B。這就很尷尬了。

如果是線性方程的結果就是,別說承載複雜的信息了,連二元一次方程都搞不定。

所以,激勵函數是必要的,但是選擇什麼激勵函數呢?有哪些常用的激勵函數呢? 將在激勵函數專題中講解

  • 控制輸出結果

激勵函數另一個重要的作用就是控制輸出的結果。比如,我們需要判斷一張圖片是貓or not。 那麼我們期望的輸出結果是 0 or 1.

如下圖,unit step 激勵函數,當X>0, 輸出值為1;當X<0,輸出值為0.

機器學習Basics-第三期-神經網絡前身Perceptron

總結下

其實Perceptron的結構和神經網絡的單一神經元的結構類似。

上面幾個步驟很簡單。也就是輸入一個矩陣X,然後X與參數 矩陣相乘,然後進入激勵函數計算。但是它的意義非常重大。以下是個人觀點

  • 首先,它這種輸入層的設計適用非常廣,可以使用圖片Matrix,語音Matrix。 還能將上一個Perceptron的結果,輸入到下一個Perceptron;
  • 將輸入值非線性化,這一點在上一部分已經介紹了,就不再詳細解釋;
  • 擴展性,一個Perceptron就相當於一個神經元。它可以無限擴展,比如一個Perceptron連接到下一個Perceptron;

大家可以想象下,如果N個這種神經元連接在一起,將會形成一個多麼複雜的神經網絡。當前很厲害的神經網絡,就是以不同的方式將這種神經元組合在一起。所以理解了Perceptron,就相當於理解了神經網絡的50%

下期預告

雖然只是第三期,但是

這期肯定是本系列最重要的一期了。雖然Perceptron簡單,但是其也包含了神經網絡的重要元素,輸入值、神經元參數、激勵函數等等。 如果大家有問題,可以給我留言。

下一期,基於Perceptron建立一個簡單的神經網絡 和初步設計神經網絡訓練部分。


分享到:


相關文章: