详细解读神经网络十大误解,再也不会弄错它的工作原理
來源:http://www.cstor.cn/textdetail_10544.html_biz=MjM5OTA1MDUyMA==&mid=407358558&idx=2&sn=b21877f23bf4063fa311185009c1f0b7&scene=0#wechat_redirect1462674382044
神經(jīng)網(wǎng)絡是機器學習算法中最流行和最強大的一類。但在作者看來,因為人們對神經(jīng)網(wǎng)絡工作原理存在誤解,導致網(wǎng)絡設計也很糟糕。所以這篇文章就對其中一些誤解進行了討論。
神經(jīng)網(wǎng)絡是機器學習算法中最流行和最強大的一類。在計量金融中,神經(jīng)網(wǎng)絡常被用于時間序列預測、構建專用指標、算法交易、證券分類和信用風險建模。它們也被用于構建隨機過程模型和價格衍生品。盡管神經(jīng)網(wǎng)絡有這些用處,但它們卻往往有一個壞名聲,因為它們的表現(xiàn)是「不可靠的」。在我看來,原因在于對神經(jīng)網(wǎng)絡工作原理存在誤解,導致網(wǎng)絡設計也很糟糕。本文將對其中的一些誤解進行討論。
?
核心要點
神經(jīng)網(wǎng)絡不是人類大腦的模型
神經(jīng)網(wǎng)絡并不是統(tǒng)計學的「弱形式」
神經(jīng)網(wǎng)絡流行許多不同的架構
規(guī)模很重要,但并不是越大越好
神經(jīng)網(wǎng)絡的訓練算法有很多種
神經(jīng)網(wǎng)絡并不總是需要大量數(shù)據(jù)
神經(jīng)網(wǎng)絡不能基于任何數(shù)據(jù)訓練
神經(jīng)網(wǎng)絡需要被再訓練
神經(jīng)網(wǎng)絡不是黑箱
神經(jīng)網(wǎng)絡不難實現(xiàn)
?
1. 神經(jīng)網(wǎng)絡不是人類大腦的模型
人類大腦,是我們這個時代最大的奧秘之一,科學家還未對其工作方式達成共識。目前已有的關于大腦的兩個理論分別叫做祖母細胞理論(grandmother cell theory)和分布式表征理論。前一個理論認為,單個神經(jīng)元具有很高的信息容量,能夠表征復雜的概念,如你的祖母或甚至 Jennifer Aniston(《老友記》女主角之一--譯者)。后一個理論則認為,神經(jīng)元要簡單得多,而復雜的表征分布在許多神經(jīng)元上。人工神經(jīng)網(wǎng)絡受到了第二種理論不夠精確的啟發(fā)。
我認為,目前這一代神經(jīng)網(wǎng)絡不具備感知(sentience,一個與智能不同概念)能力的一個原因在于,生物神經(jīng)元遠比人工神經(jīng)元復雜。
大腦中的一個單個神經(jīng)元就是一個極其復雜的機器,即使在今天,我們也還不能理解它。而神經(jīng)網(wǎng)絡中的一個「神經(jīng)元」只是一個極其簡單的數(shù)學函數(shù),它只能獲取生物神經(jīng)元復雜性中極小的一部分。所以,如果要說神經(jīng)網(wǎng)絡模擬大腦,那也只在不夠精確的啟發(fā)水平上是對的,但事實上人工神經(jīng)網(wǎng)絡和生物大腦沒什么相似之處。 --吳恩達
大腦和神經(jīng)網(wǎng)絡之間的另一個巨大不同:大小和組織性。人類大腦包含的神經(jīng)元和突觸數(shù)量遠多于神經(jīng)網(wǎng)絡,而且它們是自組織和自適應的。相對地,神經(jīng)網(wǎng)絡是根據(jù)一個架構進行組織的。神經(jīng)網(wǎng)絡的「自組織」非常和大腦的自組織并不是一個意思,它更類似于一張圖標,而不是一張有序的網(wǎng)絡。
?
最先進的大腦成像技術生成的有趣大腦視圖
所以,那是什么意思?可以這樣想:神經(jīng)網(wǎng)絡受到大腦啟發(fā),就像北京的奧運體育場的設計靈感源自鳥巢。這并不意味著,該奧運體育場就是一個鳥巢,只是說,鳥巢的一些元素存在于該體育場的設計中。換句話說,大腦的元素存在于神經(jīng)網(wǎng)絡的設計中,但它們的相似程度比你想象的低得多。
事實上,比起人類大腦,神經(jīng)網(wǎng)絡更接近于曲線擬合(curve fitting)和回歸分析(regression analysis)等統(tǒng)計方法。我認為,在計量金融的背景中記住這一點很重要,雖說某件事物是「由大腦啟發(fā)的」可能聽起來很酷,但是,這一表述可能會導致不切實際的期望或擔憂。
?
曲線擬合,亦即函數(shù)逼近。神經(jīng)網(wǎng)絡常被用來逼近復雜的數(shù)學函數(shù)
2. 神經(jīng)網(wǎng)絡并不是統(tǒng)計學的「弱形式」
神經(jīng)網(wǎng)絡由互連節(jié)點層組成。單個節(jié)點被稱為感知器(perceptron),類似于一個多元線性回歸(multiple linear regression)。多元線性回歸和感知器之間的不同之處在于:感知器將多元線性回歸生成的信號饋送進可能線性也可能非線性的激活函數(shù)中。在多層感知器(MLP)中,感知器按層級排布,層與層之間互相連接。在 MLP 中有三種類型的層,即:輸入層(input layer)、隱藏層(hidden layer)和輸出層(output layer)。輸入層接收輸入模式而輸出層可以包含一個分類列表或那些輸入模式可以映射的輸出信號。隱藏層調(diào)整那些輸入的權重,直到將神經(jīng)網(wǎng)絡的誤差降至最小。對此的一個解釋是,隱藏層提取輸入數(shù)據(jù)中的顯著特征,這些特征有關于輸出的預測能力。?
映射輸入:輸出
感知器接收輸入向量,z=(z1,z2,…,zn)z=(z1,z2,…,zn),包含 n 個屬性。該輸入向量被稱為輸入模式(input pattern)。這些輸入再通過屬于感知器的權重向量 v=(v1,v2,…,vn) 進行加權。在多元線性回歸的背景中,這些可被認為是回歸系數(shù)或 β 系數(shù)。感知器的凈輸入信號通常是輸入模式和其權重的總和產(chǎn)物。使用該總和產(chǎn)物得到凈值(net)的神經(jīng)元被稱為求和單元(summation unit)。
?
凈輸入信號減去偏差 θ 后被輸入一些激活函數(shù) f()。激活函數(shù)通常是單調(diào)遞增函數(shù),其值位于 (0,1) 或 (-1,1) 之間(本文后面將進一步對此進行討論)。激活函數(shù)可以是線性的,也可以是非線性的。
?
下面是神經(jīng)網(wǎng)絡中一些常見的激活函數(shù):
?
依次為:線性函數(shù)、階躍函數(shù)、斜坡函數(shù)、S 型函數(shù)、雙曲正切函數(shù)、高斯函數(shù)
?
最簡單的神經(jīng)網(wǎng)絡只有一個映射輸入到輸出的神經(jīng)元。對于給定模式 p,該網(wǎng)絡的目標是相對一些給定的訓練模式 tp 的一些一只的目標值來最小化輸出信號 op 的誤差。比如,如果該神經(jīng)元應該映射 p 到 -1,但卻將其映射到了 1,那么,根據(jù)距離的求和平方測定,神經(jīng)元的誤差為 4,即 (-1-1) 分層
?
如上圖所示,感知器被分層進行組織。感知器的第一層被稱為輸入層,它接收訓練集 PT 中的模式 p. 最后一層映射到這些模型的預期輸出。舉一個輸出的例子:模式可以是關于安全性的不同技術指標的數(shù)量列表,而潛在的輸出則可能是 {買進、持有、賣出} 這樣的分類。
?
隱藏層則將前一層的輸出作為下一層的輸入;而下一層的輸出又會作為另一層的輸入。所以,這些隱藏層到底在做什么?一個解釋是,它們提取輸入數(shù)據(jù)中的顯著特征,這些特征可以預測輸出。這個過程被稱為特征提取(feature extraction),而且在某種程度上,其和主成分分析(PCA)等統(tǒng)計技術具有相似的功能。
?
深度神經(jīng)網(wǎng)絡具有大量隱藏層,有能力從數(shù)據(jù)中提取更加深層的特征。最近,深度神經(jīng)網(wǎng)絡在圖像識別問題上取得了異常優(yōu)異的表現(xiàn)。圖像識別中的特征提取的圖示如下:
?
除了過擬合(overfitting)的明顯風險,我認為,用于交易的深度神經(jīng)網(wǎng)絡,在使用上所面臨的一個問題是該神經(jīng)網(wǎng)絡的輸入幾乎總是經(jīng)過了嚴重的預處理,這意味著實際可以提取的特征可能非常少,因為輸入已經(jīng)是某種程度的特征了。
?
學習規(guī)則
?
正如前面提到的那樣,神經(jīng)網(wǎng)絡的目標是最小化一些錯誤度量(measure of error) ε. 最常見的錯誤度量是誤差平方和(Sum squared error (SSE));盡管在金融市場的應用中,這種度量對異常值很敏感,而且可能沒有跟蹤誤差(tracking error)那樣合適。
?
誤差平方和:
?
鑒于該網(wǎng)絡的目標是最小化 ε,我們可以使用一種優(yōu)化算法調(diào)整該神經(jīng)網(wǎng)絡中的權重。神經(jīng)網(wǎng)絡最常見的學習算法是梯度下降算法,盡管也可能使用其它算法和潛在更好的優(yōu)化算法。梯度下降算法的工作方式是,計算相對于神經(jīng)網(wǎng)絡中每一層的權重的誤差偏導數(shù),然后在與梯度相反的方向上移動(因為我們想最小化神經(jīng)網(wǎng)絡的誤差)。通過最小化誤差,我們可以最大化神經(jīng)網(wǎng)絡在樣本中的表現(xiàn)。
?
數(shù)學表示神經(jīng)網(wǎng)絡(v)中的權重更新規(guī)則由下式給出:
?
其中 η 是指學習率,控制著神經(jīng)網(wǎng)絡收斂的快慢程度。f 相對于模式 p 的凈輸入信號的偏導數(shù)的計算是所有非連續(xù)激活函數(shù)所面臨的問題,這不值一提;這也是可能使用可選優(yōu)化算法的一個原因。學習率的選擇對神經(jīng)網(wǎng)絡的表現(xiàn)有很大的影響。較小值的 η 可能導致非常慢的收斂,而較高值的 η 則可能導致訓練中的大量偏差。
?
小學習率慢收斂,大學習率發(fā)散
?
總結
?
不管我遇見過的一些統(tǒng)計學家相信什么,神經(jīng)網(wǎng)絡不只是「懶人分析師的弱形式的統(tǒng)計學」(之前確實有人跟我這么說,而且這還挺有趣);神經(jīng)網(wǎng)絡代表了一種可追溯到幾百年前的可靠統(tǒng)計方法的抽象。對于神經(jīng)網(wǎng)絡背后的統(tǒng)計學,我推薦閱讀超棒的這一章(http://page.mi.fu-berlin.de/rojas/neural/chapter/K9.pdf)。話雖如此,但我同意,一些從業(yè)者喜歡將神經(jīng)網(wǎng)絡看作是「黑箱」,這樣就可以在沒有花時間了解問題的本質(zhì)和神經(jīng)網(wǎng)絡是否是合適的選擇的前提下,將神經(jīng)網(wǎng)絡應用于任何問題。在交易使用神經(jīng)網(wǎng)絡就是其中一例;市場是動態(tài)變化的,但是,隨著時間的過去,神經(jīng)網(wǎng)絡假設輸入模式的分布仍然保持靜止。在《All Models are Wrong, 7 Sources of Model Risk》中可看到更詳細的討論。
?
3.神經(jīng)網(wǎng)絡流行許多不同的架構
?
到目前為止,我們已經(jīng)討論了最簡單的神經(jīng)網(wǎng)絡結構,也就是多層感知器(multi-layer perception)。還有很多不同的神經(jīng)網(wǎng)絡結構(太多了,以至于難以在此提及),而且,任何神經(jīng)網(wǎng)絡的性能,是其結構和權重的一個函數(shù)。如今在機器學習領域中取得的許多進步,并非源自重新思考感知器和優(yōu)化算法工作原理,而是創(chuàng)造性地思考如何融合這些組分。在下面,我會討論一些非常有趣且富創(chuàng)造性的神經(jīng)網(wǎng)絡結構,遞歸神經(jīng)網(wǎng)絡(RNN)--一些或所有的連接倒流,意味著反饋環(huán)路存在于網(wǎng)絡中。人們相信,這些網(wǎng)絡能夠在時間序列數(shù)據(jù)上表現(xiàn)得更好。照此說來,在金融市場的語境中,他們可能會特別相關。更多信息,請參見這篇很棒的文章《The unreasonable performance of recurrent [deep] neural networks.》
?
這張圖表展示了三個流行的遞歸神經(jīng)網(wǎng)絡結構,即 Elman 神經(jīng)網(wǎng)絡,Jordan 神經(jīng)網(wǎng)絡與 Hopfield 單層神經(jīng)網(wǎng)絡。
?
一個更新近、有趣的遞歸神經(jīng)網(wǎng)絡結構是神經(jīng)圖靈機器(Neural Turing Machine),結合了存儲器與一個遞歸神經(jīng)網(wǎng)絡。事實已經(jīng)證明,這些神經(jīng)網(wǎng)絡是圖靈完全(Turing complete)的,并能夠學習分類算法和其他計算任務。
?
Boltzmann 神經(jīng)網(wǎng)絡--最早的全連接神經(jīng)網(wǎng)絡之一,也就是 Boltzmann 機。這些網(wǎng)絡是第一批能夠學習內(nèi)部表征、解決非常難的組合數(shù)學問題的網(wǎng)絡。對 Boltzmann 機的一個解釋是這樣的:Hopfield 遞歸神經(jīng)網(wǎng)絡的蒙特卡洛版。盡管如此,很難訓練神經(jīng)網(wǎng)絡,但是,受到約束時,會比傳統(tǒng)神經(jīng)網(wǎng)絡更有效。給 Boltzmann 機施加限制,最流行的做法就是不準許隱藏神經(jīng)元之間建立直接聯(lián)系。這一特殊結構被稱為受限 Boltzmann 機(Restricted Boltzmann Machine),被用于深度受限 Boltzmann 機(Deep Botlzmann Machines)。
?
圖表展示了不同的波茲曼機(帶有不同節(jié)點連接),如何能顯著影響神經(jīng)網(wǎng)絡結果
?
深度神經(jīng)網(wǎng)絡--有著多層隱藏層的神經(jīng)網(wǎng)絡。近些年,深度神經(jīng)網(wǎng)絡已經(jīng)成為最流行的網(wǎng)絡,因為在圖像和聲音識別方面,它們?nèi)〉昧饲八从械某晒ΑI疃壬窠?jīng)網(wǎng)絡架構數(shù)量正在迅速增長,一些最受歡迎的架構包括深度信任網(wǎng)絡(Deep Belief Networks),卷積神經(jīng)網(wǎng)絡,深度受限波茲曼機,棧化自動編碼器,等等。深度神經(jīng)網(wǎng)絡最大問題之一,尤其是不穩(wěn)定的金融市場環(huán)境下,是過度擬合。
?
多個隱藏層組成的深度神經(jīng)網(wǎng)絡
?
自適應神經(jīng)網(wǎng)絡(Adaptive Neural Networks)--能夠在學習中同時自適應、并優(yōu)化自身結構的神經(jīng)網(wǎng)絡。實現(xiàn)這一點,要么是靠發(fā)展結構(添加更多隱藏層)或壓縮結構(修剪不必要的隱藏層)。我相信,自適應神經(jīng)網(wǎng)絡是最適合金融市場的網(wǎng)絡,因為市場具有動態(tài)性。之所以這么說,是因為神經(jīng)網(wǎng)絡所讀取的特征可能會隨著時間和市場的變化而有所加強或減弱。這意味著,過去收效很好的架構也需要修改,才能在今天達到最好的效果。
?
兩個不同類型的自適應神經(jīng)網(wǎng)絡結構。左圖是級聯(lián)神經(jīng)網(wǎng)絡(cascade neural network),右圖是自組織映射。
?
徑向基函數(shù)網(wǎng)絡(Radial basis networks)--盡管從感知與連接上來說并不是一個不同類型的結構,徑向基函數(shù)網(wǎng)絡利用徑向基函數(shù)作為它們激活功能,這些是真實的重要功能,其輸出從一個特定的角度來看取決于距離。最常用的徑向基函數(shù)是高斯分布。由于徑向基函數(shù)可以采用更加復雜的形式,他們最初用于執(zhí)行函數(shù)插值。因此徑向基函數(shù)神經(jīng)網(wǎng)絡可以有一個更高的信息能力。徑向基函數(shù)還用于支持向量機(Support Vector Machine)的內(nèi)核。
?
利用徑向基函數(shù),如何實現(xiàn)曲線擬合
?
總之,有數(shù)百個神經(jīng)網(wǎng)絡結構,而且一個神經(jīng)網(wǎng)絡性能可以會顯著優(yōu)于另一個。有興趣使用神經(jīng)網(wǎng)絡進行量化分析的人,可能要測試多個神經(jīng)網(wǎng)絡結構,并結合它們的輸出一起考慮,要從總體上最大化他們的投資成績。利用神經(jīng)網(wǎng)絡進行交易之前,我建議先閱讀我寫的《All Your Models are Wrong,7 Sources of Model Risk》,因為里面談到的不少問題仍然有用。
?
4.規(guī)模很重要,但并不是越大越好
?
選擇了一個架構后,你還要決定神經(jīng)網(wǎng)絡的規(guī)模大小。多少輸入?應該使用多少隱藏神經(jīng)元?又有多少要用的隱藏層(如果我們用的是深度神經(jīng)網(wǎng)絡的話)?多少輸出神經(jīng)元?這些問題之所以十分重要是因為如果神經(jīng)網(wǎng)絡太大(或太小),神經(jīng)網(wǎng)絡可能會出現(xiàn)過度擬合(或擬合不夠),也就是說,網(wǎng)絡無法順利泛化樣本。
?
該利用多少或哪些輸入?
?
輸入的數(shù)量取決于待決問題、可提供數(shù)據(jù)的數(shù)量和質(zhì)量,或許還需要一些創(chuàng)造力。輸入是一些簡單的變量,我們相信,這些變量具有一些預測能力,可以根據(jù)被預測的因變量進行一些預測。如果不清楚某個問題的輸入,你可以系統(tǒng)地決定哪個變量應該被包括在內(nèi),方法就是觀察潛在自變量和因變量之間的相關性和互相關。這種方法在《What Drives Real GDP Growth?》中有詳細介紹。
?
利用相關性去選擇輸入變量,存在兩個問題。首先,如果你正在使用一個線性相關矩陣,你也許會不小心排除了有用的變量。第二,兩個相對不相關變量,結合在一起,可能會產(chǎn)生一個強相關變量。如果孤立觀察變量,你也許會錯失這一良機。為了克服第二種問題,你應該利用主成分分析去獲取有用的特征向量(變量的線性結合),并將它們作為輸入。這里的問題是,特征向量也許不能很好地泛化,而且它們還假設輸入模式分布是固定的。
?
選擇變量過程中會遇到的另一個問題,就是多重共線性。多重共線性是指,正被輸入到模型中的獨立變量中,有兩個或更多的獨立變量是高度相關的。在回歸模型的語境下,這種情況可能會引發(fā)回歸系數(shù)根據(jù)模型或數(shù)據(jù)的細微改變而不規(guī)律地變化。鑒于神經(jīng)網(wǎng)絡和回歸模型是相似的,我懷疑神經(jīng)網(wǎng)絡也會存在這個問題。
?
最后,但并非不重要的是,當選擇變量是基于省略變量的偏見時,或許會引發(fā)統(tǒng)計學上的偏見。當創(chuàng)建一個模型,這個模型遺漏了一個或者更加重要的原因變量時,省略變量偏見會出現(xiàn)。
?
當模型通過過度或低估某個其他變量影響的方式,不正確地補償漏掉的變量時,也會制造偏見。比如,權重會變得過大,或SSE(誤差平方和)會過大。
?
我該使用多少隱藏神經(jīng)元?
?
隱藏單元的最佳數(shù)目,是個細節(jié)問題。這也就是說,作為一條經(jīng)驗法則,隱藏層越多,過度擬合風險越大。當神經(jīng)網(wǎng)絡并沒有學習數(shù)據(jù)的重要統(tǒng)計特征,而是「記憶」模式與他們可能收集到的任何噪音,過度擬合就會發(fā)生。在樣本中,這個結果不錯,但是,離開樣本,這個結果沒有說服力。如何避免過度擬合?在產(chǎn)業(yè)領域,有兩種流行的方法:早期停止(early stopping)和規(guī)則化(regularization),而我個人最喜歡的方法--全程檢索。
?
早期停止,包括將訓練組分為主要訓練組和一個驗證組。然后,不是以固定的迭代量來訓練神經(jīng)網(wǎng)絡,而是訓練網(wǎng)絡,直到它在驗證組上的表現(xiàn)成績開始惡化。本質(zhì)上,這能防止神經(jīng)網(wǎng)絡使用所有可以接觸到的參數(shù),并限制它簡單記憶每一個所見模式的能力。這幅圖顯示了兩個潛在的停止點(a 和 b)。
?
圖片展示了神經(jīng)網(wǎng)絡在a到b進行阻止后的效果與過度擬合
?
規(guī)范化是指,神經(jīng)網(wǎng)絡利用復雜結構時,對其進行懲罰。可以根據(jù)神經(jīng)網(wǎng)絡權重大小來衡量這一方法的復雜性。可以這樣實現(xiàn)規(guī)范化,添加一個條件(term),求平方誤差目標函數(shù),這個函數(shù)取決于權重大小。這相當于添加一個先驗(prior),讓神經(jīng)網(wǎng)絡相信它正在逼近的函數(shù)是平滑的。
?
n是神經(jīng)網(wǎng)絡中的權重數(shù)值。參數(shù)α與β控制著神經(jīng)網(wǎng)絡過度擬合或擬合不足程度。
?
我最喜歡的技術,也是到目前為止計算最昂貴的,就是全程搜索。在這一方法中,搜索算法被用來嘗試不同的神經(jīng)網(wǎng)絡結構,最終做出一個近乎最佳的選擇。人們經(jīng)常使用基因算法來實現(xiàn)這個。
?
什么是輸出?
?
神經(jīng)網(wǎng)絡能被用于回歸或分類。在回歸模型中,一個簡單輸出值可能被會被隱射到一組真實數(shù)字,這意味著只需要一個輸出神經(jīng)元。在分類模型中,針對模式可能被歸入的每個潛在類別,系統(tǒng)需要一個輸出神經(jīng)元。如果類別是未知的,我們就要使用無監(jiān)督神經(jīng)網(wǎng)絡技術,比如自組織映射。
?
總而言之,最好的辦法是遵守奧卡姆剃刀原理。奧卡姆剃刀原理主張,對于兩個性能相當?shù)哪P?#xff0c;自由參數(shù)更少的模型,其泛化效果越加。另一方面,絕不能通過犧牲效果,來選擇過度簡化的模型。類似地,人們不能去假設,僅僅因為神經(jīng)網(wǎng)絡有更多的隱藏層與隱藏神經(jīng)元,它就一定優(yōu)于更簡單的網(wǎng)絡。不幸的是,在我看來,人們似乎太重視大型網(wǎng)絡,很少強調(diào)做一個好的設計決策。就神經(jīng)網(wǎng)絡而言,規(guī)模更大并不意味著效果更好。
?
5. 神經(jīng)網(wǎng)絡的訓練算法有很多種
?
神經(jīng)網(wǎng)絡的學習算法不斷嘗試優(yōu)化神經(jīng)網(wǎng)絡的權重,直到遇到必須停止的情況。這種情況通常發(fā)生在網(wǎng)絡的誤差率降到了可接受水平時、驗證集的誤差率開始變差時、或指定的計算資源預算已被耗盡時。目前最常見的神經(jīng)網(wǎng)絡學習算法是反向轉播(backpropagation)算法,這種算法使用了前文提到過的隨機梯度下降。反向轉播包括兩個步驟:
?
前向傳播--將訓練數(shù)據(jù)集通過網(wǎng)絡,記錄下神經(jīng)網(wǎng)絡的輸出并計算出網(wǎng)絡的誤差。
?
反向轉播--將誤差信號反向通過網(wǎng)絡,使用梯度下降優(yōu)化神經(jīng)網(wǎng)絡的權重。
?
這種算法存在一些問題:一次性調(diào)整所有權重將會導致權重空間中的神經(jīng)網(wǎng)絡出現(xiàn)明顯的變化、隨機梯度下降算法非常慢、對局部最小值敏感。對于一些特定的神經(jīng)網(wǎng)絡(包括所有的 product link 神經(jīng)網(wǎng)絡)局部最小值是一個問題。反向轉播算法的前兩個問題可以通過使用梯度下降算法的變體來解決,例如動量梯度下降(QuickProp)、Nesterov 加速動量(NAG)梯度下降、自適應梯度算法(AdaGrad)、彈性反向傳播(RProp)和均方根反向傳播(RMSProp)。下圖可以看到,變體算法相比經(jīng)典梯度下降算法可以有明顯的提高。
?
需要指出的是,這些算法并不能完全解決局部最小值問題,而且在同時優(yōu)化神經(jīng)網(wǎng)絡的架構和權重時用處也不大。為了得到所需的全局優(yōu)化算法。兩種流行的全局優(yōu)化算法是粒子群優(yōu)化算法(PSO)和遺傳算法(GA)。下面是兩者可被用來訓練神經(jīng)網(wǎng)絡的方式:
?
神經(jīng)網(wǎng)絡向量表示-- 通過將神經(jīng)網(wǎng)絡編碼為權重向量,每一個向量代表神經(jīng)網(wǎng)絡中一個連接的權重,我們可以使用大部分元啟發(fā)式(meta-heuristic)搜索算法來訓練這種神經(jīng)網(wǎng)絡。因為向量會變得太,這種算法在訓練深度神經(jīng)網(wǎng)絡上效果不佳。
?
下圖展示了將神經(jīng)網(wǎng)絡表示為向量并與搜索空間或適應度曲面的概念相聯(lián)系的方式:
?
粒子群優(yōu)化算法(PSO)--使用 PSO 訓練神經(jīng)網(wǎng)絡可以構建一個這些神經(jīng)網(wǎng)絡的群體/集群。每個神經(jīng)網(wǎng)絡都可表示為權重的向量,并根據(jù)它在全局最優(yōu)粒子中的位置和它自身最優(yōu)的情況來進行調(diào)整。
?
在訓練數(shù)據(jù)集一次前向傳播之后,適應度函數(shù)將作為重構的神經(jīng)網(wǎng)絡的誤差平方和進行計算。這個方法主要考慮的是權重更新的波動性。因為如果權重調(diào)整的太快,神經(jīng)網(wǎng)絡的誤差平方和的變化將停滯,不會產(chǎn)生學習行為。
?
下圖示出了在單一群體的粒子群優(yōu)化算法中粒子是如何被其它粒子吸引的 。
?
遺傳算法--使用遺傳算法訓練神經(jīng)網(wǎng)絡,首先構建一個表示神經(jīng)網(wǎng)絡的向量的群體。然后對群體應用三項遺傳因子以使其逐步進化成越來越好的神經(jīng)網(wǎng)絡。這三項遺傳因子是:
?
1.選擇--使用一次前向傳播之后的誤差平方和,對神經(jīng)網(wǎng)絡群體進行排序。群體中排名前 x %的神經(jīng)網(wǎng)絡可「生存」至下一輪,被用于雜交。
?
2.雜交--將排名前 x %的神經(jīng)網(wǎng)絡相互混合。這個過程生成了「子代」。這種情況下,每個后代都代表一個新的神經(jīng)網(wǎng)絡,其權重來自「親代」神經(jīng)網(wǎng)絡。
?
3.變異 --這個過程是為了保持群體的基因多樣性。一小部分的群體被選中進行變異。這些神經(jīng)網(wǎng)絡的部分權重將在一個特定范圍內(nèi)隨機調(diào)整。
?
下圖展示了選擇、雜交、變異遺傳因子應用至由向量表示的神經(jīng)網(wǎng)絡群體的過程:
?
除了基于群體的元啟發(fā)式搜索算法,用來訓練神經(jīng)網(wǎng)絡的算法還包括加入動量的反向傳播、差分進化法、Levenberg Marquardt 算法、模擬退火法等。我個人推薦將局部最優(yōu)算法和全局最優(yōu)算法相結合,來克服兩者的短處。
?
6. 神經(jīng)網(wǎng)絡并不總是需要大量數(shù)據(jù)
?
神經(jīng)網(wǎng)絡可以使用的三種學習策略,包括監(jiān)督學習策略、無監(jiān)督學習策略、增強學習策略。監(jiān)督學習需要至少兩個數(shù)據(jù)集,其中訓練集由輸入數(shù)據(jù)和預期輸出數(shù)據(jù)組成,測試集只包含輸入數(shù)據(jù)。這兩個數(shù)據(jù)集的數(shù)據(jù)必須有標記,即數(shù)據(jù)模式是已知的。無監(jiān)督學習策略一般用在沒有標記的數(shù)據(jù)中以發(fā)現(xiàn)隱藏結構(例如隱藏的馬爾科夫鏈)。其行為模式與聚類算法相似。增強學習基于對神經(jīng)網(wǎng)絡好的行為獎賞,對壞的行為懲罰這樣一個簡單前提。因為無監(jiān)督學習和增強學習策略不需要帶有標記的數(shù)據(jù),所以它們可以應用在正確輸出結果未知的非規(guī)范化問題上。
?
無監(jiān)督學習
?
最流行的無監(jiān)督神經(jīng)網(wǎng)絡架構之一是自組織映射(Self Organizing Map,也稱為 Kohonen 映射)。自組織映射本質(zhì)上是一個多維量度技術,其可在保存該數(shù)據(jù)集的拓撲結構的同時,構建一個基礎數(shù)據(jù)集 Z 的概率密度分布函數(shù)的近似值。這是通過將數(shù)據(jù)集 Z 中的輸入向量 zi 映射到特征映射 V 中的權重向量 vj (神經(jīng)元)實現(xiàn)的。保存拓撲結構意味著如果兩個輸入向量在 Z 中是相鄰的,那么這些輸入向量用 V 所映射神經(jīng)元也是相鄰的。
?
自組織映射的另一個有趣的應用是對股票交易的時間序列圖表進行上色。這是為了顯示在某一時間點的市場情況。
?
強化學習
?
強化學習策略由三個部分組成:一個指定神經(jīng)網(wǎng)絡如何進行決策的規(guī)則,例如使用技術分析和基本面分析;一個區(qū)分好壞的獎賞功能,例如掙錢 vs. 賠錢;一個指定長期目標的價值函數(shù)。在金融市場(和游戲領域)環(huán)境中,強化學習策略特別有用,因為神經(jīng)網(wǎng)絡可以學習對特定量化指標進行優(yōu)化,例如對風險調(diào)整收益的合適量度。
?
下圖展示了神經(jīng)網(wǎng)絡可以負面或正面增強。
?
7. 神經(jīng)網(wǎng)絡不能基于任何數(shù)據(jù)訓練
?
神經(jīng)網(wǎng)絡可能不能工作的一個最大的問題是使用者沒有對注入神經(jīng)網(wǎng)絡的數(shù)據(jù)做適當?shù)念A處理。數(shù)據(jù)標準化、冗余信息消除和異常點移除都應該被用以提高性能良好的神經(jīng)網(wǎng)絡的可能性。
?
數(shù)據(jù)標準化--神經(jīng)網(wǎng)絡由多層感知器組成,感知器由經(jīng)過加權的連接相互連接。每個感知器包含一個擁有特定的「激活范圍」的激活函數(shù)( 徑向基函數(shù)除外)。進到神經(jīng)網(wǎng)絡的輸入需要被調(diào)整到激活范圍內(nèi)以使神經(jīng)網(wǎng)絡可以區(qū)分不同輸入模式的差別。
?
舉例來說,給定一個神經(jīng)網(wǎng)絡交易系統(tǒng),該系統(tǒng)接收證券組合中提示需要售出或買入證券的輸入和輸出的指示信息。其中一個輸入是證券的價格,我們使用 S 型激活函數(shù)。然而,大多數(shù)證券的成本在每股 5 美元和 15 美元之間,在 S 型激活函數(shù)輸出值接近1.0。這樣的話,所有證券的 S 型激活函數(shù)的輸出值都將為1.0,所有的感知器都會失效,神經(jīng)網(wǎng)絡也無法學習。
?
通過未處理的數(shù)據(jù)獲得訓練的神經(jīng)網(wǎng)絡會產(chǎn)生類似「the lights are on but nobody's home(燈亮著但無人在家)」的模型。
?
異常點移除--一個異常點是指數(shù)據(jù)組中遠大于或遠小于其它數(shù)據(jù)的值。異常點會因為回歸分析和曲線擬合等統(tǒng)計技術而出現(xiàn)問題,因為當該模型試圖「容納」異常值時,模型在所有其它數(shù)據(jù)上的表現(xiàn)都將下降。
?
上圖展示了試圖將異常值納入線性回歸模型所導致的數(shù)據(jù)集的糟糕匹配。異常點對包括神經(jīng)網(wǎng)絡在內(nèi)的線性回歸分析模型的影響是相似的。因此將異常點移出訓練數(shù)據(jù)組是非常有必要的。
?
冗余消除--當兩個或更多被注入神經(jīng)網(wǎng)絡的獨立變量高度相關時(多元共線性),這將對神經(jīng)網(wǎng)絡的學習能力產(chǎn)生負面影響。高度相關的輸入數(shù)據(jù)也說明了每個變量具有的獨特信息是較少的,所以更無關緊要的輸入可以被移除。移除冗余變量的另一個好處是更快的訓練時間。適應性的神經(jīng)網(wǎng)絡可以用來精簡冗余的連接和感知器。
?
8. 神經(jīng)網(wǎng)絡需要被再訓練
?
假定你可以訓練一個在樣本中成功買進和賣出的神經(jīng)網(wǎng)絡,這個神經(jīng)網(wǎng)絡也可能會隨時間逐漸失效。這并非是神經(jīng)網(wǎng)絡的功能有限的體現(xiàn),而是金融市場的準確反映。金融市場是復雜的自適應系統(tǒng),這意味著它們是實時變化的,所以在過去有效的模型在未來可能就可能失效。這種特性被稱作非穩(wěn)態(tài)或動態(tài)優(yōu)化問題,神經(jīng)網(wǎng)絡并不很擅長于解決此類問題。
?
類似于金融市場的動態(tài)環(huán)境對神經(jīng)網(wǎng)絡而言是非常難以建模處理的。現(xiàn)有兩種解決的方式要么是隨時間持續(xù)再訓練神經(jīng)網(wǎng)絡,要么是使用動態(tài)神經(jīng)網(wǎng)絡。動態(tài)神經(jīng)網(wǎng)絡「跟蹤」環(huán)境隨時間產(chǎn)生的變化并相應地調(diào)整它們的架構和權值。它們是自適應變化的。對于動態(tài)問題,多重解的啟發(fā)式優(yōu)化算法可被用于追蹤本地最優(yōu)解隨時間的變化。其中一個這樣的算法是多集群優(yōu)化算法(multi-swarm optimization algorithm),這是粒子群優(yōu)化算法衍生算法。另外,增強了多樣性和內(nèi)存的基因算法在動態(tài)系統(tǒng)中被證明是穩(wěn)健的。
?
下圖展示了基因算法是如何隨時間演化而找到動態(tài)系統(tǒng)的最優(yōu)解的。該圖也說明了模仿(從眾)交易群( mimic trade crowding)--市場參與者爭相選擇一個可觀的市場交易策略的情景,因此爭搶交易機會讓交易變得不那么有利可圖。
?
9. 神經(jīng)網(wǎng)絡不是黑箱
?
神經(jīng)網(wǎng)絡本身并不是黑箱。這將問題拋給了那些想要使用神經(jīng)網(wǎng)絡工具的人,比如,基金經(jīng)理不會知道一個神經(jīng)網(wǎng)絡如何做出交易決策,因此也不可能評估這個神經(jīng)網(wǎng)絡學習到的交易策略的風險。類似地,那些使用神經(jīng)網(wǎng)絡為信用風險建模的銀行也沒法合理說明為什么一位客戶有著特殊的信用評級。這是一個監(jiān)管要求。話雖如此,但最先進的規(guī)則提取算法已被開發(fā)出來以透明化一些神經(jīng)網(wǎng)絡架構。這些算法從作為數(shù)學公式、符號邏輯、模糊邏輯或決策樹的神經(jīng)網(wǎng)絡中提取知識。
?
數(shù)學規(guī)則--可以從神經(jīng)網(wǎng)絡中提取多重線性回歸線的算法已被開發(fā)出來。這些技術的問題在于,這些規(guī)則往往是很難理解的,因此這些方法還是沒有解決黑箱問題。
?
命題邏輯--命題邏輯是處理在離散值變量上完成的操作的數(shù)學邏輯的一個分支。這些變量, 比如 A 或者 B ,通常要么為「真」,要么為「假」;但它們能覆蓋一個離散范圍里的值,如 {買進,持有,賣出}這樣的范圍。
?
邏輯運算可以被應用于那些變量,比如 OR, AND 以及 XOR 。這些結果被稱為謂詞(predicates),可以用量詞量化。這就是謂詞和命題邏輯的區(qū)別。如果有個簡單神經(jīng)網(wǎng)絡,其中,價格(P) , 簡單易懂均數(shù) SMA,指數(shù)移動均數(shù)EM作為輸入,從命題邏輯神經(jīng)網(wǎng)絡中提取出一個遵從策略的趨勢,或許可以得到類似這樣的規(guī)則:
?
模糊邏輯-模糊邏輯就是概率與命題邏輯相遇之處。命題邏輯的問題在于那是一種絕對處理。比如,買入或者出售,真或偽,0或1。 因此,交易者沒有辦法確定這些結果的可信度。模糊邏輯克服了這一局限性,因為引入了從屬函數(shù)(membership function),詳細說明了一個變量多大程度上屬于某個特定域。比如,一家公司(谷歌)可能屬于一個域(買入)的可信度為0.7, 屬于另一個域(出售)的可信度為 0.3。將神經(jīng)網(wǎng)絡與模糊邏輯結合起來,就是神經(jīng)-模糊系統(tǒng)。這種研究調(diào)查討論了各種模糊規(guī)則的提取技術。
?
決策樹--決策樹向我們展示了,給定信息后,如何做出決策。決策樹推導是一個術語,指的是從神經(jīng)網(wǎng)絡中提取決策樹這個過程。
?
例如,使用決策樹來表示一個簡單的交易策略。三角型表示決策節(jié)點,可以是買入、持有或者出售一家公司。每個長方塊表示一個元組 。例如 , 25> or 。
?
10. 神經(jīng)網(wǎng)絡不難實現(xiàn)
?
從經(jīng)驗角度來說,白手起家進行編碼,這樣搭建神經(jīng)網(wǎng)絡很有挑戰(zhàn)性。幸運的是,現(xiàn)在有數(shù)以百計的開源和專有包,使得使用神經(jīng)網(wǎng)絡工作起來簡單多了。以下就是相關列表,數(shù)量分析專家可能會覺得對計量金融有用。
?
H20
?
H2O 并不只是提供機器學習的算法包,也為使用大數(shù)據(jù)的智能應用提供了一套處理速度更快,更具可拓展性的機器學習 API 。他們的 API 提供了深度學習模型,通用加速模型和通用線性模型以及更多人工智能模型。
?
谷歌 TENSORFLOW
?
TensorFlow 是一項用于使用數(shù)據(jù)流圖的數(shù)值計算的開源軟件庫。數(shù)據(jù)流圖中的節(jié)點代表數(shù)學運算符,圖像邊緣則代表著在此間流動的多維數(shù)據(jù)數(shù)組(tensors)。這種靈活的架構幫助你在桌面電腦,服務器以及移動設備的 CPU 和 GPU 上部署計算任務,而不需要重寫代碼以適應各平臺。
?
微軟 DMTK
?
DMTK 包括以下項目:DMTK 框架(Mutiverso)--分布式機器學習的參數(shù)服務器框架。LightLDA --可拓展,快速,輕量的大規(guī)模主題建模系統(tǒng)。分布式詞嵌入:詞嵌入的分布式算法。分布式 skipgram 混合物:分布式多感知詞嵌入算法。
?
微軟 Azure 機器學習
?
這個基于微軟云服務機器學習/預測分析平臺,是一個完全托管的云服務系統(tǒng),可以幫助你輕松地創(chuàng)建,配置和分享預測分析解決方案。該軟件允許你拖放預設的組件(包括機器學習模型),用于操作流程中數(shù)據(jù)組的自定義組件。該流程圖之后將被編譯為可以配置為互聯(lián)網(wǎng)服務的程序。它和更早的 SAS 公司的數(shù)據(jù)挖掘解決方案相似,除了它更現(xiàn)代化,更實用,支持深度學習模型,以及為客戶提供 Python 和 R 語言。
?
MXNET
?
MXNet是一為兼顧效率和靈活性而設計的深度學習框架。它允許用戶混合符號式編程和指令式編程的特點,最大化程序執(zhí)行效率和你的生產(chǎn)效率。它的核心,是一個自動并行化符號和指令操作符的動態(tài)依賴調(diào)度器。構建在頂層的圖形優(yōu)化層,使符號運算快速且節(jié)省內(nèi)存。該算法庫便攜且輕量化,并且適配多種 GPU 和多種機器。
?
Neon
?
Neon 是 Nervana 的基于深度學習框架的 Python 庫,在很多常見的如 AlexNet, VGG 以及 GoogLeNet 深度神經(jīng)網(wǎng)絡取得了最快速的運算表現(xiàn)。我們按照以下功能設計:1)支持常用模型和樣例: convnets, MLPs, RNNs, LSTMs, autoencoders。2)和用于fp16和fp32 (benchmarks)的基于 Maxwell 架構的 nervanaGPU 內(nèi)核密切聯(lián)合。3)基本的自動微分支持。4)可視化框架。5)可交換的硬件后端...
?
Theano
?
Theano 是一個允許用戶高效地定義、優(yōu)化和評估包含多維數(shù)組的數(shù)學表達式的 Python 庫。它可以利用 GPU來完成高效地符號區(qū)分。
?
Theano 和 TensorFlow 及 Torch 一樣,得到了比神經(jīng)網(wǎng)絡更加廣泛的應用:它是一個整合現(xiàn)存的或利用現(xiàn)成的數(shù)據(jù)結構以及算法創(chuàng)建的機器學習模型的人工智能框架。
?
Torch
?
Torch 是一個廣泛支持機器學習算法的科學計算框架...其核心特性的摘要包括一個 N 維數(shù)組,索引流程,切片,轉置,面向 C 的接口,通過 LuaJIT,線性代數(shù)流程,神經(jīng)網(wǎng)絡,基于能源的模型,數(shù)值加速例程,快速和高效的 GPU 支持,嵌入式,面向 iOS,Andriod 和 FPGA 的端口。
?
像Tensorflow 和 Theano,Torch 得到了比神經(jīng)網(wǎng)絡更加廣泛的應用:它是一個整合現(xiàn)存的或利用現(xiàn)成的數(shù)據(jù)結構以及算法創(chuàng)建的機器學習模型的人工智能框架。
?
SciKit Learn
?
SciKit Learn 是一個用于機器學習的 Python 包,非常受歡迎。基于NumPy, SciPy, 和 matplotlib 開源,而且用于各種機器學習模型的實施:分類,回歸,聚類,降維,模型選擇和數(shù)據(jù)預處理等。
?
正如上文提及的,現(xiàn)在有數(shù)以百計的機器學習包和框架。討論解決方案之前,我建議做個適當分析,看看哪種開源或者專屬機器學習包或者軟件最適合你的應用案例。總的說來,在軟件工程以及針對計量金融的模型研發(fā)中,有一個需要遵循的好規(guī)則:不要重復造車輪。已經(jīng)有了足夠先進的模型,就不要再寫自己的代碼了。
?
結 論
?
神經(jīng)網(wǎng)絡是一種強大的機器學習算法。建立在可靠的統(tǒng)計基礎上,多年來,已被成功用于金融模型以及交易策略。盡管如此,由于許多失敗的應用嘗試,這些算法的名聲依然不好。在絕大多數(shù)案例中,我們可以將那些不成功的使用案例歸因于不合理的神經(jīng)網(wǎng)絡設計決策以及錯誤理解了這些網(wǎng)絡的運作原理。這篇文章指出了這些誤解中的一部分。當你需要了解神經(jīng)網(wǎng)絡以及它們在金融模型和算法交易中的作用時,可以看看這些書。
轉載于:https://www.cnblogs.com/xiaoming123abc/p/5495987.html
總結
以上是生活随笔為你收集整理的详细解读神经网络十大误解,再也不会弄错它的工作原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: poj 1035
- 下一篇: 各个平台的mysql重启命令