㈠ 2.搭建一個神經網路模型訓練MNIST手寫體數字數據集中遇到的問題及解決方法
批量輸入後,如何使用numpy矩陣計算的方法計算各權值梯度,提高計算速度
def backprop(self, x, y): #x為多維矩陣。每列為一個x值。 y為多維矩陣。每列為一個y值。
batch_num=x.shape[1]
#print(x.shape)
#print(y.shape)
"""創建兩個變數,用來存儲所有b值和所有w值對應的梯度值。初始化為0.nabla_b為一個list,形狀與biases的形狀完全一致。nabla_w 為一個list,形狀與weights的形狀完全一致。
"""
nabla_b = [np.zeros(b.shape) for b in self.biases]
nabla_w = [np.zeros(w.shape) for w in self.weights]
# feedforward
"""activations,用來所有中間層和輸出層在一次前向計算過程中的最終輸出值,即a值。該值記錄下來,以供後期使用BP演算法求每個b和w的梯度。
"""
activation = x #x為本批多個x為列組成的矩陣。
activations = [x] # list to store all the activations, layer by layer
"""zs,用來所有中間層和輸出層在一次前向計算過程中的線性輸出值,即z值。該值記錄下來,以供後期使用BP演算法求每個b和w的梯度。
"""
zs = [] # list to store all the z vectors, layer by layer ,zs的每個元素為本batch的x對應的z為列構成的矩陣。
"""
通過一次正向計算,將中間層和輸出層所有的z值和a值全部計算出來,並存儲起來。供接下來求梯度使用。
"""
for b, w in zip(self.biases, self.weights):
#print(w.shape)
#print(np.dot(w, activation).shape)
#print(b.shape)
z = np.dot(w, activation)+b #z為本batch的x對應的z為列構成的矩陣。
zs.append(z)
activation = sigmoid(z)
activations.append(activation)
"""
以下部分是採用BP演算法求解每個可訓練參數的計算方法。是權重更新過程中的關鍵。
"""
# backward pass
# 求出輸出層的delta值
delta = ((activations[-1]-y) * sigmoid_prime(zs[-1]))
nabla_b[-1] = delta.mean(axis=1).reshape(-1, 1)
nabla_w[-1] =np.dot(delta,activations[-2].transpose())/batch_num
# Note that the variable l in the loop below is used a little
# differently to the notation in Chapter 2 of the book. Here,
# l = 1 means the last layer of neurons, l = 2 is the
# second-last layer, and so on. It's a renumbering of the
# scheme in the book, used here to take advantage of the fact
# that Python can use negative indices in lists.
for l in range(2, self.num_layers):
z = zs[-l]
sp = sigmoid_prime(z)
delta = (np.dot(self.weights[-l+1].transpose(), delta) * sp)
nabla_b[-l] = delta.mean(axis=1).reshape(-1, 1)
nabla_w[-l] =np.dot(delta,activations[-l-1].transpose())/batch_num
return (nabla_b, nabla_w)
##梯度計算後,如何更新各權值
def update_mini_batch(self, mini_batch, eta):
"""Update the network's weights and biases by applying
gradient descent using backpropagation to a single mini batch.
The ``mini_batch`` is a list of tuples ``(x, y)``, and ``eta``
is the learning rate."""
""" 初始化變數,去存儲各訓練參數的微分和。
"""
nabla_b = [np.zeros(b.shape) for b in self.biases]
nabla_w = [np.zeros(w.shape) for w in self.weights]
""" 循環獲取batch中的每個數據,獲取各訓練參數的微分,相加後獲得各訓練參數的微分和。
"""
x_batch=None
y_batch=None
for x, y in mini_batch:
if( x_batch is None):
x_batch=x
else:
x_batch=np.append(x_batch,x,axis=1)
if( y_batch is None):
y_batch=y
else:
y_batch=np.append(y_batch,y,axis=1)
delta_nabla_b, delta_nabla_w = self.backprop(x_batch, y_batch)
nabla_b = [nb+dnb for nb, dnb in zip(nabla_b, delta_nabla_b)]
nabla_w = [nw+dnw for nw, dnw in zip(nabla_w, delta_nabla_w)]
""" 使用各訓練參數的平均微分和與步長的乘積,去更新每個訓練參數
"""
self.weights = [w-eta*nw
for w, nw in zip(self.weights, nabla_w)]
self.biases = [b-eta*nb
for b, nb in zip(self.biases, nabla_b)]
㈡ 如何用神經網路解決Q-learning的問題
經過幾十年的發展,神經網路理論在模式識別、自動控制、信號處理、輔助決策、人工智慧等眾多研究領域取得了廣泛的成功。將人工神經網路應用至實際問題時,需先分析問題有哪些參量,如何抽象建立模型,最後選擇一種適當的神經網路模型,經過訓練即可映射該問題。人工神經網路由於其獨特的模型結構和固有的非線性模擬能力,以及高度的自適應和容錯特性等突出特徵,在控制系統中獲得了廣泛的應用。其在各類控制器框架結構的基礎上,加入了非線性自適應學習機制,從而使控制器具有更好的性能。基本的控制結構有監督控制、直接逆模控制、模型參考控制、內模控制、預測控制、最優決策控制等。
㈢ BP神經網路的核心問題是什麼其優缺點有哪些
人工神經網路,是一種旨在模仿人腦結構及其功能的信息處理系統,就是使用人工神經網路方法實現模式識別.可處理一些環境信息十分復雜,背景知識不清楚,推理規則不明確的問題,神經網路方法允許樣品有較大的缺損和畸變.神經網路的類型很多,建立神經網路模型時,根據研究對象的特點,可以考慮不同的神經網路模型. 前饋型BP網路,即誤差逆傳播神經網路是最常用,最流行的神經網路.BP網路的輸入和輸出關系可以看成是一種映射關系,即每一組輸入對應一組輸出.BP演算法是最著名的多層前向網路訓練演算法,盡管存在收斂速度慢,局部極值等缺點,但可通過各種改進措施來提高它的收斂速度,克服局部極值現象,而且具有簡單,易行,計算量小,並行性強等特點,目前仍是多層前向網路的首選演算法.
多層前向BP網路的優點:
網路實質上實現了一個從輸入到輸出的映射功能,而數學理論已證明它具有實現任何復雜非線性映射的功能。這使得它特別適合於求解內部機制復雜的問題;
網路能通過學習帶正確答案的實例集自動提取「合理的」求解規則,即具有自學習能力;
網路具有一定的推廣、概括能力。
多層前向BP網路的問題:
從數學角度看,BP演算法為一種局部搜索的優化方法,但它要解決的問題為求解復雜非線性函數的全局極值,因此,演算法很有可能陷入局部極值,使訓練失敗;
網路的逼近、推廣能力同學習樣本的典型性密切相關,而從問題中選取典型樣本實例組成訓練集是一個很困難的問題。
難以解決應用問題的實例規模和網路規模間的矛盾。這涉及到網路容量的可能性與可行性的關系問題,即學習復雜性問題;
網路結構的選擇尚無一種統一而完整的理論指導,一般只能由經驗選定。為此,有人稱神經網路的結構選擇為一種藝術。而網路的結構直接影響網路的逼近能力及推廣性質。因此,應用中如何選擇合適的網路結構是一個重要的問題;
新加入的樣本要影響已學習成功的網路,而且刻畫每個輸入樣本的特徵的數目也必須相同;
網路的預測能力(也稱泛化能力、推廣能力)與訓練能力(也稱逼近能力、學習能力)的矛盾。一般情況下,訓練能力差時,預測能力也差,並且一定程度上,隨訓練能力地提高,預測能力也提高。但這種趨勢有一個極限,當達到此極限時,隨訓練能力的提高,預測能力反而下降,即出現所謂「過擬合」現象。此時,網路學習了過多的樣本細節,而不能反映樣本內含的規律
由於BP演算法本質上為梯度下降法,而它所要優化的目標函數又非常復雜,因此,必然會出現「鋸齒形現象」,這使得BP演算法低效;
存在麻痹現象,由於優化的目標函數很復雜,它必然會在神經元輸出接近0或1的情況下,出現一些平坦區,在這些區域內,權值誤差改變很小,使訓練過程幾乎停頓;
為了使網路執行BP演算法,不能用傳統的一維搜索法求每次迭代的步長,而必須把步長的更新規則預先賦予網路,這種方法將引起演算法低效。
㈣ 神經網路主要用於什麼問題的求解
神經網路的研究可以分為理論研究和應用研究兩大方面。
理論研究可分為以下兩類:
1、利用神經生理與認知科學研究人類思維以及智能機理。
2、利用神經基礎理論的研究成果,用數理方法探索功能更加完善、性能更加優越的神經網路模型,深入研究網路演算法和性能,如:穩定性、收斂性、容錯性、魯棒性等;開發新的網路數理理論,如:神經網路動力學、非線性神經場等。
應用研究可分為以下兩類:
1、神經網路的軟體模擬和硬體實現的研究。
2、神經網路在各個領域中應用的研究。這些領域主要包括:
模式識別、信號處理、知識工程、專家系統、優化組合、機器人控制等。隨著神經網路理論本身以及相關理論、相關技術的不斷發展,神經網路的應用定將更加深入。
http://ke..com/view/5348.htm?fr=ala0_1
㈤ 如何選取一種神經網路結構來求解某一應用問題
神經網路包括BP網路、徑向基網路,反饋神經網路以及基於模擬退火演算法的隨機神經網路等。
目前對它們的改進有一百多種變型。不過最常用的是BP網路,這一點你用在中國知網檢索文獻就會發現。朋友我不知道你打算做哪一方面的,如果是做預測模型可以考慮BP網路,徑向基也可以;做聚類問題可以考慮自組織競爭網路;做優化可以用隨機神經網路;做聯想記憶可以考慮反饋神經網路。
不懂還可以問,望採納。
㈥ 神經網路模型的介紹
神經網路(Neural Networks,NN)是由大量的、簡單的處理單元(稱為神經元)廣泛地互相連接而形成的復雜網路系統,它反映了人腦功能的許多基本特徵,是一個高度復雜的非線性動力學習系統。神經網路具有大規模並行、分布式存儲和處理、自組織、自適應和自學能力,特別適合處理需要同時考慮許多因素和條件的、不精確和模糊的信息處理問題。神經網路的發展與神經科學、數理科學、認知科學、計算機科學、人工智慧、信息科學、控制論、機器人學、微電子學、心理學、光計算、分子生物學等有關,是一門新興的邊緣交叉學科。
神經網路的基礎在於神經元。
神經元是以生物神經系統的神經細胞為基礎的生物模型。在人們對生物神經系統進行研究,以探討人工智慧的機制時,把神經元數學化,從而產生了神經元數學模型。
大量的形式相同的神經元連結在—起就組成了神經網路。神經網路是一個高度非線性動力學系統。雖然,每個神經元的結構和功能都不復雜,但是神經網路的動態行為則是十分復雜的;因此,用神經網路可以表達實際物理世界的各種現象。
神經網路模型是以神經元的數學模型為基礎來描述的。人工神經網路(ArtificialNuearlNewtokr)s,是對人類大腦系統的一階特性的一種描。簡單地講,它是一個數學模型。神經網路模型由網路拓撲.節點特點和學習規則來表示。神經網路對人們的巨大吸引力主要在下列幾點:
1.並行分布處理。
2.高度魯棒性和容錯能力。
3.分布存儲及學習能力。
4.能充分逼近復雜的非線性關系。
在控制領域的研究課題中,不確定性系統的控制問題長期以來都是控制理論研究的中心主題之一,但是這個問題一直沒有得到有效的解決。利用神經網路的學習能力,使它在對不確定性系統的控制過程中自動學習系統的特性,從而自動適應系統隨時間的特性變異,以求達到對系統的最優控制;顯然這是一種十分振奮人心的意向和方法。
人工神經網路的模型現在有數十種之多,應用較多的典型的神經網路模型包括BP神經網路、Hopfield網路、ART網路和Kohonen網路。 學習是神經網路一種最重要也最令人注目的特點。在神經網路的發展進程中,學習演算法的研究有著十分重要的地位。目前,人們所提出的神經網路模型都是和學習演算法相應的。所以,有時人們並不去祈求對模型和演算法進行嚴格的定義或區分。有的模型可以有多種演算法。而有的演算法可能可用於多種模型。在神經網路中,對外部環境提供的模式樣本進行學習訓練,並能存儲這種模式,則稱為感知器;對外部環境有適應能力,能自動提取外部環境變化特徵,則稱為認知器。神經網路在學習中,一般分為有教師和無教師學習兩種。感知器採用有教師信號進行學習,而認知器則採用無教師信號學習的。在主要神經網路如Bp網路,Hopfield網路,ART絡和Kohonen網路中;Bp網路和Hopfield網路是需要教師信號才能進行學習的;而ART網路和Khonone網路則無需教師信號就可以學習49[]。所謂教師信號,就是在神經網路學習中由外部提供的模式樣本信號。
㈦ matlab中怎麼求解神經網路模型
推薦另一個軟體吧,叫馬克威分析系統,裡面的操作是可視化的,中間數據挖掘裡面有一個神經網路,可以求解非數值型的數據的
㈧ 神經網路對文本分類可以解決什麼問題
神經網路模型屬於黑箱模型,它通過對已有數據進行機器學習,然後可以用該模型進行預測、判別等。
㈨ 什麼叫神經網路模型
神經網路模型是個比較抽象的概念,你確定了一個神經網路的層數,輸入、隱含、輸出層數,輸入輸出函數,各層節點數之後,就可以說你建立了一個神經網路模型。
這里的模型,也就指框架。
㈩ 運用神經網路方法的數學建模問題都有哪些
找到評價的標准,如科研水平,人才培養能力,師資水平,硬體基礎設施等等,選擇一個模型,根據你認為的這些因素的重要性設定參數。最簡單的就是賦予權值,多項式表示,你使用神經網路模型,這個比較適合