《智能設(shè)計(jì)方法》課件 4 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第1頁(yè)
《智能設(shè)計(jì)方法》課件 4 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第2頁(yè)
《智能設(shè)計(jì)方法》課件 4 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第3頁(yè)
《智能設(shè)計(jì)方法》課件 4 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第4頁(yè)
《智能設(shè)計(jì)方法》課件 4 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩158頁(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)介

第四章神經(jīng)網(wǎng)絡(luò)基礎(chǔ)演講人RBM神經(jīng)網(wǎng)絡(luò)的基本介紹01RBM神經(jīng)網(wǎng)絡(luò)的運(yùn)行流程02#加載訓(xùn)練和測(cè)試數(shù)據(jù)集04#數(shù)據(jù)加載程序05RBM神經(jīng)網(wǎng)絡(luò)的案例分析03目錄神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史可以追溯到上世紀(jì)50年代,但直到最近幾十年,隨著計(jì)算機(jī)性能的提升和大數(shù)據(jù)的普及,神經(jīng)網(wǎng)絡(luò)才得到了廣泛應(yīng)用并取得了巨大的成功。神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別、自然語(yǔ)言處理、智能推薦等領(lǐng)域取得了顯著的成就,被廣泛應(yīng)用于各行各業(yè)。然而,神經(jīng)網(wǎng)絡(luò)也面臨著訓(xùn)練時(shí)間長(zhǎng)、過(guò)擬合、解釋性差等問(wèn)題,需要不斷改進(jìn)和優(yōu)化。本章節(jié)將系統(tǒng)介紹神經(jīng)網(wǎng)絡(luò)的基本理論、常見(jiàn)模型和應(yīng)用案例,幫助讀者深入了解神經(jīng)網(wǎng)絡(luò)的原理和方法,掌握神經(jīng)網(wǎng)絡(luò)在實(shí)際問(wèn)題中的應(yīng)用技巧,為讀者進(jìn)一步深入研究和應(yīng)用神經(jīng)網(wǎng)絡(luò)打下堅(jiān)實(shí)的基礎(chǔ)。1神經(jīng)網(wǎng)絡(luò)的基本概況神經(jīng)網(wǎng)絡(luò)是一種模仿人類大腦神經(jīng)元網(wǎng)絡(luò)結(jié)構(gòu)和工作原理而設(shè)計(jì)的人工智能模型。它由多個(gè)神經(jīng)元(節(jié)點(diǎn))組成的層次結(jié)構(gòu)構(gòu)成,每個(gè)神經(jīng)元接收來(lái)自上一層神經(jīng)元的輸入,并通過(guò)激活函數(shù)進(jìn)行加權(quán)求和并輸出結(jié)果。神經(jīng)網(wǎng)絡(luò)通過(guò)學(xué)習(xí)大量數(shù)據(jù)樣本來(lái)調(diào)整神經(jīng)元之間的連接權(quán)重,從而實(shí)現(xiàn)對(duì)復(fù)雜模式和規(guī)律的學(xué)習(xí)和識(shí)別。神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)包括輸入層、隱藏層和輸出層,其中隱藏層可以有多層,不同層之間的神經(jīng)元通過(guò)權(quán)重連接并通過(guò)激活函數(shù)進(jìn)行計(jì)算。通過(guò)反向傳播算法,神經(jīng)網(wǎng)絡(luò)可以不斷調(diào)整連接權(quán)重,以最大程度地減少預(yù)測(cè)輸出與實(shí)際標(biāo)簽之間的誤差。1神經(jīng)網(wǎng)絡(luò)的基本概況1.1基本組成No.3輸入層(InputLayer)輸入層是神經(jīng)網(wǎng)絡(luò)的第一層,負(fù)責(zé)接收原始數(shù)據(jù)或特征向量。每個(gè)輸入神經(jīng)元對(duì)應(yīng)輸入數(shù)據(jù)的一個(gè)特征,輸入層的神經(jīng)元數(shù)量取決于輸入數(shù)據(jù)的維度。隱藏層(HiddenLayers)隱藏層是神經(jīng)網(wǎng)絡(luò)中介于輸入層和輸出層之間的一層或多層。隱藏層通過(guò)一系列的權(quán)重和激活函數(shù)對(duì)輸入數(shù)據(jù)進(jìn)行非線性變換,提取數(shù)據(jù)中的高階特征,從而實(shí)現(xiàn)對(duì)復(fù)雜模式的學(xué)習(xí)和表示。輸出層(OutputLayer)輸出層是神經(jīng)網(wǎng)絡(luò)的最后一層,負(fù)責(zé)輸出神經(jīng)網(wǎng)絡(luò)對(duì)輸入數(shù)據(jù)的預(yù)測(cè)結(jié)果。輸出層的神經(jīng)元數(shù)量通常取決于問(wèn)題的種類和輸出的維度,可以是一個(gè)神經(jīng)元(二分類問(wèn)題)或多個(gè)神經(jīng)元(多分類問(wèn)題)。No.2No.11神經(jīng)網(wǎng)絡(luò)的基本概況1.1基本組成權(quán)重和偏置(WeightsandBiases)神經(jīng)網(wǎng)絡(luò)中的連接權(quán)重和偏置是網(wǎng)絡(luò)學(xué)習(xí)的關(guān)鍵參數(shù),通過(guò)不斷調(diào)整這些參數(shù),神經(jīng)網(wǎng)絡(luò)可以逐漸優(yōu)化模型,提高對(duì)數(shù)據(jù)的擬合能力。激活函數(shù)(ActivationFunctions)激活函數(shù)在神經(jīng)網(wǎng)絡(luò)中扮演著非常重要的角色,它引入了非線性因素,幫助神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)復(fù)雜的模式和規(guī)律。常見(jiàn)的激活函數(shù)包括ReLU、Sigmoid、Tanh等。1神經(jīng)網(wǎng)絡(luò)的基本概況起源:神經(jīng)元模型的提出(1943年)1943年,心理學(xué)家麥卡洛克和數(shù)學(xué)家皮茨提出了第一個(gè)神經(jīng)元模型,描述了神經(jīng)元之間的連接和激活方式,奠定了神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)。二發(fā)展:感知機(jī)的誕生(1957年)1957年,羅森布拉特提出了感知機(jī)模型,實(shí)現(xiàn)了簡(jiǎn)單的二分類任務(wù),引發(fā)了神經(jīng)網(wǎng)絡(luò)領(lǐng)域的熱潮,但受限于單層結(jié)構(gòu)無(wú)法解決非線性問(wèn)題。三瓶頸:神經(jīng)網(wǎng)絡(luò)的低谷(1969年-1980年)20世紀(jì)60年代末至80年代初,神經(jīng)網(wǎng)絡(luò)陷入低谷,因感知機(jī)的局限性和訓(xùn)練算法的困難,人工智能研究重心轉(zhuǎn)向符號(hào)推理。四復(fù)興:反向傳播算法的提出(1986年)1986年,魯姆魯哈特等人提出了反向傳播算法,實(shí)現(xiàn)了多層神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,重新點(diǎn)燃了神經(jīng)網(wǎng)絡(luò)的研究熱情,開(kāi)啟了神經(jīng)網(wǎng)絡(luò)的復(fù)興時(shí)代。1神經(jīng)網(wǎng)絡(luò)的基本概況起源:神經(jīng)元模型的提出(1943年)五爆發(fā):深度學(xué)習(xí)的崛起(2010年至今)2010年以后,隨著大數(shù)據(jù)和計(jì)算能力的提升,深度學(xué)習(xí)成為神經(jīng)網(wǎng)絡(luò)的主流,卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)等模型在圖像識(shí)別、自然語(yǔ)言處理等領(lǐng)域取得了突破性進(jìn)展。六未來(lái):神經(jīng)網(wǎng)絡(luò)的前景展望神經(jīng)網(wǎng)絡(luò)在智能駕駛、醫(yī)療診斷、智能語(yǔ)音助手等領(lǐng)域有著廣闊的應(yīng)用前景,未來(lái)將繼續(xù)發(fā)展并與其他技術(shù)相結(jié)合,推動(dòng)人工智能的發(fā)展。1神經(jīng)網(wǎng)絡(luò)的基本概況1.3網(wǎng)絡(luò)框架神經(jīng)網(wǎng)絡(luò)的基本元素構(gòu)成方式與訓(xùn)練網(wǎng)絡(luò)的學(xué)習(xí)算法密切相關(guān)。通過(guò)構(gòu)造處相應(yīng)的學(xué)習(xí)算法,配合設(shè)計(jì)號(hào)的網(wǎng)絡(luò)框架達(dá)成所需的實(shí)現(xiàn)目標(biāo)。關(guān)于學(xué)習(xí)算法的詳細(xì)內(nèi)容將不在此處介紹,本小節(jié)的重點(diǎn)是介紹神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)框架。一般的,我們將網(wǎng)絡(luò)框架分為兩種不同的分類。1神經(jīng)網(wǎng)絡(luò)的基本概況前饋神經(jīng)網(wǎng)絡(luò)前饋神經(jīng)網(wǎng)絡(luò)是一種較為簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),也被稱為多層感知機(jī)(MultilayerPerceptron,MLP)。作為神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)結(jié)構(gòu),為解決各種復(fù)雜的模式識(shí)別和預(yù)測(cè)問(wèn)題提供了重要的基礎(chǔ)。它由一個(gè)輸入層、一個(gè)或多個(gè)隱藏層和一個(gè)輸出層組成,每一層都由多個(gè)神經(jīng)元組成。在前饋神經(jīng)網(wǎng)絡(luò)中,信息從輸入層經(jīng)過(guò)隱藏層逐層傳遞,最終到達(dá)輸出層,且各層之間沒(méi)有反饋連接。將其分為單層前饋神經(jīng)網(wǎng)絡(luò)和多層前饋神經(jīng)網(wǎng)絡(luò)。其中,前者的單層指的是計(jì)算單元的輸出層,不包含輸入層;后者通常具有一個(gè)或多個(gè)隱藏層,以此區(qū)分兩者。多層前饋神經(jīng)網(wǎng)絡(luò)包含徑向基神經(jīng)網(wǎng)絡(luò)、BP神經(jīng)網(wǎng)絡(luò)、全連接神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)等。1神經(jīng)網(wǎng)絡(luò)的基本概況反饋神經(jīng)網(wǎng)絡(luò)反饋神經(jīng)網(wǎng)絡(luò)與前饋神經(jīng)網(wǎng)絡(luò)不同的是,反饋神經(jīng)網(wǎng)絡(luò)中存在反饋連接,神經(jīng)元的輸出可以反饋到自身或其他神經(jīng)元,形成循環(huán)結(jié)構(gòu)。在反饋神經(jīng)網(wǎng)絡(luò)中,信息可以在網(wǎng)絡(luò)內(nèi)部進(jìn)行循環(huán)傳播,神經(jīng)元的輸出可以作為自身或其他神經(jīng)元的輸入,這種反饋機(jī)制使得網(wǎng)絡(luò)能夠處理具有時(shí)間序列或動(dòng)態(tài)特性的數(shù)據(jù)。反饋神經(jīng)網(wǎng)絡(luò)常用于時(shí)序數(shù)據(jù)建模、控制系統(tǒng)、動(dòng)態(tài)系統(tǒng)建模等領(lǐng)域。通過(guò)反饋連接,網(wǎng)絡(luò)可以記憶先前的狀態(tài),捕捉數(shù)據(jù)的時(shí)間依賴性,實(shí)現(xiàn)對(duì)動(dòng)態(tài)過(guò)程的建模和預(yù)測(cè)。以下是一些常見(jiàn)的反饋神經(jīng)網(wǎng)絡(luò):循環(huán)神經(jīng)網(wǎng)絡(luò)、遞歸神經(jīng)網(wǎng)絡(luò)、玻爾茲曼機(jī)和Hopfield神經(jīng)網(wǎng)絡(luò)。其中需要注意的是循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrentneuralnetwork)和遞歸神經(jīng)網(wǎng)絡(luò)(recursiveneuralnetwork)。1神經(jīng)網(wǎng)絡(luò)的基本概況反饋神經(jīng)網(wǎng)絡(luò)對(duì)于循環(huán)神經(jīng)網(wǎng)絡(luò),它處理序列數(shù)據(jù)時(shí)具有記憶功能:在每個(gè)時(shí)間步都接受輸入,并在每個(gè)時(shí)間步產(chǎn)生一個(gè)輸出,同時(shí)保持一個(gè)隱狀態(tài),可以傳遞信息給下一個(gè)時(shí)間步,它的連接都是基于時(shí)間順序的。對(duì)于遞歸神經(jīng)網(wǎng)絡(luò),它更適合處理涉及樹(shù)狀或嵌套數(shù)據(jù)等分層結(jié)構(gòu),它的連接時(shí)基于層次結(jié)構(gòu)的。對(duì)于循環(huán)神經(jīng)網(wǎng)絡(luò),其典型的代表有:Elman神經(jīng)網(wǎng)絡(luò)、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)和門控循環(huán)單元等。2前饋神經(jīng)網(wǎng)絡(luò)前饋神經(jīng)網(wǎng)絡(luò),作為深度學(xué)習(xí)的基石,將信息的流動(dòng)單向前傳,從輸入層一路到輸出層,不經(jīng)過(guò)任何回路。這種網(wǎng)絡(luò)架構(gòu)的設(shè)計(jì)模仿了人類大腦處理信息的方式,目的是在不同的層次上提取并學(xué)習(xí)數(shù)據(jù)的特征。在前饋神經(jīng)網(wǎng)絡(luò)的廣闊領(lǐng)域中,發(fā)展出了多種結(jié)構(gòu),以適應(yīng)不同的任務(wù)和挑戰(zhàn)。包括但不限于單層感知器、徑向基神經(jīng)網(wǎng)絡(luò)、BP神經(jīng)網(wǎng)絡(luò)、全連接神經(jīng)網(wǎng)絡(luò)以及卷積神經(jīng)網(wǎng)絡(luò),每種都有其獨(dú)特的構(gòu)造和優(yōu)勢(shì)。這些網(wǎng)絡(luò)結(jié)構(gòu)的多樣性使得前饋神經(jīng)網(wǎng)絡(luò)能夠在圖像識(shí)別、語(yǔ)音處理、自然語(yǔ)言理解等多個(gè)領(lǐng)域發(fā)揮關(guān)鍵作用。接下來(lái),從此開(kāi)始深入探索這些網(wǎng)絡(luò)結(jié)構(gòu),理解它們各自的特點(diǎn)和適用場(chǎng)景。2前饋神經(jīng)網(wǎng)絡(luò)單層感知器的基本介紹單層感知器是一種簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò),它由輸入層直接連接到一個(gè)輸出節(jié)點(diǎn)構(gòu)成,利用數(shù)學(xué)方法模擬人體神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。感知器是一個(gè)具有一層神經(jīng)元,采用閾值激活函數(shù)的前向網(wǎng)絡(luò),它可以接受多個(gè)輸入信號(hào),將它們加權(quán)求和并加上偏置值,然后通過(guò)一個(gè)激活函數(shù)將結(jié)果轉(zhuǎn)化為元素為0或1的目標(biāo)輸出,從而實(shí)現(xiàn)對(duì)輸入向量分類的目的。圖4-1是單層感知器神經(jīng)元模型圖。圖4-1單層感知器神經(jīng)元模型圖單層感知器的結(jié)構(gòu)原理單層感知器的結(jié)構(gòu)相對(duì)簡(jiǎn)單,它包含一層輸入節(jié)點(diǎn)和一個(gè)輸出節(jié)點(diǎn)。輸入節(jié)點(diǎn)的數(shù)量取決于數(shù)據(jù)特征的維度。每個(gè)輸入節(jié)點(diǎn)都與輸出節(jié)點(diǎn)通過(guò)權(quán)重相連,輸出節(jié)點(diǎn)還包括一個(gè)偏置項(xiàng)。這個(gè)結(jié)構(gòu)支持對(duì)輸入數(shù)據(jù)進(jìn)行線性加權(quán)和,進(jìn)而實(shí)現(xiàn)二分類。單層感知器工作原理的核心在于通過(guò)迭代學(xué)習(xí),不斷調(diào)整連接權(quán)重和偏置項(xiàng),以達(dá)到將輸入數(shù)據(jù)分類的目的。具體步驟包括:2前饋神經(jīng)網(wǎng)絡(luò)單層感知器的基本介紹初始化權(quán)重和偏置:在開(kāi)始訓(xùn)練之前,首先需要初始化權(quán)重和偏置。這些是模型學(xué)習(xí)過(guò)程中需要調(diào)整的參數(shù)。輸入處理:?jiǎn)螌痈兄鞯拿總€(gè)輸入節(jié)點(diǎn)接收一個(gè)輸入值,這些值通過(guò)與各自的權(quán)重相乘,然后全部相加,加上偏置項(xiàng),形成一個(gè)單一的數(shù)值輸出。激活函數(shù):這個(gè)累加的輸出通過(guò)一個(gè)激活函數(shù)來(lái)轉(zhuǎn)換。如果輸出大于某個(gè)閾值,感知器輸出1(表示一類),否則輸出0(表示另一類)。訓(xùn)練過(guò)程:2前饋神經(jīng)網(wǎng)絡(luò)單層感知器的基本介紹訓(xùn)練單層感知器涉及調(diào)整權(quán)重和偏置,以便更準(zhǔn)確地分類輸入數(shù)據(jù)。這通常通過(guò)一種稱為梯度下降的方法完成,可進(jìn)一步降低預(yù)測(cè)錯(cuò)誤?,F(xiàn)在通過(guò)一個(gè)計(jì)算原理圖來(lái)直觀地展示這一過(guò)程。原理圖將逐步闡釋如何將輸入特征轉(zhuǎn)化為最終的輸出,包括線性加權(quán)和以及激活函數(shù)的應(yīng)用。這有助于我們更好地理解單層感知器如何處理數(shù)據(jù)并做出分類決策。圖4-2是單層感知器的輸出計(jì)算原理圖。圖4-2單層感知器輸出計(jì)算原理圖[12]權(quán)重更新:每次訓(xùn)練迭代中,感知器都會(huì)根據(jù)其預(yù)測(cè)結(jié)果和實(shí)際結(jié)果之間的差異來(lái)更新權(quán)重。這個(gè)過(guò)程一直重復(fù),直到模型的性能達(dá)到滿意的水平,或者達(dá)到預(yù)定的迭代次數(shù)。對(duì)于權(quán)重的更新,通常使用這樣的更新規(guī)則:2前饋神經(jīng)網(wǎng)絡(luò)單層感知器的基本介紹結(jié)果實(shí)現(xiàn):圖4-3單層感知器對(duì)二維樣本的分類[13]單層感知器的案例分析已知一組花瓣的數(shù)據(jù),現(xiàn)在構(gòu)建一個(gè)單層感知器模型,用于區(qū)分兩種類型的花:Setosa(山鳶尾)和Versicolor(變色鳶尾)。假設(shè)它只需要通過(guò)花瓣的兩個(gè)特征進(jìn)行分類:花瓣長(zhǎng)度和花瓣寬度。編程代碼importnumpyasnpdefstep_function(x):returnnp.where(x>=0,1,0)2前饋神經(jīng)網(wǎng)絡(luò)單層感知器的基本介紹deftrain_perceptron(X,y,lr=0.1,epochs=10):1n_samples,n_features=X.shape2weights=np.zeros(n_features)3bias=04for_inrange(epochs):5foridx,x_iinenumerate(X):6linear_output=np.dot(x_i,weights)+bias7predicted=step_function(linear_output)82前饋神經(jīng)網(wǎng)絡(luò)單層感知器的基本介紹update=lr*(y[idx]-predicted)weights+=update*x_ibias+=updatereturnweights,bias#訓(xùn)練數(shù)據(jù)X=np.array([[1.4,0.2],[1.3,0.2],[4.7,1.4],[4.5,1.5]])2前饋神經(jīng)網(wǎng)絡(luò)單層感知器的基本介紹y=np.array([0,0,1,1])#訓(xùn)練模型weights,bias=train_perceptron(X,y)#測(cè)試模型fori,sampleinenumerate(X):prediction=step_function(np.dot(sample,weights)+bias)print(f"花瓣長(zhǎng)度:{sample[0]},花瓣寬度:{sample[1]},實(shí)際類別:{y[i]},預(yù)測(cè)類別:{prediction}")#新的數(shù)據(jù)預(yù)測(cè)2前饋神經(jīng)網(wǎng)絡(luò)單層感知器的基本介紹X_new=np.array([5.0,1.7])prediction=step_function(np.dot(X_new,weights)+bias)print(f"\n新的花瓣長(zhǎng)度:{X_new[0]},花瓣寬度:{X_new[1]},預(yù)測(cè)類別:{'Versicolor'ifprediction==1else'Setosa'}")在這個(gè)代碼中,首先定義了一個(gè)階躍函數(shù)作為激活函數(shù),激活函數(shù)用于將線性輸出轉(zhuǎn)換成二分類輸出。然后開(kāi)始訓(xùn)練單層感知器,先初始化權(quán)重和偏置為零,再進(jìn)行多輪迭代(epochs),在每輪中遍歷訓(xùn)練數(shù)據(jù)集,對(duì)于每個(gè)樣本,計(jì)算其與當(dāng)前權(quán)重的點(diǎn)積加上偏置,得到線性輸出,然后將線性輸出通過(guò)階躍函數(shù),得到預(yù)測(cè)類別,2前饋神經(jīng)網(wǎng)絡(luò)單層感知器的基本介紹最后根據(jù)預(yù)測(cè)結(jié)果和實(shí)際類別的差異,更新權(quán)重和偏置。得到訓(xùn)練好的模型后就對(duì)訓(xùn)練數(shù)據(jù)的每個(gè)樣本使用訓(xùn)練后的權(quán)重和偏置進(jìn)行了分類預(yù)測(cè),展示了模型訓(xùn)練的效果,最后再對(duì)一個(gè)新的樣本數(shù)據(jù),同樣計(jì)算其線性輸出,通過(guò)激活函數(shù),得到預(yù)測(cè)分類。這演示了如何使用訓(xùn)練好的單層感知器模型對(duì)新數(shù)據(jù)進(jìn)行分類。通過(guò)這個(gè)簡(jiǎn)單的實(shí)例分析和代碼示例,您可以了解如何使用單層感知器模型進(jìn)行二分類問(wèn)題的計(jì)算,并可以根據(jù)實(shí)際情況進(jìn)行調(diào)整和擴(kuò)展。2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹徑向基神經(jīng)網(wǎng)絡(luò)(RBFNN,RadialBasisFunctionNeuralNetwork)是一種具有較強(qiáng)映射功能的三層前向網(wǎng)絡(luò),具有三層結(jié)構(gòu):輸入層,隱藏層和輸出層。最主要的特征是以徑向基函數(shù)作為隱藏層激活函數(shù),數(shù)據(jù)從輸入層傳入隱藏層后,通過(guò)徑向基函數(shù)對(duì)其進(jìn)行非線性映射,然后經(jīng)過(guò)線性計(jì)算傳遞至輸出層進(jìn)行輸出。徑向基神經(jīng)網(wǎng)絡(luò)以其結(jié)構(gòu)簡(jiǎn)單并且非線性逼近能力強(qiáng)的優(yōu)點(diǎn),被廣泛應(yīng)用于模式分類、函數(shù)逼近和數(shù)據(jù)挖掘等眾多研究領(lǐng)域。圖4-4是徑向基神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖。圖4-4徑向基神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖[14]2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹徑向基神經(jīng)網(wǎng)絡(luò)的原理以及運(yùn)行流程徑向基函數(shù):徑向基神經(jīng)網(wǎng)絡(luò)(RBFNN)的隱藏層神經(jīng)元使用的激活函數(shù)是徑向基函數(shù)。徑向基函數(shù)是一種常用于機(jī)器學(xué)習(xí)和模式識(shí)別的函數(shù)類型,用于在高維空間中對(duì)數(shù)據(jù)進(jìn)行分類、回歸和聚類等任務(wù)。其主要特點(diǎn)是能夠處理非線性模式,具有較好的適應(yīng)性和泛化性能。徑向基函數(shù)具有獨(dú)特的特性:它的響應(yīng)程度依賴于輸入與中心之間的距離。最常見(jiàn)的徑向基函數(shù)是高斯函數(shù),它的形式是:徑向基函數(shù)有如下特點(diǎn):局部性:RBF函數(shù)在中心點(diǎn)附近有較大的響應(yīng)值,而在距離中心點(diǎn)較遠(yuǎn)處的響應(yīng)值較小,因此具有局部性質(zhì);2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹非線性:由于采用了非線性的高斯函數(shù)形式,因此能夠處理非線性模式,從而更加適用于實(shí)際問(wèn)題;適應(yīng)性:RBF函數(shù)的參數(shù)可以通過(guò)訓(xùn)練過(guò)程中自適應(yīng)地學(xué)習(xí)得到,因此能夠適應(yīng)不同的數(shù)據(jù)分布和模式;泛化性:RBF函數(shù)可以有效地處理高維空間中的數(shù)據(jù),具有較好的泛化性能。激活函數(shù)的值隨著輸入向量離中心點(diǎn)越近而增大,而離中心點(diǎn)越遠(yuǎn)則減小,呈現(xiàn)出徑向?qū)ΨQ的特性,因此被稱為“徑向基”函數(shù)。在徑向基神經(jīng)網(wǎng)絡(luò)中,每個(gè)隱藏層神經(jīng)元基于其激活函數(shù)對(duì)輸入數(shù)據(jù)進(jìn)行響應(yīng),輸出層則將這些響應(yīng)加權(quán)求和,得到網(wǎng)絡(luò)的最終輸出。由此可以得到一個(gè)徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)的運(yùn)行流程。徑向基神經(jīng)網(wǎng)絡(luò)運(yùn)行流程:2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹徑向基神經(jīng)網(wǎng)絡(luò)用一個(gè)簡(jiǎn)單的例子來(lái)表示,就是用多個(gè)徑向基函數(shù)來(lái)湊出目標(biāo)曲線,如下圖4-5中,徑向基神經(jīng)網(wǎng)絡(luò)以6個(gè)原始數(shù)據(jù)點(diǎn)為中心,生成了6條徑向基曲線,而這六條徑向基曲線疊加后就是一條能夠光滑擬合原始數(shù)據(jù)點(diǎn)的曲線。初始化參數(shù):徑向基神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)模型:所以這個(gè)徑向基神經(jīng)網(wǎng)絡(luò)模型中需要初始化的參數(shù)分別是:圖4-5徑向基曲線擬合示意圖向前傳播:學(xué)習(xí)訓(xùn)練:2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹根據(jù)實(shí)際輸出與預(yù)期輸出之間的計(jì)算誤差,通過(guò)學(xué)習(xí)訓(xùn)練來(lái)對(duì)徑向基神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)模型中的參數(shù)進(jìn)行優(yōu)化,需要在迭代中重復(fù)進(jìn)行向前傳播和參數(shù)更新的步驟,直至達(dá)到終止條件,如誤差閾值或最大迭代次數(shù)。在所有數(shù)據(jù)點(diǎn)被分配到中心后,每個(gè)中心c更新為屬于該中心的所有數(shù)據(jù)點(diǎn)的均值,計(jì)算公式如下:接下來(lái)重復(fù)以上兩個(gè)步驟,直到中心點(diǎn)不再有顯著變化或達(dá)到最大迭代次數(shù)為止。最后再確定寬度系數(shù)β,這通常與中心點(diǎn)之間的距離有關(guān),可以使用如下公式計(jì)算:結(jié)果實(shí)現(xiàn):徑向基神經(jīng)網(wǎng)絡(luò)的案例分析2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹現(xiàn)將一個(gè)從-3到3之間均勻分布的100個(gè)點(diǎn)的數(shù)組作為X輸入,而需要擬合的目標(biāo)曲線是由X的二次函數(shù)Y=X2產(chǎn)生,并添加了一些隨機(jī)噪聲,這些噪聲模擬了實(shí)際數(shù)據(jù)的不確定性。接下來(lái)通過(guò)徑向基神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)多個(gè)徑向基函數(shù)疊加擬合目標(biāo)曲線的目的。編程代碼importnumpyasnpfromsklearn.clusterimportKMeansfromscipy.spatial.distanceimportcdistimportmatplotlib.pyplotasplt#假定的數(shù)據(jù)準(zhǔn)備np.random.seed(42)#確??芍貜?fù)性2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹X=np.linspace(-3,3,100).reshape(-1,1)Y=X**2+np.random.randn(*X.shape)*0.3#二次函數(shù)加上噪聲#使用數(shù)據(jù)點(diǎn)的平方根作為聚類數(shù)量的起點(diǎn)n_clusters=int(np.sqrt(X.shape[0]))#K-means聚類初始化中心kmeans=KMeans(n_clusters=n_clusters,random_state=0).fit(X)centers=kmeans.cluster_centers_2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹#計(jì)算所有中心之間的平均距離,并據(jù)此確定寬度系數(shù)distances=cdist(centers,centers)avg_distance=np.mean(distances[np.triu_indices_from(distances,k=1)])beta=1/(2*avg_distance**2)#高斯徑向基函數(shù)defgaussian_rbf(x,centers,beta):returnnp.exp(-beta*cdist(x,centers)**2)#初始化權(quán)重和偏置2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹weights=np.random.randn(n_clusters)1bias=np.random.randn(1)2#梯度下降參數(shù)3learning_rate=0.014epochs=100005#訓(xùn)練RBF網(wǎng)絡(luò)6forepochinrange(epochs):7foriinrange(X.shape[0]):8#前向傳播92前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹phi=gaussian_rbf(np.array([X[i]]),centers,beta)y_pred=np.dot(weights,phi.T)+bias#計(jì)算誤差error=Y[i]-y_pred#梯度下降更新權(quán)重和偏置weights+=learning_rate*error*phibias+=learning_rate*error#測(cè)試網(wǎng)絡(luò)2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹X_test=np.linspace(min(X)-1,max(X)+1,300).reshape(-1,1)phi_test=gaussian_rbf(X_test,centers,beta)Y_test=phi_test.dot(weights)+bias#可視化結(jié)果plt.scatter(X,Y,color='blue',label='DataPoints')plt.plot(X_test,Y_test,color='green',lw=2,label='RBFNNFit')2前饋神經(jīng)網(wǎng)絡(luò)徑向基神經(jīng)網(wǎng)絡(luò)的基本介紹plt.legend()plt.xlabel('X')plt.ylabel('Y')plt.title('RBFNNRegressionExample')plt.show()這段代碼的最終目的是通過(guò)RBFNN的訓(xùn)練過(guò)程學(xué)習(xí)一個(gè)從輸入X到輸出Y的映射,使得神經(jīng)網(wǎng)絡(luò)的輸出能夠形成一個(gè)光滑并且盡量貼近所有訓(xùn)練數(shù)據(jù)點(diǎn)的曲線。2前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)BP神經(jīng)網(wǎng)絡(luò)的基本介紹BP神經(jīng)網(wǎng)絡(luò),全稱為反向傳播神經(jīng)網(wǎng)絡(luò)(BackPropagationNeuralNetwork),是一種按照誤差反向傳播算法訓(xùn)練的多層前饋神經(jīng)網(wǎng)絡(luò)。BP神經(jīng)網(wǎng)絡(luò)的核心思想是通過(guò)前向傳播將輸入信息處理并傳遞至輸出層,然后計(jì)算輸出層的誤差,接著將這個(gè)誤差通過(guò)網(wǎng)絡(luò)反向傳播,以此為依據(jù)調(diào)整網(wǎng)絡(luò)中的權(quán)重和偏置,使得網(wǎng)絡(luò)輸出的誤差最小化。它是深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)研究領(lǐng)域中的基石之一,其通過(guò)學(xué)習(xí)輸入與輸出之間的復(fù)雜映射關(guān)系,能夠進(jìn)行有效的模式識(shí)別和預(yù)測(cè)任務(wù)。BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)也分為三個(gè)部分:輸入層、隱藏層、和輸出層。而B(niǎo)P神經(jīng)網(wǎng)絡(luò)與前兩個(gè)神經(jīng)網(wǎng)絡(luò)不同的是,它可以有多個(gè)隱藏層結(jié)構(gòu),BP神經(jīng)網(wǎng)絡(luò)所提出的多層結(jié)構(gòu)為之后的深度學(xué)習(xí)打好了基礎(chǔ)。圖4-6是BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖。2前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)圖4-6BP神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖BP神經(jīng)網(wǎng)絡(luò)的運(yùn)行流程BP神經(jīng)網(wǎng)絡(luò)的過(guò)程主要分為兩個(gè)階段,第一階段是信號(hào)的正向傳播,從輸入層經(jīng)過(guò)隱含層,最后到達(dá)輸出層;第二階段是誤差的反向傳播,從輸出層到隱含層,最后到輸入層,依次調(diào)節(jié)隱含層到輸出層的權(quán)重和偏置,輸入層到隱含層的權(quán)重和偏置。這種參數(shù)的優(yōu)化方法,使得BP神經(jīng)網(wǎng)絡(luò)能夠在眾多領(lǐng)域中得到應(yīng)用,如圖像識(shí)別、語(yǔ)音處理、自然語(yǔ)言處理等。而B(niǎo)P神經(jīng)網(wǎng)絡(luò)模型中需要優(yōu)化的參數(shù)都在數(shù)學(xué)表達(dá)式中,如下是BP神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)表達(dá)式得矩陣形式:上面BP神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)表達(dá)式中隱藏層采用tansig函數(shù),其函數(shù)表達(dá)式為:而輸出層通常采用Sigmoid函數(shù),其函數(shù)表達(dá)式為:2前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)通過(guò)BP神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)表達(dá)式我們可以得到一個(gè)簡(jiǎn)單的算法流程圖,如下:圖4-7BP神經(jīng)網(wǎng)絡(luò)算法流程圖接下來(lái)根據(jù)這個(gè)流程圖開(kāi)始梳理一遍BP神經(jīng)網(wǎng)絡(luò)的運(yùn)行流程。初始化參數(shù):前向傳播:數(shù)據(jù)從輸入層開(kāi)始,經(jīng)過(guò)隱藏層處理后傳遞到輸出層。每個(gè)神經(jīng)元接收到輸入信號(hào)后,會(huì)計(jì)算加權(quán)和(包括偏置項(xiàng)),然后通過(guò)激活函數(shù)生成輸出。激活函數(shù)的選擇與該BP神經(jīng)網(wǎng)絡(luò)的目標(biāo)功能有直接關(guān)系,比如Sigmoid(用于二分類問(wèn)題)、Softmax(用于多分類問(wèn)題)等。計(jì)算誤差:2前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)計(jì)算預(yù)測(cè)輸出和實(shí)際目標(biāo)值之間的誤差,需要定義一個(gè)損失函數(shù)來(lái)衡量預(yù)測(cè)輸出與實(shí)際值之間的誤差,誤差E的計(jì)算依賴于損失函數(shù)的選擇,常見(jiàn)的有均方誤差損失函數(shù),其函數(shù)表達(dá)式如下:反向傳播更新參數(shù):利用梯度下降法計(jì)算每層的誤差梯度,并根據(jù)梯度和學(xué)習(xí)率來(lái)更新權(quán)重和偏置。隱藏層到輸出層的權(quán)重和偏置更新:輸入層到隱藏層的權(quán)重和偏置更新:通過(guò)這個(gè)流程,BP神經(jīng)網(wǎng)絡(luò)通過(guò)反復(fù)迭代前向傳播和反向傳播過(guò)程,逐步調(diào)整權(quán)重和偏置,以最小化輸出誤差,從而使網(wǎng)絡(luò)模型能夠?qū)W習(xí)到從輸入到輸出之間的映射關(guān)系。BP神經(jīng)網(wǎng)絡(luò)的案例分析2前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)現(xiàn)通過(guò)一個(gè)簡(jiǎn)單的案例分析來(lái)了解BP神經(jīng)網(wǎng)絡(luò)的具體運(yùn)行,已知一組數(shù)據(jù)集,代表單個(gè)樣本的三個(gè)特征,通過(guò)構(gòu)建一個(gè)簡(jiǎn)單的三層BP神經(jīng)網(wǎng)絡(luò)模型來(lái)解決一個(gè)二分類問(wèn)題,實(shí)現(xiàn)對(duì)該單個(gè)樣本的目標(biāo)分類。編程代碼importnumpyasnpdefsigmoid(x):return1/(1+np.exp(-x))defsigmoid_derivative(x):returnx*(1-x)defmse_loss(y_true,y_pred):2前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)returnnp.mean((y_true-y_pred)**2)1returny_pred-y_true2np.random.seed(42)3X=np.array([[1,0,1]])4Y=np.array([[1]])5W1=np.random.rand(3,4)6W2=np.random.rand(4,2)7W3=np.random.rand(2,1)8b1=np.random.rand(1,4)9defmse_loss_derivative(y_true,y_pred):102前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)01b2=np.random.rand(1,2)02learning_rate=0.103epochs=1000004forepochinrange(epochs):05#Forwardpropagation06Z1=np.dot(X,W1)+b107A1=sigmoid(Z1)08Z2=np.dot(A1,W2)+b209A2=sigmoid(Z2)10b3=np.random.rand(1,1)2前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)Z3=np.dot(A2,W3)+b3A3=sigmoid(Z3)#Losscomputationloss=mse_loss(Y,A3)ifepoch%1000==0:print(f"Epoch{epoch},Loss:{loss}")#Backwardpropagationdelta3=mse_loss_derivative(Y,A3)*sigmoid_derivative(A3)dW3=np.dot(A2.T,delta3)2前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)db3=np.sum(delta3,axis=0,keepdims=True)dW1=np.dot(X.T,delta1)delta1=np.dot(delta2,W2.T)*sigmoid_derivative(A1)dW2=np.dot(A1.T,delta2)delta2=np.dot(delta3,W3.T)*sigmoid_derivative(A2)db2=np.sum(delta2,axis=0,keepdims=True)2前饋神經(jīng)網(wǎng)絡(luò)2.3BP神經(jīng)網(wǎng)絡(luò)db1=np.sum(delta1,axis=0,keepdims=True)1#Updateweightsandbiases2W1-=learning_rate*dW13W2-=learning_rate*dW24W3-=learning_rate*dW35b1-=learning_rate*db16b2-=learning_rate*db27b3-=learning_rate*db38print(f"FinalLoss:{loss}")92前饋神經(jīng)網(wǎng)絡(luò)#PredictionZ1_pred=np.dot(X,W1)+b1A1_pred=sigmoid(Z1_pred)Z2_pred=np.dot(A1_pred,W2)+b2A2_pred=sigmoid(Z2_pred)Z3_pred=np.dot(A2_pred,W3)+b3A3_pred=sigmoid(Z3_pred)print(f"PredictedOutput:{A3_pred}")該代碼中的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)包括一個(gè)輸入層、兩個(gè)隱藏層和一個(gè)輸出層。使用的是Sigmoid激活函數(shù)和均方誤差(MSE)作為損失函數(shù)。通過(guò)多次迭代(或稱為“epochs”),使用前向傳播計(jì)算預(yù)測(cè)值,2前饋神經(jīng)網(wǎng)絡(luò)#Prediction然后通過(guò)反向傳播根據(jù)預(yù)測(cè)誤差調(diào)整網(wǎng)絡(luò)參數(shù)(即權(quán)重和偏置)。這個(gè)過(guò)程中,損失函數(shù)(本例中為MSE)的值逐漸減小,表示模型的預(yù)測(cè)能力在提高。訓(xùn)練完成后,利用訓(xùn)練好的模型對(duì)相同的輸入X或新的輸入進(jìn)行預(yù)測(cè),以驗(yàn)證模型學(xué)習(xí)到的映射關(guān)系的準(zhǔn)確性。這個(gè)案例是BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的一個(gè)基礎(chǔ)示例,展示了如何使用numpy實(shí)現(xiàn)一個(gè)簡(jiǎn)單的BP神經(jīng)網(wǎng)絡(luò),包括網(wǎng)絡(luò)的初始化、訓(xùn)練過(guò)程以及使用訓(xùn)練好的模型進(jìn)行預(yù)測(cè)。2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹全連接神經(jīng)網(wǎng)絡(luò)(FullyConnectedNeuralNetwork,F(xiàn)CNN),也常被稱為多層感知器(MultilayerPerceptron,MLP),是一種簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)。它由多個(gè)層次構(gòu)成,每一層都是一組神經(jīng)元,其中每個(gè)神經(jīng)元都與前一層的所有神經(jīng)元相連接。每個(gè)連接都有一個(gè)權(quán)重,這些權(quán)重在訓(xùn)練過(guò)程中進(jìn)行調(diào)整,以便網(wǎng)絡(luò)能夠?qū)W習(xí)復(fù)雜的模式和關(guān)系。它的特點(diǎn)就是結(jié)構(gòu)簡(jiǎn)單,易于理解和實(shí)現(xiàn);能夠逼近任何連續(xù)函數(shù),具有強(qiáng)大的表達(dá)能力。全連接神經(jīng)網(wǎng)絡(luò)在許多領(lǐng)域都有應(yīng)用,包括簡(jiǎn)單的分類和回歸問(wèn)題、語(yǔ)音識(shí)別、圖像識(shí)別的初級(jí)階段等。接下來(lái)通過(guò)一個(gè)直觀的全連接神經(jīng)網(wǎng)絡(luò)示意圖來(lái)了解其結(jié)構(gòu),如圖4-8所示:圖4-8全連接神經(jīng)網(wǎng)絡(luò)示意圖全連接神經(jīng)網(wǎng)絡(luò)的運(yùn)行流程2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹全連接神經(jīng)網(wǎng)絡(luò)訓(xùn)練分為前向傳播、后向傳播兩個(gè)過(guò)程,前向傳播數(shù)據(jù)沿輸入到輸出后計(jì)算損失函數(shù)值,后向傳播則是一個(gè)優(yōu)化過(guò)程,利用梯度下降法減小前向傳播產(chǎn)生的損失函數(shù)值,從而優(yōu)化、更新參數(shù)?,F(xiàn)通過(guò)一個(gè)回歸問(wèn)題的例子來(lái)理解全連接神經(jīng)網(wǎng)絡(luò)的運(yùn)用,這個(gè)回歸問(wèn)題的目的是通過(guò)給定的一組點(diǎn)來(lái)預(yù)測(cè)一個(gè)連續(xù)的函數(shù)。準(zhǔn)備數(shù)據(jù):已知一組數(shù)據(jù)點(diǎn),這些點(diǎn)在某種規(guī)律下生成,全連接神經(jīng)網(wǎng)絡(luò)模型的目標(biāo)是找到這種規(guī)律。將數(shù)據(jù)分為訓(xùn)練集和測(cè)試集。還需要對(duì)數(shù)據(jù)進(jìn)行歸一化或標(biāo)準(zhǔn)化,以提高模型訓(xùn)練的效率和穩(wěn)定性。設(shè)計(jì)模型:2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹定義模型結(jié)構(gòu):輸入層的神經(jīng)元數(shù)量應(yīng)與問(wèn)題的特征數(shù)量相匹配,對(duì)于擬合一條曲線的任務(wù),通常我們只有一個(gè)特征值,所以輸入層會(huì)有一個(gè)神經(jīng)元。隱藏層的數(shù)量和每層的神經(jīng)元數(shù)量對(duì)模型的復(fù)雜度有直接影響。更多的層或更多的神經(jīng)元可以增加模型的擬合能力,但也會(huì)增加過(guò)擬合的風(fēng)險(xiǎn)。一個(gè)好的起點(diǎn)可能是使用兩到三個(gè)隱藏層,每層有10到100個(gè)神經(jīng)元,具體取決于數(shù)據(jù)的復(fù)雜度。輸出層的神經(jīng)元數(shù)量應(yīng)與目標(biāo)變量的維度相匹配。對(duì)于擬合曲線的任務(wù),我們?cè)噲D預(yù)測(cè)Y值,因此輸出層將只有一個(gè)神經(jīng)元。選擇激活函數(shù):ReLU(RectifiedLinearUnit)函數(shù)因其簡(jiǎn)單高效而廣泛用于隱藏層。它有助于解決梯度消失問(wèn)題,加快訓(xùn)練速度。其數(shù)學(xué)表達(dá)式如下:2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹對(duì)于回歸問(wèn)題,通常輸出層不使用激活函數(shù),或者使用線性激活函數(shù),這意味著網(wǎng)絡(luò)的輸出可以是任何實(shí)數(shù)值,適合預(yù)測(cè)連續(xù)值。確定損失函數(shù)和優(yōu)化器:均方誤差(MSE)是回歸問(wèn)題的常用損失函數(shù),它計(jì)算了預(yù)測(cè)值和真實(shí)值之間差異的平方的平均值,非常適合評(píng)估擬合曲線的準(zhǔn)確性。梯度下降(SGD)、Adam或RMSprop等優(yōu)化算法被用來(lái)最小化損失函數(shù)。設(shè)定訓(xùn)練參數(shù):批大小的設(shè)定決定了每次迭代更新模型參數(shù)時(shí)使用的樣本數(shù)量;迭代次數(shù)(Epochs)的設(shè)定決定了訓(xùn)練數(shù)據(jù)將被遍歷多少次;學(xué)習(xí)率的設(shè)定決定了每次更新權(quán)重時(shí)應(yīng)用的步長(zhǎng)大小。2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹訓(xùn)練模型:得到輸出層的輸出后,使用均方誤差(MSE)損失函數(shù)計(jì)算預(yù)測(cè)輸出和實(shí)際值之間的誤差。然后再使用梯度下降的優(yōu)化算法反向傳播,根據(jù)計(jì)算出的梯度更新每一層的權(quán)重和偏置。重復(fù)這一步直到模型的性能達(dá)到滿意的程度或其他停止條件被觸發(fā)。評(píng)估模型:在訓(xùn)練完成后,使用之前分離的測(cè)試集評(píng)估模型性能。這可以通過(guò)計(jì)算測(cè)試集上的MSE來(lái)完成,并且還要檢查模型在訓(xùn)練集和測(cè)試集上的性能,確保模型沒(méi)有過(guò)擬合。使用模型:模型完成被訓(xùn)練并評(píng)估后,就可以用來(lái)預(yù)測(cè)新數(shù)據(jù)點(diǎn)的Y值。如果預(yù)測(cè)性能不符合預(yù)期,可能需要返回去調(diào)整模型結(jié)構(gòu)或訓(xùn)練參數(shù)等。2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹全連接神經(jīng)網(wǎng)絡(luò)的案例分析現(xiàn)將一個(gè)從-10到10之間均勻分布的1000個(gè)點(diǎn)的數(shù)組作為X輸入,而需要擬合的目標(biāo)數(shù)據(jù)集是由X的正弦函數(shù)(np.sin(x))產(chǎn)生,并添加了一些隨機(jī)噪聲,這些噪聲模擬了實(shí)際數(shù)據(jù)的不確定性??梢酝ㄟ^(guò)構(gòu)建一個(gè)全連接神經(jīng)網(wǎng)絡(luò)模型,盡可能準(zhǔn)確地預(yù)測(cè)這些Y值,即學(xué)習(xí)X到Y(jié)(正弦函數(shù))的映射關(guān)系。編程代碼importnumpyasnpimportmatplotlib.pyplotaspltimporttensorflowastf#生成數(shù)據(jù)2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹x_train=np.linspace(-10,10,1000)y_train=np.sin(x_train)+np.random.normal(0,0.1,x_train.shape)#添加噪聲x_test=np.linspace(-10,10,300)y_test=np.sin(x_test)#可視化部分?jǐn)?shù)據(jù)plt.scatter(x_train[::50],y_train[::50],label='Trainingdata')plt.plot(x_test,y_test,label='Truefunction',color='r')2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹plt.legend()plt.show()#構(gòu)建模型model=tf.keras.Sequential([tf.keras.layers.Dense(64,activation='relu',input_shape=(1,)),tf.keras.layers.Dense(64,activation='relu'),tf.keras.layers.Dense(1)])2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹#編譯模型pile(optimizer='adam',loss='mean_squared_error')#訓(xùn)練模型history=model.fit(x_train,y_train,epochs=100,batch_size=16,validation_data=(x_test,y_test),verbose=0)#可視化訓(xùn)練過(guò)程plt.plot(history.history['loss'],label='Trainingloss')2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹plt.plot(history.history['val_loss'],label='Validationloss')plt.legend()plt.show()#預(yù)測(cè)測(cè)試集y_pred=model.predict(x_test)#可視化預(yù)測(cè)結(jié)果plt.scatter(x_test,y_test,label='Truefunction')2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹plt.scatter(x_test,y_pred,label='Modelpredictions',color='r')plt.legend()plt.show()在這個(gè)代碼中,首先定義了一個(gè)序列模型(tf.keras.Sequential),包括一個(gè)輸入層、兩個(gè)隱藏層和一個(gè)輸出層。隱藏層使用ReLU激活函數(shù),輸出層不使用激活函數(shù)(默認(rèn)線性激活),并且編譯模型時(shí)指定優(yōu)化器(Adam)和損失函數(shù)(均方誤差),這兩者用于訓(xùn)練過(guò)程中的參數(shù)更新和性能評(píng)估。然后再使用訓(xùn)練數(shù)據(jù)(x_train,y_train)訓(xùn)練模型,同時(shí)指定訓(xùn)練輪次(epochs)和批大小(batchsize)。最后使用測(cè)試數(shù)據(jù)(x_test)進(jìn)行預(yù)測(cè),并將預(yù)測(cè)結(jié)果與真實(shí)值(y_test)進(jìn)行對(duì)比,以評(píng)估模型的預(yù)測(cè)性能。2前饋神經(jīng)網(wǎng)絡(luò)全連接神經(jīng)網(wǎng)絡(luò)的基本介紹通過(guò)這個(gè)案例,我們演示了如何使用全連接神經(jīng)網(wǎng)絡(luò)來(lái)擬合一個(gè)給定的函數(shù)。這個(gè)過(guò)程展示了從數(shù)據(jù)準(zhǔn)備、模型構(gòu)建和編譯、訓(xùn)練和評(píng)估,到最后的結(jié)果可視化的完整流程。卷積神經(jīng)網(wǎng)絡(luò)的基本介紹卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetworks,CNNs)是一種深度學(xué)習(xí)架構(gòu),它在圖像處理、視頻分析和自然語(yǔ)言處理等領(lǐng)域表現(xiàn)出色。CNN通過(guò)模擬人類視覺(jué)系統(tǒng)的工作原理,尤其是我們識(shí)別物體時(shí)局部感知和整體理解相結(jié)合的機(jī)制。它通過(guò)模擬這種機(jī)制,能夠從圖像中自動(dòng)提取出有用的特征,用于進(jìn)一步的分析和識(shí)別任務(wù)。卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)在于其所采用的局部連接和權(quán)值共享的方式,一方面減少了權(quán)值的數(shù)量使得網(wǎng)絡(luò)易于優(yōu)化,另一方面降低了模型的復(fù)雜度,也就是減小了過(guò)擬合的風(fēng)險(xiǎn)。該優(yōu)勢(shì)在在網(wǎng)絡(luò)的輸入是圖像時(shí)表現(xiàn)的更為明顯,使得圖像可以直接作為網(wǎng)絡(luò)的輸入,避免了傳統(tǒng)識(shí)別算法中復(fù)雜的特征提取和數(shù)據(jù)重建的過(guò)程。卷積神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)卷積神經(jīng)網(wǎng)絡(luò)的基本介紹接下來(lái)通過(guò)圖4-9直觀了解卷積神經(jīng)網(wǎng)絡(luò)的模型結(jié)構(gòu)圖4-9卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)[15]在認(rèn)識(shí)到各個(gè)功能層在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)模型的位置后,現(xiàn)開(kāi)始對(duì)每個(gè)功能層的作用進(jìn)行分析。輸入層:輸入層比較簡(jiǎn)單,這一層的主要工作就是輸入圖像等信息,因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)主要處理的是圖像相關(guān)的內(nèi)容,輸入層的作用就是將圖像轉(zhuǎn)換為其對(duì)應(yīng)的由像素值構(gòu)成的二維矩陣,并將此二維矩陣存儲(chǔ)。卷積層:卷積神經(jīng)網(wǎng)絡(luò)的基本介紹卷積層(ConvolutionalLayer)是卷積神經(jīng)網(wǎng)絡(luò)中的核心,它負(fù)責(zé)提取輸入數(shù)據(jù)(如圖像)中的特征。以下是卷積層處理的詳細(xì)步驟:濾波器(卷積核)初始化:卷積層由多個(gè)濾波器組成,每個(gè)濾波器是一個(gè)小的感知窗口,其尺寸較?。ɡ?x3或5x5),并且有一定深度,與輸入數(shù)據(jù)的深度相匹配。濾波器的權(quán)重最初通常是隨機(jī)初始化的?;瑒?dòng)窗口:卷積操作本質(zhì)上是一個(gè)濾波器在輸入數(shù)據(jù)上滑動(dòng)的過(guò)程。對(duì)于圖像來(lái)說(shuō),濾波器從圖像的左上角開(kāi)始,按照設(shè)定的步長(zhǎng)(Stride)在圖像的寬度和高度上滑動(dòng)。步長(zhǎng)決定了濾波器移動(dòng)的距離。點(diǎn)積運(yùn)算:當(dāng)濾波器覆蓋輸入數(shù)據(jù)的一小塊區(qū)域時(shí),它會(huì)與該區(qū)域進(jìn)行逐元素相乘的操作,即點(diǎn)積(DotProduct)。然后,將這些乘積求和得到一個(gè)單一的數(shù)值,這個(gè)數(shù)值構(gòu)成了輸出特征圖(FeatureMap)的一個(gè)元素。卷積神經(jīng)網(wǎng)絡(luò)的基本介紹添加偏置:通常在求和之后,還會(huì)添加一個(gè)偏置項(xiàng)(Bias),這個(gè)偏置也是學(xué)習(xí)參數(shù)的一部分。應(yīng)用激活函數(shù):計(jì)算得到的數(shù)值會(huì)通過(guò)一個(gè)非線性激活函數(shù),如ReLU(RectifiedLinearUnit),這樣做可以增加網(wǎng)絡(luò)的非線性,使網(wǎng)絡(luò)能夠?qū)W習(xí)和表征更加復(fù)雜的模式。生成特征圖:重復(fù)上述過(guò)程,濾波器繼續(xù)在整個(gè)輸入數(shù)據(jù)上滑動(dòng),為每個(gè)位置生成輸出,最終形成一個(gè)完整的二維特征圖。如果有多個(gè)濾波器,每個(gè)濾波器都會(huì)生成一個(gè)特征圖,所有這些特征圖堆疊在一起構(gòu)成了卷積層的最終輸出。權(quán)重共享:在卷積層中,一個(gè)濾波器的權(quán)重在整個(gè)輸入數(shù)據(jù)上是共享的。這意味著,無(wú)論濾波器在輸入數(shù)據(jù)的哪個(gè)位置,都使用相同的權(quán)重和偏置。這種權(quán)重共享機(jī)制使得卷積網(wǎng)絡(luò)參數(shù)的數(shù)量大大減少,并提高了特征的平移不變性。卷積神經(jīng)網(wǎng)絡(luò)的基本介紹邊緣填充:為了控制特征圖的空間尺寸,有時(shí)需要在輸入數(shù)據(jù)的邊界添加額外的像素。這被稱為邊緣填充,它允許濾波器在輸入數(shù)據(jù)的邊緣進(jìn)行卷積操作,可以用來(lái)保持特征圖的尺寸或者只是輕微地減小尺寸。圖4-10卷積操作示意圖池化層:池化層(PoolingLayer),也常稱為下采樣(Subsampling),其主要目的是進(jìn)行卷積操作后,再將得到的特征圖進(jìn)行特征提取,將其中最具有代表性的特征提取出來(lái),可以起到減小過(guò)擬合和降低維度的作用想要提取到最具代表性的特征,通常有以下三種方法:卷積神經(jīng)網(wǎng)絡(luò)的基本介紹最大池化(MaxPooling):在每個(gè)特征圖的局部區(qū)域中取最大值作為該區(qū)域的代表,強(qiáng)化了特征的響應(yīng),并且對(duì)于特征的小變化具有較好的不變性。平均池化(AveragePooling):計(jì)算每個(gè)特征圖的局部區(qū)域中所有值的平均值,可以平滑特征表示,但可能會(huì)模糊掉一些重要的特征邊緣或紋理信息。全局池化(GlobalPooling):對(duì)整個(gè)特征圖進(jìn)行池化,輸出單一數(shù)值。常見(jiàn)于網(wǎng)絡(luò)的最后,用以減少整個(gè)特征圖到一個(gè)單一數(shù)值,從而直接與分類層連接。全連接層:在一系列卷積層和池化層之后,CNN會(huì)包括一個(gè)或多個(gè)全連接層。這些層的目的是將之前提取的特征圖展平并轉(zhuǎn)換為一維向量,然后用于分類或其他任務(wù)。卷積神經(jīng)網(wǎng)絡(luò)的基本介紹全連接層由多個(gè)神經(jīng)元組成,每個(gè)神經(jīng)元都與前一層的所有輸出連接。每個(gè)連接都有一個(gè)權(quán)重,每個(gè)神經(jīng)元還有一個(gè)偏置項(xiàng)。這些權(quán)重和偏置是全連接層在訓(xùn)練過(guò)程中學(xué)習(xí)的參數(shù)。每個(gè)神經(jīng)元的輸出通過(guò)一個(gè)激活函數(shù),如ReLU、Sigmoid或Softmax,以引入非線性,使得網(wǎng)絡(luò)能夠?qū)W習(xí)和模擬復(fù)雜的函數(shù)。而全連接層中所運(yùn)用到的參數(shù)的優(yōu)化與全連接神經(jīng)網(wǎng)絡(luò)中所使用的優(yōu)化方法基本一致。使用實(shí)際值和預(yù)測(cè)輸出計(jì)算損失函數(shù)(如均方誤差損失),然后通過(guò)反向傳播算法調(diào)整網(wǎng)絡(luò)參數(shù)(卷積核權(quán)重、偏置等),以最小化損失函數(shù)。這個(gè)過(guò)程在訓(xùn)練集上重復(fù)進(jìn)行,直到模型性能達(dá)到滿意的水平。輸出層:卷積神經(jīng)網(wǎng)絡(luò)的基本介紹輸出層是神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的最后一層,直接決定了網(wǎng)絡(luò)的輸出格式和用途,根據(jù)不同的應(yīng)用場(chǎng)景,輸出層的設(shè)計(jì)和激活函數(shù)的選擇也會(huì)有所不同。對(duì)于多累分類問(wèn)題,輸出層通常使用Softmax激活函數(shù),它能將多個(gè)神經(jīng)元的輸出轉(zhuǎn)換為概率分布。其表達(dá)式如下:對(duì)于二分類問(wèn)題,輸出層通常使用Sigmoid激活函數(shù),將輸出值壓縮到0到1之間,表示輸入屬于某個(gè)類別的概率。其表達(dá)式如下:卷積神經(jīng)網(wǎng)絡(luò)的案例分析現(xiàn)通過(guò)一個(gè)經(jīng)典的圖像識(shí)別案例來(lái)分析如何使用卷積神經(jīng)網(wǎng)絡(luò)(CNN):識(shí)別手寫數(shù)字,使用的是著名的MNIST數(shù)據(jù)集。MNIST數(shù)據(jù)集包含了70,000張大小為28x28像素的手寫數(shù)字圖像,分為60,000張訓(xùn)練圖像和10,000張測(cè)試圖像。將28x28像素的手寫數(shù)字圖像作為輸入,需要設(shè)計(jì)一個(gè)簡(jiǎn)單而典型的CNN架構(gòu),來(lái)實(shí)現(xiàn)識(shí)別手寫數(shù)字的目標(biāo)。卷積神經(jīng)網(wǎng)絡(luò)的基本介紹編程代碼importtensorflowastffromtensorflow.kerasimportdatasets,layers,modelsimportmatplotlib.pyplotasplt#加載MNIST數(shù)據(jù)集(train_images,train_labels),(test_images,test_labels)=datasets.mnist.load_data()#標(biāo)準(zhǔn)化圖像數(shù)據(jù)卷積神經(jīng)網(wǎng)絡(luò)的基本介紹train_images=train_images.reshape((60000,28,28,1)).astype('float32')/255test_images=test_images.reshape((10000,28,28,1)).astype('float32')/255#構(gòu)建模型model=models.Sequential()#卷積層1model.add(layers.Conv2D(32,(5,5),activation='relu',input_shape=(28,28,1)))#池化層1卷積神經(jīng)網(wǎng)絡(luò)的基本介紹model.add(layers.MaxPooling2D((2,2)))#卷積層2model.add(layers.Conv2D(64,(5,5),activation='relu'))#池化層2model.add(layers.MaxPooling2D((2,2)))#Flatten層model.add(layers.Flatten())#全連接層卷積神經(jīng)網(wǎng)絡(luò)的基本介紹model.add(layers.Dense(1024,activation='relu'))#輸出層model.add(layers.Dense(10,activation='softmax'))#編譯模型pile(optimizer='adam',loss='mean_squared_error',metrics=['accuracy'])#訓(xùn)練模型卷積神經(jīng)網(wǎng)絡(luò)的基本介紹history=model.fit(train_images,train_labels,epochs=10,validation_data=(test_images,test_labels))#評(píng)估模型test_loss,test_acc=model.evaluate(test_images,test_labels,verbose=2)print('\nTestaccuracy:',test_acc)#可視化訓(xùn)練過(guò)程中的準(zhǔn)確率和損失plt.figure(figsize=(8,8))卷積神經(jīng)網(wǎng)絡(luò)的基本介紹plt.subplot(1,2,1)plt.plot(history.history['accuracy'],label='TrainingAccuracy')plt.plot(history.history['val_accuracy'],label='ValidationAccuracy')plt.legend(loc='lowerright')plt.title('TrainingandValidationAccuracy')plt.subplot(1,2,2)卷積神經(jīng)網(wǎng)絡(luò)的基本介紹plt.plot(history.history['loss'],label='TrainingLoss')plt.plot(history.history['val_loss'],label='ValidationLoss')plt.legend(loc='upperright')plt.title('TrainingandValidationLoss')plt.show()卷積神經(jīng)網(wǎng)絡(luò)的基本介紹在這個(gè)代碼中,首先添加兩組卷積層和最大池化層。卷積層用于提取圖像中的特征,池化層用于減少特征的空間維度(寬度和高度),從而減少計(jì)算量和參數(shù)數(shù)量。又利用Flatten層將前面卷積層輸出的多維特征圖展平成一維向量,以便全連接層處理,然后全連接層采用ReLU激活函數(shù)用于進(jìn)一步處理特征,最后是輸出層,使用Softmax激活函數(shù),將模型的輸出轉(zhuǎn)換為10個(gè)類別(代表數(shù)字0-9)的概率分布。而模型的訓(xùn)練過(guò)程中,通過(guò)指定優(yōu)化器(adam)和均方誤差損失函數(shù)(MSE)來(lái)進(jìn)行模型參數(shù)的優(yōu)化,完成優(yōu)化后,在測(cè)試數(shù)據(jù)集上評(píng)估模型,以得到模型的準(zhǔn)確率。通過(guò)這個(gè)案例分析,可以構(gòu)建一個(gè)能夠準(zhǔn)確識(shí)別手寫數(shù)字的卷積神經(jīng)網(wǎng)絡(luò)模型。這個(gè)例子展示了使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像識(shí)別任務(wù)的典型流程,從數(shù)據(jù)處理到模型構(gòu)建、訓(xùn)練、評(píng)估,最后是結(jié)果的可視化分析。3反饋神經(jīng)網(wǎng)絡(luò)反饋神經(jīng)網(wǎng)絡(luò)(FeedbackNeuralNetwork)是一種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)模型,其基本結(jié)構(gòu)包括一個(gè)或多個(gè)隱藏層和一個(gè)輸出層。反饋神經(jīng)網(wǎng)絡(luò)中神經(jīng)元不但可以接收其他神經(jīng)元的信號(hào),而且可以接收自己的反饋信號(hào),和前饋神經(jīng)網(wǎng)絡(luò)相比,反饋神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元具有記憶功能,在不同時(shí)刻具有不同的狀態(tài),反饋神經(jīng)網(wǎng)絡(luò)中的信息傳播可以是單向也可以是雙向傳播。常見(jiàn)的反饋神經(jīng)網(wǎng)絡(luò)包括循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork,RNN)、遞歸神經(jīng)網(wǎng)絡(luò)(RecursiveNeuralNetwork,RvNN)、Hopfield網(wǎng)絡(luò)和玻爾茲曼機(jī)(BoltzmannMachine)。3反饋神經(jīng)網(wǎng)絡(luò)3.1循環(huán)神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)是一類具有短期記憶能力的神經(jīng)網(wǎng)絡(luò),適合用于處理視頻、語(yǔ)音、文本等與時(shí)序相關(guān)的問(wèn)題。在循環(huán)神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元不但可以接收其他神經(jīng)元的信息,還可以接收自身的信息,形成具有環(huán)路的網(wǎng)絡(luò)結(jié)構(gòu)。在循環(huán)神經(jīng)網(wǎng)絡(luò)中,最基本的單元是循環(huán)體(RecurrentUnit),也稱為RNN單元。典型的RNN單元有Elman神經(jīng)網(wǎng)絡(luò)、長(zhǎng)短期記憶網(wǎng)絡(luò)(LongShort-TermMemory,LSTM)和門控循環(huán)單元(GatedRecurrentUnits,GRU)。3反饋神經(jīng)網(wǎng)絡(luò)Elman神經(jīng)網(wǎng)絡(luò)Elman神經(jīng)網(wǎng)絡(luò)是一種典型的循環(huán)神經(jīng)網(wǎng)絡(luò),它是在BP網(wǎng)絡(luò)基本結(jié)構(gòu)的基礎(chǔ)上,在隱藏層增加一個(gè)承接層,作為一步延時(shí)算子,達(dá)到記憶的目的,從而使系統(tǒng)具有適應(yīng)時(shí)變特性的能力,增強(qiáng)了網(wǎng)絡(luò)的全局穩(wěn)定性。Elman的結(jié)構(gòu)原理Elman神經(jīng)網(wǎng)絡(luò)一般分為四層:輸入層、隱藏層(中間層)、承接層和輸出層。其結(jié)構(gòu)圖如圖4-11所示。輸入層、隱藏層、輸出層的連接類似于前饋式網(wǎng)絡(luò),輸入層的單元僅起到信號(hào)傳輸作用,輸出層單元起線性加權(quán)作用。隱藏層單元的傳遞函數(shù)可采用線性或非線性函數(shù),承接層又稱上下文層或狀態(tài)層,它從隱藏層接收反饋信號(hào),用來(lái)記憶隱藏層單元前一時(shí)刻的輸出值并返回給網(wǎng)絡(luò)的輸入,可以認(rèn)為是一個(gè)一步延時(shí)算子。圖4-11Elman神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[13]3反饋神經(jīng)網(wǎng)絡(luò)Elman神經(jīng)網(wǎng)絡(luò)Elman神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖圖4-11所示,其數(shù)學(xué)表達(dá)式如下:Elman神經(jīng)網(wǎng)絡(luò)各層節(jié)點(diǎn)個(gè)數(shù):a)輸入層、輸出層的神經(jīng)元節(jié)點(diǎn)個(gè)數(shù):輸入層的神經(jīng)元數(shù)量與輸入數(shù)據(jù)特征的維數(shù)是相等的,輸出層的神經(jīng)元節(jié)點(diǎn)數(shù)量也等同于輸出數(shù)據(jù)標(biāo)簽的維度,這與BP神經(jīng)網(wǎng)絡(luò)一樣。b)隱藏層的神經(jīng)元節(jié)點(diǎn)個(gè)數(shù):不管在BP還是Elman,或者其他的神經(jīng)網(wǎng)絡(luò),隱藏層的神經(jīng)元個(gè)數(shù)都不是固定的。如果選擇的隱藏層神經(jīng)元個(gè)數(shù)較少時(shí),就會(huì)導(dǎo)致網(wǎng)絡(luò)的學(xué)習(xí)程度減小甚至無(wú)法學(xué)習(xí)。節(jié)點(diǎn)個(gè)數(shù)較多時(shí),則會(huì)導(dǎo)致網(wǎng)絡(luò)訓(xùn)練的過(guò)程變慢,也很難得出預(yù)計(jì)的情況。只有當(dāng)隱藏層神經(jīng)元數(shù)量只有控制在一個(gè)合理的范圍內(nèi),才能使得網(wǎng)絡(luò)模型好的進(jìn)行學(xué)習(xí)運(yùn)算。通常的做法是根據(jù)以下公式來(lái)推出隱藏層節(jié)點(diǎn)數(shù)目的范圍,在范圍之內(nèi)根據(jù)訓(xùn)練誤差最?。ǚ诸悊?wèn)題則取準(zhǔn)確率最高或者誤差率最低)的原則來(lái)確定最佳的隱藏層節(jié)點(diǎn)數(shù)目。3反饋神經(jīng)網(wǎng)絡(luò)Elman神經(jīng)網(wǎng)絡(luò)c)承接層的神經(jīng)元節(jié)點(diǎn)個(gè)數(shù):承接層也叫做上下文層和狀態(tài)層,主要功能是用來(lái)記憶隱藏層上一個(gè)時(shí)間點(diǎn)的輸出數(shù)值。所以承接層的神經(jīng)元個(gè)數(shù)與隱藏層相同,確定方法為:先根據(jù)訓(xùn)練誤差最小確定最佳的隱藏層神經(jīng)元節(jié)點(diǎn),再得到承接層的神經(jīng)元節(jié)點(diǎn)個(gè)數(shù)。Elman神經(jīng)網(wǎng)絡(luò)案例分析假設(shè)已知有一個(gè)Elman神經(jīng)網(wǎng)絡(luò),其輸入層有3個(gè)節(jié)點(diǎn),隱藏層有2個(gè)節(jié)點(diǎn),輸出層有1個(gè)節(jié)點(diǎn)。通過(guò)使用該網(wǎng)絡(luò)來(lái)學(xué)習(xí)一個(gè)簡(jiǎn)單的序列模式,輸入序列是一系列數(shù)字,例如,[0.1,0.2,0.3,0.4,...],希望該網(wǎng)絡(luò)能夠預(yù)測(cè)下一個(gè)數(shù)字,則在這個(gè)例子中,對(duì)于輸入0.1,其理想的輸出將是0.2。以下是上述Elman網(wǎng)絡(luò)的一個(gè)簡(jiǎn)單Python代碼實(shí)現(xiàn):importnumpyasnp3反饋神經(jīng)網(wǎng)絡(luò)Elman神經(jīng)網(wǎng)絡(luò)classElmanNN:def__init__(self,input_size,hidden_size,output_size):#權(quán)重和偏置初始化self.W1=np.random.rand(hidden_size,input_size)-0.5self.W2=np.random.rand(hidden_size,hidden_size)-0.5self.W3=np.random.rand(output_size,hidden_size)-0.53反饋神經(jīng)網(wǎng)絡(luò)Elman神經(jīng)網(wǎng)絡(luò)self.b1=np.random.rand(hidden_size,1)-0.5self.b2=np.random.rand(output_size,1)-0.5#承接層狀態(tài)初始化self.context=np.zeros((hidden_size,1))defsigmoid(self,x):return1/(1+np.exp(-x))defforward(self,x):#輸入處理3反饋神經(jīng)網(wǎng)絡(luò)Elman神經(jīng)網(wǎng)絡(luò)x=np.reshape(x,(len(x),1))#隱藏層計(jì)算self.context=np.tanh(np.dot(self.W1,x)+np.dot(self.W2,self.context)+self.b1)3反饋神經(jīng)網(wǎng)絡(luò)#輸出層計(jì)算y=self.sigmoid(np.dot(self.W3,self.context)+self.b2)returny#創(chuàng)建網(wǎng)絡(luò)實(shí)例elman_net=ElmanNN(input_size=3,hidden_size=2,output_size=1)#模擬一個(gè)輸入序列input_sequence=np.array([[0.1],[0.2],[0.3]])#逐一處理輸入序列并獲取輸出3反饋神經(jīng)網(wǎng)絡(luò)#輸出層計(jì)算foriinrange(len(input_sequence)):output=elman_net.forward(input_sequence[i])print(f'Input:{input_sequence[i].flatten()}Output:{output.flatten()}')上述代碼邏輯可以分為幾個(gè)關(guān)鍵步驟:a)定義ElmanNN類:這個(gè)類代表了Elman神經(jīng)網(wǎng)絡(luò),負(fù)責(zé)初始化網(wǎng)絡(luò)的權(quán)重和偏置,以及存儲(chǔ)承接層的狀態(tài)。3反饋神經(jīng)網(wǎng)絡(luò)#輸出層計(jì)算b)初始化網(wǎng)絡(luò)參數(shù):在構(gòu)造函數(shù)中,初始化了輸入層到隱藏層(W1),承接層到隱藏層(W2),隱藏層到輸出層(W3)的權(quán)重矩陣,以及隱藏層(b1)和輸出層(b2)的偏置向量。承接層的狀態(tài)初始化為零,這是網(wǎng)絡(luò)在時(shí)間序列中記憶前一狀態(tài)的部分。c)實(shí)現(xiàn)Sigmoid和激活函數(shù):Sigmoid函數(shù)提供了一個(gè)標(biāo)準(zhǔn)的Sigmoid激活,將任意實(shí)數(shù)映射到(0,1)范圍,這在神經(jīng)網(wǎng)絡(luò)中通常用于輸出層。np.tanh作為非線性激活函數(shù)直接在forward方法中應(yīng)用,它將任意實(shí)數(shù)映射到(-1,1)范圍,這在隱藏層中非常常見(jiàn)。3反饋神經(jīng)網(wǎng)絡(luò)#輸出層計(jì)算01d)前向傳播邏輯(forward方法):網(wǎng)絡(luò)接收一個(gè)輸入向量,將其與權(quán)重W1相乘,并加上從承接層傳來(lái)的加權(quán)狀態(tài)(通過(guò)W2)和偏置b1。02計(jì)算隱藏層的狀態(tài),應(yīng)用tanh函數(shù)作為激活,提供了能夠處理復(fù)雜模式的非線性能力。0304更新承接層的狀態(tài)為當(dāng)前隱藏層的狀態(tài),以便在下一個(gè)時(shí)間步驟中使用。計(jì)算輸出層的狀態(tài),通過(guò)將隱藏層狀態(tài)與W3相乘并加上偏置b2,然后應(yīng)用Sigmoid激活函數(shù)得到最終的輸出。053反饋神經(jīng)網(wǎng)絡(luò)#輸出層計(jì)算e)實(shí)例化和運(yùn)行網(wǎng)絡(luò):創(chuàng)建了ElmanNN的實(shí)例,具有指定的輸入、隱藏和輸出層大小。通過(guò)一個(gè)簡(jiǎn)單的循環(huán),網(wǎng)絡(luò)對(duì)每個(gè)輸入序列元素執(zhí)行前向傳播,展示了網(wǎng)絡(luò)對(duì)每個(gè)輸入如何響應(yīng),并打印輸出。代碼的這部分僅處理前向傳播,適合理解Elman網(wǎng)絡(luò)的動(dòng)態(tài)行為。其不包含學(xué)習(xí)算法,如反向傳播或權(quán)重更新。3反饋神經(jīng)網(wǎng)絡(luò)長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)LSTMLSTM是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),主要用于處理和預(yù)測(cè)時(shí)間序列中的長(zhǎng)期依賴問(wèn)題。與傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)相比,LSTM通過(guò)引入了幾個(gè)特殊的結(jié)構(gòu),即“門”結(jié)構(gòu),這些門控制信息的流動(dòng),包括信息如何被存儲(chǔ)、修改或刪除,從而有效解決了傳統(tǒng)RNN面臨的梯度消失和梯度爆炸問(wèn)題。3反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)LSTM單元主要包括三個(gè)門:遺忘門(ForgetGate)、輸入門(InputGate)和輸出門(OutputGate),以及一個(gè)細(xì)胞狀態(tài)(CellState)。這些組件協(xié)同工作,以在序列數(shù)據(jù)中捕捉長(zhǎng)期依賴關(guān)系。其結(jié)構(gòu)如圖4-12所示。圖4-12LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[16]輸出門:基于細(xì)胞狀態(tài),決定最終的輸出。輸出門首先運(yùn)行一個(gè)sigmoid層來(lái)決定細(xì)胞狀態(tài)的哪個(gè)部分將輸出。然后,將細(xì)胞狀態(tài)通過(guò)tanh(得到一個(gè)介于-1和1之間的值)并與sigmoid層的輸出相乘,得到最終的輸出。LSTM的實(shí)例分析3反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)根據(jù)給定的單詞序列預(yù)測(cè)句子中的下一個(gè)單詞。例如,給定序列"thecatis",想要預(yù)測(cè)接下來(lái)的單詞。為了簡(jiǎn)化,假設(shè)詞匯表只包括四個(gè)單詞:{"the","cat","is","sleeping"},并且每個(gè)單詞都被編碼為一個(gè)獨(dú)熱編碼形式。下面的Python代碼展示了如何從頭開(kāi)始實(shí)現(xiàn)一個(gè)非?;镜腖STM單元,僅使用Numpy庫(kù)。importnumpyasnpdefsigmoid(x):return1/(1+np.exp(-x))deftanh(x):returnnp.tanh(x)3反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)deflstm_cell_forward(xt,prev_c,prev_h,parameters):#參數(shù)解包Wf=parameters["Wf"]bf=parameters["bf"]Wi=parameters["Wi"]bi=parameters["bi"]Wc=parameters["Wc"]bc=parameters["bc"]Wo=parameters["Wo"]3反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)bo=parameters["bo"]1concat=np.hstack((prev_h,xt))2#遺忘門3ft=sigmoid(np.dot(Wf,concat)+bf)4#輸入門5it=sigmoid(np.dot(Wi,concat)+bi)6cct=tanh(np.dot(Wc,concat)+bc)7#細(xì)胞狀態(tài)更新8c_next=ft*prev_c+it*cct9#輸入和前一隱藏狀態(tài)的合并103反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)#輸出門ot=sigmoid(np.dot(Wo,concat)+bo)h_next=ot*tanh(c_next)returnc_next,h_next#假設(shè)維度和參數(shù)初始化np.random.seed(1)xt=np.random.randn(3)#輸入向量prev_c=np.random.randn(5)#上一時(shí)刻的細(xì)胞狀態(tài)prev_h=np.random.randn(5)#上一時(shí)刻的隱藏狀態(tài)3反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)parameters={"Wf":np.random.randn(5,8),"bf":np.random.randn(5,),"Wi":np.random.randn(5,8),"bi":np.random.randn(5,),"Wc":np.random.randn(5,8),"bc":np.random.randn(5,),"Wo":np.random.randn(5,8),"bo":np.random.randn(5,)}#前向傳播3反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)c_next,h_next=lstm_cell_forward(xt,prev_c,prev_h,parameters)print("NextCellState:",c_next)print("NextHiddenState:",h_next)以下是代碼邏輯的總結(jié),分為幾個(gè)關(guān)鍵步驟:a)參數(shù)和輸入初始化初始化輸入xt(當(dāng)前時(shí)間步的輸入),prev_c(前一個(gè)時(shí)間步的細(xì)胞狀態(tài)),和prev_h(前一個(gè)時(shí)間步的隱藏狀態(tài))。定義LSTM單元需要的參數(shù)(權(quán)重矩陣和偏置項(xiàng)),包括遺忘門(Wf,bf)、輸入門(Wi,bi)、細(xì)胞狀態(tài)更新(Wc,bc)、輸出門(Wo,bo)。這些參數(shù)通常通過(guò)學(xué)習(xí)過(guò)程自動(dòng)調(diào)整,以適應(yīng)特定任務(wù)。3反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)b)計(jì)算門控制信號(hào)遺忘門:使用前一個(gè)時(shí)間步的隱藏狀態(tài)和當(dāng)前時(shí)間步的輸入,決定哪部分舊細(xì)胞狀態(tài)應(yīng)該被遺忘。這通過(guò)Wf和bf計(jì)算得到的激活值,經(jīng)過(guò)sigmoid函數(shù)處理,產(chǎn)生遺忘門的輸出ft。輸入門:同樣查看當(dāng)前輸入和前一隱藏狀態(tài),決定哪些新的信息將加入細(xì)胞狀態(tài)。這包括計(jì)算輸入門it和候選細(xì)胞狀態(tài)cct,分別通過(guò)Wi,bi和Wc,bc進(jìn)行。c)細(xì)胞狀態(tài)更新結(jié)合遺忘門的輸出和輸入門的輸出來(lái)更新細(xì)胞狀態(tài)。這涉及到丟棄部分舊的細(xì)胞狀態(tài)(乘以ft),加入新的信息(it*cct)。3反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)d)輸出門和隱藏狀態(tài)輸出門(OutputGate):決定基于當(dāng)前細(xì)胞狀態(tài),哪部分信息將輸出作為當(dāng)前的隱藏狀態(tài)。這通過(guò)Wo,bo計(jì)算得到的激活值,再經(jīng)過(guò)sigmoid函數(shù)處理,產(chǎn)生輸出門的輸出ot。使用輸出門的輸出和當(dāng)前細(xì)胞狀態(tài)(通過(guò)tanh函數(shù)處理)的乘積,計(jì)算出下一個(gè)時(shí)間步的隱藏狀態(tài)h_next。e)輸出最終輸出包括更新后的細(xì)胞狀態(tài)c_next和新的隱藏狀態(tài)h_next。這兩個(gè)輸出對(duì)于序列中的下一個(gè)時(shí)間步是必要的,因?yàn)樗鼈儼水?dāng)前時(shí)間步處理的信息,以及為下一步?jīng)Q策提供上下文的能力。3反饋神經(jīng)網(wǎng)絡(luò)LSTM的基本結(jié)構(gòu)總結(jié)來(lái)說(shuō),這個(gè)LSTM單元的實(shí)現(xiàn)演示了LSTM處理序列信息的基本機(jī)制,包括如何通過(guò)遺忘門丟棄無(wú)關(guān)信息,通過(guò)輸入門添加新信息,以及如何通過(guò)輸出門控制最終輸出的隱藏狀態(tài)。這種能力使得LSTM特別適合處理需要理解長(zhǎng)期依賴關(guān)系的任務(wù),如語(yǔ)言模型和時(shí)間序列預(yù)測(cè)。3反饋神經(jīng)網(wǎng)絡(luò)門控循環(huán)單元GRU門控循環(huán)單元GRU,是循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的變種,與LSTM類似通過(guò)門控單元解決RNN中不能長(zhǎng)期記憶和反向傳播中的梯度等問(wèn)題。與LSTM相比,GRU內(nèi)部的網(wǎng)絡(luò)架構(gòu)較為簡(jiǎn)單。3反饋神經(jīng)網(wǎng)絡(luò)GRU的結(jié)構(gòu)原理GRU網(wǎng)絡(luò)內(nèi)部包含更新門(updategate)與重置門(resetgate)兩個(gè)門。重置門決定了如何將新的輸入信息與前面的記憶相結(jié)合,更新門定義了前面記憶保存到當(dāng)前時(shí)間步的量。如果我們將重置門設(shè)置為1,更新門設(shè)置為0,那么我們將再次獲得標(biāo)準(zhǔn)RNN模型。這兩個(gè)門控向量決定了哪些信息最終能作為門控循環(huán)單元的輸出。這兩個(gè)門控機(jī)制的特殊之處在于,它們能夠保存長(zhǎng)期序列中的信息,且不會(huì)隨時(shí)間而清除或因?yàn)榕c預(yù)測(cè)不相關(guān)而移除。GRU門控結(jié)構(gòu)如圖4-13所示:圖4-13GRU網(wǎng)絡(luò)結(jié)構(gòu)更新門:更新門用于控制前一個(gè)時(shí)間步的隱狀態(tài)應(yīng)該被保留到多大程度,以及當(dāng)前輸入應(yīng)該以多大程度影響當(dāng)前的隱狀態(tài)。更新門可以看作是決定信息是否需要更新的機(jī)制。其數(shù)學(xué)表達(dá)式如下:3反饋神經(jīng)網(wǎng)絡(luò)GRU的結(jié)構(gòu)原理重置門:重置門決定了前一個(gè)狀態(tài)的哪些信息應(yīng)該被丟棄。這允許GRU模型在必要時(shí)忘記舊的信息,這對(duì)于模型捕獲時(shí)間序列數(shù)據(jù)中的長(zhǎng)期依賴至關(guān)重要。其數(shù)學(xué)表達(dá)式如下:候選隱狀態(tài)(CandidateHiddenState):候選隱狀態(tài)是一個(gè)暫時(shí)的狀態(tài),它結(jié)合了當(dāng)前輸入和過(guò)去的信息(經(jīng)過(guò)重置門的調(diào)節(jié))。這個(gè)狀態(tài)將和更新門一起決定最終的隱狀態(tài)。其數(shù)學(xué)表達(dá)式如下:最終隱狀態(tài)(FinalHiddenState):最終隱狀態(tài)是通過(guò)結(jié)合更新門、前一隱狀態(tài)以及候選隱狀態(tài)來(lái)計(jì)算得到的。這一步驟確保了模型可以根據(jù)需要保留長(zhǎng)期信息或忘記無(wú)關(guān)信息。其數(shù)學(xué)表達(dá)式如下:GRU的實(shí)例分析3反饋神經(jīng)網(wǎng)絡(luò)GRU的結(jié)構(gòu)原理假設(shè)有一個(gè)關(guān)于月度銷售額的時(shí)間序列數(shù)據(jù),為了簡(jiǎn)化,假定這個(gè)序列是:100,110,120,130,140,150。為了使用GRU模型處理這個(gè)序列,將每一個(gè)銷售額數(shù)字看作是一個(gè)時(shí)間點(diǎn)的特征,并

溫馨提示

  • 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)論