手機通話中如果出現雜音,您可選擇一部好的話機試一試,如雜音消失,說明是話機的故障;如雜音仍存在,估計故障出現在線路上,可將室內線斷開,把話機直接接到入戶進線上,如雜音消失則說明室內線路有問題,檢查室內電話線路、插頭與接線盒是否有脫皮、生銹和松動現象,更換室內線、接線盒等;如果還有雜音,則是線路問題,應通知相關維護人員處理。
㈡ 什麼是BP神經網路
BP演算法的基本思想是:學習過程由信號正向傳播與誤差的反向回傳兩個部分組成;正向傳播時,輸入樣本從輸入層傳入,經各隱層依次逐層處理,傳向輸出層,若輸出層輸出與期望不符,則將誤差作為調整信號逐層反向回傳,對神經元之間的連接權矩陣做出處理,使誤差減小。經反復學習,最終使誤差減小到可接受的范圍。具體步驟如下:
1、從訓練集中取出某一樣本,把信息輸入網路中。
2、通過各節點間的連接情況正向逐層處理後,得到神經網路的實際輸出。
3、計算網路實際輸出與期望輸出的誤差。
4、將誤差逐層反向回傳至之前各層,並按一定原則將誤差信號載入到連接權值上,使整個神經網路的連接權值向誤差減小的方向轉化。
5、対訓練集中每一個輸入—輸出樣本對重復以上步驟,直到整個訓練樣本集的誤差減小到符合要求為止。
㈢ BP神經網路的原理的BP什麼意思
原文鏈接:http://tecdat.cn/?p=19936
在本教程中,您將學習如何在R語言中創建神經網路模型。
神經網路(或人工神經網路)具有通過樣本進行學習的能力。人工神經網路是一種受生物神經元系統啟發的信息處理模型。它由大量高度互連的處理元件(稱為神經元)組成,以解決問題。它遵循非線性路徑,並在整個節點中並行處理信息。神經網路是一個復雜的自適應系統。自適應意味著它可以通過調整輸入權重來更改其內部結構。
該神經網路旨在解決人類容易遇到的問題和機器難以解決的問題,例如識別貓和狗的圖片,識別編號的圖片。這些問題通常稱為模式識別。它的應用范圍從光學字元識別到目標檢測。
本教程將涵蓋以下主題:
神經網路概論
正向傳播和反向傳播
激活函數
R中神經網路的實現
案例
利弊
結論
神經網路概論
神經網路是受人腦啟發執行特定任務的演算法。它是一組連接的輸入/輸出單元,其中每個連接都具有與之關聯的權重。在學習階段,網路通過調整權重進行學習,來預測給定輸入的正確類別標簽。
人腦由數十億個處理信息的神經細胞組成。每個神經細胞都認為是一個簡單的處理系統。被稱為生物神經網路的神經元通過電信號傳輸信息。這種並行的交互系統使大腦能夠思考和處理信息。一個神經元的樹突接收來自另一個神經元的輸入信號,並根據這些輸入將輸出響應到某個其他神經元的軸突。
創建測試數據集
創建測試數據集:專業知識得分和溝通技能得分
預測測試集的結果
使用計算函數預測測試數據的概率得分。
現在,將概率轉換為二進制類。
預測結果為1,0和1。
利弊
神經網路更靈活,可以用於回歸和分類問題。神經網路非常適合具有大量輸入(例如圖像)的非線性數據集,可以使用任意數量的輸入和層,可以並行執行工作。
還有更多可供選擇的演算法,例如SVM,決策樹和回歸演算法,這些演算法簡單,快速,易於訓練並提供更好的性能。神經網路更多的是黑盒子,需要更多的開發時間和更多的計算能力。與其他機器學習演算法相比,神經網路需要更多的數據。NN僅可用於數字輸入和非缺失值數據集。一位著名的神經網路研究人員說:「神經網路是解決任何問題的第二好的方法。最好的方法是真正理解問題。」
神經網路的用途
神經網路的特性提供了許多應用方面,例如:
模式識別:神經網路非常適合模式識別問題,例如面部識別,物體檢測,指紋識別等。
異常檢測:神經網路擅長異常檢測,它們可以輕松檢測出不適合常規模式的異常模式。
時間序列預測:神經網路可用於預測時間序列問題,例如股票價格,天氣預報。
自然語言處理:神經網路在自然語言處理任務中提供了廣泛的應用,例如文本分類,命名實體識別(NER),詞性標記,語音識別和拼寫檢查。
最受歡迎的見解
1.r語言用神經網路改進nelson-siegel模型擬合收益率曲線分析
2.r語言實現擬合神經網路預測和結果可視化
3.python用遺傳演算法-神經網路-模糊邏輯控制演算法對樂透分析
4.用於nlp的python:使用keras的多標簽文本lstm神經網路分類
5.用r語言實現神經網路預測股票實例
6.R語言基於Keras的小數據集深度學習圖像分類
7.用於NLP的seq2seq模型實例用Keras實現神經機器翻譯
8.python中基於網格搜索演算法優化的深度學習模型分析糖
9.matlab使用貝葉斯優化的深度學習
㈣ 如何通過儀器辨別某個人的聲音
所謂聲紋(Voiceprint),是用電聲學儀器顯示的攜帶言語信息的聲波頻譜。
人類語言的產生是人體語言中樞與發音器官之間一個復雜的生理物理過程,人在講話時使用的發聲器官--舌、牙齒、喉頭、肺、鼻腔在尺寸和形態方面每個人的差異很大,所以任何兩個人的聲紋圖譜都有差異。每個人的語音聲學特徵既有相對穩定性,又有變異性,不是絕對的、一成不變的。這種變異可來自生理、病理、心理、模擬、偽裝,也與環境干擾有關。盡管如此,由於每個人的發音器官都不盡相同,因此在一般情況下,人們仍能區別不同的人的聲音或判斷是否是同一人的聲音。
聲紋識別及其應用
聲紋識別的應用有一些缺點,比如同一個人的聲音具有易變性,易受身體狀況、年齡、情緒等的影響;比如不同的麥克風和信道對識別性能有影響;比如環境噪音對識別有干擾;又比如混合說話人的情形下人的聲紋特徵不易提取;……等等。盡管如此,與其他生物特徵相比,聲紋識別的應用有一些特殊的優勢:(1)蘊含聲紋特徵的語音獲取方便、自然,聲紋提取可在不知不覺中完成,因此使用者的接受程度也高;(2)獲取語音的識別成本低廉,使用簡單,一個麥克風即可,在使用通訊設備時更無需額外的錄音設備;(3)適合遠程身份確認,只需要一個麥克風或電話、手機就可以通過網路(通訊網路或互聯網路)實現遠程登錄;(4)聲紋辨認和確認的演算法復雜度低;(5)配合一些其他措施,如通過語音識別進行內容鑒別等,可以提高准確率;……等等。這些優勢使得聲紋識別的應用越來越收到系統開發者和用戶青睞,聲紋識別的世界市場佔有率15.8%,僅次於手指和手的生物特徵識別,並有不斷上升的趨勢。
1。聲紋識別的分類
聲紋識別(Voiceprint Recognition, VPR),也稱為說話人識別(Speaker Recognition),有兩類,即說話人辨認(Speaker Identification)和說話人確認(Speaker Verification)。前者用以判斷某段語音是若幹人中的哪一個所說的,是「多選一」問題;而後者用以確認某段語音是否是指定的某個人所說的,是「一對一判別」問題。不同的任務和應用會使用不同的聲紋識別技術,如縮小刑偵范圍時可能需要辨認技術,而銀行交易時則需要確認技術。不管是辨認還是確認,都需要先對說話人的聲紋進行建模,這就是所謂的「訓練」或「學習」過程。
從另一方面,聲紋識別有文本相關的(Text-Dependent)和文本無關的(Text-Independent)兩種。與文本有關的聲紋識別系統要求用戶按照規定的內容發音,每個人的聲紋模型逐個被精確地建立,而識別時也必須按規定的內容發音,因此可以達到較好的識別效果,但系統需要用戶配合,如果用戶的發音與規定的內容不符合,則無法正確識別該用戶。而與文本無關的識別系統則不規定說話人的發音內容,模型建立相對困難,但用戶使用方便,可應用范圍較寬。根據特定的任務和應用,兩種是有不同的應用范圍的。比如,在銀行交易時可以使用文本相關的聲紋識別,因為用戶自己進行交易時是願意配合的;而在刑偵或偵聽應用中則無法使用文本相關的聲紋識別,因為你無法要求犯罪嫌疑人或被偵聽的人配合。
在說話人辨認方面,根據待識別的說話人是否在注冊的說話人集合內,說話人辨認可以分為開集(open-set)辨認和閉集(close-set)辨認。前者假定待識別說話人可以在集合外,而後者假定待識別說話人在集合內。顯然,開集辨認需要有一個對集外說話人的「拒識問題」,而且閉集辨認的結果要好於開集辨認結果。本質上講,說話人確認和開集說話人辨認都需要用到拒識技術,為了達到很好的拒識效果,通常需要訓練一個假冒者模型或背景模型,以便拒識時有可資比較的對象,閾值容易選定。而建立背景模型的好壞直接影響到拒識甚至聲紋識別的性能。一個好的背景模型,往往需要通過預先採集好的若干說話人的數據,通過某種演算法去建立。
如果技術達到一定的水平,可以把文本相關識別並入文本無關識別,把閉集辨認並入開集辨認,從而提供更為方便的使用方法。比如北京得意音通技術有限公司的「得意」身份證就是文本無關的、開集方式的說話人辨認和確認,「得意」身份證SDK還提供建立背景模型的工具。
2。聲紋識別的關鍵問題
聲紋識別可以說有兩個關鍵問題,一是特徵提取,二是模式匹配(模式識別)。
特徵提取的任務是提取並選擇對說話人的聲紋具有可分性強、穩定性高等特性的聲學或語言特徵。與語音識別不同,聲紋識別的特徵必須是「個性化」特徵,而說話人識別的特徵對說話人來講必須是「共性特徵」。雖然目前大部分聲紋識別系統用的都是聲學層面的特徵,但是表徵一個人特點的特徵應該是多層面的,包括:(1)與人類的發音機制的解剖學結構有關的聲學特徵(如頻譜、倒頻譜、共振峰、基音、反射系數等等)、鼻音、帶深呼吸音、沙啞音、笑聲等;(2)受社會經濟狀況、受教育水平、出生地等影響的語義、修辭、發音、言語習慣等;(3)個人特點或受父母影響的韻律、節奏、速度、語調、音量等特徵。從利用數學方法可以建模的角度出發,聲紋自動識別模型目前可以使用的特徵包括:(1)聲學特徵(倒頻譜);(2)詞法特徵(說話人相關的詞n-gram,音素n-gram);(3)韻律特徵(利用n-gram描述的基音和能量「姿勢」);(4)語種、方言和口音信息;(5)通道信息(使用何種通道);等等。
根據不同的任務需求,聲紋識別還面臨一個特徵選擇或特徵選用的問題。例如,對「信道」信息,在刑偵應用上,希望不用,也就是說希望弱化信道對說話人識別的影響,因為我們希望不管說話人用什麼信道系統它都可以辨認出來;而在銀行交易上,希望用信道信息,即希望信道對說話人識別有較大影響,從而可以剔除錄音、模仿等帶來的影響。
總之,較好的特徵,應該能夠有效地區分不同的說話人,但又能在同一說話人語音發生變化時保持相對的穩定;不易被他人模仿或能夠較好地解決被他人模仿問題;具有較好的抗噪性能;……。當然,這些問題也可以通過模型方法去解決。
對於模式識別,有以下幾大類方法:
(1)模板匹配方法:利用動態時間彎折(DTW)以對准訓練和測試特徵序列,主要用於固定片語的應用(通常為文本相關任務);
(2)最近鄰方法:訓練時保留所有特徵矢量,識別時對每個矢量都找到訓練矢量中最近的K個,據此進行識別,通常模型存儲和相似計算的量都很大;
(3)神經網路方法:有很多種形式,如多層感知、徑向基函數(RBF)等,可以顯式訓練以區分說話人和其背景說話人,其訓練量很大,且模型的可推廣性不好;
(4)隱式馬爾可夫模型(HMM)方法:通常使用單狀態的HMM,或高斯混合模型(GMM),是比較流行的方法,效果比較好;
(5)VQ聚類方法(如LBG):效果比較好,演算法復雜度也不高,和HMM方法配合起來更可以收到更好的效果;
(6)多項式分類器方法:有較高的精度,但模型存儲和計算量都比較大;
(7)……
聲紋識別需要解決的關鍵問題還有很多,諸如:短話音問題,能否用很短的語音進行模型訓練,而且用很短的時間進行識別,這主要是聲音不易獲取的應用所需求的;聲音模仿(或放錄音)問題,要有效地區分開模仿聲音(錄音)和真正的聲音;多說話人情況下目標說話人的有效檢出;消除或減弱聲音變化(不同語言、內容、方式、身體狀況、時間、年齡等)帶來的影響;消除信道差異和背景噪音帶來的影響;……此時需要用到其他一些技術來輔助完成,如去噪、自適應等技術。
對說話人確認,還面臨一個兩難選擇問題。通常,表徵說話人確認系統性能的兩個重要參數是錯誤拒絕率和錯誤接受率,前者是拒絕真正說話人而造成的錯誤,後者是接受集外說話人而造成的錯誤,二者與閾值的設定相關。在現有的技術水平下,兩者無法同時達到最小,需要調整閾值來滿足不同應用的需求,比如在需要「易用性」的情況下,可以讓錯誤拒絕率低一些,此時錯誤接受率會增加,從而安全性降低;在對「安全性」要求高的情況下,可以讓錯誤接受率低一些,此時錯誤拒絕率會增加,從而易用性降低。前者可以概括為「寧錯勿漏」,而後者可以「寧漏勿錯」。我們把真正閾值的調整稱為「操作點」調整。好的系統應該允許對操作點的自由調整。
3。聲紋識別的應用
聲紋識別可以應用的范圍很寬,可以說聲紋識別幾乎可以應用到人們日常生活的各個角落。比如下面舉幾個例子。
(1)信息領域。比如在自動總機系統中,把「得意」身份證之聲紋辨認(www.d-ear.com/Technologies&Procts/Procts-d-Ear%20ID_ch.htm)和「得意」關鍵詞檢出器(http://www.d-ear.com/Technologies&Procts/Procts-d-Ear%20Word-Spotter_ch)結合起來,可以在姓名自動撥號的同時向受話方提供主叫方的身份信息。前者用於身份認證,後者用於內容認證。同樣,聲紋識別技術可以在呼叫中心(Call Center)應用中為注冊的常客戶提供友好的個性化服務。
(2)銀行、證券。鑒於密碼的安全性不高,可以用聲紋識別技術對電話銀行、遠程炒股等業務中的用戶身份進行確認,為了提供安全性,還可以採取一些其他措施,如密碼和聲紋雙保險,如隨機提示文本用文本相關的聲紋識別技術進行身份確認(隨機提示文本保證無法用事先錄好的音去假冒),甚至可以把交易時的聲音錄下來以備查詢。
(3)公安司法。對於各種電話勒索、綁架、電話人身攻擊等案件,聲紋辨認技術可以在一段錄音中查找出嫌疑人或縮小偵察范圍;聲紋確認技術還可以在法庭上提供身份確認的旁證。
(4)軍隊和國防。聲紋辨認技術可以察覺電話交談過程中是否有關鍵說話人出現,繼而對交談的內容進行跟蹤(戰場環境監聽);在通過電話發出軍事指令時,可以對發出命令的人的身份進行確認(敵我指戰員鑒別)。目前該技術在國外軍事方面已經有所應用,據報道,迫降在我國海南機場的美軍EP-3偵察機中就載有類似的聲紋識別偵聽模塊。
(5)保安和證件防偽。如機密場所的門禁系統。又如聲紋識別確認可用於信用卡、銀行自動取款機、門、車的鑰匙卡、授權使用的電腦、聲紋鎖以及特殊通道口的身份卡,把聲紋存在卡上,在需要時,持卡者只要將卡插入專用機的插口上,通過一個傳聲器讀出事先已儲存的暗碼,同時儀器接收持卡者發出的聲音,然後進行分析比較,從而完成身份確認。同樣可以把含有某人聲紋特徵的晶元嵌入到證件之中,通過上面所述的過程完成證件防偽。
㈤ 異常檢測有哪些主要的分析方法
1. 概率統計方法
在基於異常檢測技術的IDS中應用最早也是最多的一種方法。
首先要對系統或用戶的行為按照一定的時間間隔進行采樣,樣本的內容包括每個會話的登錄、退出情況,CPU和內存的佔用情況,硬碟等存儲介質的使用情況等。
將每次採集到的樣本進行計算,得出一系列的參數變數對這些行為進行描述,從而產生行為輪廓,將每次采樣後得到的行為輪廓與已有輪廓進行合並,最終得到系統和用戶的正常行為輪廓。IDS通過將當前採集到的行為輪廓與正常行為輪廓相比較,來檢測是否存在網路入侵行為。
2. 預測模式生成法
假設條件是事件序列不是隨機的而是遵循可辨別的模式。這種檢測方法的特點是考慮了事件的序列及其相互聯系,利用時間規則識別用戶行為正常模式的特徵。通過歸納學習產生這些規則集,並能動態地修改系統中的這些規則,使之具有較高的預測性、准確性。如果規則在大部分時間是正確的,並能夠成功地運用預測所觀察到的數據,那麼規則就具有高可信度。
3. 神經網路方法
基本思想是用一系列信息單元(命令)訓練神經單元,這樣在給定一組輸入後、就可能預測出輸出。與統計理論相比,神經網路更好地表達了變數間的非線性關系,並且能自動學習並更新。實驗表明UNIX系統管理員的行為幾乎全是可以預測的,對於一般用戶,不可預測的行為也只佔了很少的一部分。
㈥ 神經網路以及小波分析法在汽車發動機故障檢修中有什麼應用
汽車是我們生活中常用的將交通工具,那麼神經網路和小波分析法在汽車發動機故障檢修中有什麼應用呢?大家請看我接下來詳細地講解。
一,小波分析在故障檢修中的應用
小波包分解與故障特徵提取。缸蓋表面的振動信號由一系列瞬態響應信號組成,分別代表氣缸的振動源響應信號:1為氣缸的燃燒激勵響應;2是排氣閥打開時的節流閥沖擊。氣門間隙異常時,振動信號的能量大於目前沖擊力作用時,振動信號的主要組件目前離沖擊力穩定的振動信號和雜訊,信號能量相對較小。因此,可以利用每個頻帶的能量變化來提取故障特徵,通過小波包分解系數{4]得到頻帶的能量。
㈦ 人工神經網路概念梳理與實例演示
人工神經網路概念梳理與實例演示
神經網路是一種模仿生物神經元的機器學習模型,數據從輸入層進入並流經激活閾值的多個節點。
遞歸性神經網路一種能夠對之前輸入數據進行內部存儲記憶的神經網路,所以他們能夠學習到數據流中的時間依賴結構。
如今機器學習已經被應用到很多的產品中去了,例如,siri、Google Now等智能助手,推薦引擎——亞馬遜網站用於推薦商品的推薦引擎,Google和Facebook使用的廣告排名系統。最近,深度學習的一些進步將機器學習帶入公眾視野:AlphaGo 打敗圍棋大師李世石事件以及一些圖片識別和機器翻譯等新產品的出現。
在這部分中,我們將介紹一些強大並被普遍使用的機器學習技術。這當然包括一些深度學習以及一些滿足現代業務需求傳統方法。讀完這一系列的文章之後,你就掌握了必要的知識,便可以將具體的機器學習實驗應用到你所在的領域當中。
隨著深層神經網路的精度的提高,語音和圖像識別技術的應用吸引了大眾的注意力,關於AI和深度學習的研究也變得更加普遍了。但是怎麼能夠讓它進一步擴大影響力,更受歡迎仍然是一個問題。這篇文章的主要內容是:簡述前饋神經網路和遞歸神經網路、怎樣搭建一個遞歸神經網路對時間系列數據進行異常檢測。為了讓我們的討論更加具體化,我們將演示一下怎麼用Deeplearning4j搭建神經網路。
一、什麼是神經網路?
人工神經網路演算法的最初構思是模仿生物神經元。但是這個類比很不可靠。人工神經網路的每一個特徵都是對生物神經元的一種折射:每一個節點與激活閾值、觸發的連接。
連接人工神經元系統建立起來之後,我們就能夠對這些系統進行訓練,從而讓他們學習到數據中的一些模式,學到之後就能執行回歸、分類、聚類、預測等功能。
人工神經網路可以看作是計算節點的集合。數據通過這些節點進入神經網路的輸入層,再通過神經網路的隱藏層直到關於數據的一個結論或者結果出現,這個過程才會停止。神經網路產出的結果會跟預期的結果進行比較,神經網路得出的結果與正確結果的不同點會被用來更正神經網路節點的激活閾值。隨著這個過程的不斷重復,神經網路的輸出結果就會無限靠近預期結果。
二、訓練過程
在搭建一個神經網路系統之前,你必須先了解訓練的過程以及網路輸出結果是怎麼產生的。然而我們並不想過度深入的了解這些方程式,下面是一個簡短的介紹。
網路的輸入節點收到一個數值數組(或許是叫做張量多維度數組)就代表輸入數據。例如, 圖像中的每個像素可以表示為一個標量,然後將像素傳遞給一個節點。輸入數據將會與神經網路的參數相乘,這個輸入數據被擴大還是減小取決於它的重要性,換句話說,取決於這個像素就不會影響神經網路關於整個輸入數據的結論。
起初這些參數都是隨機的,也就是說神經網路在建立初期根本就不了解數據的結構。每個節點的激活函數決定了每個輸入節點的輸出結果。所以每個節點是否能夠被激活取決於它是否接受到足夠的刺激強度,即是否輸入數據和參數的結果超出了激活閾值的界限。
在所謂的密集或完全連接層中,每個節點的輸出值都會傳遞給後續層的節點,在通過所有隱藏層後最終到達輸出層,也就是產生輸入結果的地方。在輸出層, 神經網路得到的最終結論將會跟預期結論進行比較(例如,圖片中的這些像素代表一隻貓還是狗?)。神經網路猜測的結果與正確結果的計算誤差都會被納入到一個測試集中,神經網路又會利用這些計算誤差來不斷更新參數,以此來改變圖片中不同像素的重要程度。整個過程的目的就是降低輸出結果與預期結果的誤差,正確地標注出這個圖像到底是不是一條狗。
深度學習是一個復雜的過程,由於大量的矩陣系數需要被修改所以它就涉及到矩陣代數、衍生品、概率和密集的硬體使用問題,但是用戶不需要全部了解這些復雜性。
但是,你也應該知道一些基本參數,這將幫助你理解神經網路函數。這其中包括激活函數、優化演算法和目標函數(也稱為損失、成本或誤差函數)。
激活函數決定了信號是否以及在多大程度上應該被發送到連接節點。階梯函數是最常用的激活函數, 如果其輸入小於某個閾值就是0,如果其輸入大於閾值就是1。節點都會通過階梯激活函數向連接節點發送一個0或1。優化演算法決定了神經網路怎麼樣學習,以及測試完誤差後,權重怎麼樣被更准確地調整。最常見的優化演算法是隨機梯度下降法。最後, 成本函數常用來衡量誤差,通過對比一個給定訓練樣本中得出的結果與預期結果的不同來評定神經網路的執行效果。
Keras、Deeplearning4j 等開源框架讓創建神經網路變得簡單。創建神經網路結構時,需要考慮的是怎樣將你的數據類型匹配到一個已知的被解決的問題,並且根據你的實際需求來修改現有結構。
三、神經網路的類型以及應用
神經網路已經被了解和應用了數十年了,但是最近的一些技術趨勢才使得深度神經網路變得更加高效。
GPUs使得矩陣操作速度更快;分布式計算結構讓計算能力大大增強;多個超參數的組合也讓迭代的速度提升。所有這些都讓訓練的速度大大加快,迅速找到適合的結構。
隨著更大數據集的產生,類似於ImageNet 的大型高質量的標簽數據集應運而生。機器學習演算法訓練的數據越大,那麼它的准確性就會越高。
最後,隨著我們理解能力以及神經網路演算法的不斷提升,神經網路的准確性在語音識別、機器翻譯以及一些機器感知和面向目標的一些任務等方面不斷刷新記錄。
盡管神經網路架構非常的大,但是主要用到的神經網路種類也就是下面的幾種。
3.1前饋神經網路
前饋神經網路包括一個輸入層、一個輸出層以及一個或多個的隱藏層。前饋神經網路可以做出很好的通用逼近器,並且能夠被用來創建通用模型。
這種類型的神經網路可用於分類和回歸。例如,當使用前饋網路進行分類時,輸出層神經元的個數等於類的數量。從概念上講, 激活了的輸出神經元決定了神經網路所預測的類。更准確地說, 每個輸出神經元返回一個記錄與分類相匹配的概率數,其中概率最高的分類將被選為模型的輸出分類。
前饋神經網路的優勢是簡單易用,與其他類型的神經網路相比更簡單,並且有一大堆的應用實例。
3.2卷積神經網路
卷積神經網路和前饋神經網路是非常相似的,至少是數據的傳輸方式類似。他們結構大致上是模仿了視覺皮層。卷積神經網路通過許多的過濾器。這些過濾器主要集中在一個圖像子集、補丁、圖塊的特徵識別上。每一個過濾器都在尋找不同模式的視覺數據,例如,有的可能是找水平線,有的是找對角線,有的是找垂直的。這些線條都被看作是特徵,當過濾器經過圖像時,他們就會構造出特徵圖譜來定位各類線是出現在圖像的哪些地方。圖像中的不同物體,像貓、747s、榨汁機等都會有不同的圖像特徵,這些圖像特徵就能使圖像完成分類。卷積神經網路在圖像識別和語音識別方面是非常的有效的。
卷積神經網路與前饋神經網路在圖像識別方面的異同比較。雖然這兩種網路類型都能夠進行圖像識別,但是方式卻不同。卷積神經網路是通過識別圖像的重疊部分,然後學習識別不同部分的特徵進行訓練;然而,前饋神經網路是在整張圖片上進行訓練。前饋神經網路總是在圖片的某一特殊部分或者方向進行訓練,所以當圖片的特徵出現在其他地方時就不會被識別到,然而卷積神經網路卻能夠很好的避免這一點。
卷積神經網路主要是用於圖像、視頻、語音、聲音識別以及無人駕駛的任務。盡管這篇文章主要是討論遞歸神經網路的,但是卷積神經網路在圖像識別方面也是非常有效的,所以很有必要了解。
3.3遞歸神經網路
與前饋神經網路不同的是,遞歸神經網路的隱藏層的節點里有內部記憶存儲功能,隨著輸入數據的改變而內部記憶內容不斷被更新。遞歸神經網路的結論都是基於當前的輸入和之前存儲的數據而得出的。遞歸神經網路能夠充分利用這種內部記憶存儲狀態處理任意序列的數據,例如時間序列。
遞歸神經網路經常用於手寫識別、語音識別、日誌分析、欺詐檢測和網路安全。
遞歸神經網路是處理時間維度數據集的最好方法,它可以處理以下數據:網路日誌和伺服器活動、硬體或者是醫療設備的感測器數據、金融交易、電話記錄。想要追蹤數據在不同階段的依賴和關聯關系需要你了解當前和之前的一些數據狀態。盡管我們通過前饋神經網路也可以獲取事件,隨著時間的推移移動到另外一個事件,這將使我們限制在對事件的依賴中,所以這種方式很不靈活。
追蹤在時間維度上有長期依賴的數據的更好方法是用內存來儲存重要事件,以使近期事件能夠被理解和分類。遞歸神經網路最好的一點就是在它的隱藏層裡面有「內存」可以學習到時間依賴特徵的重要性。
接下來我們將討論遞歸神經網路在字元生成器和網路異常檢測中的應用。遞歸神經網路可以檢測出不同時間段的依賴特徵的能力使得它可以進行時間序列數據的異常檢測。
遞歸神經網路的應用
網路上有很多使用RNNs生成文本的例子,遞歸神經網路經過語料庫的訓練之後,只要輸入一個字元,就可以預測下一個字元。下面讓我們通過一些實用例子發現更多RNNs的特徵。
應用一、RNNs用於字元生成
遞歸神經網路經過訓練之後可以把英文字元當做成一系列的時間依賴事件。經過訓練後它會學習到一個字元經常跟著另外一個字元(「e」經常跟在「h」後面,像在「the、he、she」中)。由於它能預測下一個字元是什麼,所以它能有效地減少文本的輸入錯誤。
Java是個很有趣的例子,因為它的結構包括很多嵌套結構,有一個開的圓括弧必然後面就會有一個閉的,花括弧也是同理。他們之間的依賴關系並不會在位置上表現的很明顯,因為多個事件之間的關系不是靠所在位置的距離確定的。但是就算是不明確告訴遞歸神經網路Java中各個事件的依賴關系,它也能自己學習了解到。
在異常檢測當中,我們要求神經網路能夠檢測出數據中相似、隱藏的或許是並不明顯的模式。就像是一個字元生成器在充分地了解數據的結構後就會生成一個數據的擬像,遞歸神經網路的異常檢測就是在其充分了解數據結構後來判斷輸入的數據是不是正常。
字元生成的例子表明遞歸神經網路有在不同時間范圍內學習到時間依賴關系的能力,它的這種能力還可以用來檢測網路活動日誌的異常。
異常檢測能夠使文本中的語法錯誤浮出水面,這是因為我們所寫的東西是由語法結構所決定的。同理,網路行為也是有結構的,它也有一個能夠被學習的可預測模式。經過在正常網路活動中訓練的遞歸神經網路可以監測到入侵行為,因為這些入侵行為的出現就像是一個句子沒有標點符號一樣異常。
應用二、一個網路異常檢測項目的示例
假設我們想要了解的網路異常檢測就是能夠得到硬體故障、應用程序失敗、以及入侵的一些信息。
模型將會向我們展示什麼呢?
隨著大量的網路活動日誌被輸入到遞歸神經網路中去,神經網路就能學習到正常的網路活動應該是什麼樣子的。當這個被訓練的網路被輸入新的數據時,它就能偶判斷出哪些是正常的活動,哪些是被期待的,哪些是異常的。
訓練一個神經網路來識別預期行為是有好處的,因為異常數據不多,或者是不能夠准確的將異常行為進行分類。我們在正常的數據里進行訓練,它就能夠在未來的某個時間點提醒我們非正常活動的出現。
說句題外話,訓練的神經網路並不一定非得識別到特定事情發生的特定時間點(例如,它不知道那個特殊的日子就是周日),但是它一定會發現一些值得我們注意的一些更明顯的時間模式和一些可能並不明顯的事件之間的聯系。
我們將概述一下怎麼用 Deeplearning4j(一個在JVM上被廣泛應用的深度學習開源資料庫)來解決這個問題。Deeplearning4j在模型開發過程中提供了很多有用的工具:DataVec是一款為ETL(提取-轉化-載入)任務准備模型訓練數據的集成工具。正如Sqoop為Hadoop載入數據,DataVec將數據進行清洗、預處理、規范化與標准化之後將數據載入到神經網路。這跟Trifacta』s Wrangler也相似,只不過它更關注二進制數據。
開始階段
第一階段包括典型的大數據任務和ETL:我們需要收集、移動、儲存、准備、規范化、矢量話日誌。時間跨度的長短是必須被規定好的。數據的轉化需要花費一些功夫,這是由於JSON日誌、文本日誌、還有一些非連續標注模式都必須被識別並且轉化為數值數組。DataVec能夠幫助進行轉化和規范化數據。在開發機器學習訓練模型時,數據需要分為訓練集和測試集。
訓練神經網路
神經網路的初始訓練需要在訓練數據集中進行。
在第一次訓練的時候,你需要調整一些超參數以使模型能夠實現在數據中學習。這個過程需要控制在合理的時間內。關於超參數我們將在之後進行討論。在模型訓練的過程中,你應該以降低錯誤為目標。
但是這可能會出現神經網路模型過度擬合的風險。有過度擬合現象出現的模型往往會在訓練集中的很高的分數,但是在遇到新的數據時就會得出錯誤結論。用機器學習的語言來說就是它不夠通用化。Deeplearning4J提供正則化的工具和「過早停止」來避免訓練過程中的過度擬合。
神經網路的訓練是最花費時間和耗費硬體的一步。在GPUs上訓練能夠有效的減少訓練時間,尤其是做圖像識別的時候。但是額外的硬體設施就帶來多餘的花銷,所以你的深度學習的框架必須能夠有效的利用硬體設施。Azure和亞馬遜等雲服務提供了基於GPU的實例,神經網路還可以在異構集群上進行訓練。
創建模型
Deeplearning4J提供ModelSerializer來保存訓練模型。訓練模型可以被保存或者是在之後的訓練中被使用或更新。
在執行異常檢測的過程中,日誌文件的格式需要與訓練模型一致,基於神經網路的輸出結果,你將會得到是否當前的活動符合正常網路行為預期的結論。
代碼示例
遞歸神經網路的結構應該是這樣子的:
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder(
.seed(123)
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)
.weightInit(WeightInit.XAVIER)
.updater(Updater.NESTEROVS).momentum(0.9)
.learningRate(0.005)
.gradientNormalization(GradientNormalization.ClipElementWiseAbsoluteValue)
.(0.5)
.list()
.layer(0, new GravesLSTM.Builder().activation("tanh").nIn(1).nOut(10).build())
.layer(1, new RnnOutputLayer.Builder(LossFunctions.LossFunction.MCXENT)
.activation("softmax").nIn(10).nOut(numLabelClasses).build())
.pretrain(false).backprop(true).build();
MultiLayerNetwork net = new MultiLayerNetwork(conf);
net.init();
下面解釋一下幾行重要的代碼:
.seed(123)
隨機設置一個種子值對神經網路的權值進行初始化,以此獲得一個有復驗性的結果。系數通常都是被隨機的初始化的,以使我們在調整其他超參數時仍獲得一致的結果。我們需要設定一個種子值,讓我們在調整和測試的時候能夠用這個隨機的權值。
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT).iterations(1)
決定使用哪個最優演算法(在這個例子中是隨機梯度下降法)來調整權值以提高誤差分數。你可能不需要對這個進行修改。
.learningRate(0.005)
當我們使用隨機梯度下降法的時候,誤差梯度就被計算出來了。在我們試圖將誤差值減到最小的過程中,權值也隨之變化。SGD給我們一個讓誤差更小的方向,這個學習效率就決定了我們該在這個方向上邁多大的梯度。如果學習效率太高,你可能是超過了誤差最小值;如果太低,你的訓練可能將會永遠進行。這是一個你需要調整的超參數。