天天看點

拓端tecdat|【視訊】CNN(卷積神經網絡)模型以及R語言實作神經網絡結構輸出層的計算預測權重優化和損失函數 卷積神經網絡 R語言實作準備定義和拟合模型預測和可視化結果

原文連結:http://tecdat.cn/?p=18149

原文出處:拓端資料部落公衆号

無人駕駛汽車最早可以追溯到1989年。神經網絡已經存在很長時間了,那麼近年來引發人工智能和深度學習熱潮的原因是什麼呢?[1秒]答案部分在于摩爾定律以及硬體和計算能力的顯著提高。我們現在可以事半功倍。顧名思義,神經網絡的概念是受我們自己大腦神經元網絡的啟發。神經元是非常長的細胞,每個細胞都有稱為樹突的突起,分别從周圍的神經元接收和傳播電化學信号。結果,我們的腦細胞形成了靈活強大的通信網絡,這種類似于裝配線的配置設定過程支援複雜的認知能力,例如音樂播放和繪畫。

視訊:CNN(卷積神經網絡)模型以及R語言實作

神經網絡結構

神經網絡通常包含一個輸入層,一個或多個隐藏層以及一個輸出層。輸入層由p個預測變量或輸入機關/節點組成。不用說,通常最好将變量标準化。這些輸入單元可以連接配接到第一隐藏層中的一個或多個隐藏單元。與上一層完全連接配接的隐藏層稱為密集層。在圖中,兩個隐藏層都是密集的。

拓端tecdat|【視訊】CNN(卷積神經網絡)模型以及R語言實作神經網絡結構輸出層的計算預測權重優化和損失函數 卷積神經網絡 R語言實作準備定義和拟合模型預測和可視化結果

輸出層的計算預測

輸出層計算預測,其中的單元數由具體的問題确定。通常,二分類問題需要一個輸出單元,而具有k個類别的多類問題将需要 k個對應的輸出單元。前者可以簡單地使用S形函數直接計算機率,而後者通常需要softmax變換,進而将所有k個輸出單元中的所有值加起來為1,是以可以将其視為機率。無需進行分類預測。

權重

圖中顯示的每個箭頭都會傳遞與權重關聯的輸入。每個權重本質上是許多系數估計之一,該系數估計有助于在相應箭頭指向的節點中計算出回歸

拓端tecdat|【視訊】CNN(卷積神經網絡)模型以及R語言實作神經網絡結構輸出層的計算預測權重優化和損失函數 卷積神經網絡 R語言實作準備定義和拟合模型預測和可視化結果

。這些是未知參數,必須使用優化過程由模型進行調整,以使損失函數最小化。訓練之前,所有權重均使用随機值初始化。

優化和損失函數 

訓練之前,我們需要做好兩件事一是拟合優度的度量,用于比較所有訓練觀測值的預測和已知标簽;二是計算梯度下降的優化方法,實質上是同時調整所有權重估計值,以提高拟合優度的方向。對于每種方法,我們分别具有損失函數和優化器。損失函數有很多類型,所有目的都是為了量化預測誤差,例如使用交叉熵

拓端tecdat|【視訊】CNN(卷積神經網絡)模型以及R語言實作神經網絡結構輸出層的計算預測權重優化和損失函數 卷積神經網絡 R語言實作準備定義和拟合模型預測和可視化結果

。流行的随機優化方法如Adam。 

卷積神經網絡 

卷積神經網絡是一種特殊類型的神經網絡,可以很好地用于圖像處理,并以上述原理為架構。名稱中的“卷積”歸因于通過濾鏡處理的圖像中像素的正方形方塊。結果,該模型可以在數學上捕獲關鍵的視覺提示。例如,鳥的喙可以在動物中高度區分鳥。在下面描述的示例中,卷積神經網絡可能會沿着一系列涉及卷積,池化和扁平化的變換鍊處理喙狀結構,最後,會看到相關的神經元被激活,理想情況下會預測鳥的機率是競争類中最大的。 

拓端tecdat|【視訊】CNN(卷積神經網絡)模型以及R語言實作神經網絡結構輸出層的計算預測權重優化和損失函數 卷積神經網絡 R語言實作準備定義和拟合模型預測和可視化結果

可以基于顔色強度将圖像表示為數值矩陣。單色圖像使用2D卷積層進行處理,而彩色圖像則需要3D卷積層,我們使用前者。 

核(也稱為濾鏡)将像素的正方形塊卷積為後續卷積層中的标量,從上到下掃描圖像。 

在整個過程中,核執行逐元素乘法,并将所有乘積求和為一個值,該值傳遞給後續的卷積層。

核心一次移動一個像素。這是核心用來進行卷積的滑動視窗的步長,逐漸調整。較大的步長意味着更細,更小的卷積特征。 

池化是從卷積層進行的采樣,可在較低次元上呈現主要特征,進而防止過度拟合并減輕計算需求。池化的兩種主要類型是平均池化和最大池化。提供一個核和一個步長,合并就相當于卷積,但取每幀的平均值或最大值。 

扁平化顧名思義,扁平隻是将最後的卷積層轉換為一維神經網絡層。它為實際的預測奠定了基礎。 

R語言實作

當我們将CNN(卷積神經網絡)模型用于訓練多元類型的資料(例如圖像)時,它們非常有用。我們還可以實作CNN模型進行回歸資料分析。我們之前使用Python進行CNN模型回歸 ,在本視訊中,我們在R中實作相同的方法。

我們使用一維卷積函數來應用CNN模型。我們需要Keras R接口才能在R中使用Keras神經網絡API。如果開發環境中不可用,則需要先安裝。本教程涵蓋:

  1. 準備資料
  2. 定義和拟合模型
  3. 預測和可視化結果
  4. 源代碼

我們從加載本教程所需的庫開始。

library(keras)
library(caret)
           

準備

資料在本教程中,我們将波士頓住房資料集用作目标回歸資料。首先,我們将加載資料集并将其分為訓練和測試集。

set.seed(123)
boston = MASS::Boston
indexes = createDataPartition(boston$medv, p = .85, list = F)
 
           
train = boston[indexes,]
test = boston[-indexes,]
           

接下來,我們将訓練資料和測試資料的x輸入和y輸出部分分開,并将它們轉換為矩陣類型。您可能知道,“ medv”是波士頓住房資料集中的y資料輸出,它是其中的最後一列。其餘列是x輸入資料。

檢查次元。

dim(xtrain)
[1] 432  13
 
           
dim(ytrain)
[1] 432   1
           

接下來,我們将通過添加另一次元來重新定義x輸入資料的形狀。

dim(xtrain)
[1] 432  13   1
 
           
dim(xtest)
[1] 74 13  1
           

在這裡,我們可以提取keras模型的輸入維。

print(in_dim)
[1] 13  1
           

定義和拟合模型

我們定義Keras模型,添加一維卷積層。輸入形狀變為上面定義的(13,1)。我們添加Flatten和Dense層,并使用“ Adam”優化器對其進行編譯。

model %>% summary()
________________________________________________________________________
Layer (type)                    Output Shape                  Param #    
========================================================================
conv1d_2 (Conv1D)               (None, 12, 64)                192        
________________________________________________________________________
flatten_2 (Flatten)             (None, 768)                   0          
________________________________________________________________________
dense_3 (Dense)                 (None, 32)                    24608      
________________________________________________________________________
dense_4 (Dense)                 (None, 1)                     33         
========================================================================
Total params: 24,833
Trainable params: 24,833
Non-trainable params: 0
________________________________________________________________________

​
           

接下來,我們将使用訓練資料對模型進行拟合。

print(scores)
    loss 
24.20518
           

拓端tecdat|【視訊】CNN(卷積神經網絡)模型以及R語言實作神經網絡結構輸出層的計算預測權重優化和損失函數 卷積神經網絡 R語言實作準備定義和拟合模型預測和可視化結果
預測和可視化結果

現在,我們可以使用訓練的模型來預測測試資料。

predict(xtest)
           

我們将通過RMSE名額檢查預測的準确性。

cat("RMSE:", RMSE(ytest, ypred))
RMSE: 4.935908
           

最後,我們将在圖表中可視化結果檢查誤差。

x_axes = seq(1:length(ypred))

lines(x_axes, ypred, col = "red", type = "l", lwd = 2)
legend("topl
           
拓端tecdat|【視訊】CNN(卷積神經網絡)模型以及R語言實作神經網絡結構輸出層的計算預測權重優化和損失函數 卷積神經網絡 R語言實作準備定義和拟合模型預測和可視化結果

  在本教程中,我們簡要學習了如何使用R中的keras CNN模型拟合和預測回歸資料。

拓端tecdat|【視訊】CNN(卷積神經網絡)模型以及R語言實作神經網絡結構輸出層的計算預測權重優化和損失函數 卷積神經網絡 R語言實作準備定義和拟合模型預測和可視化結果

最受歡迎的見解

1.r語言用神經網絡改進nelson-siegel模型拟合收益率曲線分析

2.r語言實作拟合神經網絡預測和結果可視化

3.python用遺傳算法-神經網絡-模糊邏輯控制算法對樂透分析

4.用于nlp的python:使用keras的多标簽文本lstm神經網絡分類

5.用r語言實作神經網絡預測股票執行個體

6.R語言基于Keras的小資料集深度學習圖像分類

7.用于NLP的seq2seq模型執行個體用Keras實作神經機器翻譯

8.python中基于網格搜尋算法優化的深度學習模型分析糖

9.matlab使用貝葉斯優化的深度學習

繼續閱讀