天天看點

神經網絡參數優化算法,神經網絡損失函數設計

神經網絡參數優化算法,神經網絡損失函數設計

1、神經網絡算法中,參數的設定或者調整,有什麼方法可以采用

若果對你有幫助,請點贊。

神經網絡的結構(例如2輸入3隐節點1輸出)建好後,一般就要求神經網絡裡的權值和門檻值。現在一般求解權值和門檻值,都是采用梯度下降之類的搜尋算法(梯度下降法、牛頓法、列文伯格-馬跨特法、狗腿法等等),這些算法會先初始化一個解,在這個解的基礎上,确定一個搜尋方向和一個移動步長(各種法算确定方向和步長的方法不同,也就使各種算法适用于解決不同的問題),使初始解根據這個方向和步長移動後,能使目标函數的輸出(在神經網絡中就是預測誤差)下降。 然後将它更新為新的解,再繼續尋找下一步的移動方向的步長,這樣不斷的疊代下去,目标函數(神經網絡中的預測誤差)也不斷下降,最終就能找到一個解,使得目标函數(預測誤差)比較小。

而在尋解過程中,步長太大,就會搜尋得不仔細,可能跨過了優秀的解,而步長太小,又會使尋解過程進行得太慢。是以,步長設定适當非常重要。

學習率對原步長(在梯度下降法中就是梯度的長度)作調整,如果學習率lr = 0.1,那麼梯度下降法中每次調整的步長就是0.1*梯度,

而在matlab神經網絡工具箱裡的lr,代表的是初始學習率。因為matlab工具箱為了在尋解不同階段更智能的選擇合适的步長,使用的是可變學習率,它會根據上一次解的調整對目标函數帶來的效果來對學習率作調整,再根據學習率決定步長。

機制如下:

if newE2/E2 > maxE_inc %若果誤差上升大于門檻值

lr = lr * lr_dec; %則降低學習率

else

if newE2 < E2 %若果誤差減少

lr = lr * lr_inc;%則增加學習率

end

詳細的可以看《神經網絡之家》nnetinfo裡的《[重要]寫自己的BP神經網絡(traingd)》一文,裡面是matlab神經網絡工具箱梯度下降法的簡化代碼

若果對你有幫助,請點贊。

祝學習愉快

谷歌人工智能寫作項目:小發貓

神經網絡參數優化算法,神經網絡損失函數設計

2、matlab支援向量機預測資料怎麼減小相對誤差

采用網格搜尋法神經網絡算法怎麼減少誤差。基于長短時記憶神經網絡算法的支援向量機的預測方法,為了保證支援向量機預測結果的準确性減小相對誤差,選用網格搜尋法對支援向量機參數進行優化處理。為了減小在預測算法中,由于誤差的傳遞導緻最終預測結果與實際結果産生較大偏離,在預測運算過程中對采用長短時記憶神經網絡組合預測,對預測結果進行組合。

3、人工神經網絡評價法

人工神經元是人工神經網絡的基本處理單元,而人工智能的一個重要組成部分又是人工神經網絡。人工神經網絡是模拟生物神經元系統的數學模型,接受資訊主要是通過神經元來進行的。首先,人工神經元利用連接配接強度将産生的信号擴大;然後,接收到所有與之相連的神經元輸出的權重累積;最後,将神經元與權重總和一一比較,當比門檻值大時,則激活人工神經元,信号被輸送至與它連接配接的上一層的神經元,反之則不行。

人工神經網絡的一個重要模型就是反向傳播模型(Back-Propagation Model)(簡稱BP模型)。對于一個擁有n個輸入節點、m個輸出節點的反向傳播網絡,可将輸入到輸出的關系看作n維空間到m維空間的映射。由于網絡中含有大量非線性節點,是以可具有高度非線性。

(一)神經網絡評價法的步驟

利用神經網絡對複墾潛力進行評價的目的就是對某個名額的輸入産生一個預期的評價結果,在此過程中需要對網絡的連接配接弧權值進行不斷的調整。

(1)初始化所有連接配接弧的權值。為了保證網絡不會出現飽和及反常的情況,一般将其設定為較小的随機數。

(2)在網絡中輸入一組訓練資料,并對網絡的輸出值進行計算。

(3)對期望值與輸出值之間的偏差進行計算,再從輸出層逆向計算到第一隐含層,調整各條弧的權值,使其往減少該偏差的方向發展。

(4)重複以上幾個步驟,對訓練集中的各組訓練資料反複計算,直至二者的偏差達到能夠被認可的程度為止。

(二)人工神經網絡模型的建立

(1)确定輸入層個數。根據評價對象的實際情況,輸入層的個數就是所選擇的評價名額數。

(2)确定隐含層數。通常最為理想的神經網絡隻具有一個隐含層,輸入的信号能夠被隐含節點分離,然後組合成新的向量,其運算快速,可讓複雜的事物簡單化,減少不必要的麻煩。

(3)确定隐含層節點數。按照經驗公式:

災害損毀土地複墾

式中:j——隐含層的個數;

n——輸入層的個數;

m——輸出層的個數。

人工神經網絡模型結構如圖5-2。

圖5-2人工神經網絡結構圖(據周麗晖,2004)

(三)人工神經網絡的計算

輸入被評價對象的名額資訊(X1,X2,X3,…,Xn),計算實際輸出值Yj。

災害損毀土地複墾

比較已知輸出與計算輸出,修改K層節點的權值和門檻值。

災害損毀土地複墾

式中:wij——K-1層結點j的連接配接權值和門檻值;

η——系數(0<η<1);

Xi——結點i的輸出。

輸出結果:

Cj=yj(1-yj)(dj-yj) (5-21)

式中:yj——結點j的實際輸出值;

dj——結點j的期望輸出值。因為無法對隐含結點的輸出進行比較,可推算出:

災害損毀土地複墾

式中:Xj——結點j的實際輸出值。

它是一個輪番代替的過程,每次的疊代都将W值調整,這樣經過反複更替,直到計算輸出值與期望輸出值的偏差在允許值範圍内才能停止。

利用人工神經網絡法對複墾潛力進行評價,實際上就是将土地複墾影響評價因子與複墾潛力之間的映射關系建立起來。隻要選擇的網絡結構合适,利用人工神經網絡函數的逼近性,就能無限接近上述映射關系,是以采用人工神經網絡法進行災毀土地複墾潛力評價是适宜的。

(四)人工神經網絡方法的優缺點

人工神經網絡方法與其他方法相比具有如下優點:

(1)它是利用最優訓練原則進行重複計算,不停地調試神經網絡結構,直至得到一個相對穩定的結果。是以,采取此方法進行複墾潛力評價可以消除很多人為主觀因素,保證了複墾潛力評價結果的真實性和客觀性。

(2)得到的評價結果誤差相對較小,通過反複疊代減少系統誤差,可滿足任何精度要求。

(3)動态性好,通過增加參比樣本的數量和随着時間不斷推移,能夠實作動态追蹤比較和更深層次的學習。

(4)它以非線性函數為基礎,與複雜的非線性動态經濟系統更貼近,能夠更加真實、更為準确地反映出災毀土地複墾潛力,比傳統評價方法更适用。

但是人工神經網絡也存在一定的不足:

(1)人工神經網絡算法是采取最優化算法,通過疊代計算對連接配接各神經元之間的權值不斷地調整,直到達到全局最優化。但誤差曲面相當複雜,在計算過程中一不小心就會使神經網絡陷入局部最小點。

(2)誤差通過輸出層逆向傳播,隐含層越多,逆向傳播偏差在接近輸入層時就越不準确,評價效率在一定程度上也受到影響,收斂速度不及時的情況就容易出現,進而造成個别區域的複墾潛力評價結果出現偏離。

4、MATLAB神經網絡BP,誤差超大,怎樣調試是誤差更接近目标值?主要調試哪些參數?謝謝。。。

被推薦的答案倒是沒說錯,基本上和沒說一樣…… 就好比問怎麼安排時間,回答一個“合理安排時間”……

誤差大,第一步需要嘗試的是做歸一化處理。有線性歸一化,有對數函數歸一化等等,這個你可以去網上搜尋資料歸一化方法,有相關的代碼,應該。

第二部需要做出的改動是隐層節點數量,如果節點數量太多,那麼結果的随機性就會很大,如果太少,那麼複雜資料的規律計算不出來。多少層節點最合适,這個目前除了一個一個試沒有更好的辦法。但是你會發現每一個相同的結構計算出的結果卻不盡相同,這個時候就需要考慮後續的問題。

第三步嘗試,變換transfer function。麻煩你查查字典,因為我不是用中文學的神經網絡。我姑且翻譯成傳輸函數。傳輸函數在matlab中内建了3中 pureline logsig tansig。分别有不同的應用範圍。因為沒看到你的資料,我也不清楚具體應該推薦你用哪一種。不過你可以去網上搜尋一下三種傳輸函數的特點。

一般情況下,前三步已經可以解決問題了。

如果不行,那麼你需要嘗試的就是比較進階的内容了。嘗試一下,不行再追問。

5、自己用matlab實作的BP神經網絡算法,無法得到預期的效果,主要是誤差太大 5

lr=0.05; %lr為學習速率;

err_goal=0.1; %err_goal為期望誤差最小值

max_epoch=15000; %max_epoch為訓練的最大次數;

a=0.9; %a為慣性系數

Oi=0;

Ok=0; %置隐含層和輸出層各神經元輸出初值為0

這些初始參數是誰提供給你?

調整一下這些參數看看.

6、bp神經網絡訓練樣本增加很多,但是隐含層節點數還是不變會不會欠拟合,或者過拟合?求大神告知!

學習神經網絡這段時間,有一個疑問,BP神經網絡中訓練的次數指的網絡的疊代次數,如果有a個樣本,每個樣本訓練次數n,則網絡一共疊代an次,在n>>a 情況下 , 網絡在不停的調整權值,減小誤差,跟樣本數似乎關系不大。而且,a大了的話訓練時間必然會變長。 

換一種說法,将你的資料集看成一個固定值, 那麼樣本集與測試集 也可以按照某種規格确定下來如7:3 是以如何看待 樣本集的多少與訓練結果呢? 或者說怎麼使你的網絡更加穩定,更加符合你的所需 。

我嘗試從之前的一個例子中看下差別

如何用70行Java代碼實作深度神經網絡算法

作者其實是實作了一個BP神經網絡 ,不多說,看最後的例子

一個運用神經網絡的例子 

最後我們找個簡單例子來看看神經網絡神奇的效果。為了友善觀察資料分布,我們選用一個二維坐标的資料,下面共有4個資料,方塊代表資料的類型為1,三角代表資料的類型為0,可以看到屬于方塊類型的資料有(1,2)和(2,1),屬于三角類型的資料有(1,1),(2,2),現在問題是需要在平面上将4個資料分成1和0兩類,并以此來預測新的資料的類型。

圖檔描述

我們可以運用邏輯回歸算法來解決上面的分類問題,但是邏輯回歸得到一個線性的直線做為分界線,可以看到上面的紅線無論怎麼擺放,總是有一個樣本被錯誤地劃分到不同類型中,是以對于上面的資料,僅僅一條直線不能很正确地劃分他們的分類,如果我們運用神經網絡算法,可以得到下圖的分類效果,相當于多條直線求并集來劃分空間,這樣準确性更高。 

圖檔描述

簡單粗暴,用作者的代碼運作後 訓練5000次 。根據訓練結果來預測一條新資料的分類(3,1)

預測值 (3,1)的結果跟(1,2)(2,1)屬于一類 屬于正方形

這時如果我們去掉 2個樣本,則樣本輸入變成如下

//設定樣本資料,對應上面的4個二維坐标資料 double[][] data = new double[][]{{1,2},{2,2}}; //設定目标資料,對應4個坐标資料的分類 double[][] target = new double[][]{{1,0},{0,1}};

1

2

3

7、BP神經網絡誤差如何提高

你好,誤差大,第一步需要嘗試的是做歸一化處理。有線性歸一化,有對數函數歸一化等等,這個你可以去網上搜尋資料歸一化方法,有相關的代碼,應該。

第二部需要做出的改動是隐層節點數量,如果節點數量太多,那麼結果的随機性就會很大,如果太少,那麼複雜資料的規律計算不出來。多少層節點最合适,這個目前除了一個一個試沒有更好的辦法。但是你會發現每一個相同的結構計算出的結果卻不盡相同,這個時候就需要考慮後續的問題。

第三步嘗試,變換transfer function。麻煩你查查字典,因為我不是用中文學的神經網絡。我姑且翻譯成傳輸函數。傳輸函數在matlab中内建了3中 pureline logsig tansig。分别有不同的應用範圍。因為沒看到你的資料,我也不清楚具體應該推薦你用哪一種。不過你可以去網上搜尋一下三種傳輸函數的特點。

如果有用請給“采納”謝謝。

8、神經網絡手寫數字識别,總誤差一直降不下來

上圖是解決問題的神經網絡模型,它是一個三層神經網絡。對于這樣的神經網絡,我們要解決問題,必須要有訓練集來訓練它。

我們所用到的訓練集:大量28x28像素的圖檔(這些圖檔通過掃描一些手寫數字得到),這些輸入的像素是灰階級的,0.0代表白色,1.0代表黑色,介于兩者之間為灰色。

由訓練集可知,我們的input layer應該有28x28=784個neurons,上圖簡略了一些。

第二層是hidden layer,我們設定它的neurons有n個,上圖中n=15

第三層是output layer,它有10個neurons(因為數字無非就是0~9),并且我們假定,如果第一個neuron被激活,ouput=1,那麼就說是被到的數字為0,以此類推。(這個時候大家可能會問,要是多個neurons被激活呢?原文中說要取最大值的那個,但是如果有兩個最大值,或者有兩個以上最大值呢?)

9、神經網絡算法可以解決的問題有哪些

人工神經網絡(Artificial Neural Networks,ANN)系統是 20 世紀 40 年代後出現的。它是由衆多的神經元可調的連接配接權值連接配接而成,具有大規模并行處理、分布式信 息存儲、良好的自組織自學習能力等特點。BP(Back Propagation)算法又稱為誤差 反向傳播算法,是人工神經網絡中的一種監督式的學習算法。BP 神經網絡算法在理 論上可以逼近任意函數,基本的結構由非線性變化單元組成,具有很強的非線性映射能力。而且網絡的中間層數、各層的處理單元數及網絡的學習系數等參數可根據具體情況設定,靈活性很大,在優化、信号處理與模式識别、智能控制、故障診斷等許 多領域都有着廣泛的應用前景。

工作原理

人工神經元的研究起源于腦神經元學說。19世紀末,在生物、生理學領域,Waldeger等人建立了神經元學說。人們認識到複雜的神經系統是由數目繁多的神經元組合而成。大腦皮層包括有100億個以上的神經元,每立方毫米約有數萬個,它們互相聯結形成神經網絡,通過感覺器官和神經接受來自身體内外的各種資訊,傳遞至中樞神經系統内,經過對資訊的分析和綜合,再通過運動神經發出控制資訊,以此來實作機體與内外環境的聯系,協調全身的各種機能活動。

神經元也和其他類型的細胞一樣,包括有細胞膜、細胞質和細胞核。但是神經細胞的形态比較特殊,具有許多突起,是以又分為細胞體、軸突和樹突三部分。細胞體内有細胞核,突起的作用是傳遞資訊。樹突是作為引入輸入信号的突起,而軸突是作為輸出端的突起,它隻有一個。

樹突是細胞體的延伸部分,它由細胞體發出後逐漸變細,全長各部位都可與其他神經元的軸突末梢互相聯系,形成所謂“突觸”。在突觸處兩神經元并未連通,它隻是發生資訊傳遞功能的結合部,聯系界面之間間隙約為(15~50)×10米。突觸可分為興奮性與抑制性兩種類型,它相應于神經元之間耦合的極性。每個神經元的突觸數目正常,最高可達10個。各神經元之間的連接配接強度和極性有所不同,并且都可調整、基于這一特性,人腦具有存儲資訊的功能。利用大量神經元互相聯接組成人工神經網絡可顯示出人的大腦的某些特征。

人工神經網絡是由大量的簡單基本元件——神經元互相聯接而成的自适應非線性動态系統。每個神經元的結構和功能比較簡單,但大量神經元組合産生的系統行為卻非常複雜。

人工神經網絡反映了人腦功能的若幹基本特性,但并非生物系統的逼真描述,隻是某種模仿、簡化和抽象。

與數字計算機比較,人工神經網絡在構成原理和功能特點等方面更加接近人腦,它不是按給定的程式一步一步地執行運算,而是能夠自身适應環境、總結規律、完成某種運算、識别或過程控制。

人工神經網絡首先要以一定的學習準則進行學習,然後才能工作。現以人工神經網絡對于寫“A”、“B”兩個字母的識别為例進行說明,規定當“A”輸入網絡時,應該輸出“1”,而當輸入為“B”時,輸出為“0”。

是以網絡學習的準則應該是:如果網絡作出錯誤的的判決,則通過網絡的學習,應使得網絡減少下次犯同樣錯誤的可能性。首先,給網絡的各連接配接權值賦予(0,1)區間内的随機值,将“A”所對應的圖象模式輸入給網絡,網絡将輸入模式權重求和、與門限比較、再進行非線性運算,得到網絡的輸出。在此情況下,網絡輸出為“1”和“0”的機率各為50%,也就是說是完全随機的。這時如果輸出為“1”(結果正确),則使連接配接權值增大,以便使網絡再次遇到“A”模式輸入時,仍然能作出正确的判斷。

繼續閱讀