人工神經(jīng)網(wǎng)絡(luò)是由眾多連接權(quán)值可調(diào)的神經(jīng)元連接而成,具有大規(guī)模并行處理、分布式信息存儲、良好的自組織自學(xué)習(xí)能力等特點,能夠完成模式識別、機器學(xué)習(xí)以及預(yù)測趨勢等任務(wù)。
本書通過9章內(nèi)容,并結(jié)合Java編程語言,由淺入深地介紹了神經(jīng)網(wǎng)絡(luò)算法的應(yīng)用。書中涉及神經(jīng)網(wǎng)絡(luò)的構(gòu)建、神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)、神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)、感知機、自組織映射等核心概念,并將天氣預(yù)測、疾病診斷、客戶特征聚類、模式識別、神經(jīng)網(wǎng)絡(luò)優(yōu)化與自適應(yīng)等經(jīng)典案例囊括其中。本書在附錄中詳細(xì)地指導(dǎo)讀者進(jìn)行開發(fā)環(huán)境的配置,幫助讀者更加順利地進(jìn)行程序開發(fā)。
本書非常適合對神經(jīng)網(wǎng)絡(luò)技術(shù)感興趣的開發(fā)人員和業(yè)余讀者閱讀,讀者無需具備Java編程知識,也無需提前了解神經(jīng)網(wǎng)絡(luò)的相關(guān)概念。本書將從零開始為讀者進(jìn)行由淺入深地講解。
神經(jīng)網(wǎng)絡(luò)已成為從大量原始的,看似無關(guān)的數(shù)據(jù)中提取有用知識的強大技術(shù)。 Java語言是用于實現(xiàn)神經(jīng)網(wǎng)絡(luò)的zui合適的工具之一,也是現(xiàn)階段非常流行的編程語言之一,包含多種有助于開發(fā)的API和包,具有一次編寫,隨處運行的可移植性。
本書完整地演示了使用Java開發(fā)神經(jīng)網(wǎng)絡(luò)的過程,既有非常基礎(chǔ)的實例也有高級實例。首先,你將學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識、感知機及其特征。 然后,你將使用學(xué)到的概念來實現(xiàn)自組織映射網(wǎng)絡(luò)。 此外,你還會了解一些應(yīng)用,如天氣預(yù)報、疾病診斷、客戶特征分析和光學(xué)字符識別(OCR)等。 zui后,你將學(xué)習(xí)實時優(yōu)化和自適應(yīng)神經(jīng)網(wǎng)絡(luò)的方法。
首先,你將學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識和它們的學(xué)習(xí)過程。 然后我們關(guān)注感知機及其特征。 接下來,您將使用您學(xué)到的概念實現(xiàn)自組織映射。 此外,您將了解一些應(yīng)用,如天氣預(yù)報,疾病診斷,客戶特征分析和光學(xué)字符識別(OCR)。 zui后,您將學(xué)習(xí)優(yōu)化和適應(yīng)實時神經(jīng)網(wǎng)絡(luò)的方法。
本書所有的示例都提供了說明性的源代碼,這些源代碼綜合了面向?qū)ο缶幊蹋∣OP)概念和神經(jīng)網(wǎng)絡(luò)特性,以幫助你更好的學(xué)習(xí)。
通過閱讀本書,你講能夠:
掌握神經(jīng)網(wǎng)絡(luò)的知識及其用途;
運用常見實例開發(fā)神經(jīng)網(wǎng)絡(luò);
探索和編碼zui廣泛使用的學(xué)習(xí)算法,讓你的神經(jīng)網(wǎng)絡(luò)可以從大多數(shù)類型的數(shù)據(jù)中學(xué)習(xí) 知識;
發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)的無監(jiān)督學(xué)習(xí)過程的力量,提取隱藏在數(shù)據(jù)背后的內(nèi)在知識;
應(yīng)用實際示例(如天氣預(yù)測和模式識別)中生成的代碼;
了解如何選擇zui合適的學(xué)習(xí)參數(shù),以確保應(yīng)用更高效;
選擇數(shù)據(jù)集,將數(shù)據(jù)集切分為訓(xùn)練集、測試集和驗證集,并探索驗證策略;
了解如何改善和優(yōu)化神經(jīng)網(wǎng)絡(luò)。
Fábio M. Soares擁有帕拉聯(lián)邦大學(xué)(Universidade Federal do Pará,UFPA)的計算機應(yīng)用專業(yè)碩士學(xué)位,目前是該所大學(xué)的在讀博士生。他從2004年開始就一直在設(shè)計神經(jīng)網(wǎng)絡(luò)解決方案,在電信、化學(xué)過程建模等多個領(lǐng)域開發(fā)了神經(jīng)網(wǎng)絡(luò)技術(shù)的應(yīng)用,他的研究主題涉及數(shù)據(jù)驅(qū)動建模的監(jiān)督學(xué)習(xí)。
他也是一名個體經(jīng)營者,為巴西北部的一些中小型公司提供IT基礎(chǔ)設(shè)施管理和數(shù)據(jù)庫管理等服務(wù)。在過去,他曾為大公司工作,如Albras(世界上zui重要的鋁冶煉廠之一)和Eletronorte(巴西的一個大型電源供應(yīng)商)。他也有當(dāng)講師的經(jīng)歷,曾在亞馬遜聯(lián)邦農(nóng)業(yè)大學(xué)(Federal Rural University)和卡斯塔尼亞爾的一個學(xué)院授課,兩所學(xué)校都在帕拉州,所教的學(xué)科涉及編程和人工智能。
他出版了許多作品,其中許多都有英文版,所有作品都是關(guān)于針對某些問題的人工智能技術(shù)。他在眾多權(quán)v會議上發(fā)表了一系列學(xué)術(shù)文章,如TMS(礦物金屬和材料學(xué)會)、輕金屬學(xué)會和智能數(shù)據(jù)工程、自動學(xué)習(xí)學(xué)會等學(xué)術(shù)會議。他還為Intech寫過兩章內(nèi)容。
Alan M.F. Souza是來自亞馬遜高級研究所(Instituto de Estudos Superiores da Amaz?nia,IESAM)的計算機工程師。他擁有軟件項目管理的研究生學(xué)位以及帕拉聯(lián)邦大學(xué)(Universidade Federal do Pará,UFPA)的工業(yè)過程(計算機應(yīng)用)碩士學(xué)位。自2009年以來,他一直從事神經(jīng)網(wǎng)絡(luò)方面的工作,并從2006年開始與巴西的IT公司合作進(jìn)行Java、PHP、SQL和其他編程語言的開發(fā)。他熱衷于編程和計算智能。目前,他是亞馬遜大學(xué)(Universidade da Amaz?nia,UNAMA)的教授和帕拉聯(lián)邦大學(xué)的在讀博士生。
第1章 初識神經(jīng)網(wǎng)絡(luò)1
1.1 探索神經(jīng)網(wǎng)絡(luò)1
1.2 為什么要用人工神經(jīng)網(wǎng)絡(luò)2
1.3 神經(jīng)網(wǎng)絡(luò)的構(gòu)造3
1.3.1 基礎(chǔ)元素人工神經(jīng)元3
1.3.2 賦予神經(jīng)元生命
激活函數(shù)4
1.3.3 基礎(chǔ)值權(quán)值5
1.3.4 重要參數(shù)偏置5
1.3.5 神經(jīng)網(wǎng)絡(luò)組件層5
1.4 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)6
1.4.1 單層神經(jīng)網(wǎng)絡(luò)7
1.4.2 多層神經(jīng)網(wǎng)絡(luò)7
1.4.3 前饋神經(jīng)網(wǎng)絡(luò)8
1.4.4 反饋神經(jīng)網(wǎng)絡(luò)8
1.5 從無知到有識學(xué)習(xí)過程8
1.6 實踐神經(jīng)網(wǎng)絡(luò)9
1.7 小結(jié)15
第2章 神經(jīng)網(wǎng)絡(luò)是如何學(xué)習(xí)的16
2.1 神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力16
2.2 學(xué)習(xí)范式17
2.2.1 監(jiān)督學(xué)習(xí)17
2.2.2 無監(jiān)督學(xué)習(xí)18
2.3 系統(tǒng)結(jié)構(gòu)學(xué)習(xí)算法19
2.3.1 學(xué)習(xí)的兩個階段訓(xùn)練
和測試20
2.3.2 細(xì)節(jié)學(xué)習(xí)參數(shù)21
2.3.3 誤差度量和代價函數(shù)22
2.4 學(xué)習(xí)算法示例22
2.4.1 感知機22
2.4.2 Delta規(guī)則23
2.5 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程的編碼23
2.5.1 參數(shù)學(xué)習(xí)實現(xiàn)23
2.5.2 學(xué)習(xí)過程24
2.5.3 類定義26
2.6 兩個實例33
2.6.1 感知機(報警系統(tǒng))34
2.6.2 ADALINE(交通預(yù)測)37
2.7 小結(jié)42
第3章 運用感知機43
3.1 學(xué)習(xí)感知機神經(jīng)網(wǎng)絡(luò)43
3.1.1 感知機的應(yīng)用和局限性44
3.1.2 線性分離44
3.1.3 經(jīng)典XOR(異或)
例子45
3.2 流行的多層感知機(MLP)47
3.2.1 MLP屬性48
3.2.2 MLP權(quán)值49
3.2.3 遞歸MLP50
3.2.4 MLP在OOP范式中的
結(jié)構(gòu)50
3.3 有趣的MLP應(yīng)用51
3.3.1 使用MLP進(jìn)行分類51
3.3.2 用MLP進(jìn)行回歸53
3.4 MLP的學(xué)習(xí)過程54
3.4.1 簡單但很強大的學(xué)習(xí)
算法反向傳播55
3.4.2 復(fù)雜而有效的學(xué)習(xí)算法
Levenberg?CMarquardt57
3.5 MLP實現(xiàn)58
3.5.1 實戰(zhàn)反向傳播算法61
3.5.2 探索代碼62
3.6 Levenberg?CMarquardt實現(xiàn)66
3.7 實際應(yīng)用新生入學(xué)68
3.8 小結(jié)71
第4章 自組織映射72
4.1 神經(jīng)網(wǎng)絡(luò)無監(jiān)督學(xué)習(xí)方式72
4.2 無監(jiān)督學(xué)習(xí)算法介紹73
4.3 Kohonen 自組織映射76
4.3.1 一維SOM77
4.3.2 二維SOM78
4.3.3 逐步實現(xiàn)自組織映射網(wǎng)絡(luò)
學(xué)習(xí)80
4.3.4 如何使用SOM81
4.4 Kohonen算法編程81
4.4.1 探索Kohonen類84
4.4.2 Kohonen實現(xiàn)
(動物聚類)86
4.5 小結(jié)88
第5章 天氣預(yù)測89
5.1 針對預(yù)測問題的神經(jīng)網(wǎng)絡(luò)89
5.2 無數(shù)據(jù),無神經(jīng)網(wǎng)絡(luò)
選擇數(shù)據(jù)91
5.2.1 了解問題天氣變量92
5.2.2 選擇輸入輸出變量92
5.2.3 移除無關(guān)行為
數(shù)據(jù)過濾93
5.3 調(diào)整數(shù)值數(shù)據(jù)預(yù)處理94
5.4 Java實現(xiàn)天氣預(yù)測96
5.4.1 繪制圖表96
5.4.2 處理數(shù)據(jù)文件97
5.4.3 構(gòu)建天氣預(yù)測神經(jīng)網(wǎng)絡(luò)98
5.5 神經(jīng)網(wǎng)絡(luò)經(jīng)驗設(shè)計101
5.5.1 選擇訓(xùn)練和測試
數(shù)據(jù)集101
5.5.2 設(shè)計實驗102
5.5.3 結(jié)果和模擬103
5.6 小結(jié)105
第6章 疾病診斷分類106
6.1 什么是分類問題,以及如何應(yīng)用
神經(jīng)網(wǎng)絡(luò)106
6.2 激活函數(shù)的特殊類型
邏輯回歸107
6.2.1 二分類VS多分類109
6.2.2 比較預(yù)期結(jié)果與產(chǎn)生
結(jié)果混淆矩陣109
6.2.3 分類衡量靈敏度和
特異性110
6.3 應(yīng)用神經(jīng)網(wǎng)絡(luò)進(jìn)行分類111
6.4 神經(jīng)網(wǎng)絡(luò)的疾病診斷114
6.4.1 使用神經(jīng)網(wǎng)絡(luò)診斷
乳腺癌114
6.4.2 應(yīng)用神經(jīng)網(wǎng)絡(luò)進(jìn)行早期糖
尿病診斷118
6.5 小結(jié)121
第7章 客戶特征聚類122
7.1 聚類任務(wù)123
7.1.1 聚類分析123
7.1.2 聚類評估和驗證124
7.1.3 外部驗證125
7.2 應(yīng)用無監(jiān)督學(xué)習(xí)125
7.2.1 徑向基函數(shù)神經(jīng)網(wǎng)絡(luò)125
7.2.2 Kohonen 神經(jīng)網(wǎng)絡(luò)126
7.2.3 數(shù)據(jù)類型127
7.3 客戶特征128
7.4 Java實現(xiàn)129
7.5 小結(jié)135
第8章 模式識別(OCR案例)136
8.1 什么是模式識別136
8.1.1 定義大量數(shù)據(jù)中的
類別137
8.1.2 如果未定義的類沒有被
定義怎么辦138
8.1.3 外部驗證138
8.2 如何在模式識別中應(yīng)用神經(jīng)網(wǎng)絡(luò)
算法138
8.3 OCR問題140
8.3.1 簡化任務(wù)數(shù)字
識別140
8.3.2 數(shù)字表示的方法140
8.4 開始編碼141
8.4.1 生成數(shù)據(jù)141
8.4.2 構(gòu)建神經(jīng)網(wǎng)絡(luò)143
8.4.3 測試和重新設(shè)計
試錯144
8.4.4 結(jié)果145
8.5 小結(jié)148
第9章 神經(jīng)網(wǎng)絡(luò)優(yōu)化與自適應(yīng)149
9.1 神經(jīng)網(wǎng)絡(luò)實現(xiàn)中的常見問題149
9.2 輸入選擇150
9.2.1 數(shù)據(jù)相關(guān)性150
9.2.2 降維151
9.2.3 數(shù)據(jù)過濾152
9.3 結(jié)構(gòu)選擇152
9.4 在線再訓(xùn)練154
9.4.1 隨機在線學(xué)習(xí)155
9.4.2 實現(xiàn)156
9.4.3 應(yīng)用157
9.5 自適應(yīng)神經(jīng)網(wǎng)絡(luò)159
9.5.1 自適應(yīng)共振理論159
9.5.2 實現(xiàn)160
9.6 小結(jié)162
附錄A NetBeans環(huán)境搭建163
附錄B Eclipse環(huán)境搭建175
附錄C 參考文獻(xiàn)186