淺談黑箱方法——神經網路
人工神經網路(Artificial Neural Network, ANN)對一組輸入信號和一組輸出信號之間的關係進行建模,使用的模型來源於人類大腦對來自感覺輸入的刺激是如何反應的理解。就像大腦使用一個稱為神經元的相互連接的細胞網路來創建一個巨大的並行處理器一樣,ANN使用人工神經元或者節點的網路來解決學習問題。
ANN是可以應用於幾乎所有學習任務的多功能學習方法:分類、數值預測,甚至無監督的模式識別。所以,目前機器學習領域的執牛耳者基本上都以ANN的拓展——深度學習為研究方向。
ANN最好應用於下列情境:輸入數據和輸出數據都很好理解或者至少相當簡單,但其涉及輸入到輸出的過程是極其複雜的。例如,股市的預測、疾病的發生髮展過程。
先來看看生物神經元是如何發揮作用的:如下圖所示,細胞的樹突通過一個允許神經衝動根據其相對重要性或者頻率加權的生化過程來接受輸入的信號;細胞體開始累積信號直到達到一個閾值,細胞便會充滿活力擊破,然後輸出信號通過一個電化過程傳送到軸突;在軸突末端該電信號再次被處理為一種化學信號,穿過稱為突觸的一個微小間隙傳遞到相鄰的神經元。
對應到人工神經元模型中,如下圖,變數X定義了樹突接收的輸入信號,W代表每一個樹突的信號根據其重要性被賦予的權重,輸入信號由細胞體加權求和,然後該信號根據一個用f表示的激活函數來傳遞。
綜上,ANN主要由三大部分組成:
①激活函數:將神經元的凈輸入信號轉換成單一的輸出信號,以便進一步在網路中傳播。
②網路拓撲:描述了模型中神經元的數量以及層數和它們連接的方式。
③訓練演算法:指定如何設置連接權重,以便抑制或增強神經元在輸入信號中的比重。
激活函數有多種,構成這些激活函數之間差異的主要細節就是輸出信號的範圍不同。其中,最常用的是S形激活函數(sigmoid activation function),其它常見的還有閾值激活函數、線性激活函數、飽和線性激活函數、雙曲正切函數、高斯函數等。影響輸出信號的輸入值範圍相對較窄使得我們需要事先將輸入信號標準化。
神經網路的學習能力來源於它的拓撲結構,或者說相互連接的神經元的模式與結構。這些網路結構主要由三個關鍵特徵決定:層的數目、網路中的信息是否允許向後傳播、網路中每一層內的節點數。下圖分別展示的是單層和多層ANN,當含有多個隱藏層時,我們也稱之為深度學習。如果網路中的輸入信號在一個方向上從一個節點到另一個節點連續地傳送,直到到達輸出層,那麼這樣的網路稱為前饋網路(feedforward network);另有一種允許信號使用循環在兩個方向上傳播的遞歸網路(recurrent network);多層前饋網路更多地應用於現實世界的問題中。輸入節點的個數取決於輸入數據特徵的數量,輸出節點的個數則由需要進行建模的結果或結果中的分類水平數來確定,則我們需要確定隱藏層節點的個數;然而,目前沒有可信的規則來確定隱藏層中神經元的個數,合適的數目取決於輸入節點的個數、訓練數據的數量、雜訊數據的數量以及許多其它因素之間的學習任務的複雜性;最好的做法是基於驗證集,使用較少的節點產生適用(足夠)的性能。
確定好了合適的激活函數及網路拓撲結構,接下來要做的便是確定連接權重。在20世紀80年代中後期,幾個研究團隊相互獨立地發現了有效訓練ANN的演算法——後向傳播(backpropagation)。該演算法通過兩個過程的多次循環迭代:
①前向階段:隨機設置初始權重,神經元從輸入層到輸出層的序列中被激活,沿途應用每一個神經元的權重和激活函數,一旦到達最後一層,就產生一個輸出信號。
②後向階段:由前向階段產生的網路輸出信號與訓練數據中的真實目標值進行比較,兩者之間的差異產生的誤差在網路中向後傳播,從而來修正神經元之間的權重,並減少將來產生的誤差。
最後,已經有現成的R包neuralnet可以實現網路的構建了,小夥伴們趕緊查看?neuralnet的R幫助文檔來看看ANN的強大學習能力吧!


TAG:學海拾貝之統計 |