天天看點

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

這裡考慮人工神經網絡具有一個隐藏層,兩個輸入和輸出。

輸入為 x1 和 x2。

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

兩個權重乘以各自的權重 w1 和 w2。

然後将偏差添加到總和中,并将其稱為 z1。

z1 = x1 * w1 + x2 * w2 +b1

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

然後應用sigmoid的公式。

隐藏層的輸出将成為其右側下一層的輸入。這等于

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

sigmoid激活函數的公式和圖形

隐藏層的第二個節點也以這種方式運作。

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

x1 和 x2 輸入對于 H1 和 H2 将具有相同的值。但是,H1和H2的權重可能不同,也可能相同。而且,偏差也可以不同,即b1和b2可以不同。

乘以各自的權重w3 和w4。然後将偏差添加到總和中,并将其稱為z2。

然後應用sigmoid的公式。此層的輸出将是

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

然後,我們轉到下一層。

(輸出來自 H1。我們稱之為 z1。輸出來自 H2,我們稱之為 z2。它們進入O1。權重像以前一樣乘以相應的輸入。

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例
人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

并且,我們選擇sigmoid激活函數。是以,O1 的輸出為

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

這裡,y1 = z1 * W5 + z2 * W6 + B1

同樣,對于O2 的輸出,我們再次考慮sigmoid激活函數。

我們将此過程稱為前向傳播,因為我們總是從左到右。我們從不倒退。

在本教程中,您将學習如何在R中建立神經網絡模型。

神經網絡(或人工神經網絡)具有通過樣本進行學習的能力。人工神經網絡是一種受生物神經元系統啟發的資訊處理模型。它由大量高度互連的處理元件(稱為神經元)組成,以解決問題。它遵循非線性路徑,并在整個節點中并行處理資訊。神經網絡是一個複雜的自适應系統。自适應意味着它可以通過調整輸入權重來更改其内部結構。

該神經網絡旨在解決人類容易遇到的問題和機器難以解決的問題,例如識别貓和狗的圖檔,識别編号的圖檔。這些問題通常稱為模式識别。它的應用範圍從光學字元識别到目标檢測。

本教程将涵蓋以下主題:

  • 神經網絡概論
  • 正向傳播和反向傳播
  • 激活函數
  • R中神經網絡的實作
  • 案例
  • 利弊
  • 結論

神經網絡概論

神經網絡是受人腦啟發執行特定任務的算法。它是一組連接配接的輸入/輸出單元,其中每個連接配接都具有與之關聯的權重。在學習階段,網絡通過調整權重進行學習,來預測給定輸入的正确類别标簽。

人腦由數十億個處理資訊的神經細胞組成。每個神經細胞都認為是一個簡單的處理系統。被稱為生物神經網絡的神經元通過電信号傳輸資訊。這種并行的互動系統使大腦能夠思考和處理資訊。一個神經元的樹突接收來自另一個神經元的輸入信号,并根據這些輸入将輸出響應到某個其他神經元的軸突。

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

樹突接收來自其他神經元的信号。單元體将所有輸入信号求和以生成輸出。當總和達到門檻值時通過軸突輸出。突觸是神經元互相作用的一個點。它将電化學信号傳輸到另一個神經元。

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例
人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

x1,x2 .... xn是輸入變量。w1,w2 .... wn是各個輸入的權重。b是偏差,将其與權重輸入相加即可形成輸入。偏差和權重都是神經元的可調整參數。使用一些學習規則來調整參數。神經元的輸出範圍可以從-inf到+ inf。神經元不知道邊界。是以,我們需要神經元的輸入和輸出之間的映射機制。将輸入映射到輸出的這種機制稱為激活函數。

前饋和回報人工神經網絡

人工神經網絡主要有兩種類型:前饋和回報人工神經網絡。前饋神經網絡是非遞歸網絡。該層中的神經元僅與下一層中的神經元相連,并且它們不形成循環。在前饋中,信号僅在一個方向上流向輸出層。

回報神經網絡包含循環。通過在網絡中引入環路,信号可以雙向傳播。回報周期會導緻網絡行為根據其輸入随時間變化。回報神經網絡也稱為遞歸神經網絡。

人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

激活函數

激活函數定義神經元的輸出。激活函數使神經網絡具有非線性和可表達性。有許多激活函數:

  • 識别函數 通過激活函數 Identity,節點的輸入等于輸出。它完美拟合于潛在行為是線性(與線性回歸相似)的任務。當存在非線性,單獨使用該激活函數是不夠的,但它依然可以在最終輸出節點上作為激活函數用于回歸任務。。
  • 在 二進制階梯函數(Binary Step Function)中,如果Y的值高于某個特定值(稱為門檻值),則輸出為True(或已激活),如果小于門檻值,則輸出為false(或未激活)。這在分類器中非常有用。
  • S形函數 稱為S形函數。邏輯和雙曲正切函數是常用的S型函數。有兩種:
  • Sigmoid函數 是一種邏輯函數,其中輸出值為二進制或從0到1變化。
  • tanh函數 是一種邏輯函數,其輸出值在-1到1之間變化。也稱為雙曲正切函數或tanh。
  • ReLU函數又稱為修正線性單元(Rectified Linear Unit),是一種分段線性函數,其彌補了sigmoid函數以及tanh函數的梯度消失問題。它是最常用的激活函數。對于x的負值,它輸出0。
人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

在R中實作神經網絡

建立訓練資料集

我們建立資料集。在這裡,您需要資料中的兩種屬性或列:特征和标簽。在上面顯示的表格中,您可以檢視學生的專業知識,溝通技能得分和學生成績。是以,前兩列(專業知識得分和溝通技能得分)是特征,第三列(學生成績)是二進制标簽。

1.  #建立訓練資料集
2.  # 在這裡,把多個列或特征組合成一組資料
3.  test=data.frame(專業知識,溝通技能得分)
4.   
5.  # 拟合神經網絡
6.  nn(成績~專業知識+溝通技能得分, hidden=3,act.fct = "logistic",
7.  linear.output = FALSE)      

這裡得到模型的因變量、自變量、損失函數、激活函數、權重、結果矩陣(包含達到的門檻值,誤差,AIC和BIC以及每次重複的權重的矩陣)等資訊:

1.  $model.list
2.  $model.list$response
3.  [1] "成績"
4.   
5.  $model.list$variables
6.  [1] "專業知識" "溝通技能得分"
7.   
8.   
9.  $err.fct
10.  function (x, y)
11.  {
12.  1/2 * (y - x)^2
13.  }
14.  $act.fct
15.  function (x)
16.  {
17.  1/(1 + exp(-x))
18.  }
19.  $net.result
20.  $net.result[[1]]
21.  [,1]
22.  [1,] 0.980052980
23.  [2,] 0.001292503
24.  [3,] 0.032268860
25.  [4,] 0.032437961
26.  [5,] 0.963346989
27.  [6,] 0.977629865
28.   
29.   
30.  $weights
31.  $weights[[1]]
32.  $weights[[1]][[1]]
33.  [,1] [,2] [,3]
34.  [1,] 3.0583343 3.80801996 -0.9962571
35.  [2,] 1.2436662 -0.05886708 1.7870905
36.  [3,] -0.5240347 -0.03676600 1.8098647
37.   
38.  $weights[[1]][[2]]
39.  [,1]
40.  [1,] 4.084756
41.  [2,] -3.807969
42.  [3,] -11.531322
43.  [4,] 3.691784
44.   
45.   
46.   
47.  $generalized.weights
48.  $generalized.weights[[1]]
49.  [,1] [,2]
50.  [1,] 0.15159066 0.09467744
51.  [2,] 0.01719274 0.04320642
52.  [3,] 0.15657354 0.09778953
53.  [4,] -0.46017408 0.34621212
54.  [5,] 0.03868753 0.02416267
55.  [6,] -0.54248384 0.37453006
56.   
57.   
58.  $startweights
59.  $startweights[[1]]
60.  $startweights[[1]][[1]]
61.  [,1] [,2] [,3]
62.  [1,] 0.1013318 -1.11757311 -0.9962571
63.  [2,] 0.8583704 -0.15529112 1.7870905
64.  [3,] -0.8789741 0.05536849 1.8098647
65.   
66.  $startweights[[1]][[2]]
67.  [,1]
68.  [1,] -0.1283200
69.  [2,] -1.0932526
70.  [3,] -1.0077311
71.  [4,] -0.5212917
72.   
73.   
74.   
75.  $result.matrix
76.  [,1]
77.  error 0.002168460
78.  reached.threshold 0.007872764
79.  steps 145.000000000
80.  Intercept.to.1layhid1 3.058334288
81.  專業知識.to.1layhid1 1.243666180
82.  溝通技能得分.to.1layhid1 -0.524034687
83.  Intercept.to.1layhid2 3.808019964
84.  專業知識.to.1layhid2 -0.058867076
85.  溝通技能得分.to.1layhid2 -0.036766001
86.  Intercept.to.1layhid3 -0.996257068
87.  專業知識.to.1layhid3 1.787090472
88.  溝通技能得分.to.1layhid3 1.809864672
89.  Intercept.to.成績 4.084755522
90.  1layhid1.to.成績 -3.807969087
91.  1layhid2.to.成績 -11.531321534
92.  1layhid3.to.成績 3.691783805
繪制神經網絡
讓我們繪制您的神經網絡模型。
1.  # 繪圖神經網絡
2.  plot(nn)      
人工神經網絡ANN中的前向傳播和R語言分析學生成績資料案例

建立測試資料集

建立測試資料集:專業知識得分和溝通技能得分

  1.  # 建立測試集
  2.  test=data.frame(專業知識,溝通技能得分)

預測測試集的結果

使用計算函數預測測試資料的機率得分。

  1.  ## 使用神經網絡進行預測
  2.  Pred$result
  3.  0.9928202080
  4.  0.3335543925
  5.  0.9775153014

現在,将機率轉換為二進制類。

  1.  # 将機率轉換為設定門檻值0.5的二進制類别
  2.  pred <- ifelse(prob>0.5, 1, 0)
  3.  pred
  4.  1
  5.  1

預測結果為1,0和1。

利弊

神經網絡更靈活,可以用于回歸和分類問題。神經網絡非常适合具有大量輸入(例如圖像)的非線性資料集,可以使用任意數量的輸入和層,可以并行執行工作。

還有更多可供選擇的算法,例如SVM,決策樹和回歸算法,這些算法簡單,快速,易于訓練并提供更好的性能。神經網絡更多的是黑盒子,需要更多的開發時間和更多的計算能力。與其他機器學習算法相比,神經網絡需要更多的資料。NN僅可用于數字輸入和非缺失值資料集。一位著名的神經網絡研究人員說:  “神經網絡是解決任何問題的第二好的方法。最好的方法是真正了解問題。”

神經網絡的用途

  • 模式識别: 神經網絡非常适合模式識别問題,例如面部識别,物體檢測,指紋識别等。
  • 異常檢測: 神經網絡擅長異常檢測,它們可以輕松檢測出不适合正常模式的異常模式。
  • 時間序列預測: 神經網絡可用于預測時間序列問題,例如股票價格,天氣預報。
  • 自然語言處理: 神經網絡在自然語言處理任務中提供了廣泛的應用,例如文本分類,命名實體識别(NER),詞性标記,語音識别和拼寫檢查。

繼續閱讀