Ⅰ DL之RNN:循環神經網路RNN的簡介、應用、經典案例之詳細攻略
深入理解循環神經網路RNN:應用與歷程
在深度學習的世界裡,循環神經網路(RNN)是一種獨特的神經網路架構,專為處理序列數據而設計。它的獨特之處在於能夠記憶先前的信息,從而在處理時間序列問題時展現出卓越性能。RNN的歷史可以追溯到20世紀80年代,從Hopfield神經網路的誕生,到LSTM和Bi-RNN的革新,每一次進步都推動了RNN技術的發展。
80年代的Hopfield Network開啟了RNN的探索,而1986年引入的Recurrent概念和BP演算法則是基礎理論的基石。然而,早期的RNN模型因梯度問題面臨挑戰。直到1997年,LSTM的出現解決了長期依賴問題,而雙向RNN的引入則擴展了其處理方向。21世紀初,RNN開始與深度學習緊密結合,如2010年的RNN LM和2013年的word2vec,它們在自然語言處理領域掀起了革命。2014年的seq2seq和Attention機制的引入,使得機器翻譯成為可能,Transformer和ELMo等後續技術進一步提升了模型的性能和效率。
RNN的應用領域廣泛,包括自然語言處理中的語音識別、語言建模、機器翻譯,以及計算機視覺中的字元識別和行為認知。在生物科學和地球科學中,RNN也被用於序列數據的分析和預測。例如,它能在DNA序列分析中區分外顯子和內含子,或者在水文模型中預測土壤濕度。在經典的案例中,textgenrnn庫展示了如何用Python實現文本生成網路,展示RNN的實際應用能力。
總的來說,循環神經網路RNN不僅革新了我們的序列數據處理方式,還為深度學習在多個領域的發展奠定了基礎。從最初的理論探索到如今的廣泛應用,RNN的故事仍在繼續演變。
Ⅱ AlphaGo的神奇全靠它,詳解人工神經網路!
1、Alphago在不被看好的情況下,以4比1擊敗了圍棋世界冠軍李世石,令其名震天下。隨著AlphaGo知名度的不斷提高,人們不禁好奇,究竟是什麼使得AlphaGo得以戰勝人類大腦?AlphaGo的核心依託人工神經網路。
什麼是神經網路?
人工神經網路是一種模仿生物神經網路(動物的中樞神經系統,特別是大腦)的結構和功能的數學模型或計算模型。神經網路由大量的人工神經元聯結進行計算。大多數情況下人工神經網路能在外界信息的基礎上改變內部結構,是一種自適應系統。現代神經網路是一種非線性統計性數據建模工具,常用來對輸入和輸出間復雜的關系進行建模,或用來探索數據的模式。
神經網路是一種運算模型,由大量的節點(或稱神經元,或單元)和之間相互聯接構成。每個節點代表一種特定的輸出函數,稱為激勵函數。每兩個節點間的連接都代表一個對於通過該連接信號的加權值,稱之為權重,這相當於人工神經網路的記憶。網路的輸出則依網路的連接方式,權重值和激勵函數的不同而不同。而網路自身通常都是對自然界某種演算法或者函數的逼近,也可能是對一種邏輯策略的表達。
例如,用於手寫識別的一個神經網路是被可由一個輸入圖像的像素被激活的一組輸入神經元所定義的。在通過函數(由網路的設計者確定)進行加權和變換之後,這些神經元被激活然後被傳遞到其他神經元。重復這一過程,直到最後一個輸出神經元被激活。這樣決定了被讀取的字。
它的構築理念是受到人或其他動物神經網路功能的運作啟發而產生的。人工神經網路通常是通過一個基於數學統計學類型的學習方法得以優化,所以人工神經網路也是數學統計學方法的一種實際應用,通過統計學的標准數學方法我們能夠得到大量的可以用函數來表達的局部結構空間,另一方面在人工智慧學的人工感知領域,我們通過數學統計學的應用可以來做人工感知方面的決定問題(也就是說通過統計學的方法,人工神經網路能夠類似人一樣具有簡單的決定能力和簡單的判斷能力),這種方法比起正式的邏輯學推理演算更具有優勢。
人工神經網路是一個能夠學習,能夠總結歸納的系統,也就是說它能夠通過已知數據的實驗運用來學習和歸納總結。人工神經網路通過對局部情況的對照比較(而這些比較是基於不同情況下的自動學習和要實際解決問題的復雜性所決定的),它能夠推理產生一個可以自動識別的系統。與之不同的基於符號系統下的學習方法,它們也具有推理功能,只是它們是建立在邏輯演算法的基礎上,也就是說它們之所以能夠推理,基礎是需要有一個推理演算法則的集合。
2AlphaGo的原理回頂部
AlphaGo的原理
首先,AlphaGo同優秀的選手進行了150000場比賽,通過人工神經網路找到這些比賽的模式。然後通過總結,它會預測選手在任何位置高概率進行的一切可能。AlphaGo的設計師通過讓其反復的和早期版本的自己對戰來提高神經網路,使其逐步提高獲勝的機會。
從廣義上講,神經網路是一個非常復雜的數學模型,通過對其高達數百萬參數的調整來改變的它的行為。神經網路學習的意思是,電腦一直持續對其參數進行微小的調整,來嘗試使其不斷進行微小的改進。在學習的第一階段,神經網路提高模仿選手下棋的概率。在第二階段,它增加自我發揮,贏得比賽的概率。反復對極其復雜的功能進行微小的調整,聽起來十分瘋狂,但是如果有足夠長的時間,足夠快的計算能力,非常好的網路實施起來並不苦難。並且這些調整都是自動進行的。
經過這兩個階段的訓練,神經網路就可以同圍棋業余愛好者下一盤不錯的棋了。但對於職業來講,它還有很長的路要走。在某種意義上,它並不思考每一手之後的幾步棋,而是通過對未來結果的推算來決定下在哪裡。為了達到職業級別,AlphaGp需要一種新的估算方法。
為了克服這一障礙,研究人員採取的辦法是讓它反復的和自己進行對戰,以此來使其不斷其對於勝利的估算能力。盡可能的提高每一步的獲勝概率。(在實踐中,AlphaGo對這個想法進行了稍微復雜的調整。)然後,AlphaGo再結合多線程來使用這一方法進行下棋。
我們可以看到,AlphaGo的評估系統並沒有基於太多的圍棋知識,通過分析現有的無數場比賽的棋譜,以及無數次的自我對戰練習,AlphaGo的神經網路進行了數以十億計的微小調整,即便每次只是一個很小的增量改進。這些調整幫助AlphaGp建立了一個估值系統,這和那些出色圍棋選手的直覺相似,對於棋盤上的每一步棋都了如指掌。
此外AlphaGo也使用搜索和優化的思想,再加上神經網路的學習功能,這兩者有助於找到棋盤上更好的位置。這也是目前AlphaGo能夠高水平發揮的原因。
3神經網路的延伸和限制回頂部
神經網路的延伸和限制
神經網路的這種能力也可以被用在其他方面,比如讓神經網路學習一種藝術風格,然後再將這種風格應用到其他圖像上。這種想法很簡單:首先讓神經網路接觸到大量的圖像,然後來確認這些圖像的風格,接著將新的圖像帶入這種風格。
這雖然不是偉大的藝術,但它仍然是一個顯著的利用神經網路來捕捉直覺並且應用在其他地方的例子。
在過去的幾年中,神經網路在許多領域被用來捕捉直覺和模式識別。許多項目使用神經這些網路,涉及的任務如識別藝術風格或好的視頻游戲的發展戰略。但也有非常不同的網路模擬的直覺驚人的例子,比如語音和自然語言。
由於這種多樣性,我看到AlphaGo本身不是一個革命性的突破,而是作為一個極其重要的發展前沿:建立系統,可以捕捉的直覺和學會識別模式的能力。此前計算機科學家們已經做了幾十年,沒有取得長足的進展。但現在,神經網路的成功已經大大擴大,我們可以利用電腦攻擊范圍內的潛在問題。
事實上,目前現有的神經網路的理解能力是非常差的。神經網路很容易被愚弄。用神經網路識別圖像是一個不錯的手段。但是實驗證明,通過對圖像進行細微的改動,就可以愚弄圖像。例如,下面的圖像左邊的圖是原始圖,研究人員對中間的圖像進行了微小的調整後,神經網路就無法區分了,就將原圖顯示了出來。
另一個限制是,現有的系統往往需要許多模型來學習。例如,AlphaGo從150000場對戰來學習。這是一個很龐大額度數字!很多情況下,顯然無法提供如此龐大的模型案例。
Ⅲ SPSS統計分析案例:多層感知器神經網路
SPSS統計分析案例:多層感知器神經網路
神經網路模型起源於對人類大腦思維模式的研究,它是一個非線性的數據建模工具, 由輸入層和輸出層、 一個或者多個隱藏層構成神經元,神經元之間的連接賦予相關的權重, 訓練學習演算法在迭代過程中不斷調整這些權重,從而使得預測誤差最小化並給出預測精度。
在SPSS神經網路中,包括多層感知器(MLP)和徑向基函數(RBF)兩種方法。
本期主要學習多層感知器神經網路,要把它講清楚是比較困難的,為了能直觀感受它的功能,首先以一個案例開始,最後再總結知識。
案例數據
該數據文件涉及某銀行在降低貸款拖欠率方面的舉措。該文件包含 700 位過去曾獲得貸款的客戶財務和人口統計信息。請使用這 700 名客戶的隨機樣本創建多層感知器神經網路模型。銀行需要此模型對新的客戶數據按高或低信用風險對他們進行分類。
第一次分析:菜單參數
要運行「多層感知器」分析,請從菜單中選擇:
分析 > 神經網路 > 多層感知器
如上圖所示,MLP主面板共有8個選項卡,至少需要設置其中"變數"、"分區"、"輸出"、"保存"、"導出"等5個選項卡,其他接受軟體默認設置。
▌ "變數"選項卡
將"是否拖欠"移入因變數框;
將分類變數"學歷"移入因子框,其他數值變數移入"協變數"框;
因各協變數量綱不同,選擇"標准化"處理;
▌ "分區"選項卡
在此之前,首先在 "轉換 > 隨機數生成器"菜單中設置隨機數固定種子為9191972(此處同SPSS官方文檔,用戶可以自由設定),因為"分區"選項卡中,要求對原始數據文件進行隨機化抽樣,將數據劃分為"訓練樣本"、"支持樣本"、"檢驗樣本"3個區塊,為了隨機過程可重復,所以此處指定固定種子一枚;
初次建模,先抽樣70%作為訓練樣本,用於完成自學習構建神經網路模型,30%作為支持樣本,用於評估所建立模型的性能,暫不分配檢驗樣本;
▌ "輸出"選項卡
勾選"描述"、"圖";
勾選"模型摘要"、"分類結果"、"預測實測圖";
勾選"個案處理摘要";
構成"自變數重要性分析";
這是第一次嘗試性的分析,主要參數設置如上,其他選項卡接受軟體默認設置,最後返回主面板,點擊"確定"按鈕,軟體開始執行MLP過程。
第一次分析產生的結果:
主要看重點的結果,依次如下:
個案處理摘要表,700個貸款客戶的記錄,其中480個客戶被分配到訓練樣本,佔比68.6%,另外220個客戶分配為支持樣本。
模型摘要表,首次構建的MLP神經網路模型其不正確預測百分比為12.7%,獨立的支持樣本檢驗模型的不正確百分比為20.9%,提示"超出最大時程數",模型非正常規則中止,顯示有過度學習的嫌疑。
判斷:首次建立的模型需要預防過度訓練。
第二次分析:菜單參數
首次分析懷疑訓練過度,所以第二次分析主要是新增檢驗樣本以及輸出最終的模型結果。
運行「多層感知器」分析,請從菜單中選擇:
分析 > 神經網路 > 多層感知器
▌ "分區"選項卡
對樣本進行重新分配,總700樣本,支持樣本繼續30%,訓練樣本由原來的70%縮減至50%,另外的20%分配給獨立的檢驗樣本空間;
▌ "保存"選項卡
保存每個因變數的預測值或類別;
保存每個因變數的預測擬概率;
▌ "導出"選項卡
將突觸權重估算值導出到XML文件;
給XML模型文件起名並制定存放路徑;
其他選項卡的操作和第一次分析保持一致。返回主面板,點擊"確定"開始執行第二次分析。
第一次分析產生的結果:
總樣本在3個分區的分配比例。
MLP神經網路圖,模型包括1個輸入層、1個隱藏層和1個輸出層,輸入層神經元個數12個,隱藏層9個,輸出層2個。
模型摘要表,模型誤差在1個連續步驟中未出現優化減少現象,模型按預定中止。模型在3個分區中的不正確預測百分比較接近。
模型分類表,軟體默認採用0.5作為正確和錯誤的概率分界,將3大分區樣本的正確率進行交叉對比,顯示出預測為NO,即預測為不拖欠的概率高於拖欠,模型對有拖欠的貸款客戶風險識別能力較低。
預測-實測圖,按照貸款客戶是否拖欠與預測結果進行分組,縱坐標為預測概率。以0.5為分界時,對優質客戶的識別效果較好,但是有較大的概率在識別有拖欠客戶上出錯。
顯然以0.5作為分界並不是最優解,可以嘗試將分界下移至0.3左右,此操作會使第四個箱圖中大量欠貸客戶正確地重新分類為欠貸者,提高風險識別能力。
自變數重要性圖,重要性圖為重要性表格中值的條形圖,以重要性值降序排序。其顯示與客戶穩定性(employ、address)和負債(creddebt、debtinc)相關的變數對於網路如何對客戶進行分類有重大影響;
最後來看導出的XML模型文件:
以XML文件存儲了第二次構建的MLP神經網路模型,可以用於新客戶的分類和風險識別。
新客戶分類
假設現在有150名新客戶,現在需要採用此前建立的模型,對這些客戶進行快速的風險分類和識別。
打開新客戶數據,菜單中選擇:
實用程序 > 評分向導
型"XML文件,點擊"下一步":
檢查新數據文件變數的定義是否准確。下一步。
選擇輸出"預測類別的概率"、"預測值"。完成。
新客戶數據文件新增3列,分別給出每一個新客戶的預測概率和風險分類(是否欠貸)。
多層感知器神經網路 總結
一種前饋式有監督的學習技術;
多層感知器可以發現極為復雜的關系;
如果因變數是分類型,神經網路會根據輸入數據,將記錄劃分為最適合的類別;
如果因變數是連續型,神將網路預測的連續值是輸入數據的某個連續函數;
建議創建訓練-檢驗-支持三個分區,網路訓練學習將更有效;
可將模型導出成 XML 格式對新的數據進行打分;