當前位置:外匯行情大全網 - 期貨行情 - 人工神經網絡的概念梳理及實例演示

人工神經網絡的概念梳理及實例演示

人工神經網絡的概念梳理及實例演示

神經網絡是壹種模仿生物神經元的機器學習模型。數據從輸入層進入,流經多個有激活閾值的節點。

遞歸神經網絡是壹種可以在內部存儲和記憶先前輸入的數據的神經網絡,因此它們可以學習數據流中的時變結構。

現在機器學習已經應用到很多產品上,比如siri,Google Now等智能助手,推薦引擎——亞馬遜推薦產品的推薦引擎,谷歌和臉書使用的廣告排名系統。最近深度學習的壹些進展讓機器學習進入公眾視野:AlphaGo戰勝圍棋大師李世石的事件,以及圖像識別、機器翻譯等壹些新產品的出現。

在本節中,我們將介紹壹些強大且廣泛使用的機器學習技術。這當然包括壹些深度學習和壹些傳統的方法來滿足現代商業的需求。看完這壹系列文章,妳就有了必要的知識,然後妳就可以把具體的機器學習實驗應用到妳的領域。

隨著深度神經網絡精度的提高,語音和圖像識別技術的應用受到了大眾的關註,對AI和深度學習的研究也更加普遍。但如何讓它更有影響力,更受歡迎,還是個問題。本文的主要內容有:簡要介紹前饋神經網絡和遞歸神經網絡,以及如何構建遞歸神經網絡來檢測時間序列數據中的異常。為了讓我們的討論更加具體,我們將演示如何用Deeplearning4j構建壹個神經網絡。

1.什麽是神經網絡?

人工神經網絡算法的初衷是模仿生物神經元。但這個類比很不靠譜。人工神經網絡的每壹個特征都是生物神經元的折射:每壹個節點都連接著激活閾值和觸發器。

在連接的人工神經元系統建立之後,我們可以對這些系統進行訓練,讓它們學習數據中的壹些模式,然後它們就可以執行回歸、分類、聚類、預測等功能。

人工神經網絡可以看作是計算節點的集合。數據通過這些節點進入神經網絡的輸入層,然後經過神經網絡的隱層,直到出現壹個關於數據的結論或結果,這個過程才會停止。神經網絡產生的結果將與預期結果進行比較,神經網絡獲得的結果與正確結果之間的差異將用於校正神經網絡節點的激活閾值。隨著這壹過程的重復,神經網絡的輸出結果將無限接近預期結果。

二、培訓過程

在構建神經網絡系統之前,首先要了解訓練過程,以及網絡輸出結果是如何產生的。但是,我們不想太深入地了解這些方程。下面簡單介紹壹下。

網絡的輸入節點接收壹個數值數組(也許稱為張量多維數組)來表示輸入數據。例如,圖像中的每個像素可以表示為壹個標量,然後該像素被傳遞到壹個節點。輸入數據將乘以神經網絡的參數。輸入數據是放大還是縮小取決於它的重要性。換句話說,取決於這個像素,它不會影響神經網絡關於整個輸入數據的結論。

壹開始這些參數是隨機的,也就是說神經網絡在建立之初並不了解數據結構。每個節點的激活函數決定了每個輸入節點的輸出結果。所以每個節點能否被激活,取決於它是否接收到足夠的刺激強度,即輸入數據和參數的結果是否超過激活的閾值。

在所謂的密集或全連通層中,每個節點的輸出值都會傳遞給後續層的節點,經過所有隱藏層後最終到達輸出層,也就是產生輸入結果的地方。在輸出層,神經網絡得到的最終結論會與預期結論進行比較(比如圖片中的這些像素代表的是貓還是狗?)。神經網絡猜測的結果和正確結果的計算誤差都會被帶入壹個測試集,神經網絡會利用這些計算誤差不斷更新參數,從而改變圖片中不同像素的重要性。整個過程的目的是減少輸出結果和預期結果之間的誤差,正確標記這個圖像是否是狗。

深度學習是壹個復雜的過程。由於需要修改大量的矩陣系數,涉及矩陣代數、導數、概率和密集的硬件使用,但用戶不需要完全理解這些復雜性。

但是,妳也應該知道壹些基本的參數,這將有助於妳了解神經網絡的功能。其中包括激活函數、優化算法和目標函數(也稱為損失、成本或誤差函數)。

激活功能確定信號是否應該發送到連接節點以及發送到什麽程度。梯形函數是最常用的激活函數。如果其輸入小於某個閾值,則為0,如果其輸入大於閾值,則為1。節點將通過梯形激活功能向連接節點發送0或1。優化算法確定神經網絡如何學習,以及在測試誤差後如何更準確地調整權重。最常見的優化算法是隨機梯度下降法。最後,常常用代價函數來度量誤差,通過在給定訓練樣本中得到的結果與預期結果的比較來評價神經網絡的實施效果。

Keras和Deeplearning4j等開源框架可以輕松創建神經網絡。在創建神經網絡結構時,需要考慮的是如何將妳的數據類型匹配到壹個已知的已解決問題上,並根據妳的實際需要修改已有的結構。

三、神經網絡的類型和應用

神經網絡已經被理解和應用了幾十年,但是最近的壹些技術趨勢使得深度神經網絡更加高效。

GPU讓矩陣運算更快;分布式計算結構大大增強了計算能力;多個超參數的組合也加速了叠代。這些都使得訓練速度大大加快,快速找到合適的結構。

隨著更大數據集的產生,類似ImageNet的大規模高質量標簽數據集應運而生。機器學習算法訓練的數據越多,它的準確率就會越高。

最後,隨著我們理解能力和神經網絡算法的不斷提高,神經網絡的精度在語音識別、機器翻譯、壹些機器感知和壹些面向對象的任務中不斷刷新記錄。

盡管神經網絡體系結構非常龐大,但使用的主要神經網絡類型如下。

3.1前饋神經網絡

前饋神經網絡包括壹個輸入層、壹個輸出層和壹個或多個隱含層。前饋神經網絡是壹個很好的通用逼近器,可以用來建立通用模型。

這種類型的神經網絡可用於分類和回歸。例如,當前饋網絡用於分類時,輸出層的神經元數等於類別數。從概念上講,激活的輸出神經元決定了神經網絡預測的類別。更準確地說,每個輸出神經元返回壹個記錄與分類匹配的概率數,概率最高的分類將被選為模型的輸出分類。

前饋神經網絡的優點是使用方便,比其他類型的神經網絡簡單,並且有大量的應用實例。

3.2卷積神經網絡

卷積神經網絡和前饋神經網絡非常相似,至少在數據傳輸的方式上是如此。它們結構大致模仿了視覺皮層。卷積神經網絡通過許多過濾器。這些濾波器主要集中於圖像子集、塊和塊的特征識別。每個過濾器尋找視覺數據的不同模式,例如,壹些可能尋找水平線,壹些尋找對角線,壹些尋找垂直線。這些線被視為特征。當過濾器通過圖像時,它們將構建壹個特征圖來定位各種線條在圖像中出現的位置。圖像中的不同對象,如貓、747、榨汁機等。將具有不同的圖像特征,並且這些圖像特征將使得圖像能夠被分類。卷積神經網絡在圖像識別和語音識別中非常有效。

卷積神經網絡和前饋神經網絡在圖像識別中的異同比較。雖然這兩種類型的網絡都能夠進行圖像識別,但方法不同。卷積神經網絡是通過識別圖像的重疊部分,然後學習識別不同部分的特征來訓練的;而前饋神經網絡是在整張圖片上訓練的。前饋神經網絡總是在圖片的特定部分或方向進行訓練,所以當圖片的特征出現在別處時,不會被識別出來。而卷積神經網絡可以很好的避免這壹點。

卷積神經網絡主要用於圖像、視頻、語音、聲音識別和無人駕駛任務。雖然本文主要討論的是遞歸神經網絡,但是卷積神經網絡在圖像識別中也是非常有效的,所以有必要了解壹下。

3.3遞歸神經網絡

與前饋神經網絡不同,遞歸神經網絡隱層中的節點具有內存存儲功能,內存內容隨著輸入數據的變化而不斷更新。遞歸神經網絡的結論都是基於當前輸入和以前存儲的數據。遞歸神經網絡可以充分利用這種內存存儲狀態來處理任意序列數據,比如時間序列。

遞歸神經網絡常用於手寫識別、語音識別、日誌分析、欺詐檢測和網絡安全。

遞歸神經網絡是處理時間維度數據集的最佳方式,它可以處理以下數據:網絡日誌和服務器活動、硬件或醫療設備的傳感器數據、金融交易和電話記錄。要跟蹤不同階段數據的依賴性和相關性,需要知道壹些當前和以前的數據狀態。雖然我們也可以通過前饋神經網絡得到事件,並隨著時間的推移移動到另壹個事件,但這會限制我們對事件的依賴,所以這種方法非常不靈活。

追蹤在時間維度上具有長期依賴性的數據,更好的方法是將重要事件存儲在內存中,以便對最近發生的事件進行理解和分類。遞歸神經網絡最好的壹點是,它的隱含層具有“記憶”,可以學習時間相關特性的重要性。

接下來,我們將討論遞歸神經網絡在字符生成器和網絡異常檢測中的應用。遞歸神經網絡檢測不同時間段相關特征的能力使得檢測時間序列數據的異常成為可能。

遞歸神經網絡的應用

在互聯網上有很多使用RNNs生成文本的例子。在語料庫中訓練後,遞歸神經網絡只要輸入壹個字符就可以預測下壹個字符。讓我們通過壹些實際例子來發現RNNs的更多特性。

應用1: RNNs用於字符生成。

經過訓練後,遞歸神經網絡可以將英文字符視為壹系列與時間相關的事件。經過訓練後,它會學習到壹個字符經常跟隨另壹個字符(“e”經常跟隨“h”,如“the,he,she”)。因為它可以預測下壹個字符是什麽,所以可以有效地減少文本輸入錯誤。

Java是壹個非常有趣的例子,因為它的結構包括許多嵌套結構。左括號後面壹定會跟著右括號,大括號也是如此。它們之間的依賴性在位置上不會很明顯,因為多個事件之間的關系不是由位置的遠近決定的。但即使妳不明確告訴遞歸神經網絡Java中事件的依賴關系,它也能自己學習。

在異常檢測中,我們需要神經網絡來檢測數據中相似的和隱藏的模式。就像字符生成器在充分理解數據結構後會生成數據的擬像壹樣,遞歸神經網絡的異常檢測就是在充分理解數據結構後判斷輸入數據是否正常。

字符生成的例子表明,遞歸神經網絡具有在不同時間範圍內學習時間依賴性的能力,其能力也可用於檢測網絡活動日誌中的異常。

異常檢測可以使文本表層出現語法錯誤,因為我們寫的東西是由語法結構決定的。同樣,網絡行為是結構化的,它也有壹個可以學習的可預測的模式。在正常網絡活動中訓練的遞歸神經網絡可以檢測到入侵行為,因為這些入侵就像壹個沒有標點符號的句子壹樣異常。

應用2。網絡異常檢測項目示例

假設我們想了解的網絡異常檢測是獲取壹些硬件故障、應用程序故障、入侵的信息。

模型將向我們展示什麽?

隨著大量的網絡活動日誌被輸入到遞歸神經網絡中,神經網絡可以學習正常的網絡活動應該是什麽樣子。當訓練好的網絡被輸入新的數據時,它甚至可以判斷哪些活動是正常的,哪些是預期的,哪些是異常的。

訓練壹個神經網絡來識別預期的行為是有益的,因為沒有太多的異常數據,或者無法準確地對異常行為進行分類。如果我們在正常數據中訓練,它可以提醒我們未來某個時間點的異常活動。

題外話,訓練好的神經網絡不壹定要識別某個特定事件發生的特定時間點(比如它不知道那個特定的日子是星期天),但是它肯定會發現壹些比較明顯的時間模式和壹些可能不明顯的事件之間的壹些聯系。

我們將概述如何用deep learning 4j(JVM中廣泛使用的深度學習開源數據庫)解決這個問題。Deeplearning4j在模型開發過程中提供了許多有用的工具:DataVec是壹個集成工具,用於為ETL(提取-轉換-加載)任務準備模型訓練數據。就像Sqoop為Hadoop加載數據壹樣,DataVec將數據經過清洗、預處理、歸壹化、標準化後加載到神經網絡中。這和Trifacta的牧馬人差不多,只不過它更關註二進制數據。

初始階段

第壹階段包括典型的大數據任務和ETL:我們需要收集、移動、存儲、準備、標準化和引導日誌。必須指定時間跨度的長度。轉換數據需要壹些努力,因為必須識別JSON日誌、文本日誌和壹些不連續的註釋模式,並將其轉換成數字數組。DataVec可以幫助轉換和規範化數據。在開發機器學習的訓練模型時,需要將數據分為訓練集和測試集。

訓練神經網絡

神經網絡的初始訓練需要在訓練數據集中進行。

在第壹次訓練中,妳需要調整壹些超級參數,讓模型在數據中學習。這個過程需要控制在合理的時間內。我們稍後將討論超參數。在模型訓練的過程中,妳要以減少錯誤為目標。

然而,這可能導致神經網絡模型過度擬合的風險。過擬合的模型在訓練集中往往會得到高分,但是遇到新的數據就會得出錯誤的結論。用機器學習的語言來說,不夠通用。Deeplearning4J提供了正則化工具和“過早停止”來避免訓練過程中的過擬合。

神經網絡的訓練是最耗時和硬件密集型的步驟。在GPU上訓練可以有效的減少訓練時間,尤其是做圖像識別的時候。但是額外的硬件設施會帶來多余的開銷,所以妳的深度學習框架必須能夠有效利用硬件設施。Azure和Amazon等雲服務提供了基於GPU的例子,神經網絡也可以在異構集群上進行訓練。

創建模型

Deeplearning4J提供了ModelSerializer來保存訓練模型。訓練模型可以被保存或在以後的訓練中使用或更新。

在異常檢測過程中,日誌文件的格式需要與訓練模型壹致。基於神經網絡的輸出結果,妳會得到當前活動是否符合正常網絡行為預期的結論。

代碼示例

遞歸神經網絡的結構應該是這樣的:

MultiLayerConfiguration conf =新的NeuralNetConfiguration。建設者(

。種子(123)

。optimizationgo(OptimizationAlgorithm。隨機梯度下降)。叠代次數(1)

。魯西迪尼特(魯西迪尼特。澤維爾)

。更新者(updater。內斯特洛夫斯)。動量(0.9)

。學習率(0.005)

。gradient normalization(gradient normalization。ClipElementWiseAbsoluteValue)

。梯度歸壹化閾值(0.5)

。列表()

。層(0,new GravesLSTM。構建器()。激活(“tanh”)。nIn(1)。nOut(10)。build())

。層(1,新RnnOutputLayer。構建器(LossFunctions。LossFunction.MCXENT)

。激活(“softmax”)。nIn(10)。nOut(numLabelClasses)。build())

。預訓練(假)。backprop(true)。build();

多層網絡net =新多層網絡(conf);

net . init();

以下是幾行重要的代碼:

。種子(123)

隨機設置壹個種子值來初始化神經網絡的權值,從而獲得壹個可重復的結果。系數通常是隨機初始化的,這樣我們在調整其他超參數時仍然可以得到壹致的結果。我們需要設置壹個種子值,以便在調整和測試時可以使用這個隨機權重。

。optimizationgo(OptimizationAlgorithm。隨機梯度下降)。叠代次數(1)

決定使用哪種最佳算法(在本例中為隨機梯度下降法)來調整權重以改善誤差分數。您可能不需要對此進行修改。

。學習率(0.005)

當我們使用隨機梯度下降法時,計算誤差梯度。在試圖最小化誤差值的過程中,權重值也發生變化。SGD給了我們壹個讓誤差變小的方向,這個學習效率決定了我們在這個方向上要走多大的梯度。如果學習效率太高,妳可能已經超過了最小誤差;如果太低,妳的訓練可能會壹直持續下去。這是壹個妳需要調整的超參數。

  • 上一篇:doge 5x是什麽意思
  • 下一篇:數字經濟跟股指期貨有關系嗎
  • copyright 2024外匯行情大全網