零代碼構建一個簡單的人工神經網絡

隨着機器學習和深度學習等概念的不斷普及,越來越多的小夥伴想去了解或學習相關內容,但礙於數學基礎和編程能力的限制,很多社會人文領域的同學很難通過自己編程的形式來實現深度學習的相關內容。

==============================================================================================

藉助微思 Sheet,今天教大家通過零代碼構建人工神經網絡,並進行訓練和預測。本文不會講述複雜的數學原理和計算方法,只要您跟着一步步操作,都可以在 1-2 分鐘內快速搭建好自己的人工神經網絡,並進行訓練和預測。

  1. 什麼是人工神經網絡

人工神經網絡(Artificial Neural Network,即 ANN )不是新興產物,只是隨着近年來計算機計算能力和硬件水平的不斷提升,讓原來大量的複雜的數學運算得以變爲現實。人工神經網絡是由大量處理單元互聯組成的非線性、自適應信息處理系統。它是在現代神經科學研究成果的基礎上提出的,試圖通過模擬大腦神經網絡處理、記憶信息的方式進行信息處理。

(圖片:生物神經元示意)

人工神經網絡有多層和單層之分,每一層包含若干神經元,各神經元之間用帶可變權重的有向弧連接,網絡通過對已知信息的反覆學習訓練,通過逐步調整改變神經元連接權重的方法,達到處理信息、模擬輸入輸出之間關係的目的。

人工神經網絡我們可以看成一個黑箱,我們把數據放進黑箱,經過黑箱的計算和處理,得到一個預測結果,至於數據在黑箱中經過了怎樣的計算和處理,我們並不關心。也就是我們並不在乎結果是否可以被解釋,這與多元應用統計領域的迴歸和分類等並不同。

就好比一個不認識貓的小孩,我們給他看了很多貓的圖片後,再見到新的貓時,他會立刻識別出這是一隻貓,而他不會拿出草紙推導一下它是貓的概率有多大。我們不在乎小孩子是怎麼學會識別貓的,我們在乎的是他是否學會了識別貓。在這個學習的過程中,我們不會去專門做統計檢驗,也不在乎結果是否顯著,通過模型的不斷迭代,它會自動修正自己的權重係數,並給出一個合適的結果。

人工神經網絡分爲 FNN(前饋神經網絡)、RNN(循環神經網絡)、CNN(卷積神經網絡)等多種,RNN 經常用於自然語言處理,CNN 常用於圖片的識別等,而 FNN 是比較簡單,也是最常用的神經網絡之一,我們此次將學習如何快速搭建一個 FNN 模型。

下面是一個 FNN 模型的結構示意,輸入層輸入數據,經過中間的隱藏層計算後,數據進入輸出層,得到結果。下圖中共有 4 個層(兩列圓圈之間爲 1 層),每一層的輸出作爲下一層的輸入,每個隱藏層中的圓圈表示一個神經元。(理論上來說,只要隱藏層足夠多,神經元足夠多,就可以表示任意複雜的函數或空間分佈)

(圖片來自知乎 @剪水做花飛)

  1. 快速創建一個前饋神經網絡

2.1 加載訓練數據

簡單起見,我們仍然以 IRIS 鳶尾花數據作爲樣例數據進行展示。本例中,我們將通過學習鳶尾花花瓣的長度、寬度,花萼的長度、寬度來綜合判斷它們屬於哪一種鳶尾花。

新建一個空白的微思 Sheet 文檔,並加載示例數據。

執行菜單:文件 - 加載 IRIS 示例數據

數據加載後,共有六列,其中第一列爲序號,第 2-4 列分別爲花瓣長度、花瓣寬度、花萼長度、花萼寬度,第 5 列爲種類,共有 3 個種類:setosa、versicolor、virginica。

然後打開前饋神經網絡插件。

執行菜單:分類 / 聚類 - 前饋神經網絡(FNN)

我們將花瓣長、花瓣寬、花萼長、花萼寬這 4 列選中,點擊插件窗口中的特徵列選擇按鈕。

選中鳶尾花種類的 Species 列,然後點擊標籤列按鈕。

至此,我們的輸入數據已經選擇完畢。接下來我們將會搭建神經網絡的結構。

2.2 設置相關參數

我們設置完選區後,看到下面還跟有多個參數:

2.3 搭建網絡結構

系統默認會已經搭建有兩個隱藏層,可以通過隱藏層右側的增加按鈕和刪除按鈕來增加或刪除新的隱藏層。(注意:隱藏層應至少有 1 個)

我們此例中就使用默認的兩個隱藏層,將第二個隱藏層的激活函數設置爲 “softmax”(多分類問題的最後一個隱藏層多用此激活函數),第一個隱藏層激活函數使用默認的 “tanh”,神經元個數設置爲默認的 10 個。

上面的設置將生成下面的神經網絡結構,Layer1 的神經元個數爲 10,表示輸出 10 個節點,作爲 Layer2 的輸入,Layer2 的神經元個數爲 3,表示輸出 3 個節點作爲最終結果輸出。(注意:Layer2 的神經元個數應該與標籤列的類別數相等,系統會自動填寫最後一個隱藏層的神經元個數值,若無必要請勿自行修改。)

一切設置就緒,點擊 “開始訓練”!

  1. 評價神經網絡模型

經過幾秒鐘的等待,插件窗口中會輸出模型的概覽信息,並開始迭代訓練。

訓練過程中程序會自動將輸入的 150 條數據,根據我們自己設定的驗證集、測試集比率進行隨機打亂後抽取分組。用訓練集和驗證集不斷反覆訓練校準,訓練完成後用測試集測試精度。

通過動態圖表可以看到模型的損失和精準率變化:

還會得到一個基於驗證集的混淆矩陣,如果一個模型訓練的好,那麼顏色最深的區域應該集中在左上到右下的對角線上。這個矩陣什麼意思呢?就是使用訓練後的模型對驗證集中的數據進行驗證,是 class0(setosa)的花被判定爲 class0(setosa)的有 11 個,是 class1(versicolor)的花被判定爲 class1 的有 4 個,是 class2(virginica)被判定爲 class2 的有 6 個,是 class1 但被誤判爲 class2 的有 1 個。其他誤判情況均是 0。

您可以通過修改學習率(當前爲 0.01)、迭代次數(當前爲 50)、修改損失函數類型、修改優化器、修改隱藏層數量、修改隱藏層神經元個數、修改激活函數類型後重新訓練,看看哪一種設置下能將最終的精準率提到最高、損失降到最低。不用擔心會把數據或網站搞壞,盡情嘗試即可!

  1. 使用訓練好的模型進行預測

模型訓練好後,我們拿到一組新的數據,就可以對其進行預測啦!比如,我們測量到三朵鳶尾花的花瓣、花萼數據如下,讓機器幫我們判定一下它們是哪一種花吧。首先選中需要預測的數據,如下:

點擊插件窗口中的 “開始預測” 按鈕,完成!

  1. 模型的保存和讀取

使用插件窗口右上角的保存和加載按鈕,可以將已經訓練好的模型保存到瀏覽器緩存,下次打開時可以繼續使用。

操作是不是非常簡單呢?您可以將鳶尾花數據集替換爲您工作、學習中的任何其他數據集,都可以通過傻瓜式搭建 FNN 模型來進行分類預測。

您可以在微思 Sheet 中通過菜單打開 FNN 插件,或直接通過此鏈接一鍵直達:

https://wis-ai.com/wsheet?tool=wsheet/fnn

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/IiY9Bzj_hA_oKLTXrUV1IA