「機器學習_6」The Perceptron

                           The Perceptron

注意:本文主要介紹preceptron(沒有隱藏層)的工作原理,和具體的實例(具體的數據如何進行權重的迭代更新的),但是沒有代碼實現。preceptron一般是二分類,這裏同樣提到了當分類結果是3種時,如何進行權重的迭代更新。


1. Netural network

The Perceptron is a minimal neural network (neural networks are composed of neurons )

這裏只是簡單的提到netural network,下一節會詳細的提到具有隱藏層的netrual network的工作過程。

 

2.  Perceptron 

   2.1 介紹

簡單描述一下每個神經元的基本工作原理和基本名詞:

我們原理和例子一起進行描述:

背景:假設這個神經元是想預測一個人在某一門考試的期末成績,我們假設根據這個人的學習時間,額外學習時間,出勤率,作業完成程度4個因素來判定。那麼這4個因素就是已知的。

1. input:Input是一些x值(就是指上面的學習時間,額外學習時間,出勤率,作業完成程度)這四個因素,也就是說對於這個模型,x的值就是x1/x2/x3/x4)。但是在計算的時候,有一個x0,這裏默認是1

2. weight:針對每個不同的x值,均有不同的權重(權重可以理解成,每種影響因素的重要性)。但是要注意,這裏的θ不是4個,而是5個,因爲有一個x0的權重。

3. 激活函數:有了input和weight後,把他們分別相乘在相加就得到一個結果,就是我們預測的值y.這裏用f(x;θ,b) 表示激活函數。

4. Test的時候,就是輸入x然後計算後,得到y。訓練的時候,就是輸入x和y訓練權重。

5. learning rate:學習率用來根據輸出結果和預測結果的對比的結果進行權重的重新計算需要用到的一個參數。

6. 因爲是監督學習,我們還需要每個train data 的label

 

   下面是一個神經元的圖解:

 

   下面是Perceptron的圖解:

和上面的區別,就是激活函數那裏,限制了輸出結果y只能是兩個值:-1/1

對perceptron模型的說明:

幾點要注意的事:

  1. Perceptron只能用來0/1分類,也就是二分類。Class的結果用-1/1表示。
  2. Perceptron是監督分類算法,也就是需要從input-label來學習。學習的內容其實就是修改參數(weight權重),以獲得最優的性能。
  3. 比較predicted的結果和true結果,minimize the number of mis-classifications 在數學上不可行。因此,這裏選擇minimize預測結果和真實結果的gap
  4. 我們這裏計算得到的結果可能是任意的值,但是我們只要結果是-1/1兩個值就可以(有的文章要0/1)。因此需要對得到的結果進行處理,也就是上面的第二條。
  5. 上面第二條函數的解釋是:當計算的結果超過某一個邊界值(decision boundary),我們就說他是f()=1,否則就是-1.這個函數我們成爲step function。但是邊界值的選擇不是隨意的。

 

根據預測結果和真實結果的對比,如果結果不一致就迭代的更新權重值。

 

 

例子:詳細的描述一個模型訓練和計算的過程:

已知:訓練數據(features+label)/ 學習率/初始權重(全部是0,下面有提到)/step function

 

下面進行第一次的計算:

step 1計算X1:<x1,x2>,分別用他們的x值和對應的權重相乘

step 2.得到計算結果y,並得到分類結果(計算出的結果不是該instance的分類結果)

可以觀察到第三條數據<0,0>時,計算結果是1,但是分類結果是-1.

爲什麼計算的結果是1,但分類結構是-1呢?

因爲我們規定了邊界值是0,也就是當計算出的結果比0大的時候,我們的分類結果是1,而其他的時候,分類結果都是-1.(step function)

 

step 3預測結果和真實結果想比較,如果一樣就繼續計算下一條數據,如果不相同就要更新權重,然後在計算下一條數據:

可以看到1和2都是一樣的,但是3不一樣,所以更新了權重。用新的權重計算的第四條4.

可以看到X3的預測結果是1,而真實結果是-1,根據權重的更新公式(上面已經提到了),權重需要跟新成-2.

(下面會再一次提到權重是如何計算的)

 

4. 第4條數據計算完成後。我們需要計算迭代的從第一條數據開始重新計算,也就是反覆進行上面的第一步,直到準確率爲1時。

 

下面在解釋一下權重的更新計算:

注意,爲什麼X1計算完後,權重由(-2,0,0)變成(0.2.2)

因爲權重的計算公式(θ ← θ + η ( y i − yˆ i ) x i )

對於θ = -2 + 2 =0 ; 

     θ1 = 0 + 1 * (2 ) * 1 = 2 ; 

     θ2同理。

因爲有權重的更新,因此需要需要計算第三次。下面爲第三次計算的結果,可以發現預測結果都和真實結果一樣,因此不需要在計算第四次。

 

3. 下面是權重更新的公式

  • 因此,我們要做的就是每次出錯時都添加和減去權重的變化值。
  • 權重的變化值:學習率 * (lable的真實值- 預測值) * input(這個權重下的x)

 

4.  Multi-Class Perceptron  

     上面提到的都是分類結果只有1/-1兩種時,下面討論的是如果分類結果有3種或者多種時,如何進行訓練。

     4.1 introduction

      下面是計算的4步:

     

 

      4.2 例子:

      一共有3個lable,三個神經元的初始weight已知。

      

a) Training: For training example xtrain = (0,1), with class B, calculate the updated weights of each perceptron after processing x. Use learning rate η = 0.1. 

step1: create 權重,這個題目已知

step2: 根據權重和xtrain = (0,1),計算在每個分類結果下預測值,

Step3: 選取預測值中最大的作爲預測label(這裏c時0.4,因此預測的結果是c)

Step4: 比較二者結果,如果不相同就更新權重(真實是b,因此需要更新weight)。更新的方法和上面的相同,只需要注意更新哪個神經元就可以了。

更新之後的權重是:

 

b) Testing: Using the new weights from part (a), given test example xtest = (1, 1) with true class C, give the class prediction of the group of three perceptrons. Is the prediction correct? Should we change the weights? 

利用更新之後的weight,在對模型記性計算,觀察,c類的結果是0.5,最大,那麼輸出的結果就是c。和真實的結果相同,就不需要再次進行計算了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章