神經網路演算法實例
❶ 神經網路遺傳演算法函數極值尋優
對於未知的非線性函數,僅通過函數的輸入輸出數據難以准確尋找函數極值。這類問題可以通過神經網路結合遺傳演算法求解,利用神經網路的非線性擬合能力和遺傳演算法的非線性尋優能力尋找函數極值。本文用神經網路遺傳演算法尋優如下非線性函數極值,函數表達式為
函數圖形如下圖1所示。
從函數方程和圖形可以看出,該函數的全局最小值為0,對應的坐標為(0,0)。雖然從函數方程和圖形中很容易找出函數極值及極值對應坐標,但是在函數方程未知的情況下函數極值及極值對應坐標就很難找到。
神經網路遺傳演算法函數極值尋優主要分為BP神經網路訓練擬合和遺傳演算法極值尋優兩步,演算法流程如下圖2所示。
神經網路訓練擬合根據尋優函數的特點構建合適的BP神經網路,用非線性函數的輸出數據訓練BP網路,訓練後的BP神經網路就可以預測函數輸出。遺傳演算法極值尋優把訓練後的BP神經網路預測結果作為個體適應度值,通過選擇、交叉和變異操作尋找函數的全局最優值及對應輸入值。
本文根據非線性函數有2個輸入參數、1個輸出參數,確定BP神經網路結構為2-5-1.取函數的4 000組輸入輸出數據,從中隨機選取3 900組數據訓練網路,100組數據測試網路性能,網路訓練好後用於預測非線性函數輸出。
遺傳演算法中個體採用實數編碼,由於尋優函數只有2個輸入參數,所以個體長度為2。個體適應度值為BP神經網路預測值,適應度值越小。交叉概率為0.4,變異概率為0.2。
用函數輸入輸出數據訓練BP神經網路,使訓練後的網路能夠擬合非線性函數輸出,保存訓練好的網路用語計算個體適應度值。根據非線性函數方程隨機得到該函數的4 000組輸入輸出數據,存儲於data.mat中,其中input為函數輸入數據,output為函數對應輸出數據,從中隨機抽取3 900組訓練數據訓練網路,100組測試數據測試網路擬合性能。最後保存訓練好的網路。
把訓練好的BP神經網路預測輸出作為個體適應度值。
BP神經網路擬合結果分析
本文中個體的適應度值為BP神經網路預測值,因此BP神經網路預測精度對於最優位置的尋找具有非常重要的意義。由於尋優非線性函數有2個輸入參數、1個輸出參數,所以構建的BP神經網路的結構為2-5-1。共取非線性函數4 000組輸入輸出數據,從中隨機選擇3 900組數據訓練BP神經網路,100組數據作為測試數據測試BP神經網路擬合性能,BP神經網路預測輸出和期望輸出對比如下圖3所示。
從BP神經網路預測結果可以看出,BP神經網路可以准確預測非線性函數輸出,可以把網路預測近似看成函數實際輸出。
遺傳演算法尋優結果分析 BP神經網路訓練結束後,可以利用遺傳演算法尋找該非線性函數的最小值。遺傳演算法的迭代次數是100次,種群規模是20,交叉概率為0.4,變異概率為0.2,採用浮點數編碼,個體長度為21,優化過程中最優個體適應度值變化曲線如下圖4所示。
本文所使用的方法有比較重要的工程應用價值,比如對於某項試驗來說,試驗目的是獲取到最大試驗結果對應的實驗條件,但是由於時間和經費限制,該試驗只能進行有限次,可能單靠試驗結果找不到最優的試驗條件。這時可以在已知試驗數據的基礎上,通過本文介紹的神經網路遺傳演算法尋找最優試驗條件。
思路就是先根據試驗條件數和試驗結果數確定BP神經網路結構;然後把試驗條件作為輸入數據,試驗結果作為輸出數據訓練BP網路,使得訓練後的網路可以預測一定試驗條件下的試驗結果;最後把試驗條件作為遺傳演算法中的種群個體,把網路預測的試驗結果作為個體適應度值,通過遺傳演算法推導最優試驗結果及其對應試驗條件。
❷ 簡單介紹神經網路演算法
直接簡單介紹神經網路演算法
神經元:它是神經網路的基本單元。神經元先獲得輸入,然後執行某些數學運算後,再產生一個輸出。
神經元內輸入 經歷了3步數學運算,
先將兩個輸入乘以 權重 :
權重 指某一因素或指標相對於某一事物的重要程度,其不同於一般的比重,體現的不僅僅是某一因素或指標所佔的百分比,強調的是因素或指標的相對重要程度
x1→x1 × w1
x2→x2 × w2
把兩個結果相加,加上一個 偏置 :
(x1 × w1)+(x2 × w2)+ b
最後將它們經過 激活函數 處理得到輸出:
y = f(x1 × w1 + x2 × w2 + b)
激活函數 的作用是將無限制的輸入轉換為可預測形式的輸出。一種常用的激活函數是 sigmoid函數
sigmoid函數的輸出 介於0和1,我們可以理解為它把 (−∞,+∞) 范圍內的數壓縮到 (0, 1)以內。正值越大輸出越接近1,負向數值越大輸出越接近0。
神經網路: 神經網路就是把一堆神經元連接在一起
隱藏層 是夾在輸入輸入層和輸出層之間的部分,一個神經網路可以有多個隱藏層。
前饋 是指神經元的輸入向前傳遞獲得輸出的過程
訓練神經網路 ,其實這就是一個優化的過程,將損失最小化
損失 是判斷訓練神經網路的一個標准
可用 均方誤差 定義損失
均方誤差 是反映 估計量 與 被估計量 之間差異程度的一種度量。設t是根據子樣確定的總體參數θ的一個估計量,(θ-t)2的 數學期望 ,稱為估計量t的 均方誤差 。它等於σ2+b2,其中σ2與b分別是t的 方差 與 偏倚 。
預測值 是由一系列網路權重和偏置計算出來的值
反向傳播 是指向後計算偏導數的系統
正向傳播演算法 是由前往後進行的一個演算法
❸ 神經網路演算法的優勢與應用
人工神經網路(ANN)以大腦處理機製作為基礎,開發用於建立復雜模式和預測問題的演算法。
首先了解大腦如何處理信息:
在大腦中,有數億個神經元細胞,以電信號的形式處理信息。外部信息或者刺激被神經元的樹突接收,在神經元細胞體中處理,轉化成輸出並通過軸突,傳遞到下一個神經元。下一個神經元可以選擇接受它或拒絕它,這取決於信號的強度。
[圖片上傳失敗...(image-cc0d9d-1512012156403)]
現在,讓我們嘗試了解 ANN 如何工作:
這里, $w_1$ , $w_2$ , $w_3$ 給出輸入信號的強度
從上面可以看出,ANN 是一個非常簡單的表示大腦神經元如何工作的結構。
為了使事情變得更清晰,用一個簡單的例子來理解 ANN:一家銀行想評估是否批准貸款申請給客戶,所以,它想預測一個客戶是否有可能違約貸款。它有如下數據:
所以,必須預測列 X。更接近 1 的預測值表明客戶更可能違約。
基於如下例子的神經元結構,嘗試創建人造神經網路結構:
通常,上述示例中的簡單 ANN 結構可以是:
[圖片上傳失敗...(image-1b4516-1512012156403)]
ANN 有一些關鍵優勢,使它們最適合某些問題和情況:
ANN 是具有廣泛應用的強大的模型。以上列舉了幾個突出的例子,但它們在醫葯、安全、銀行、金融、政府、農業和國防等領域有著廣泛的應用。
❹ 神經網路ART1模型
一、ART1模型概述
自適應共振理論(Adaptive Resonance Theory)簡稱ART,是於1976年由美國Boston大學S.Grossberg提出來的。
這一理論的顯著特點是,充分利用了生物神經細胞之間自興奮與側抑制的動力學原理,讓輸入模式通過網路雙向連接權的識別與比較,最後達到共振來完成對自身的記憶,並以同樣的方法實現網路的回想。當提供給網路回想的是一個網路中記憶的、或是與已記憶的模式十分相似的模式時,網路將會把這個模式回想出來,提出正確的分類。如果提供給網路回想的是一個網路中不存在的模式,則網路將在不影響已有記憶的前提下,將這一模式記憶下來,並將分配一個新的分類單元作為這一記憶模式的分類標志。
S.Grossberg和G.A.Carpenter經過多年研究和不斷發展,至今已提出了ART1,ART2和ART3三種網路結構。
ART1網路處理雙極型(或二進制)數據,即觀察矢量的分量是二值的,它只取0或1。
二、ART1模型原理
ART1網路是兩層結構,分輸入層(比較層)和輸出層(識別層)。從輸入層到輸出層由前饋連接權連接,從輸出層到輸入層由反饋連接權連接。
設網路輸入層有N個神經元,網路輸出層有M個神經元,二值輸入模式和輸出向量分別為:Xp=(
ART1網路的學習及工作過程,是通過反復地將輸入學習模式由輸入層向輸出層自下而上的識別和由輸出層向輸入層自上而下的比較過程來實現的。當這種自下而上的識別和自上而下的比較達到共振,即輸出向量可以正確反映輸入學習模式的分類,且網路原有記憶沒有受到不良影響時,網路對一個輸入學習模式的記憶分類則告完成。
ART1網路的學習及工作過程,可以分為初始化階段、識別階段、比較階段和探尋階段。
1.初始化階段
ART1網路需要初始化的參數主要有3個:
即W=(wnm)N×M,T=(tnm)N×M和ρ。
反饋連接權T=(tnm)N×M在網路的整個學習過程中取0或1二值形式。這一參數實際上反映了輸入層和輸出層之間反饋比較的范圍或強度。由於網路在初始化前沒有任何記憶,相當於一張白紙,即沒有選擇比較的余的。因此可將T的元素全部設置為1,即
tnm=1,n=1,2,…,N,m=1,2,…,M。(1)
這意味著網路在初始狀態時,輸入層和輸出層之間將進行全范圍比較,隨著學習過程的深入,再按一定規則選擇比較范圍。
前饋連接權W=(wnm)N×M在網路學習結束後,承擔著對學習模式的記憶任務。在對W初始化時,應該給所有學習模式提供一個平等競爭的機會,然後通過對輸入模式的競爭,按一定規則調整W。W的初始值按下式設置:
中國礦產資源評價新技術與評價新模型
ρ稱為網路的警戒參數,其取值范圍為0<ρ≤1。
2.識別階段
ART1網路的學習識別階段發生在輸入學習模式由輸入層向輸出層的傳遞過程中。在這一階段,首先將一個輸入學習模式Xp=(
中國礦產資源評價新技術與評價新模型
中國礦產資源評價新技術與評價新模型
中國礦產資源評價新技術與評價新模型
至此,網路的識別過程只是告一段落,並沒有最後結束。此時,神經元m=g是否真正有資格代表對輸入學習模式Xp的正確分類,還有待於下面的比較和尋找階段來進一步確定。一般情況下需要對代表同一輸入學習模式的分類結果的神經元進行反復識別。
3.比較階段
ART1網路的比較階段的主要職能是完成以下檢查任務,每當給已學習結束的網路提供一個供識別的輸入模式時,首先檢查一下這個模式是否是已學習過的模式,如果是,則讓網路回想出這個模式的分類結果;如果不是,則對這個模式加以記憶,並分配一個還沒有利用過的輸出層神經元來代表這個模式的分類結果。
具體過程如下:把由輸出層每個神經元反饋到輸入層的各個神經元的反饋連接權向量Tm=(t1m,t2m,…,tNm),m=1,2,…,M作為對已學習的輸入模式的一條條記錄,即讓向量Tm=(t1m,t2m,…,tNm)與輸出層第m個神經元所代表的某一學習輸入模式Xp=(
當需要網路對某個輸入模式進行回想時,這個輸入模式經過識別階段,競爭到神經元g作為自己的分類結果後,要檢查神經元g反饋回來的向量Tg是否與輸入模式相等。如果相等,則說明這是一個已記憶過的模式,神經元g代表了這個模式的分類結果,識別與比較產生了共振,網路不需要再經過尋找階段,直接進入下一個輸入模式的識別階段;如果不相符,則放棄神經元g的分類結果,進入尋找階段。
在比較階段,當用向量Tg與輸入模式XP進行比較時,允許二者之間有一定的差距,差距的大小由警戒參數ρ決定。
首先計算
中國礦產資源評價新技術與評價新模型
Cg表示向量Tg與輸入模式XP的擬合度。
在式中,
當Tg=XP時,Cg=1。
當Cg≥ρ時,說明擬合度大於要求,沒有超過警戒線。
以上兩種情況均可以承認識別結果。
當Cg≠1且Cg>ρ時,按式(6)式(7)將前饋連接權Wg=(w1g,w2g,…,wNg)和反饋連接權Tg=(t1g,t2g,…,tNg)向著與XP更接近的方向調整。
中國礦產資源評價新技術與評價新模型
tng(t+1)=tng(t)*xn,n=1,2,…,N。(7)
當Cg<ρ時,說明擬合度小於要求,超過警戒線,則拒絕識別結果,將神經元g重新復位為0,並將這個神經元排除在下次識別范圍之外,網路轉入尋找階段。
4.尋找階段
尋找階段是網路在比較階段拒絕識別結果之後轉入的一個反復探尋的階段,在這一階段中,網路將在餘下的輸出層神經元中搜索輸入模式Xp的恰當分類。只要在輸出向量Yp=(
三、總體演算法
設網路輸入層有N個神經元,網路輸出層有M個神經元,二值輸入模式和輸出向量分別為:Xp=(
(1)網路初始化
tnm(0)=1,
中國礦產資源評價新技術與評價新模型
n=1,2,…,N,m=1,2,…,M。
0<ρ≤1。
(2)將輸入模式Xp=(
(3)計算輸出層各神經元輸入加權和
中國礦產資源評價新技術與評價新模型
(4)選擇XP的最佳分類結果
中國礦產資源評價新技術與評價新模型
令神經元g的輸出為1。
(5)計算
中國礦產資源評價新技術與評價新模型
中國礦產資源評價新技術與評價新模型
判斷
中國礦產資源評價新技術與評價新模型
當式(8)成立,轉到(7),否則,轉到(6)。
(6)取消識別結果,將輸出層神經元g的輸出值復位為0,並將這一神經元排除在下一次識別的范圍之外,返回步驟(4)。當所有已利用過的神經元都無法滿足式(8),則選擇一個新的神經元作為分類結果,轉到步驟(7)。
(7)承認識別結果,並按下式調整連接權
中國礦產資源評價新技術與評價新模型
tng(t+1)=tng(t)*xn,n=1,2,…,N。
(8)將步驟(6)復位的所有神經元重新加入識別范圍之內,返回步驟(2)對下一模式進行識別。
(9)輸出分類識別結果。
(10)結束。
四、實例
實例為ART1神經網路模型在柴北緣-東昆侖造山型金礦預測的應用。
1.建立綜合預測模型
柴北緣—東昆侖地區位於青海省的西部,是中央造山帶的西部成員——秦祁昆褶皺系的一部分,是典型的復合造山帶(殷鴻福等,1998)。根據柴北緣—東昆侖地區地質概括以及造山型金礦成礦特點,選擇與成礦相關密切的專題數據,建立柴北緣—東昆侖地區的綜合信息找礦模型:
1)金礦重砂異常數據是金礦的重要找礦標志。
2)金礦水化異常數據是金礦的重要找礦標志。
3)金礦的化探異常數據控制金礦床的分布。
4)金礦的空間分布與通過該區的深大斷裂有關。
5)研究區內斷裂密集程度控制金礦的產出。
6)重力構造的存在與否是金礦存在的一個標志。
7)磁力構造線的存在也是金礦存在的一個重要標志。
8)研究區地質復雜程度也對金礦的產出具有重要的作用。
9)研究區存在的礦(化)點是一個重要的標志。
2.劃分預測單元
預測工作是在單元上進行的,預測工作的結果是與單元有著較為直接的聯系,在找礦模型指導下,以最大限度地反映成礦信息和預測單元面積最小為原則,通過對研究區內地質、地球物理、地球化學等的綜合資料分析,對可能的成礦地段圈定了預測單元。採用網格化單元作為本次研究的預測單元,網格單元的大小是,40×40,將研究區劃分成774個預測單元。
3.變數選擇(表8-6)
4.ART1模型預測結果
ART1神經網路模型演算法中,給定不同的閾值,將改變預測分類的結果。本次實驗選取得閾值為ρ=0.41,系統根據此閾值進行計算獲得計算結果,並通過將不同的分類結果賦予不同的顏色,最終獲得ART模型預測單元的分類結果。分類的結果是形成29個類別。分類結果用不同的顏色表示,其具體結果地顯示見圖8-5。圖形中顏色只代表類別號,不代表分類的好壞。將礦點專題圖層疊加以後,可以看出,顏色為灰色的單元與礦的關系更為密切。
表8-6 預測變數標志的選擇表
圖8-5 東昆侖—柴北緣地區基於ARTL模型的金礦分類結果圖
❺ 如何用python和scikit learn實現神經網路
1:神經網路演算法簡介
2:Backpropagation演算法詳細介紹
3:非線性轉化方程舉例
4:自己實現神經網路演算法NeuralNetwork
5:基於NeuralNetwork的XOR實例
6:基於NeuralNetwork的手寫數字識別實例
7:scikit-learn中BernoulliRBM使用實例
8:scikit-learn中的手寫數字識別實例
一:神經網路演算法簡介
1:背景
以人腦神經網路為啟發,歷史上出現過很多版本,但最著名的是backpropagation
2:多層向前神經網路(Multilayer Feed-Forward Neural Network)
❻ 從零開始用Python構建神經網路
從零開始用Python構建神經網路
動機:為了更加深入的理解深度學習,我們將使用 python 語言從頭搭建一個神經網路,而不是使用像 Tensorflow 那樣的封裝好的框架。我認為理解神經網路的內部工作原理,對數據科學家來說至關重要。
這篇文章的內容是我的所學,希望也能對你有所幫助。
神經網路是什麼?
介紹神經網路的文章大多數都會將它和大腦進行類比。如果你沒有深入研究過大腦與神經網路的類比,那麼將神經網路解釋為一種將給定輸入映射為期望輸出的數學關系會更容易理解。
神經網路包括以下組成部分
? 一個輸入層,x
? 任意數量的隱藏層
? 一個輸出層,?
? 每層之間有一組權值和偏置,W and b
? 為隱藏層選擇一種激活函數,σ。在教程中我們使用 Sigmoid 激活函數
下圖展示了 2 層神經網路的結構(注意:我們在計算網路層數時通常排除輸入層)
2 層神經網路的結構
用 Python 可以很容易的構建神經網路類
訓練神經網路
這個網路的輸出 ? 為:
你可能會注意到,在上面的等式中,輸出 ? 是 W 和 b 函數。
因此 W 和 b 的值影響預測的准確率. 所以根據輸入數據對 W 和 b 調優的過程就被成為訓練神經網路。
每步訓練迭代包含以下兩個部分:
? 計算預測結果 ?,這一步稱為前向傳播
? 更新 W 和 b,,這一步成為反向傳播
下面的順序圖展示了這個過程:
前向傳播
正如我們在上圖中看到的,前向傳播只是簡單的計算。對於一個基本的 2 層網路來說,它的輸出是這樣的:
我們在 NeuralNetwork 類中增加一個計算前向傳播的函數。為了簡單起見我們假設偏置 b 為0:
但是我們還需要一個方法來評估預測結果的好壞(即預測值和真實值的誤差)。這就要用到損失函數。
損失函數
常用的損失函數有很多種,根據模型的需求來選擇。在本教程中,我們使用誤差平方和作為損失函數。
誤差平方和是求每個預測值和真實值之間的誤差再求和,這個誤差是他們的差值求平方以便我們觀察誤差的絕對值。
訓練的目標是找到一組 W 和 b,使得損失函數最好小,也即預測值和真實值之間的距離最小。
反向傳播
我們已經度量出了預測的誤差(損失),現在需要找到一種方法來傳播誤差,並以此更新權值和偏置。
為了知道如何適當的調整權值和偏置,我們需要知道損失函數對權值 W 和偏置 b 的導數。
回想微積分中的概念,函數的導數就是函數的斜率。
梯度下降法
如果我們已經求出了導數,我們就可以通過增加或減少導數值來更新權值 W 和偏置 b(參考上圖)。這種方式被稱為梯度下降法。
但是我們不能直接計算損失函數對權值和偏置的導數,因為在損失函數的等式中並沒有顯式的包含他們。因此,我們需要運用鏈式求導發在來幫助計算導數。
鏈式法則用於計算損失函數對 W 和 b 的導數。注意,為了簡單起見。我們只展示了假設網路只有 1 層的偏導數。
這雖然很簡陋,但是我們依然能得到想要的結果—損失函數對權值 W 的導數(斜率),因此我們可以相應的調整權值。
現在我們將反向傳播演算法的函數添加到 Python 代碼中
為了更深入的理解微積分原理和反向傳播中的鏈式求導法則,我強烈推薦 3Blue1Brown 的如下教程:
Youtube:https://youtu.be/tIeHLnjs5U8
整合並完成一個實例
既然我們已經有了包括前向傳播和反向傳播的完整 Python 代碼,那麼就將其應用到一個例子上看看它是如何工作的吧。
神經網路可以通過學習得到函數的權重。而我們僅靠觀察是不太可能得到函數的權重的。
讓我們訓練神經網路進行 1500 次迭代,看看會發生什麼。 注意觀察下面每次迭代的損失函數,我們可以清楚地看到損失函數單調遞減到最小值。這與我們之前介紹的梯度下降法一致。
讓我們看看經過 1500 次迭代後的神經網路的最終預測結果:
經過 1500 次迭代訓練後的預測結果
我們成功了!我們應用前向和方向傳播演算法成功的訓練了神經網路並且預測結果收斂於真實值。
注意預測值和真實值之間存在細微的誤差是允許的。這樣可以防止模型過擬合並且使得神經網路對於未知數據有著更強的泛化能力。
下一步是什麼?
幸運的是我們的學習之旅還沒有結束,仍然有很多關於神經網路和深度學習的內容需要學習。例如:
? 除了 Sigmoid 以外,還可以用哪些激活函數
? 在訓練網路的時候應用學習率
? 在面對圖像分類任務的時候使用卷積神經網路
我很快會寫更多關於這個主題的內容,敬請期待!
最後的想法
我自己也從零開始寫了很多神經網路的代碼
雖然可以使用諸如 Tensorflow 和 Keras 這樣的深度學習框架方便的搭建深層網路而不需要完全理解其內部工作原理。但是我覺得對於有追求的數據科學家來說,理解內部原理是非常有益的。
這種練習對我自己來說已成成為重要的時間投入,希望也能對你有所幫助
❼ 求人工神經網路的具體演算法,數學模型,比如求一個函數最優值之類的,不要各種亂七八糟的介紹,謝謝
神經網路就像多項式或者線性模型一樣,是個看不見表達式的模型,它的表達式就是網路,它比一般模型具有更高的自由度和彈性;同時它是一個典型的黑箱模型方法;比多項式等模型還黑。優化演算法,就是尋優的演算法,所謂尋優過程,就是尋找使目標函數最小時(都是統一表示成尋找使函數具有最小值)的自變數的值。回歸或者擬合一個模型,例如用一個多項式模型去擬合一組數據,其本質就是尋找使殘差平方和最小的參數值,這就是一個尋優的過程,其實就是尋找使函數F(x)值最小時的x的值;對於這個具體的尋找過程就涉及到演算法問題,就是如何計算。所謂演算法,是數值分析的一個范疇,就是解這問題的方法;例如一個一元二次方程 x^2-3x+1=0的解法,因為簡單可以直接求解,也可以用牛頓逐個靠近的方法求解,也即是迭代,慢慢接近真實解,如此下去不斷接近真值,要注意迭代演算法是涉及演算法精度的,這些迭代演算法是基於計算機的,演算法的初衷也是用近似的演算法用一定的精度來接近真實值。 比如上面的方程也可以用遺傳演算法來解,可以從一些初始值最終迭代到最佳解。神經網路在尋找網路的參數即權值的時候,也有尋找使訓練效果最好的過程,這也是尋優的過程,這里涉及到了演算法就是所謂的神經網路演算法,這和最小二乘演算法是一樣的道理;例如做響應面的時候,其實就是二次回歸,用最小二乘得到二次模型的參數,得到一個函數,求最大產物量就是求函數模型的最大值,怎麼算呢?頂點處如果導數為0,這個地方對應的x值就是最優的,二次模型簡單可以用偏導數=0來直接解決,這過程也可以遺傳演算法等來解決。說到底所謂尋優的本質就是,尋找函數極值處對應的自變數的值。