㈠ 人工神經網路的主要研究成果
1 人工神經網路產生的背景
自古以來,關於人類智能本源的奧秘,一直吸引著無數哲學家和自然科學家的研究熱情。生物學家、神經學家經過長期不懈的努力,通過對人腦的觀察和認識,認為人腦的智能活動離不開腦的物質基礎,包括它的實體結構和其中所發生的各種生物、化學、電學作用,並因此建立了神經元網路理論和神經系統結構理論,而神經元理論又是此後神經傳導理論和大腦功能學說的基礎。在這些理論基礎之上,科學家們認為,可以從仿製人腦神經系統的結構和功能出發,研究人類智能活動和認識現象。另一方面,19世紀之前,無論是以歐氏幾何和微積分為代表的經典數學,還是以牛頓力學為代表的經典物理學,從總體上說,這些經典科學都是線性科學。然而,客觀世界是如此的紛繁復雜,非線性情況隨處可見,人腦神經系統更是如此。復雜性和非線性是連接在一起的,因此,對非線性科學的研究也是我們認識復雜系統的關鍵。為了更好地認識客觀世界,我們必須對非線性科學進行研究。人工神經網路作為一種非線性的、與大腦智能相似的網路模型,就這樣應運而生了。所以,人工神經網路的創立不是偶然的,而是20世紀初科學技術充分發展的產物。
2 人工神經網路的發展
人工神經網路的研究始於40年代初。半個世紀以來,經歷了興起、高潮與蕭條、高潮及穩步發展的遠為曲折的道路。
1943年,心理學家W.S.Mcculloch和數理邏輯學家W.Pitts 提出了M—P模型,這是第一個用數理語言描述腦的信息處理過程的模型, 雖然神經元的功能比較弱,但它為以後的研究工作提供了依據。1949年,心理學家D.O.Hebb提出突觸聯系可變的假設,根據這一假設提出的學習規律為神經網路的學習演算法奠定了基礎。 1957 年, 計算機科學家Rosenblatt提出了著名的感知機模型,它的模型包含了現代計算機的一些原理,是第一個完整的人工神經網路,第一次把神經網路研究付諸工程實現。由於可應用於模式識別,聯想記憶等方面,當時有上百家實驗室投入此項研究,美國軍方甚至認為神經網路工程應當比「原子彈工程」更重要而給予巨額資助,並在聲納信號識別等領域取得一定成績。1960年,B.Windrow和E.Hoff提出了自適應線性單元, 它可用於自適應濾波、預測和模式識別。至此,人工神經網路的研究工作進入了第一個高潮。
1969年,美國著名人工智慧學者M.Minsky和S.Papert編寫了影響很大的Perceptron一書,從理論上證明單層感知機的能力有限,諸如不能解決異或問題,而且他們推測多層網路的感知機能力也不過如此,他們的分析恰似一瓢冷水,很多學者感到前途渺茫而紛紛改行,原先參與研究的實驗室紛紛退出,在這之後近10年,神經網路研究進入了一個緩慢發展的蕭條期。這期間,芬蘭學者T.Kohonen 提出了自組織映射理論,反映了大腦神經細胞的自組織特性、記憶方式以及神經細胞興奮刺激的規律;美國學者S.A.Grossberg的自適應共振理論(ART );日本學者K.Fukushima提出了認知機模型;ShunIchimari則致力於神經網路有關數學理論的研究等,這些研究成果對以後的神經網路的發展產生了重要影響。
美國生物物理學家J.J.Hopfield於1982年、1984年在美國科學院院刊發表的兩篇文章,有力地推動了神經網路的研究,引起了研究神經網路的又一次熱潮。 1982 年, 他提出了一個新的神經網路模型——hopfield網路模型。他在這種網路模型的研究中,首次引入了網路能量函數的概念,並給出了網路穩定性的判定依據。1984年,他又提出了網路模型實現的電子電路,為神經網路的工程實現指明了方向,他的研究成果開拓了神經網路用於聯想記憶的優化計算的新途徑,並為神經計算機研究奠定了基礎。1984年Hinton等人將模擬退火演算法引入到神經網路中,提出了Boltzmann機網路模型,BM 網路演算法為神經網路優化計算提供了一個有效的方法。1986年,D.E.Rumelhart和J.LMcclelland提出了誤差反向傳播演算法,成為至今為止影響很大的一種網路學習方法。1987年美國神經計算機專家R.Hecht—Nielsen提出了對向傳播神經網路,該網路具有分類靈活,演算法簡練的優點,可用於模式分類、函數逼近、統計分析和數據壓縮等領域。1988年L.Ochua 等人提出了細胞神經網路模型,它在視覺初級加工上得到了廣泛應用。
為適應人工神經網路的發展,1987年成立了國際神經網路學會,並決定定期召開國際神經網路學術會議。1988年1月Neural Network 創刊。1990年3月IEEE Transaction on Neural Network問世。 我國於1990年12月在北京召開了首屆神經網路學術大會,並決定以後每年召開一次。1991 年在南京成立了中國神經網路學會。 IEEE 與INNS 聯合召開的IJCNN92已在北京召開。 這些為神經網路的研究和發展起了推波助瀾的作用,人工神經網路步入了穩步發展的時期。
90年代初,諾貝爾獎獲得者Edelman提出了Darwinism模型,建立了神經網路系統理論。同年,Aihara等在前人推導和實驗的基礎上,給出了一個混沌神經元模型,該模型已成為一種經典的混沌神經網路模型,該模型可用於聯想記憶。 Wunsch 在90OSA 年會上提出了一種AnnualMeeting,用光電執行ART,學習過程有自適應濾波和推理功能,具有快速和穩定的學習特點。1991年,Hertz探討了神經計算理論, 對神經網路的計算復雜性分析具有重要意義;Inoue 等提出用耦合的混沌振盪子作為某個神經元,構造混沌神經網路模型,為它的廣泛應用前景指明了道路。1992年,Holland用模擬生物進化的方式提出了遺傳演算法, 用來求解復雜優化問題。1993年方建安等採用遺傳演算法學習,研究神經網路控制器獲得了一些結果。1994年Angeline等在前人進化策略理論的基礎上,提出一種進化演算法來建立反饋神經網路,成功地應用到模式識別,自動控制等方面;廖曉昕對細胞神經網路建立了新的數學理論和方法,得到了一系列結果。HayashlY根據動物大腦中出現的振盪現象,提出了振盪神經網路。1995年Mitra把人工神經網路與模糊邏輯理論、 生物細胞學說以及概率論相結合提出了模糊神經網路,使得神經網路的研究取得了突破性進展。Jenkins等人研究光學神經網路, 建立了光學二維並行互連與電子學混合的光學神經網路,它能避免網路陷入局部最小值,並最後可達到或接近最理想的解;SoleRV等提出流體神經網路,用來研究昆蟲社會,機器人集體免疫系統,啟發人們用混沌理論分析社會大系統。1996年,ShuaiJW』等模擬人腦的自發展行為, 在討論混沌神經網路的基礎上提出了自發展神經網路。1997、1998年董聰等創立和完善了廣義遺傳演算法,解決了多層前向網路的最簡拓樸構造問題和全局最優逼近問題。
隨著理論工作的發展,神經網路的應用研究也取得了突破性進展,涉及面非常廣泛,就應用的技術領域而言有計算機視覺,語言的識別、理解與合成,優化計算,智能控制及復雜系統分析,模式識別,神經計算機研製,知識推理專家系統與人工智慧。涉及的學科有神經生理學、認識科學、數理科學、心理學、信息科學、計算機科學、微電子學、光學、動力學、生物電子學等。美國、日本等國在神經網路計算機軟硬體實現的開發方面也取得了顯著的成績,並逐步形成產品。在美國,神經計算機產業已獲得軍方的強有力支持,國防部高級研究計劃局認為「神經網路是解決機器智能的唯一希望」,僅一項8 年神經計算機計劃就投資4億美元。在歐洲共同體的ESPRIT計劃中, 就有一項特別項目:「神經網路在歐洲工業中的應用」,單是生產神經網路專用晶元這一項就投資2200萬美元。據美國資料聲稱,日本在神經網路研究上的投資大約是美國的4倍。我國也不甘落後,自從1990 年批准了南開大學的光學神經計算機等3項課題以來, 國家自然科學基金與國防預研基金也都為神經網路的研究提供資助。另外,許多國際著名公司也紛紛捲入對神經網路的研究,如Intel、IBM、Siemens、HNC。神經計算機產品開始走向商用階段,被國防、企業和科研部門選用。在舉世矚目的海灣戰爭中,美國空軍採用了神經網路來進行決策與控制。在這種刺激和需求下,人工神經網路定會取得新的突破,迎來又一個高潮。自1958年第一個神經網路誕生以來,其理論與應用成果不勝枚舉。人工神經網路是一個快速發展著的一門新興學科,新的模型、新的理論、新的應用成果正在層出不窮地涌現出來。
3 人工神經網路的發展前景
針對神經網路存在的問題和社會需求,今後發展的主要方向可分為理論研究和應用研究兩個方面。
(1)利用神經生理與認識科學研究大腦思維及智能的機理、 計算理論,帶著問題研究理論。
人工神經網路提供了一種揭示智能和了解人腦工作方式的合理途徑,但是由於人類起初對神經系統了解非常有限,對於自身腦結構及其活動機理的認識還十分膚淺,並且帶有某種「先驗」。例如, Boltzmann機引入隨機擾動來避免局部極小,有其卓越之處,然而缺乏必要的腦生理學基礎,毫無疑問,人工神經網路的完善與發展要結合神經科學的研究。而且,神經科學,心理學和認識科學等方面提出的一些重大問題,是向神經網路理論研究提出的新挑戰,這些問題的解決有助於完善和發展神經網路理論。因此利用神經生理和認識科學研究大腦思維及智能的機理,如有新的突破,將會改變智能和機器關系的認識。
利用神經科學基礎理論的研究成果,用數理方法探索智能水平更高的人工神經網路模型,深入研究網路的演算法和性能,如神經計算、進化計算、穩定性、收斂性、計算復雜性、容錯性、魯棒性等,開發新的網路數理理論。由於神經網路的非線性,因此非線性問題的研究是神經網路理論發展的一個最大動力。特別是人們發現,腦中存在著混沌現象以來,用混沌動力學啟發神經網路的研究或用神經網路產生混沌成為擺在人們面前的一個新課題,因為從生理本質角度出發是研究神經網路的根本手段。
(2)神經網路軟體模擬, 硬體實現的研究以及神經網路在各個科學技術領域應用的研究。
由於人工神經網路可以用傳統計算機模擬,也可以用集成電路晶元組成神經計算機,甚至還可以用光學的、生物晶元的方式實現,因此研製純軟體模擬,虛擬模擬和全硬體實現的電子神經網路計算機潛力巨大。如何使神經網路計算機與傳統的計算機和人工智慧技術相結合也是前沿課題;如何使神經網路計算機的功能向智能化發展,研製與人腦功能相似的智能計算機,如光學神經計算機,分子神經計算機,將具有十分誘人的前景。
4 哲理
(1)人工神經網路打開了認識論的新領域
認識與腦的問題,長期以來一直受到人們的關注,因為它不僅是有關人的心理、意識的心理學問題,也是有關人的思維活動機制的腦科學與思維科學問題,而且直接關繫到對物質與意識的哲學基本問題的回答。人工神經網路的發展使我們能夠更進一步地既唯物又辯證地理解認識與腦的關系,打開認識論的新領域。人腦是一個復雜的並行系統,它具有「認知、意識、情感」等高級腦功能,用人工進行模擬,有利於加深對思維及智能的認識,已對認知和智力的本質的研究產生了極大的推動作用。在研究大腦的整體功能和復雜性方面,人工神經網路給人們帶來了新的啟迪。由於人腦中存在混沌現象,混沌可用來理解腦中某些不規則的活動,從而混沌動力學模型能用作人對外部世界建模的工具,可用來描述人腦的信息處理過程。混沌和智能是有關的,神經網路中引入混沌學思想有助於提示人類形象思維等方面的奧秘。人工神經網路之所以再度興起,關鍵在於它反映了事物的非線性,抓住了客觀世界的本質,而且它在一定程度上正面回答了智能系統如何從環境中自主學習這一最關鍵的問題,從認知的角度講,所謂學習,就是對未知現象或規律的發現和歸納。由於神經網路具有高度的並行性,高度的非線性全局作用,良好的容錯性與聯想記憶功能以及十分強的自適應、自學習功能,而使得它成為揭示智能和了解人腦工作方式的合理途徑。但是,由於認知問題的復雜性,目前,我們對於腦神經網的運行和神經細胞的內部處理機制,如信息在人腦是如何傳輸、存貯、加工的?記憶、聯想、判斷是如何形成的?大腦是否存在一個操作系統?還沒有太多的認識,因此要製造人工神經網路來模仿人腦各方面的功能,還有待於人們對大腦信息處理機理認識的深化。
(2)人工神經網路發展的推動力來源於實踐、 理論和問題的相互作用
隨著人們社會實踐范圍的不斷擴大,社會實踐層次的不斷深入,人們所接觸到的自然現象也越來越豐富多彩、紛繁復雜,這就促使人們用不同的原因加以解釋不同種類的自然現象,當不同種類的自然現象可以用同樣的原因加以解釋,這樣就出現了不同學科的相互交叉、綜合,人工神經網路就這樣產生了。在開始階段,由於這些理論化的網路模型比較簡單,還存在許多問題,而且這些模型幾乎沒有得到實踐的檢驗,因而神經網路的發展比較緩慢。隨著理論研究的深入,問題逐漸地解決特別是工程上得到實現以後,如聲納識別成功,才迎來了神經網路的第一個發展高潮。可Minisky認為感知器不能解決異或問題, 多層感知器也不過如此,神經網路的研究進入了低谷,這主要是因為非線性問題沒得到解決。隨著理論的不斷豐富,實踐的不斷深入, 現在已證明Minisky的悲觀論調是錯誤的。今天,高度發達的科學技術逐漸揭示了非線性問題是客觀世界的本質。問題、理論、實踐的相互作用又迎來了人工神經網路的第二次高潮。目前人工神經網路的問題是智能水平不高,還有其它理論和實現方面的問題,這就迫使人們不斷地進行理論研究,不斷實踐,促使神經網路不斷向前發展。總之,先前的原因遇到了解釋不同的新現象,促使人們提出更加普遍和精確的原因來解釋。理論是基礎,實踐是動力,但單純的理論和實踐的作用還不能推動人工神經網路的發展,還必須有問題提出,才能吸引科學家進入研究的特定范圍,引導科學家從事相關研究,從而逼近科學發現,而後實踐又提出新問題,新問題又引發新的思考,促使科學家不斷思考,不斷完善理論。人工神經網路的發展無不體現著問題、理論和實踐的辯證統一關系。
(3 )人工神經網路發展的另一推動力來源於相關學科的貢獻及不同學科專家的競爭與協同
人工神經網路本身就是一門邊緣學科,它的發展有更廣闊的科學背景,亦即是眾多科研成果的綜合產物,控制論創始人Wiener在其巨著《控制論》中就進行了人腦神經元的研究;計算機科學家Turing就提出過B網路的設想;Prigogine提出非平衡系統的自組織理論,獲得諾貝爾獎;Haken研究大量元件聯合行動而產生宏觀效果, 非線性系統「混沌」態的提出及其研究等,都是研究如何通過元件間的相互作用建立復雜系統,類似於生物系統的自組織行為。腦科學與神經科學的進展迅速反映到人工神經網路的研究中,例如生物神經網路理論,視覺中發現的側抑制原理,感受野概念等,為神經網路的發展起了重要的推動作用。從已提出的上百種人工神經網路模型中,涉及學科之多,令人目不暇接,其應用領域之廣,令人嘆為觀止。不同學科專家為了在這一領域取得領先水平,存在著不同程度的競爭,所有這些有力地推動了人工神經網路的發展。人腦是一個功能十分強大、結構異常復雜的信息系統,隨著資訊理論、控制論、生命科學,計算機科學的發展,人們越來越驚異於大腦的奇妙,至少到目前為止,人類大腦信號處理機制對人類自身來說,仍是一個黑盒子,要揭示人腦的奧秘需要神經學家、心理學家、計算機科學家、微電子學家、數學家等專家的共同努力,對人類智能行為不斷深入研究,為人工神經網路發展提供豐富的理論源泉。另外,還要有哲學家的參與,通過哲學思想和自然科學多種學科的深層結合,逐步孕育出探索人類思維本質和規律的新方法,使思維科學從朦朧走向理性。而且,不同領域專家的競爭與協調同有利於問題清晰化和尋求最好的解決途徑。縱觀神經網路的發展歷史,沒有相關學科的貢獻,不同學科專家的競爭與協同,神經網路就不會有今天。當然,人工神經網路在各個學科領域應用的研究反過來又推動其它學科的發展,推動自身的完善和發展。
㈡ 什麼是BP神經網路
BP演算法的基本思想是:學習過程由信號正向傳播與誤差的反向回傳兩個部分組成;正向傳播時,輸入樣本從輸入層傳入,經各隱層依次逐層處理,傳向輸出層,若輸出層輸出與期望不符,則將誤差作為調整信號逐層反向回傳,對神經元之間的連接權矩陣做出處理,使誤差減小。經反復學習,最終使誤差減小到可接受的范圍。具體步驟如下:
1、從訓練集中取出某一樣本,把信息輸入網路中。
2、通過各節點間的連接情況正向逐層處理後,得到神經網路的實際輸出。
3、計算網路實際輸出與期望輸出的誤差。
4、將誤差逐層反向回傳至之前各層,並按一定原則將誤差信號載入到連接權值上,使整個神經網路的連接權值向誤差減小的方向轉化。
5、対訓練集中每一個輸入—輸出樣本對重復以上步驟,直到整個訓練樣本集的誤差減小到符合要求為止。
㈢ 異常檢測有哪些主要的分析方法
1. 概率統計方法
在基於異常檢測技術的IDS中應用最早也是最多的一種方法。
首先要對系統或用戶的行為按照一定的時間間隔進行采樣,樣本的內容包括每個會話的登錄、退出情況,CPU和內存的佔用情況,硬碟等存儲介質的使用情況等。
將每次採集到的樣本進行計算,得出一系列的參數變數對這些行為進行描述,從而產生行為輪廓,將每次采樣後得到的行為輪廓與已有輪廓進行合並,最終得到系統和用戶的正常行為輪廓。IDS通過將當前採集到的行為輪廓與正常行為輪廓相比較,來檢測是否存在網路入侵行為。
2. 預測模式生成法
假設條件是事件序列不是隨機的而是遵循可辨別的模式。這種檢測方法的特點是考慮了事件的序列及其相互聯系,利用時間規則識別用戶行為正常模式的特徵。通過歸納學習產生這些規則集,並能動態地修改系統中的這些規則,使之具有較高的預測性、准確性。如果規則在大部分時間是正確的,並能夠成功地運用預測所觀察到的數據,那麼規則就具有高可信度。
3. 神經網路方法
基本思想是用一系列信息單元(命令)訓練神經單元,這樣在給定一組輸入後、就可能預測出輸出。與統計理論相比,神經網路更好地表達了變數間的非線性關系,並且能自動學習並更新。實驗表明UNIX系統管理員的行為幾乎全是可以預測的,對於一般用戶,不可預測的行為也只佔了很少的一部分。
㈣ 入侵檢測技術基礎的異常檢測技術
●概率統計異常檢測
原理:每一個輪廓保存記錄主體當前行為,並定時將當前輪廓與歷史輪廓合並形成統計輪廓(更新),通過比較當前輪廓與統計輪廓來判定異常行為。
優點:可應用成熟的概率統計理論
缺點:①由於用戶行為的復雜性,要想准確地匹配一個用戶的歷史行為非常困難,容易造成系統誤報和漏報;
②定義入侵閾值比較困難,閾值高則誤報率提高,閾值低則漏報率增高。
●神經網路異常檢測
原理:對下一事件的預測錯誤率在一定程度上反映了用戶行為的異常程度。
優點:①更好地表達了變數間的非線性關系,能更好地處理原始數據的隨機特徵,即不需要對這些數據做任何統計假設,並且能自動學習和更新;②有較好的抗干擾能力
缺點:網路拓撲結構以及各元素的權重很難確定
㈤ 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使用貝葉斯優化的深度學習
㈥ 神經網路異常檢測方法和機器學習異常檢測方法對於入侵檢測的應用
神經網路異常檢測方法神經網路入侵檢測方法是通過訓練神經網路連續的信息單元來進行異常檢測,信息單元指的是命令。網路的輸入為用戶當前輸入的命令和已執行過的W個命令;用戶執行過的命令被神經網路用來預測用戶輸入的下一個命令,如下圖。若神經網路被訓練成預測用戶輸入命令的序列集合,則神經網路就構成用戶的輪郭框架。當用這個神經網路預測不出某用戶正確的後繼命令,即在某種程度上表明了用戶行為與其輪廓框架的偏離,這時表明有異常事件發生,以此就能作異常入侵檢測。
上面式子用來分類識別,檢測異常序列。實驗結果表明這種方法檢測迅速,而且誤警率底。然而,此方法對於用戶動態行為變化以及單獨異常檢測還有待改善。復雜的相似度量和先驗知識加入到檢測中可能會提高系統的准確性,但需要做進一步工作。
㈦ 人工神經網路概念梳理與實例演示
人工神經網路概念梳理與實例演示
神經網路是一種模仿生物神經元的機器學習模型,數據從輸入層進入並流經激活閾值的多個節點。
遞歸性神經網路一種能夠對之前輸入數據進行內部存儲記憶的神經網路,所以他們能夠學習到數據流中的時間依賴結構。
如今機器學習已經被應用到很多的產品中去了,例如,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給我們一個讓誤差更小的方向,這個學習效率就決定了我們該在這個方向上邁多大的梯度。如果學習效率太高,你可能是超過了誤差最小值;如果太低,你的訓練可能將會永遠進行。這是一個你需要調整的超參數。