當前位置:
首頁 > 最新 > 起名字的藝術之人工神經網路

起名字的藝術之人工神經網路

人工神經網路是「什麼」

這些年來刷爆朋友圈的名詞莫過於:人工神經網路(Artifical Neural Networks),這個頻頻出現在媒體上的名詞讓人「不明覺厲」,那它到底是什麼呢,它又能用來解決哪些實際問題呢?本期炸豬排將給大家簡單粗暴地介紹一下ANN (人工神經網路, Artifical Neural Networks)的基本功能。

學術界最拿手的事情就是忽悠和。。。起名字的能力,雖然叫做神經網路,但其實最早的時候ANN的名字叫做感知機(Perceptron),其本質是還是在做一個非線性函數的生成。

雖然世界上很多現象都可以用線性回歸模型或線性分類模型進行充分模擬,但大多數有趣的現象一般都是非線性的。為此,人們開發出了多樣化的非線性模型來處理非線性現象。

例如假定觀測到的數據遵循一些非線性函數的參數模型(例如多項式,冪或指數函數),然後微調參數函數的權值以擬合觀測數據。(這個方法有點類似於我們第一期中講的典型例子)然而這種方法只有在數據符合參數函數的可用類目時才有用。(這種方法又被稱為Parametric Model)

另一種方法,是基於核函數(kernels)的方法,將數據非線性地轉換成抽象空間,用於測量觀察值之間的距離,然後根據這些距離預測新的值或類。(比方說高斯過程就是一個比較著名的基於核函數的機器學習方法)。然而,核方法(Kernel Method)一般涉及到構建一個依賴於訓練觀測數量的核矩陣,因此對於大型數據集來說計算量十分龐大並不適用。

本文的重點是另一類模型,即人工神經網路(ANN)。人工神經網路不是一個仿生學的非線性模型,而是更接近於Machine Learning的模型(基於腦科學的脈衝神經網路Spiking Neuron Network的表現就遠不如ANN)。它們涉及一系列簡單的非線性計算,這些計算在聚合時可以實現強大而複雜的非線性函數。實際上,根據它們的構造方式,人工神經網路可以擬合任何非線性函數,使它們成為一個非常強大的模型,俗稱「通用擬合器」(注意,這個名詞不是專屬於人工神經網路的;內核函數也被認為是「通用擬合器」;然而,因為多層神經網路在擬合任意函數方面比其他方法更有效率,所以有興趣的讀者可以對這個主題進行更深入的研究。)

近年來,使用多階段非線性計算的人工神經網路已經在從視覺對象識別到自然語言處理的複雜任務中擁有出色的表現。我發現人工神經網路很有意思因為他們擁有強大的計算能力且與計算神經科學有諸多交集。然而,我發現大多數關於人工神經網路的教程要麼充斥著很多密集的形式化的細節,只包含很少關於工程上的實現或任何實例。要麼忽略了大量的數學細節,只提供了沒有解釋來龍去脈的應用實例。本欄目將對人工神經網路進行更為全面的概述,包括人工神經網路背後的數學過程,人工神經網路是如何用程序實現的,之後還會分享一些指出人工神經網路優劣的簡單實例。

單層神經網路模型

最簡單的ANN(如圖1),取一組觀測到的輸入值a=(a1,a2,...,aN),將它們各自乘以它們自己的相關權重(weight),w=(w1,w2 ,... wN),並將加權值相加以形成預激活值z,通常還存在偏移值b,該偏移值b與預激活計算中始終包含+1的輸入相關聯。然後,這個網路的預激活值通過使用非線性激活函數g(z)輸出最終的激活值a(out)。

圖1

激活函數g(z)有很多不同形式,如何選擇通常取決於我們希望該網路執行的任務。例如,如果激活函數是身份識別函數,則gLinear(z) =z

如果激活函數是邏輯判斷函數,即輸出值為0或1,則gSigmoid(z)= 1/(1+e^(-z))

如果該神經網路輸出時使用的是Logistic S形激活函數時,實現線性二元分類。二元分類也可以使用雙曲正切函數gTanh(z)= tanh(z)來實現。

圖2

為了更好地理解這些激活函數的作用,我們在圖2的左邊畫出了它們對於給定範圍的輸入值的輸出值。我們看到邏輯函數和tanh激活函數(藍色和綠色)是典型的S形,這使他們能應用於分類問題。然而,身份識別/線性激活(紅色)的激活函數對輸入值進行線性映射,這對於預測連續的輸入值的輸出值是有用的。這些激活函數的一個關鍵特性是它們都是平滑曲線且可微的,其導數繪製在圖2的右側。這些導數的有一個特點就是它們是一個常數(即1),這使得他們可以非常方便高效地訓練神經網路,因為我們可以使用正向反饋網路的簡單操作來實現梯度下降。

多層神經網路模型

如上所述,單層神經網路實現了線性模型,可是如果我們想要對非線性現象進行建模,單層網路並不足以真正幫助我們。然而,通過把圖1所示的單層網路作為一個基本的組成部分,可以構建更複雜的網路,執行強大的非線性計算。如下圖3演示了這個概念。我們不是在輸入和輸出之間建立單一的權重層,而是在兩者之間引入一組單層網路。這組中間網路通常被稱為「隱藏」層,因為它不直接參与觀測輸入值或直接計算輸出值。通過使用隱藏層就形成了一個多層次的人工神經網路。儘管在多層網路中聲明實際層數有很多不同的約定,但是在本文中,我們將使用不同組可訓練的權重集的數量來作為層數。例如,圖3中的網路將被認為是2層的ANN,因為它具有兩層權重:將輸入連接到隱藏層(w_ij)的權重,以及將隱藏層的輸出連接到輸出層(w_jk)。

圖3

多層神經網路是將輸入值非線性地映射到輸出值的組合函數。 如果我們將i與輸入層,j與隱含層以及k與輸出層相關聯,則圖3中所示的網路中的輸出單元通過以下組成函數來計算給定輸入值a_i的輸出值a_k:

這裡的z_l是指第l層單元的預激活值,g_l()是該層單元的激活函數(假設它們相同),a_l=g_l(z_l)是單元的輸出激活那層。權重w_(l-1),l將映射到層l的單元的輸出值鏈接到該層單元的激活功能,其中b_l是第l層單元的偏移值(bias)。

與單層人工神經網路一樣,如何選擇輸出層的激活函數取決於我們希望該神經網路執行的任務(即分類或回歸問題)。然而,通常情況下,我們期望的隱藏單元具有非線性激活函數功能(如邏輯函數sigmoid或tanh函數功能),這是因為多層線性計算同樣可以被轉換為單層線性計算。因此,對隱藏層使用線性激活不會有很好的效益。然而,我們在不久的將來會看到使用輸出單元激活函數的線性激活(結合隱藏的單元的非線性激活)會允許神經網路執行非線性回歸任務。

相信大家對於人工神經網路是個啥已經有了初步的認識,下期炸豬排將給大家介紹「反向傳播演算法」在人工神經網路中的應用,不見不散哦~~~

炸豬排


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

TAG:全球大搜羅 |