人工神經網絡算法及其簡易R實現

2021-02-15 表哥有話講

作者:魯偉

一個數據科學踐行者的學習日記。數據挖掘與機器學習,R與Python,理論與實踐並行。個人公眾號:數據科學家養成記 (微信ID:louwill12)


引子

一直在琢磨怎樣把這些看起來高大上的數據挖掘和機器學習算法給大家用稍微通俗點的語言介紹出來,後來又覺得這要取決於我自己對算法的理解程度有多深以及會不會以一個傳道授業解惑的角度來看待自己,所以就儘量做到自己的推文能讓人看起來更友好一點。

人工神經網絡(Artificial Neural Network)簡單而言是一種分類算法。作為機器學習的一個龐大分支,人工神經網絡目前大約有幾百種算法,其中包括一些著名的ANN算法:感知器神經網絡(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網絡和自組織映射(Self-Organizing Map, SOM)等等,這篇文章我們只介紹最基本的人工神經網絡算法原理及其簡易的R語言實現方式。

在前幾期的推文中,我們介紹的樸素貝葉斯和貝葉斯網絡算法就是一種分類算法,先給兩個例子讓大家對分類這個概念有直觀的認識。

     · 是否拖欠銀行貸款:銀行根據一個人有房與否,婚姻狀況和年收入來 判斷客戶是否會拖欠貸款。

     · 垃圾郵件分類:機器會根據郵件裡面的詞彙來判斷一封郵件是否為垃圾郵件。

如果一個機器能對輸入的內容進行分類的話這個機器就稱為分類器。分類器的輸入是一個數值向量,叫做屬性或者特徵。在是否拖欠銀行貸款的例子中,我們的輸入是有房(1)無房(0)、已婚(1)未婚(0)收入區間這樣的一個向量;垃圾郵件分類中我們的輸入向量是一些0/1值,表示每一個單詞是否出現。分類器的輸出也是數值,拖欠貸款輸出為1,不拖欠輸出為0;垃圾郵件輸出為1,非垃圾郵件輸出為0。


分類器的目的就是要使正確分類的可能性儘可能的高,錯分的概率儘可能的低,一般我們會人為的劃分一些樣本做好標記作為訓練樣本,訓練好的樣本拿來對測試樣本進行檢驗,這就是一個分類算法的基本原理。人工神經網絡作為一種分類算法,其背後的原理大抵如此,因訓練樣本中要有標記,所以人工神經網絡是一種監督分類算法

神經網絡簡介

人工神經網絡是在現代神經科學的基礎上提出和發展起來的一種旨在反映人腦結構及功能的抽象數學模型。它具有人腦功能基本特性:學習、記憶和歸納。

除去輸入層和輸出層之外,一般神經網絡還具有隱藏層,隱藏層介於輸入層和輸出層之間,這些層完全用於分析,其函數聯繫輸入層變量和輸出層變量,使其更好地擬合訓練樣本。隱藏層的功能主要是增加ANN的複雜性,使算法能夠模擬更為複雜的非線性關係,但隱藏層過多會導致過度擬合的問題。

神經網絡的基本原理:(編輯器不方便輸入公式,只好從word裡截圖放上來。另f(x)為傳遞函數。)


  簡單神經網絡的拓撲結構如圖所示:


神經網絡的訓練:

人工神經網絡在進行學習前,必須建立一個訓練樣本使ANN在學習過程有一個參考,訓練樣本的建立來自於實際系統輸入與輸出或是以往的經驗。舉個簡單的例子:

洗衣機洗淨衣服的時間與衣服的衣料、數量和骯髒程度等因素有關,因此我們必須針對不同的衣料、數量和骯髒程度統計出洗衣所需時間,建立一個訓練樣本,不同衣服的衣料、數量和骯髒程度就是ANN的輸入,而洗衣所需時間則為ANN的目標值,即輸出。

ANN的學習就是不斷調整權重的過程:

1) 通過輸入節點將輸入變量加以標準化,標準化後的變量數值落在0和1之間,或者-1到1之間。

2) 將網絡權重的初始值設定為0(或隨機產生),通過各節點的函數來估計數據的目標變量值。

3) 比較實際值和估計值之間的誤差,並根據誤差值重新調整各權重的偏置。

4) 反覆執行步驟2,一直到實際值和估計值之間的誤差最小,此時停止學習以獲得最佳權重。

ANN常用傳遞(激活)函數包括線性函數、階梯函數、Sigmoid函數、分段線性函數以及高斯函數和雙曲正切函數等,具體函數類型可自行查找。一些傳遞函數如圖所示:


簡單而言,含有隱藏層的神經網絡使得我們能夠處理較為複雜的分類問題。

人工神經網絡的簡單R語言實現

R語言中已經有多個關於神經網絡的學習包,包括nnet、AMORE、neuralnet和RSSNS包,nnet提供了最常見的前饋反向傳播神經網絡算法。AMORE包則更進一步提供了更為豐富的控制參數,並可以增加多個隱藏層。neuralnet包的改進在於提供了彈性反向傳播算法和更多的激活函數形式,而RSNNS包則擴充了其它拓撲結構和網絡模型。

我們使用數據挖掘導論一書中的簡單數據例子,利用AMORE包來實現簡單的BP神經網絡。數據如圖所示:


對該數據集進行神經網絡的訓練,代碼如下:

library(AMORE) #加載AMORE包

x1=c(1,1,1,1,0,0,0,0) 

x2=c(0,0,1,1,0,1,1,0) 

x3=c(0,1,0,1,1,0,1,0) 

y=c(-1,1,1,1,-1,-1,1,-1)#導入數據

p<-cbind(x1,x2,x3)

target=y#設定輸入層和輸出層

net <- newff(n.neurons=c(3,1,1),

learning.rate.global=1e-2,momentum.global=0.4,

error.criterium="LMS",Stao=NA,hidden.layer="tansig",

output.layer="purelin",method="ADAPTgdwm")

#指定3個輸入點,隱藏層和輸出層節點數各為1,隱藏層傳遞函數為tansig,輸出層傳遞函數為purelin,收斂判據為最小平方法,這樣一個BP神經網絡模型就構建起來了。

result <- train(net,p,target,error.criterium="LMS",

report=TRUE,show.step=100,n.shows=5)#對構建好的模型進行樣訓練

a<-sim(result$net,p)#查看結果


對比輸出的a值和數據中的y值,可見神經網絡的建模結果與實際完全符合。

結語

這些看似高深莫測的算法,背後的數學原理實則並不嚇人,當然了,神經網絡是一個博大精深的算法群,現在熱門的深度學習其實就是神經網絡的一種拓展,要想在機器學習和人工智慧領域有所突破,深究這些算法的基本原理和編程實現方式是必不可少的。


微信回復關鍵字即可學習

回復 R              R語言快速入門免費視頻 
回復 統計          統計方法及其在R中的實現
回復 用戶畫像   民生銀行客戶畫像搭建與應用 
回復 大數據      大數據系列免費視頻教程
回復 可視化      利用R語言做數據可視化
回復 數據挖掘   數據挖掘算法原理解釋與應用
回復 機器學習   R&Python機器學習入門 

相關焦點

  • 人工神經網絡算法介紹及其參數講解
    每兩個節點間的連接都代表一個對於通過該連接信號的加權值,稱之為權重,這相當於人工神經網絡的記憶。網絡的輸出則依網絡的連接方式,權重值和激勵函數的不同而不同。而網絡自身通常都是對自然界某種算法或者函數的逼近,也可能是對一種邏輯策略的表達。人工神經網絡模型主要考慮網絡連接的拓撲結構、神經元的特徵、學習規則等。
  • 「人工神經網絡」人工神經網絡之BP算法
    人工神經網絡(Artificial Neural Network,ANN)是在受到了生物學的啟發後創建的,在某種程度上它是對生物大腦的一種模擬。人們仿照生物神經網絡的結構,使用簡單運算單元模擬神經元,並將大量運算單元按某種形式密集連接,便構成了人工神經網絡。結構如圖:人工神經網絡(ANN)模型帶有權重值(w1,w2,...
  • 算法的算法:人工神經網絡
    在上周的人工神經網絡課程中介紹了機器學習中的支持向量機(SVM:Support Vector Machine)與前饋網絡RBF的之間的聯繫,而對於由傳遞函數為線性函數組成的單層網絡的代表自適應線性單元(ADLINE:Adaptive  Linear Element)更是和傳統信號處理中的自適應濾波器相類似。
  • 人工神經網絡的原理與訓練
    ==============分割線==============最近這段時間,人工智慧、神經網絡算法著實的又火了一把。在金融中,也有了不少的人在試圖合理的運用這套技術。那麼到底什麼是人工神經網絡?它背後的原理又是什麼?這篇文章適合只聽說過人工神經網絡,但沒有了解其原理的人。
  • 人工神經網絡
    接下來就和小創君一起來探索人工神經網絡的世界吧!人工智慧簡稱AI,它是一個融合計算機科學、統計學、腦神經學和社會科學的前沿綜合學科。人工智慧使得計算機像人一樣擁有智能能力,可以代替人類實現識別、認知,分析和決策等多種功能。
  • 神經網絡分析算法
    而神經網絡就是利用其算法特點來模擬人腦思維的第二種方式,它是一個非線性動力學系統,其特點就是信息分布式存儲和並行協同處理,雖然單個神經元的結構及其簡單,功能有限,但是如果大量的神經元構成的網絡系統所能實現的行為確實及其豐富多彩的。其實簡單點講就是利用該算法來模擬人類大腦來進行推理和驗證的。
  • 人工神經網絡簡介
    人工神經網絡則是把對生物神經網絡的認識與數學統計模型相結合,藉助數學統計工具來實現。另一方面在人工智慧學的人工感知領域,我們通過數學統計學的方法,使神經網絡能夠具備類似於人的決定能力和簡單的判斷能力,這種方法是對傳統邏輯學演算的進一步延伸。         人工神經網絡中,神經元處理單元可表示不同的對象,例如特徵、字母、概念,或者一些有意義的抽象模式。
  • 如何通過人工神經網絡實現圖像識別?
    人工神經網絡(Artificial Neural Networks)(簡稱ANN)系統從20 世紀40 年代末誕生至今僅短短半個多世紀,但由於他具有信息的分布存儲尤其是基於誤差反向傳播(Error Back Propagation)算法的多層前饋網絡(Multiple-Layer Feedforward Network)(簡稱BP 網絡),可以以任意精度逼近任意的連續函數,所以廣泛應用於非線性建模、函數逼近、模式分類等方面。
  • 機器學習算法匯總:人工神經網絡、深度學習及其它
    常見算法包括 Apriori算法和Eclat算法等。 人工神經網絡 人工神經網絡算法模擬生物神經網絡,是一類模式匹配算法。通常用於解決分類和回歸問題。人工神經網絡是機器學習的一個龐大的分支,有幾百種不同的算法。
  • 什麼是人工神經網絡(ANN)?
    作者 | Ben Dickson編譯 | CDA數據分析師過去十年中最具影響力的技術之一是人工神經網絡,它是深度學習算法的基本組成部分,是人工智慧的前沿。人工神經網絡如何運作人工神經網絡的核心成分是人工神經元。每個神經元接收來自其他幾個神經元的輸入,將它們乘以分配的權重,將它們相加,然後將總和傳遞給一個或多個神經元。一些人工神經元可能在將輸出傳遞給下一個變量之前將激活函數應用於輸出。
  • 土木工程與人工神經網絡(一)
    1.什麼是人工神經網絡第一次看到人工神經網絡(ANN)的時候會覺得它是一個黑盒子,扔進去一堆數據會返回一些東西,但其實簡單的人工神經網絡可以看做一個帶有若干參數的擬合函數或模型(類似於多項式擬合),但不同於簡單地線性相加,它的結構很複雜,神經元之間不光可以像下圖一樣,從輸入層到輸出層單向連接(前饋型神經網絡
  • 用於英文字母識別的三種人工神經網絡的設計
    本文引用地址:http://www.eepw.com.cn/article/198994.htm1引言人工神經網絡是在人類對其大腦神經網絡認識理解的基礎上人工構造的能夠實現某種功能的神經網絡。代寫論文 它是理論化的人腦神經網絡的數學模型,是基於模仿大腦神經網絡結構和功能而建立的一種信息處理系統。
  • ​深度學習之BP神經網絡--Stata和R同步實現(附數據和代碼)
    和SVM支持向量機類似,神經網絡屬於典型的black box黑箱方法。從更廣泛的角度來看,神經網絡可以實現幾乎所有的學習算法——既可以應用於有監督學習的分類和回歸,也可以用於無監督學習的聚類等。    總的來看,BP神經網絡是神經網絡的典型代表,是初學者的重點學習對象。此外,Stata中目前能實現神經網絡建模的的只有BP神經網絡brain命令,尚無其它神經網絡算法的引進,故本文在此重點介紹BP神經網絡。
  • 基於英文字母識別的三種人工神經網絡的設計方案
    是在人類對其大腦神經網絡認識理解的基礎上人工構造的能夠實現某種功能的神經網絡。代寫論文 它是理論化的人腦神經網絡的數學模型,是基於模仿大腦神經網絡結構和功能而建立的一種信息處理系統。因其自組織、自學習能力以及具有信息的分布式存儲和並行處理,信息存儲與處理的合一等特點得到了廣泛的關注,已經發展了上百種人工神經網絡。 一般來說,人工神經網絡從結構上可分為兩種:前向網絡和反饋網絡。
  • 3D 列印造出人工神經網絡,UCLA團隊實現全光學機器學習
    研究團隊首先提出了一種全光學的深度學習框架——衍射深度神經網絡(Diffractive Deep Neural Network,D2NN),該架構採用基於深度學習算法的無源衍射層(passive diffractive layers)設計,經誤差反向傳播法(error back-propagation method)訓練後,能夠以接近光速的高速處理能力,實現多種機器學習的複雜功能
  • 深度|人工神經網絡深入分析
    本文與吳老師的講解方式不同,筆者希望能從神經網絡的起源揭開神經網絡的面紗,從而幫助更多的對神經網絡感興趣但卻沒有相關理論基礎的朋友們。說起人工神經網絡的起源肯定要追溯到生物的神經網絡。這是第一個用算法來精確定義神經網絡的,感知器由兩層神經元組成,輸入層接收外界信號,輸出層是McCulloch-Pitts神經元,即閾值邏輯單元。1969 年,Marvin Minsky和Seymour Papert出版了新書《感知器:計算幾何簡介》。
  • 為上馬神經網絡,百名PhD人工處理數據
    編者按:近日,谷歌把神經網絡算法加入手機端搜索。為了讓搜索更智能,谷歌在全世界聘用了百名語言學博士,夜以繼日地標註文本數據,來訓練神經網絡。雖然無監督學習成為熱點已有些時日,谷歌還未能擺脫人工處理數據的困境。搜索「世界上最快的鳥是什麼?」谷歌會告訴你:「遊隼。
  • MATLAB優化算法實例——神經網絡
    ❞1 神經網絡的基本原理1.1 算法簡介神經網絡(Neural Networks)是從微觀結構與功能上對人腦神經系統進行模擬而建立起來的數學模型,它具有模擬人腦思維的能力,其特點主要是具有非線性特性神經網絡是由神經元互聯而成的,能接收並處理信息,而這種信息處理主要是由神經元之間的相互作用,即通過神經元之間的連接權值來處理並實現的。神經網絡在人工智慧、自動控制、計算機科學、信息處理和模式識別等領域得到了非常成功地應用。
  • 初識人工神經網絡
    這也就是神經網絡的魅力所在。人工神經網絡(artificial neural networks) 是一種模仿生物神經網絡行為特徵,進行信息處理的算法數學模型。在人工神經網絡模型中使用單元節點模擬神經元,通過調整神經網絡內部大量節點(神經元)之間相互連接的權重來達到處理信息的目的。
  • 深度學習:神經網絡算法的昨天、今天和明天
    深度學習就是人工神經網絡(Artificial Neural Network)。神經網絡算法得名於其對於動物神經元傳遞信息方式的模擬,而深度學習這一「俗稱」又來自於多層級聯的神經元:眾多的層讓信息的傳遞實現了「深度」。