機(jī)器學(xué)習(xí)及應(yīng)用第4章-神經(jīng)網(wǎng)絡(luò)課件_第1頁(yè)
機(jī)器學(xué)習(xí)及應(yīng)用第4章-神經(jīng)網(wǎng)絡(luò)課件_第2頁(yè)
機(jī)器學(xué)習(xí)及應(yīng)用第4章-神經(jīng)網(wǎng)絡(luò)課件_第3頁(yè)
機(jī)器學(xué)習(xí)及應(yīng)用第4章-神經(jīng)網(wǎng)絡(luò)課件_第4頁(yè)
機(jī)器學(xué)習(xí)及應(yīng)用第4章-神經(jīng)網(wǎng)絡(luò)課件_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第04章 神經(jīng)網(wǎng)絡(luò)神經(jīng)元感知機(jī)梯度下降法隨機(jī)梯度下降法前向神經(jīng)網(wǎng)絡(luò)分類器BP神經(jīng)網(wǎng)絡(luò)玻爾茲曼機(jī)4.1 引言神經(jīng)網(wǎng)絡(luò)是一門受生物神經(jīng)網(wǎng)絡(luò)的啟發(fā)而興起的、發(fā)展迅速的交叉學(xué)科,涉及計(jì)算機(jī)、生物、數(shù)學(xué)、心理學(xué)、電子、認(rèn)知科學(xué)等學(xué)科。人工神經(jīng)網(wǎng)絡(luò)可以設(shè)計(jì)出某些具有類似大腦功能的智能系統(tǒng)來(lái)處理各種信息,解決不同問(wèn)題。如市場(chǎng)預(yù)測(cè)、數(shù)據(jù)分類、語(yǔ)音識(shí)別、文字識(shí)別、醫(yī)療診斷等。4.1.1人工神經(jīng)網(wǎng)絡(luò)的發(fā)展歷程1890年,首次闡明了人腦結(jié)構(gòu)功能和相關(guān)的學(xué)習(xí)聯(lián)想記憶規(guī)則。1943年,神經(jīng)元的基本特性,提出了神經(jīng)元的數(shù)學(xué)模型,即M-P模型。1949年,神經(jīng)元學(xué)習(xí)的一般規(guī)則,即Hebbin法則。1958年,歷史上第一個(gè)具

2、有學(xué)習(xí)型神經(jīng)網(wǎng)絡(luò)特點(diǎn)的模式識(shí)別裝置,并給出了兩層感知機(jī)的收斂定理;之后,又提出三層感知機(jī)模型。4.1 引言1960年代初期,自適應(yīng)線性元結(jié)構(gòu),提出了Windrow-Hoff算法,主要應(yīng)用于自適應(yīng)系統(tǒng)。1969年,單層神經(jīng)網(wǎng)絡(luò)的功能局限性,發(fā)展走入低谷。20世紀(jì)80年代,成功求解NP完全的旅行商問(wèn)題,研制了Boltzmann機(jī);誤差反向傳播算法。1990年,神經(jīng)網(wǎng)絡(luò)集成方法。1997年,AdaBoost算法。2012年6月,吳恩達(dá)和谷歌科學(xué)家合作,用1.6萬(wàn)臺(tái)計(jì)算機(jī)搭建并模擬了一個(gè)人腦神經(jīng)網(wǎng)絡(luò)。2015年5月,深度學(xué)習(xí)開(kāi)始被學(xué)術(shù)界接受。2016年3月,AlphaGo打敗韓國(guó)圍棋選手李世石。4.1

3、 引言分布式存儲(chǔ)信息并行協(xié)同處理信息信息處理與存儲(chǔ)合二為一對(duì)信息的處理具有自組織、自學(xué)習(xí)的特點(diǎn),便于聯(lián)想、綜合和推廣4.1.2 人工神經(jīng)網(wǎng)絡(luò)的特點(diǎn)4.1.3 人工神經(jīng)網(wǎng)絡(luò)的分類前饋神經(jīng)網(wǎng)絡(luò)將神經(jīng)元分層排列,分別是輸入層、中間層和輸出層。按照層數(shù)不同,劃分為單層前饋神經(jīng)網(wǎng)絡(luò)和多層前饋神經(jīng)網(wǎng)絡(luò)。感知機(jī)、BP網(wǎng)絡(luò)、RBF網(wǎng)絡(luò)。反饋神經(jīng)網(wǎng)絡(luò)每個(gè)神經(jīng)元同時(shí)將自身的輸出信號(hào)作為輸入信號(hào)反饋給其他神經(jīng)元,Hopfield神經(jīng)網(wǎng)絡(luò)是反饋網(wǎng)絡(luò)中最簡(jiǎn)單且應(yīng)用廣泛的模型。自組織神經(jīng)網(wǎng)絡(luò)是無(wú)導(dǎo)師學(xué)習(xí)網(wǎng)絡(luò)通常采用競(jìng)爭(zhēng)原則進(jìn)行網(wǎng)絡(luò)學(xué)習(xí)。4.2 神經(jīng)元模型神經(jīng)元是神經(jīng)網(wǎng)絡(luò)的基本信息處理單位,是(人工)神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)基礎(chǔ)。對(duì)

4、于神經(jīng)元的研究由來(lái)已久,1904年生物學(xué)家就已經(jīng)知曉了神經(jīng)元的組成結(jié)構(gòu)。一個(gè)(生物)神經(jīng)元主要由細(xì)胞體(Cell body)、樹(shù)突(Dendrites)、軸突(Myelin Sheath)和突觸(Synapse)等組成。樹(shù)突是傳入纖維,軸突是傳出纖維。4.2 神經(jīng)元模型 神經(jīng)元是神經(jīng)網(wǎng)絡(luò)的基本信息處理單位,組成結(jié)構(gòu)。1943年,神經(jīng)學(xué)家和解剖學(xué)家W.S. McCulloch和數(shù)理邏輯學(xué)家W. Pitts參考了生物神經(jīng)元的結(jié)構(gòu),提出了形似(生物)神經(jīng)元的線性加權(quán)求和閾值模型,簡(jiǎn)稱M-P模型。4.2 神經(jīng)元模型神經(jīng)元閾值函數(shù):符號(hào)函數(shù)SgnLogistic函數(shù)M-P神經(jīng)元特點(diǎn)多輸入單輸出分為興奮性

5、輸入和抑制性輸入空間整合特性和閾值特性輸入通過(guò)權(quán)值表征耦合程度突觸接頭有時(shí)間延遲,網(wǎng)絡(luò)的活動(dòng)過(guò)程離散化4.3 感知機(jī)與多層神經(jīng)網(wǎng)絡(luò)美國(guó)計(jì)算機(jī)科學(xué)家Frank Rosenblatt于1957年發(fā)明了感知機(jī),是最早的人工神經(jīng)網(wǎng)絡(luò),是一種二元線性分類器。單層感知機(jī)是一個(gè)具有一層神經(jīng)元、采用閾值激活函數(shù)的前向網(wǎng)絡(luò)。4.3.1 感知機(jī)4.3 感知機(jī)與多層神經(jīng)網(wǎng)絡(luò)4.3.1 感知機(jī)4.3 感知機(jī)與多層神經(jīng)網(wǎng)絡(luò)4.3.1 感知機(jī)4.3 感知機(jī)與多層神經(jīng)網(wǎng)絡(luò)1.感知機(jī)訓(xùn)練4.3 感知機(jī)與多層神經(jīng)網(wǎng)絡(luò)2.感知機(jī)神經(jīng)網(wǎng)絡(luò)的局限性感知機(jī)神經(jīng)網(wǎng)絡(luò)的傳輸函數(shù)一般采用閾值函數(shù),故輸出只有兩種(1或者0),所以只能用來(lái)解決

6、簡(jiǎn)單的分類問(wèn)題;單層感知機(jī)網(wǎng)絡(luò)只能解決線性可分的分類問(wèn)題,而對(duì)線性不可分的分類問(wèn)題無(wú)能為力;感知機(jī)學(xué)習(xí)算法只適于單層感知機(jī)網(wǎng)絡(luò),所以一般感知機(jī)網(wǎng)絡(luò)都是單層的。4.3 感知機(jī)與多層神經(jīng)網(wǎng)絡(luò)3.感知機(jī)實(shí)驗(yàn) (a)線性可分 (b) 線性不可分4.3 感知機(jī)與多層神經(jīng)網(wǎng)絡(luò) # 訓(xùn)練感知機(jī) def train(self, inputs, targets, eta, nIterations): # 偏置加入輸入,構(gòu)成4 * 3維矩陣 inputs = concatenate(inputs, - ones(self.nData,1), axis = 1) # 訓(xùn)練 for n in range( nIter

7、ations ): # 前向傳播 self.outputs = self.forward(inputs) # 修改權(quán)值 self.weights = self.weights + eta * dot(transpose(inputs), targets - self.outputs)# 前向傳播 def forward(self, inputs): outputs = dot(inputs, self.weights) return where(outputs 0.5, 1, 0) # 輸出閾值 # 輸出 def prn(self): print(Percetrons weights:n, s

8、elf.weights) print(Percetrons outputs:n, self.outputs)主要實(shí)現(xiàn)代碼:4.3 感知機(jī)與多層神經(jīng)網(wǎng)絡(luò)inputs = array(0,0,0,1,1,0,1,1) # 輸入數(shù)據(jù),也是測(cè)試數(shù)據(jù)targets = array(0,0,0,1) # AND運(yùn)算的標(biāo)簽數(shù)據(jù)p = singlePerception(inputs,targets) #單層感知機(jī)對(duì)象p.train(inputs, targets, 0.25, 6) # 訓(xùn)練感知機(jī)對(duì)象 p.prn() # 輸出結(jié)果運(yùn)行結(jié)果:Percetrons weights: 0.51900471 0.46

9、993134-0.28361255Percetrons outputs:0001主程序(含輸入數(shù)據(jù)):(續(xù)上)4.3.2 梯度下降法1.邏輯回歸(Logistic Regression)4.3.2 梯度下降法1.邏輯回歸(Logistic Regression)4.3.2 梯度下降法1.邏輯回歸(Logistic Regression)4.3.2 梯度下降法1.邏輯回歸(Logistic Regression)4.3.2 梯度下降法1.邏輯回歸(Logistic Regression)4.3.2 梯度下降法2.梯度下降(gradient descent)4.3.2 梯度下降法2.梯度下降(gr

10、adient descent)4.3.3 隨機(jī)梯度下降法4.3.4 多層神經(jīng)網(wǎng)絡(luò)1.二層前向神經(jīng)網(wǎng)絡(luò)4.3.4 多層神經(jīng)網(wǎng)絡(luò)1.二層前向神經(jīng)網(wǎng)絡(luò)4.3.4 多層神經(jīng)網(wǎng)絡(luò)1.二層前向神經(jīng)網(wǎng)絡(luò)4.3.4 多層神經(jīng)網(wǎng)絡(luò) # 通過(guò)試錯(cuò)訓(xùn)練神經(jīng)網(wǎng)絡(luò),每次微調(diào)突觸權(quán)重 def train(self, trainingInputs, trainingOutputs, nTrainingIteration): for iteration in range(nTrainingIteration): # 將整個(gè)訓(xùn)練集傳遞給神經(jīng)網(wǎng)絡(luò) output_from_layer_1, output_from_layer_2

11、= self.predict(trainingInputs) # 計(jì)算第二層的誤差 layer2_error = trainingOutputs - output_from_layer_2 layer2_delta = layer2_error * self._sigmoid_derivative(output_from_layer_2) # 計(jì)算第二層的權(quán)重調(diào)整量 layer2_adjustment = self.layer2.eta * output_from_layer_1.T.dot(layer2_delta) # 調(diào)整第二層的權(quán)重 self.layer2.weights += lay

12、er2_adjustment # 計(jì)算第一層的誤差,得到第一層對(duì)第二層的影響 layer1_error = layer2_delta.dot(self.layer2.weights.T) layer1_delta = layer1_error * self._sigmoid_derivative(output_from_layer_1) # 計(jì)算第一層的權(quán)重調(diào)整量 layer1_adjustment = self.layer1.eta * trainingInputs.T.dot(layer1_delta) # 調(diào)整第一層的權(quán)重 self.layer1.weights += layer1_ad

13、justment實(shí)現(xiàn)代碼:4.3.4 多層神經(jīng)網(wǎng)絡(luò)# 二層神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)(第一層神經(jīng)網(wǎng)絡(luò)輸出,第二層神經(jīng)網(wǎng)絡(luò)輸出) def predict(self, inputs): output_from_layer1 = self.sigmoid(dot(inputs, self.layer1.weights) output_from_layer2 = self.sigmoid(dot(output_from_layer1, self.layer2.weights) return output_from_layer1, output_from_layer2# 訓(xùn)練集,XOR函數(shù)trainingInput

14、s = array(0, 0, 0, 1, 1, 0, 1, 1)trainingOutputs = array(0, 1, 1, 0).T# 初始化隨機(jī)數(shù)種子random.seed(1)#創(chuàng)建第一層 (4神經(jīng)元, 每個(gè)2輸入)layer1 = NeuronLayer(4, 2)#創(chuàng)建第二層 (單神經(jīng)元,4輸入)layer2 = NeuronLayer(1, 4)主程序(含訓(xùn)練數(shù)據(jù)):4.3.4 多層神經(jīng)網(wǎng)絡(luò)# 組合成神經(jīng)網(wǎng)絡(luò)tlnn = TwoLayersNeuralNetwork(layer1, layer2)print (1) 隨機(jī)初始突觸權(quán)重: )tlnn.print_weights(

15、)# 用訓(xùn)練集訓(xùn)練神經(jīng)網(wǎng)絡(luò)tlnn.train(trainingInputs, trainingOutputs, 50000)print (2) 訓(xùn)練后的權(quán)重值: )tlnn.print_weights()print (3) 預(yù)測(cè): )for i in range(len(trainingInputs): hidden_state, output = tlnn.predict(trainingInputsi) print(output)主程序(含訓(xùn)練數(shù)據(jù)):(續(xù)上)4.3.4 多層神經(jīng)網(wǎng)絡(luò)1) 隨機(jī)初始突觸權(quán)重: Layer 1 (4 neurons, each with 2 inputs):

16、 -0.16595599 0.44064899 -0.99977125 -0.39533485 -0.70648822 -0.81532281 -0.62747958 -0.30887855 Layer 2 (1 neuron, with 4 inputs):-0.20646505 0.07763347 -0.16161097 0.370439 2) 訓(xùn)練后的權(quán)重值: Layer 1 (4 neurons, each with 2 inputs): 2.57612468 3.91438561 -5.96509441 -7.38577669 -1.0245413 -8.02972636 -5.8

17、6303221 3.40368198 Layer 2 (1 neuron, with 4 inputs): -5.89617401 10.15582609 -19.37274716 6.449688243) 預(yù)測(cè): 0.01297458 0.99036898 0.98825116 0.01010893運(yùn)行結(jié)果:4.4 誤差反向傳播算法1986年,David E. Rumelhart和James McClelland提出的BP神經(jīng)網(wǎng)絡(luò)(Back Propagation Network),是一種按照誤差逆向傳播算法訓(xùn)練的多層前饋神經(jīng)網(wǎng)絡(luò),是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)。BP神經(jīng)網(wǎng)絡(luò)的基本思想是梯度下降

18、法,利用梯度搜索技術(shù),以期使網(wǎng)絡(luò)的實(shí)際輸出值和期望輸出值的誤差均方差為最小。算法包括信號(hào)的前向傳播和誤差的反向傳播,即計(jì)算誤差輸出時(shí),按從輸入到輸出的方向進(jìn)行;而調(diào)整權(quán)值和閾值時(shí),按從輸出到輸入的方向進(jìn)行。正向傳播時(shí),輸入信號(hào)通過(guò)隱含層作用于輸出結(jié)點(diǎn),經(jīng)過(guò)非線性變換,產(chǎn)生輸出信號(hào),若實(shí)際輸出與期望輸出不相符,則轉(zhuǎn)入誤差的反向傳播過(guò)程。誤差的反向傳播是將輸出誤差通過(guò)隱含層向輸入層逐層反傳,并將誤差分?jǐn)偨o各層所有單元,以從各層獲得的誤差信號(hào)作為調(diào)整各單元權(quán)值的依據(jù),所以稱該算法為誤差反向傳播算法。4.4 誤差反向傳播算法4.4.1 BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法4.4 誤差反向傳播算法4.4.1 BP神經(jīng)網(wǎng)

19、絡(luò)學(xué)習(xí)算法4.4 誤差反向傳播算法4.4.1 BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法4.4 誤差反向傳播算法4.4.1 BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法4.4 誤差反向傳播算法4.4.1 BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法4.4 誤差反向傳播算法2.隱藏層權(quán)值訓(xùn)練4.4 誤差反向傳播算法2.隱藏層權(quán)值訓(xùn)練4.4 誤差反向傳播算法4.4 誤差反向傳播算法 stochastic gradient descent algorithm for training a three-layer network (only one hidden layer)4.4 誤差反向傳播算法4.4.1. BP神經(jīng)網(wǎng)絡(luò)實(shí)驗(yàn)4.4 誤差反向傳播算法# 前向計(jì)算。以i

20、nput_vector作為輸入值,計(jì)算神經(jīng)網(wǎng)絡(luò)neural_network的各層輸出def feed_forward(neural_network, input_vector): outputs = for layer in neural_network: input_with_bias = input_vector + 1 # 擴(kuò)展輸入向量 output = neuron_output(neuron, input_with_bias) for neuron in layer # 計(jì)算每一層的輸出結(jié)果 outputs.append(output) # 記錄當(dāng)前層(隱含層)的輸出值 input_

21、vector = output # 將當(dāng)前層的輸出作為下一層的輸入 return outputs4.4.2 BP神經(jīng)網(wǎng)絡(luò)實(shí)驗(yàn)程序代碼:4.4 誤差反向傳播算法4.4.2 BP神經(jīng)網(wǎng)絡(luò)實(shí)驗(yàn)# 反向傳播。以input_vector 為輸入訓(xùn)練向量,target為標(biāo)準(zhǔn),# 采用BP算法,反向逐層調(diào)整network的連接權(quán)值def backpropagate(network, input_vector, target): # 以input_vector為輸入,前向計(jì)算網(wǎng)絡(luò)的各層輸出值hidden_outputs, outputs = feed_forward(network, input_vector

22、)# 計(jì)算各層的delta值=output * (1 - output)。此處的激活函數(shù)為sigmoid output_deltas = output * (1 - output) * (output - targeti) for i, output in enumerate(outputs) # 調(diào)整輸出層的連接權(quán)重 for i, output_neuron in enumerate(network-1):續(xù)代碼4.4 誤差反向傳播算法 for j, hidden_output in enumerate(hidden_outputs + 1): output_neuronj -= output_deltasi * hidden_output # 反向調(diào)整各隱含層(除第一層外)的連接權(quán)重 hidden_deltas = hidden_output * (1 - hidden_output) * dot(output_deltas,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論