《自己動(dòng)手寫(xiě)神經(jīng)網(wǎng)絡(luò)》講解通俗易懂,使用簡(jiǎn)單的語(yǔ)言描述人工神經(jīng)網(wǎng)絡(luò)的原理,并力求以具體實(shí)現(xiàn)與應(yīng)用為導(dǎo)向,除了理論介紹外,每一章節(jié)的應(yīng)用和實(shí)踐都有具體的實(shí)例實(shí)現(xiàn),讓讀者達(dá)到學(xué)以致用。《自己動(dòng)手寫(xiě)神經(jīng)網(wǎng)絡(luò)》分為11章,主要內(nèi)容為:簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò)模型和理論應(yīng)用;介紹了一個(gè)基于Java的人工神經(jīng)網(wǎng)絡(luò)框架Neuroph;介紹了基于Neuroph開(kāi)發(fā)一個(gè)簡(jiǎn)單的人工神經(jīng)網(wǎng)絡(luò)系統(tǒng)感知機(jī);介紹了ADALINE網(wǎng)絡(luò)以及使用Neuroph實(shí)現(xiàn)ADALINE神經(jīng)網(wǎng)絡(luò);介紹了BP神經(jīng)網(wǎng)絡(luò)的基本原理和具體實(shí)現(xiàn);介紹了BP神經(jīng)網(wǎng)絡(luò)的具體實(shí)踐應(yīng)用;介紹了Hopfield網(wǎng)絡(luò)的原理、實(shí)踐和應(yīng)用;介紹了雙向聯(lián)想網(wǎng)絡(luò)BAM的原理、實(shí)踐和應(yīng)用;介紹了競(jìng)爭(zhēng)學(xué)習(xí)網(wǎng)絡(luò),特別是SOM網(wǎng)絡(luò)以及相關(guān)算法與實(shí)現(xiàn);介紹了PCA方法以及與PCA方法等價(jià)的PCA神經(jīng)網(wǎng)絡(luò)。
《自己動(dòng)手寫(xiě)神經(jīng)網(wǎng)絡(luò)》適合以下類型的讀者:對(duì)神經(jīng)網(wǎng)絡(luò)感興趣,期望可以初步了解神經(jīng)網(wǎng)絡(luò)原理的讀者;有一定編程經(jīng)驗(yàn),期望學(xué)習(xí)和掌握神經(jīng)網(wǎng)絡(luò)的程序員;期望對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行實(shí)際應(yīng)用的工程人員;任何一名神經(jīng)網(wǎng)絡(luò)愛(ài)好者。
AlphaGo戰(zhàn)勝李世石,標(biāo)志著新一輪人工智能的浪潮已經(jīng)來(lái)襲。
而你是否已經(jīng)做好迎接新的人工智能技術(shù)的準(zhǔn)備?
《自己動(dòng)手寫(xiě)神經(jīng)網(wǎng)絡(luò)》將帶你一探作為AlphaGo基石的人工神經(jīng)網(wǎng)絡(luò)。
《自己動(dòng)手寫(xiě)神經(jīng)網(wǎng)絡(luò)》不局限于紙上談兵,我們用代碼詮釋一切。
《自己動(dòng)手寫(xiě)神經(jīng)網(wǎng)絡(luò)》可能改變你對(duì)人工智能的態(tài)度。
深入講解人工神經(jīng)網(wǎng)絡(luò)的工作原理,并且能夠動(dòng)手實(shí)踐人工神經(jīng)網(wǎng)絡(luò)
書(shū)力求通俗易懂,使用盡可能簡(jiǎn)單的語(yǔ)言描述人工神經(jīng)網(wǎng)絡(luò)的原理與理論。
《自己動(dòng)手寫(xiě)神經(jīng)網(wǎng)絡(luò)》力求以具體實(shí)現(xiàn)與應(yīng)用為導(dǎo)向,除了理論介紹外,每一章節(jié)的應(yīng)用和實(shí)踐都有具體的實(shí)現(xiàn)詳解。
全書(shū)使用Java作為主要語(yǔ)言,與Matlab等語(yǔ)言不同的是:Java語(yǔ)言是目前企業(yè)級(jí)軟件開(kāi)發(fā)zui為流行的語(yǔ)言,因此,使用Java實(shí)現(xiàn)的神經(jīng)網(wǎng)絡(luò)具備更強(qiáng)的系統(tǒng)集成能力與實(shí)踐能力。由于Java語(yǔ)言本身通俗易懂,在基本語(yǔ)法上與C/C 類似,因此,本書(shū)同樣適合沒(méi)有Java基礎(chǔ)的程序員。
葛一鳴,浙江工業(yè)大學(xué)碩士,國(guó)家認(rèn)證系統(tǒng)分析師,Oracle OCP。長(zhǎng)期從事Java軟件開(kāi)發(fā)工作,對(duì)Java技術(shù)、人工智能、神經(jīng)網(wǎng)絡(luò)、數(shù)據(jù)挖掘等技術(shù)有濃厚興趣。
現(xiàn)著有《自己動(dòng)手寫(xiě)神經(jīng)網(wǎng)絡(luò)》《Java程序性能優(yōu)化》《實(shí)戰(zhàn)Java虛擬機(jī)》《實(shí)戰(zhàn)Java高并發(fā)程序設(shè)計(jì)》。
目 錄
第1章 人工神經(jīng)網(wǎng)絡(luò)概述1
1.1 人工智能與神經(jīng)網(wǎng)絡(luò)簡(jiǎn)史1
1.1.1 人工智能的誕生:1943~1956年2
1.1.2 黃金發(fā)展期:1956~1974年3
1.1.3 第一次低谷期:1974~1980年4
1.1.4 繁榮期:1980~1987年5
1.1.5 第二次低谷期:1987~1993年5
1.1.6 再次崛起:1993年至今6
1.2 生物學(xué)研究對(duì)神經(jīng)網(wǎng)絡(luò)的影響6
1.3 大數(shù)據(jù)對(duì)人工智能的影響8
1.4 計(jì)算機(jī)硬件發(fā)展對(duì)人工智能的影響9
1.5 計(jì)算機(jī)軟件發(fā)展對(duì)人工智能的影響9
1.6 人工智能的廣泛應(yīng)用10
第2章 人工神經(jīng)元模型與感知機(jī)12
2.1 人工神經(jīng)元組成要素12
2.1.1 人工神經(jīng)元的基本結(jié)構(gòu)12
2.1.2 傳輸函數(shù)類型13
2.2 感知機(jī)15
2.2.1 使用感知機(jī)識(shí)別水果15
2.2.2 讓感知機(jī)記憶邏輯與17
2.2.3 感知機(jī)的學(xué)習(xí)算法18
2.3 總結(jié)20
第3章 神經(jīng)網(wǎng)絡(luò)框架Neuroph介紹21
3.1 Neuroph是什么21
3.2 Neuroph系統(tǒng)的構(gòu)成22
3.3 Neuroph Studio的功能展示22
3.3.1 使用Neuroph Studio構(gòu)造感知機(jī)處理邏輯與23
3.3.2 使用Neuroph Studio進(jìn)行動(dòng)物分類實(shí)驗(yàn)28
3.4 Neuroph Library架構(gòu)分析34
3.4.1 Neuroph Library核心架構(gòu)35
3.4.2 Neuron神經(jīng)元35
3.4.3 Layer層36
3.4.4 NeuralNetwork神經(jīng)網(wǎng)絡(luò)37
3.4.5 LearningRule學(xué)習(xí)算法37
3.4.6 DataSet和DataSetRow38
3.5 Neuroph開(kāi)發(fā)環(huán)境搭建38
3.5.1 基礎(chǔ)平臺(tái)Java介紹以及安裝39
3.5.2 包管理工具M(jìn)aven安裝39
3.5.3 開(kāi)發(fā)工具Eclipse安裝40
3.6 總結(jié)41
第4章 使用Java實(shí)現(xiàn)感知機(jī)及其應(yīng)用42
4.1 第一個(gè)Neuroph程序使用感知機(jī)記憶邏輯與42
4.1.1 創(chuàng)建感知機(jī)網(wǎng)絡(luò)42
4.1.2 理解輸入神經(jīng)元InputNeuron45
4.1.3 理解貝葉斯神經(jīng)元BiasNeuron45
4.1.4 step傳輸函數(shù)是如何實(shí)現(xiàn)的46
4.2 讓感知機(jī)理解坐標(biāo)系統(tǒng)47
4.2.1 感知機(jī)網(wǎng)絡(luò)的設(shè)計(jì)47
4.2.2 感知機(jī)網(wǎng)絡(luò)的實(shí)現(xiàn)47
4.3 感知機(jī)學(xué)習(xí)算法與Java實(shí)現(xiàn)49
4.3.1 感知機(jī)學(xué)習(xí)規(guī)則的實(shí)現(xiàn)50
4.3.2 一個(gè)自學(xué)習(xí)的感知機(jī)實(shí)現(xiàn)SimplePerceptron51
4.3.3 小試牛刀SimplePerceptron學(xué)習(xí)邏輯與52
4.3.4 訓(xùn)練何時(shí)停止53
4.4 再看坐標(biāo)點(diǎn)位置識(shí)別55
4.5 感知機(jī)的極限異或問(wèn)題57
4.6 總結(jié)58
第5章 ADALINE網(wǎng)絡(luò)及其應(yīng)用59
5.1 ADALINE網(wǎng)絡(luò)與LMS算法59
5.2 ADALINE網(wǎng)絡(luò)的Java實(shí)現(xiàn)60
5.3 使用ADALINE網(wǎng)絡(luò)識(shí)別數(shù)字62
5.3.1 印刷體數(shù)字識(shí)別問(wèn)題概述62
5.3.2 代碼實(shí)現(xiàn)63
5.3.3 加入噪點(diǎn)后再嘗試66
5.4 總結(jié)67
第6章 多層感知機(jī)和BP學(xué)習(xí)算法68
6.1 多層感知機(jī)的結(jié)構(gòu)與簡(jiǎn)單實(shí)現(xiàn)68
6.1.1 多層感知機(jī)結(jié)構(gòu)的提出68
6.1.2 定義多層感知機(jī)處理異或問(wèn)題69
6.1.3 多層感知機(jī)的簡(jiǎn)單實(shí)現(xiàn)71
6.2 多層感知機(jī)學(xué)習(xí)算法BP學(xué)習(xí)算法74
6.2.1 BP學(xué)習(xí)算法理論介紹74
6.2.2 BP學(xué)習(xí)算法與BP神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)77
6.3 BP神經(jīng)網(wǎng)絡(luò)細(xì)節(jié)優(yōu)化84
6.3.1 隨機(jī)化權(quán)值的方式84
6.3.2 Sigmoid函數(shù)導(dǎo)數(shù)的探討86
6.4 帶著算法重回異或問(wèn)題87
6.5 總結(jié)89
第7章 BP神經(jīng)網(wǎng)絡(luò)的案例90
7.1 奇偶性判別問(wèn)題90
7.1.1 問(wèn)題描述90
7.1.2 代碼實(shí)現(xiàn)90
7.2 函數(shù)逼近94
7.2.1 問(wèn)題描述94
7.2.2 代碼實(shí)現(xiàn)94
7.3 動(dòng)物分類99
7.3.1 問(wèn)題描述99
7.3.2 問(wèn)題分析100
7.3.3 代碼實(shí)現(xiàn)102
7.4 簡(jiǎn)單的語(yǔ)音識(shí)別104
7.4.1 問(wèn)題描述104
7.4.2 代碼實(shí)現(xiàn)104
7.5 MNIST手寫(xiě)體識(shí)別106
7.5.1 問(wèn)題描述106
7.5.2 問(wèn)題分析108
7.5.3 代碼實(shí)現(xiàn)108
7.6 總結(jié)112
第8章 Hopfield神經(jīng)網(wǎng)絡(luò)113
8.1 Hopfield神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和原理113
8.1.1 Hopfield網(wǎng)絡(luò)的結(jié)構(gòu)113
8.1.2 網(wǎng)絡(luò)吸引子114
8.1.3 網(wǎng)絡(luò)權(quán)值的設(shè)計(jì)115
8.2 網(wǎng)絡(luò)的存儲(chǔ)容量117
8.3 Hopfield神經(jīng)網(wǎng)絡(luò)的Java實(shí)現(xiàn)118
8.3.1 Hopfield網(wǎng)絡(luò)構(gòu)造函數(shù)118
8.3.2 Hopfield網(wǎng)絡(luò)的神經(jīng)及其特點(diǎn)119
8.3.3 Hopfield網(wǎng)絡(luò)學(xué)習(xí)算法120
8.4 Hopfield網(wǎng)絡(luò)還原帶有噪點(diǎn)的字符121
8.5 Hopfield網(wǎng)絡(luò)的自聯(lián)想案例123
8.6 總結(jié)126
第9章 BAM雙向聯(lián)想記憶網(wǎng)絡(luò)127
9.1 BAM網(wǎng)絡(luò)的結(jié)構(gòu)與原理127
9.2 BAM網(wǎng)絡(luò)的學(xué)習(xí)算法128
9.3 使用Java實(shí)現(xiàn)BAM網(wǎng)絡(luò)129
9.3.1 BAM網(wǎng)絡(luò)的靜態(tài)結(jié)構(gòu)129
9.3.2 BAM網(wǎng)絡(luò)學(xué)習(xí)算法130
9.3.3 BAM網(wǎng)絡(luò)的運(yùn)行131
9.4 BAM網(wǎng)絡(luò)的應(yīng)用133
9.4.1 場(chǎng)景描述人名與電話133
9.4.2 數(shù)據(jù)編碼設(shè)計(jì)134
9.4.3 具體實(shí)現(xiàn)136
9.5 總結(jié)140
第10章 競(jìng)爭(zhēng)學(xué)習(xí)網(wǎng)絡(luò)141
10.1 競(jìng)爭(zhēng)學(xué)習(xí)的基本原理141
10.1.1 向量的相似性142
10.1.2 競(jìng)爭(zhēng)學(xué)習(xí)規(guī)則143
10.2 自組織映射網(wǎng)絡(luò)SOM的原理144
10.2.1 SOM網(wǎng)絡(luò)的生物學(xué)意義144
10.2.2 SOM網(wǎng)絡(luò)的結(jié)構(gòu)144
10.2.3 SOM網(wǎng)絡(luò)的運(yùn)行原理145
10.2.4 有關(guān)初始化權(quán)重的問(wèn)題146
10.3 SOM網(wǎng)絡(luò)的Java實(shí)現(xiàn)147
10.3.1 SOM網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的實(shí)現(xiàn)147
10.3.2 SOM網(wǎng)絡(luò)的初始權(quán)值設(shè)置150
10.3.3 Kohonen算法的實(shí)現(xiàn)153
10.4 SOM網(wǎng)絡(luò)的應(yīng)用157
10.4.1 使用SOM網(wǎng)絡(luò)進(jìn)行動(dòng)物聚類158
10.4.2 使用SOM網(wǎng)絡(luò)進(jìn)行城市聚類161
10.5 總結(jié)164
第11章 PCA神經(jīng)網(wǎng)絡(luò)165
11.1 PCA方法概述165
11.1.1 PCA方法數(shù)學(xué)背景166
11.1.2 PCA計(jì)算示例167
11.2 PCA神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法170
11.2.1 Oja算法170
11.2.2 Sanger算法171
11.3 基于Neuroph實(shí)現(xiàn)PCA網(wǎng)絡(luò)172
11.3.1 Oja算法的實(shí)現(xiàn)172
11.3.2 Sanger算法的實(shí)現(xiàn)177
11.4 使用PCA網(wǎng)絡(luò)預(yù)處理MNIST手寫(xiě)體數(shù)據(jù)集178
11.5 總結(jié)181