如何快速使用Python神經(jīng)網(wǎng)絡(luò)識別手寫字符?

姓名:王咫毅

學(xué)號:19021211150

【嵌牛導(dǎo)讀】在這個(gè)人工智能如日中天的時(shí)代津肛,神經(jīng)網(wǎng)絡(luò)異軍突起章喉,成為人們研究的熱點(diǎn)。如何自己動(dòng)手搭一個(gè)神經(jīng)網(wǎng)絡(luò)的模型身坐?使用python需要調(diào)用那些庫?要識別一個(gè)手寫體的數(shù)據(jù)集如何進(jìn)行操作落包?這將是本文討論的主要問題部蛇。

【嵌牛鼻子】mnist數(shù)據(jù)集 python 神經(jīng)網(wǎng)絡(luò)

【嵌牛提問】如何引用mnist數(shù)據(jù)集?使用什么樣的神經(jīng)網(wǎng)絡(luò)可以識別率更高咐蝇?

【嵌牛正文】

轉(zhuǎn)載自:http://www.reibang.com/p/f5ab24b24edb

點(diǎn)擊標(biāo)題下[異步社區(qū)]可快速關(guān)注

在本文中涯鲁,我們將進(jìn)一步探討一些使用Python神經(jīng)網(wǎng)絡(luò)識別手寫字符非常有趣的想法。如果只是想了解神經(jīng)網(wǎng)絡(luò)的基本知識有序,那不必閱讀本文,可以先閱讀《Python神經(jīng)網(wǎng)絡(luò)編程》前面2章節(jié)的內(nèi)容抹腿。

這是一個(gè)有趣的額外部分,所以節(jié)奏會稍微加快一些旭寿,但是我們?nèi)匀粐L試使用簡單的語言來解釋這些想法警绩。

?1.1 自己的手寫數(shù)字

在本文中,我們一直使用來自MNIST數(shù)據(jù)集的數(shù)字圖片盅称。為什么不使用自己的筆跡呢肩祥?

在這個(gè)實(shí)驗(yàn)中后室,我們將使用自己的筆跡創(chuàng)建測試數(shù)據(jù)集。我們也將嘗試使用不同的書寫風(fēng)格混狠,使用嘈雜或抖動(dòng)的圖片岸霹,來觀察神經(jīng)網(wǎng)絡(luò)的應(yīng)對能力如何。

你可以使用任何喜歡的圖像編輯或繪畫軟件來創(chuàng)建圖片将饺。不必使用昂貴的Photoshop贡避,GIMP是免費(fèi)開源的替代軟件,適用于Windows予弧、Mac和Linux等系統(tǒng)刮吧。甚至可以用一支筆將數(shù)字寫在紙上,并用智能手機(jī)桌肴、相機(jī)或任何合適的掃描儀庶橱,將手寫數(shù)字變成圖片格式氛琢。唯一的要求是圖片為正方形(寬度等于長度),并且將其保存為PNG格式。在喜歡的圖像編輯器中红碑,保存格式選項(xiàng)的菜單通常為“File→Save As”或“File→Export”。

下面是我制作的一些圖片撑螺。

?數(shù)字5就是我的筆跡吏砂。數(shù)字4是用粉筆而不是馬克筆寫的。數(shù)字3是我的筆跡并有意切成一段一段的拳魁。數(shù)字2是傳統(tǒng)的報(bào)紙或書籍字體惶桐,但是進(jìn)行了模糊處理。數(shù)字6有意做成抖動(dòng)的樣子潘懊,好像是在水中的倒影姚糊。最后一張圖片與前面的數(shù)字相同,但是添加了噪聲授舟,來看看我們是否可以增加神經(jīng)網(wǎng)絡(luò)的工作難度救恨。

雖然這很有趣,但是這里蘊(yùn)含了很嚴(yán)肅的一點(diǎn)释树。人類大腦在遭受損害后肠槽,其能力依然能夠得到良好發(fā)揮,科學(xué)家對此深感震驚奢啥。這暗示著秸仙,神經(jīng)網(wǎng)絡(luò)將它們所學(xué)到的知識分布在幾條鏈接權(quán)重上,也就是說桩盲,如果若干鏈接權(quán)重遭受了一定損害寂纪,神經(jīng)網(wǎng)絡(luò)也可以表現(xiàn)得相當(dāng)好。這同時(shí)意味著正驻,如果輸入圖像被損壞或不完整弊攘,神經(jīng)網(wǎng)絡(luò)也可以表現(xiàn)得相當(dāng)好抢腐。這是一種很強(qiáng)大的功能,這就是我們希望用上圖中斷斷續(xù)續(xù)的3進(jìn)行測試的能力襟交。

我們需要?jiǎng)?chuàng)建較小的PNG圖片迈倍,將它們調(diào)整到28個(gè)像素乘以28個(gè)像素,這樣就可以匹配曾經(jīng)用過的來自MNIST數(shù)據(jù)集的圖片捣域。你可以使用圖像編輯器做到這一點(diǎn)啼染。

Python庫再次幫助了我們,它從常見的圖像文件格式中(包括PNG格式)讀取和解碼數(shù)據(jù)焕梅〖6欤看看下面這段簡單的代碼:?

?scipy.misc.imread()函數(shù)幫助我們從圖像文件,如PNG或JPG文件中贞言,讀取數(shù)據(jù)斜棚。必須導(dǎo)入scipy.misc庫來使用這個(gè)函數(shù)。參數(shù)“flatten=True”將圖像變成簡單的浮點(diǎn)數(shù)數(shù)組该窗,如果圖像是彩色的弟蚀,那么顏色值將被轉(zhuǎn)換為所需要的灰度。

下一行代碼重塑數(shù)組酗失,將其從28×28的方塊數(shù)組變成很長的一串?dāng)?shù)值义钉,這是我們需要饋送給神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)。此前规肴,我們已經(jīng)多次進(jìn)行這樣的操作了捶闸。但是,這里比較新鮮的一點(diǎn)是將數(shù)組的值減去了255.0拖刃。這樣做的原因是删壮,常規(guī)而言,0指的是黑色兑牡,255指的是白色醉锅,但是,MNIST數(shù)據(jù)集使用相反的方式表示发绢,因此不得不將值逆轉(zhuǎn)過來以匹配MNIST數(shù)據(jù)。

最后一行代碼是我們很熟悉的垄琐,它將數(shù)據(jù)值進(jìn)行縮放边酒,使得它們的范圍變成0.01到1.0。演示讀取PNG文件的示例代碼可以在GitHub上找到:

·https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork/ blob/master/part3_load_own_images.ipynb

我們需要?jiǎng)?chuàng)建基本的神經(jīng)網(wǎng)絡(luò)狸窘,這個(gè)神經(jīng)網(wǎng)絡(luò)使用MNIST訓(xùn)練數(shù)據(jù)集進(jìn)行訓(xùn)練墩朦,然后,不使用MNIST測試集對網(wǎng)絡(luò)進(jìn)行測試翻擒,而是使用自己創(chuàng)建的圖像數(shù)據(jù)對網(wǎng)絡(luò)進(jìn)行測試氓涣。

在GitHub上牛哺,可通過如下鏈接獲得新程序:

·https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork/ blob/master/part3_neural_network_mnist_and_own_data.ipynb

這樣做成功了嗎?當(dāng)然成功了劳吠。下圖總結(jié)使用我們自己制作的圖像查詢的結(jié)果引润。

?可以看到,神經(jīng)網(wǎng)絡(luò)能夠識別我們創(chuàng)建的所有圖像痒玩,包括有意損壞的數(shù)字“3”淳附。只有在識別添加了噪聲的數(shù)字“6”時(shí)失敗了。

使用你自己的圖像蠢古,尤其是手寫的圖像試試看奴曙,證明你的神經(jīng)網(wǎng)絡(luò)確實(shí)能夠工作。

并且草讶,仔細(xì)觀察洽糟,要將圖像損壞或變形到什么程度,神經(jīng)網(wǎng)絡(luò)才會失敗堕战。神經(jīng)網(wǎng)絡(luò)的彈性將會給你留下深刻的印象坤溃。

?1.2 神經(jīng)網(wǎng)絡(luò)大腦內(nèi)部

在求解各種各樣我們不知道如何使用簡約明快的規(guī)則解決的問題時(shí),神經(jīng)網(wǎng)絡(luò)發(fā)揮了重要作用践啄。想象一下浇雹,寫下一組規(guī)則,將這些規(guī)則應(yīng)用于手寫數(shù)字圖像屿讽,來確定數(shù)字是什么昭灵,這件事并不是那么容易,并且我們的嘗試也可能不會那么成功伐谈。

1.2.1 神秘的黑盒子

一旦神經(jīng)網(wǎng)絡(luò)得到了訓(xùn)練烂完,并且在測試數(shù)據(jù)上表現(xiàn)良好,那么基本上你就擁有了一個(gè)神秘的黑盒子诵棵。你不知道這個(gè)黑盒子如何計(jì)算出答案抠蚣,但是它確實(shí)成功地計(jì)算出了答案。

如果你只對答案感興趣履澳,而不真正關(guān)心它們?nèi)绾蔚贸鲞@個(gè)答案的嘶窄,那么對你來說,這就不是一個(gè)問題了距贷。但是柄冲,我要指出這是這些機(jī)器學(xué)習(xí)方法類型的缺點(diǎn),即雖然黑盒子(神經(jīng)網(wǎng)絡(luò))已經(jīng)學(xué)會如何求解問題忠蝗,但是其所學(xué)習(xí)到的知識常常不能轉(zhuǎn)化為對問題的理解和智慧现横。

讓我們來看看是否可以到神經(jīng)網(wǎng)絡(luò)內(nèi)部一探究竟,是否能夠理解神經(jīng)網(wǎng)絡(luò)所學(xué)習(xí)到的知識,將神經(jīng)網(wǎng)絡(luò)通過訓(xùn)練搜集到的知識可視化戒祠。

我們可以觀察權(quán)重骇两,這畢竟是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的內(nèi)容。但是姜盈,權(quán)重不太可能告訴我們太多信息低千。特別是,神經(jīng)網(wǎng)絡(luò)的工作方式是將學(xué)習(xí)分布到不同的鏈接權(quán)重中贩据。這種方式使得神經(jīng)網(wǎng)絡(luò)對損壞具有了彈性栋操,這就像是生物大腦的運(yùn)行方式。刪除一個(gè)節(jié)點(diǎn)甚至相當(dāng)多的節(jié)點(diǎn)饱亮,都不太可能徹底破壞神經(jīng)網(wǎng)絡(luò)良好的工作能力矾芙。

這里有一個(gè)瘋狂的想法。

1.2.2 向后查詢

在通常情況下近上,我們饋送給已受訓(xùn)練的神經(jīng)網(wǎng)絡(luò)一個(gè)問題剔宪,神經(jīng)網(wǎng)絡(luò)彈出一個(gè)答案。在我們的例子中壹无,這個(gè)問題是人類的手寫數(shù)字圖像葱绒。答案是表示數(shù)字0到9中的某個(gè)標(biāo)簽。

如果將這種方式反轉(zhuǎn)斗锭,向后操作地淀,會發(fā)生什么呢?如果饋送一個(gè)標(biāo)簽到輸出節(jié)點(diǎn)岖是,通過已受訓(xùn)練的網(wǎng)絡(luò)反向輸入信號帮毁,直到輸入節(jié)點(diǎn)彈出一個(gè)圖像,那會怎么樣豺撑?下圖顯示了正常的正向查詢和瘋狂的反向向后查詢的想法烈疚。

?我們已經(jīng)知道如何通過網(wǎng)絡(luò)傳播信號,使用鏈接權(quán)重調(diào)節(jié)信號聪轿,在應(yīng)用激活函數(shù)之前在節(jié)點(diǎn)處重新組合信號爷肝。除了使用的是逆激活函數(shù)以外,所有這一切操作也都適用于反向傳播信號陆错。如果y= f(x) 是正向激活函數(shù)灯抛,那么這個(gè)函數(shù)的逆就是x= g(y)。使用簡單的代數(shù)音瓷,求出邏輯函數(shù)的逆牧愁,也并非難事:

y= 1 / (1 + e-x)

1 + e-x?= 1/y

e-x?= (1/y) -1 = (1 -y) /y

-x?= ln [ (1-y) /y]

x= ln [ y / (1-y) ]

這就是所謂的對數(shù)函數(shù),就像Python為邏輯S函數(shù)提供scipy.special.expit()一樣外莲,Python中的scipy.special庫也提供了這個(gè)函數(shù),即scipy.special.logit()。

在應(yīng)用逆激活函數(shù)logit()之前偷线,我們需要確保信號是有效的磨确。這是什么意思呢?還記得吧声邦,邏輯S函數(shù)接受了任何數(shù)值乏奥,輸出0和1之間的某個(gè)值,但是不包括0和1本身亥曹。逆函數(shù)必須接受相同的范圍0和1之間的某個(gè)值邓了,不包括0和1,彈出任何正值或負(fù)值媳瞪。為了實(shí)現(xiàn)這一目標(biāo)骗炉,我們簡單地接受輸出層中的所有值,應(yīng)用logit()蛇受,并將它們重新調(diào)整到有效范圍句葵。我選擇的范圍為0.01至0.99。

這段代碼在網(wǎng)上始終可用兢仰,請?jiān)L問GitHub以獲日д伞:

·https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork/ blob/master/part3_neural_network_mnist_backquery.ipynb

1.2.3 標(biāo)簽“0”

來看看如果我們使用標(biāo)簽“0”進(jìn)行反向查詢,會發(fā)生什么情況把将。也就是說轻专,我們向輸出節(jié)點(diǎn)展示了一些值,除了使用值0.99展示給第一個(gè)節(jié)點(diǎn)表示標(biāo)簽“0”察蹲,其余節(jié)點(diǎn)都展示了0.01请垛。換句話說,也就是數(shù)組[0.99, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01,0.01]递览。

下圖顯示了輸入節(jié)點(diǎn)彈出的圖像叼屠。

?這真是太有趣了!

這個(gè)圖像讓我們對神經(jīng)網(wǎng)絡(luò)的“大腦”有了一種深刻的見解绞铃。這個(gè)圖像是什么意思镜雨?該如何解釋這個(gè)圖像呢?

我們注意到最主要的特征是儿捧,圖像中的圓形荚坞。我們是在詢問神經(jīng)網(wǎng)絡(luò)——對于答案“0”,最理想的問題是什么菲盾,因此颓影,這個(gè)圖像是有道理的。

我們也注意到深色懒鉴、淺色和一些介中的灰色區(qū)域诡挂。

·深色區(qū)域是問題圖像中應(yīng)該使用筆來標(biāo)記的部分碎浇,這部分圖像組成了支持證據(jù),證明答案為“0”璃俗,可以這樣理解奴璃,這些部分看起來組成了0的形狀輪廓。

·?淺色區(qū)域是問題圖像中應(yīng)該沒有任何筆痕的部分城豁,這支持了答案為“0”苟穆。同樣,可以這樣理解唱星,這些部分形成了0形狀的中間部分雳旅。

·?大體上,神經(jīng)網(wǎng)絡(luò)對灰色區(qū)域不是很敏感间聊。

因此攒盈,粗略來講,我們實(shí)際上已經(jīng)理解了甸饱,針對如何將圖像歸類為標(biāo)簽“0”沦童,神經(jīng)網(wǎng)絡(luò)已經(jīng)學(xué)習(xí)到的知識。

這是一種難得的見解叹话,對于較多層偷遗、較復(fù)雜的神經(jīng)網(wǎng)絡(luò)或較復(fù)雜的問題而言,可能沒有如此容易解釋的結(jié)果驼壶。我們鼓勵(lì)你進(jìn)行實(shí)驗(yàn)氏豌,親自動(dòng)手試一試。

1.2.4 更多的大腦掃描

下圖顯示了其他數(shù)字向后查詢的結(jié)果热凹。

?哇泵喘!同樣是一些非常有趣的圖像,就像使用超聲波掃描神經(jīng)網(wǎng)絡(luò)的大腦一樣般妙。

關(guān)于這些圖像纪铺,我們做了一些注解:

·“7”真的很清楚〉欤可以看到在查詢圖像中標(biāo)記的深色位置鲜锚,強(qiáng)烈暗示了這是標(biāo)簽“7”。也可以看到額外的“白色”區(qū)域苫拍,這些區(qū)域沒有任何標(biāo)記芜繁。這兩個(gè)特點(diǎn)結(jié)合起來,指示出了這是“7”绒极。

·?這同樣適用于數(shù)字“3”骏令,有標(biāo)記的深色區(qū)域指示出了“3”,白色的區(qū)域也非常清晰垄提。

·“2”和“5”具有類似的清晰度榔袋。

·?數(shù)字“4”有點(diǎn)有趣周拐,這個(gè)形狀出現(xiàn)在4個(gè)象限中,是4個(gè)互相分隔的區(qū)域摘昌。

·?“8”主要是由“雪人”構(gòu)成的速妖,這個(gè)“雪人”由白色區(qū)域形成,表明8的特征在于保持了“頭部和身體”區(qū)的標(biāo)記聪黎。

·?數(shù)字“1”令人相當(dāng)費(fèi)解。這看起來好像神經(jīng)網(wǎng)絡(luò)較多關(guān)注無需標(biāo)記的區(qū)域备恤,而較少關(guān)注需要標(biāo)記的區(qū)域稿饰。沒關(guān)系,這就是網(wǎng)絡(luò)從樣本中學(xué)到的知識露泊。

·?數(shù)字“9”一點(diǎn)都不清楚喉镰。它有一個(gè)明確的深色區(qū)域,還有一些形狀相對精細(xì)的白色區(qū)域惭笑。這就是神經(jīng)網(wǎng)絡(luò)所學(xué)習(xí)到的知識侣姆,總體來說,當(dāng)與網(wǎng)絡(luò)學(xué)會的其他數(shù)字結(jié)合時(shí)沉噩,這允許神經(jīng)網(wǎng)絡(luò)的表現(xiàn)達(dá)到了97.5%的準(zhǔn)確度捺宗。我們觀察一下這個(gè)圖片,并得出結(jié)論川蒙,有更多的培訓(xùn)樣本將有助于神經(jīng)網(wǎng)絡(luò)學(xué)到更清晰的“9”的模板蚜厉。

現(xiàn)在,你對神經(jīng)網(wǎng)絡(luò)大腦的工作方式應(yīng)該有了一個(gè)深刻的了解了吧畜眨。

?1.3 創(chuàng)建新的訓(xùn)練數(shù)據(jù):旋轉(zhuǎn)圖像

如果思考一下MNIST訓(xùn)練數(shù)據(jù)昼牛,你就會意識到,這是關(guān)于人們所書寫數(shù)字的一個(gè)相當(dāng)豐富的樣本集康聂。這里有各種各樣贰健、各種風(fēng)格的書寫,有的寫得很好恬汁,有的寫得很糟伶椿。

神經(jīng)網(wǎng)絡(luò)必須盡可能多地學(xué)習(xí)這些變化類型。在這里蕊连,有多種形式的數(shù)字“4”悬垃,有些被壓扁了,有些比較寬甘苍,有些進(jìn)行了旋轉(zhuǎn)尝蠕,有些頂部是開放的,有些頂部是閉合的载庭,這對神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)都是有幫助的看彼。

如果我們能夠創(chuàng)造更多的變化類型作為樣本廊佩,會不會有用處呢?如何做到這一點(diǎn)呢靖榕?再多收集幾千個(gè)人類手寫數(shù)字樣本标锄,對我們來說有點(diǎn)不太容易。我們可以這樣做茁计,但是工作量有點(diǎn)大料皇。

一個(gè)很酷的想法就是利用已有的樣本,通過順時(shí)針或逆時(shí)針旋轉(zhuǎn)它們星压,比如說旋轉(zhuǎn)10度践剂,創(chuàng)建新的樣本。對于每一個(gè)訓(xùn)練樣本而言娜膘,我們能夠生成兩個(gè)額外的樣本逊脯。我們可以使用不同的旋轉(zhuǎn)角度創(chuàng)建更多的樣本,但是竣贪,目前军洼,讓我們只嘗試+10和-10兩個(gè)角度,看看這種想法能不能成功演怎。

同樣匕争,Python的許多擴(kuò)展包和程序庫都很有用。ndimage.interpolation.rotate()可以將數(shù)組轉(zhuǎn)過一個(gè)給定的角度颤枪,這正是我們所需要的汗捡。請記住,由于我們將神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)成為接收一長串輸入信號畏纲,因此輸入的是784長的一串一維數(shù)字扇住。我們需要將這一長串?dāng)?shù)字重新變成28×28的數(shù)組,這樣就可以旋轉(zhuǎn)這個(gè)數(shù)組盗胀,然后在將這個(gè)數(shù)組饋送到神經(jīng)網(wǎng)絡(luò)之前艘蹋,將數(shù)組解開,重新變成一長串的784個(gè)信號票灰。

假設(shè)得到了先前的scaled_input數(shù)組女阀,下列代碼演示了如何使用ndimage.interpolation.rotate()函數(shù):?

?可以看到,原先的scaled_input數(shù)組被重新轉(zhuǎn)變?yōu)?8乘以 28的數(shù)組屑迂,然后進(jìn)行了調(diào)整浸策。reshape=False,這個(gè)參數(shù)防止程序庫過分“熱心”惹盼,將圖像壓扁庸汗,使得數(shù)組旋轉(zhuǎn)后可以完全適合,而沒有剪掉任何部分手报。在原始圖像中蚯舱,一些數(shù)組元素不存在改化,但是現(xiàn)在這些數(shù)組元素進(jìn)入了視野,cval就是用來填充數(shù)組元素的值枉昏。由于我們要移動(dòng)輸入值范圍陈肛,避免0作為神經(jīng)網(wǎng)絡(luò)的輸入值,因此不使用0.0作為默認(rèn)值兄裂,而是使用0.01作為默認(rèn)值句旱。

小型MNIST訓(xùn)練集的記錄6(第7條記錄)是一個(gè)手寫數(shù)字“1”。在下圖中可以看到晰奖,原先的數(shù)字圖片和使用代碼生成的兩個(gè)額外的變化形式前翎。

?可以清楚地看到這種方式的好處。原始圖像的版本旋轉(zhuǎn)+10度畅涂,提供了一個(gè)樣本,就像某些人的書寫風(fēng)格是將1向后傾斜道川。將原來圖片的版本順時(shí)針旋轉(zhuǎn)10度更有趣午衰。和原始的版本相比,這個(gè)版本在某種意義上是更具代表性的學(xué)習(xí)圖片冒萄。

讓我們創(chuàng)建新的Python Notebook臊岸,使用原來的神經(jīng)網(wǎng)絡(luò)代碼,不過尊流,現(xiàn)在我們將原始圖片朝順時(shí)針和逆時(shí)針兩個(gè)方向旋轉(zhuǎn)10度帅戒,作為額外的訓(xùn)練樣本,來訓(xùn)練神經(jīng)網(wǎng)絡(luò)崖技。這段代碼在GitHub上可以得到逻住,請?jiān)L問以下鏈接:

·https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork/ blob/master/part2_neural_network_mnist_data_with_rotations.ipynb

設(shè)定學(xué)習(xí)率為0.1,并且只使用一個(gè)訓(xùn)練世代迎献,初始運(yùn)行神經(jīng)網(wǎng)絡(luò)瞎访,所得的性能是0.9669。這對于沒有使用額外旋轉(zhuǎn)圖像進(jìn)行訓(xùn)練的神經(jīng)網(wǎng)絡(luò)的性能0.954而言吁恍,是一個(gè)長足的進(jìn)步扒秸。這樣的表現(xiàn),和列在Yann LeCeun網(wǎng)站中的記錄相比也已經(jīng)是名列前茅了冀瓦。

讓我們進(jìn)行一系列的實(shí)驗(yàn)伴奥,改變世代的數(shù)目看看是否能夠讓已經(jīng)不錯(cuò)的表現(xiàn)更上一層樓。現(xiàn)在翼闽,我們創(chuàng)建了更多的訓(xùn)練數(shù)據(jù)拾徙,可以采用更小、更謹(jǐn)慎的學(xué)習(xí)步長肄程,因此將學(xué)習(xí)率減少到0.01锣吼,這樣就總體上延長了學(xué)習(xí)時(shí)間选浑。

請記住,由于特定的神經(jīng)網(wǎng)絡(luò)架構(gòu)或訓(xùn)練數(shù)據(jù)的完整性玄叠,事情很可能存在內(nèi)在的限制古徒,因此我們不會期待得到98%或以上的準(zhǔn)確度,或者甚至是100%的準(zhǔn)確度读恃。我們說“特定的神經(jīng)網(wǎng)絡(luò)架構(gòu)”隧膘,意思是在每一層節(jié)點(diǎn)數(shù)目的選擇、隱藏層的選擇和激活函數(shù)的選擇等寺惫。

我們旋轉(zhuǎn)訓(xùn)練圖像的角度疹吃,將其作為額外的訓(xùn)練樣本,下圖顯示了在這種情況下的神經(jīng)網(wǎng)絡(luò)的性能西雀。同時(shí)萨驶,下圖也顯示了沒有使用額外旋轉(zhuǎn)的訓(xùn)練樣本時(shí)神經(jīng)網(wǎng)絡(luò)的性能,以便進(jìn)行簡單的比較艇肴。

?可以看到腔呜,在5個(gè)世代的情況下,最好的結(jié)果是0.9745或97.5%的準(zhǔn)確度再悼。這再一次打破了我們先前的紀(jì)錄核畴。

值得注意的是,如果旋轉(zhuǎn)的角度過大冲九,神經(jīng)網(wǎng)絡(luò)的性能會出現(xiàn)下降谤草。由于旋轉(zhuǎn)較大的角度意味著創(chuàng)建了實(shí)際上不能代表數(shù)字的圖像,因此神經(jīng)網(wǎng)絡(luò)的性能出現(xiàn)了下降莺奸,這是可以理解的丑孩。想象一下,將“3”向一個(gè)方向旋轉(zhuǎn)90度憾筏,這就不再是3了嚎杨。因此氧腰,將過度旋轉(zhuǎn)的圖像添加到訓(xùn)練樣本中箩帚,增加了錯(cuò)誤樣本,降低了訓(xùn)練的質(zhì)量是嗜。對于最大化附加數(shù)據(jù)的價(jià)值鹅搪,10度看起來是最佳角度。

在10個(gè)世代的情況下恢准,神經(jīng)網(wǎng)絡(luò)的性能出現(xiàn)了峰值,打破了記錄敏沉,達(dá)到了0.9787辅肾,幾乎到達(dá)98%!對于這種簡單的神經(jīng)網(wǎng)絡(luò)而言矫钓,這是一個(gè)驚人的結(jié)果概龄,也是最佳的一種狀態(tài)救欧。請記住铝耻,有些人會對神經(jīng)網(wǎng)絡(luò)或數(shù)據(jù)進(jìn)行一些巧妙的處理泡态,我們還未這樣做兽赁,我們只是保持簡單的神經(jīng)網(wǎng)絡(luò)亮钦,但是卻依然取得了令人驕傲的結(jié)果。

?做得好蚁滋!

?1.4 結(jié)語

在本文中宿接,我希望你已經(jīng)明白,人類能夠輕而易舉解決的一些問題辕录,對傳統(tǒng)計(jì)算機(jī)而言卻難以解決睦霎。圖像識別就是這些所謂的“人工智能”的挑戰(zhàn)之一。

神經(jīng)網(wǎng)絡(luò)使圖像識別以及廣泛的其他各類難題走诞,都獲得了空前的進(jìn)步副女。求解這類難題的早期動(dòng)力的一個(gè)關(guān)鍵性部分是生物大腦,如鴿子或昆蟲的大腦蚣旱,雖然這些生物大腦比起今天的超級計(jì)算機(jī)似乎簡單一些碑幅,反應(yīng)也較慢,但是它們依然能夠執(zhí)行復(fù)雜的任務(wù)塞绿,如飛行枕赵、喂食、建設(shè)家園位隶。這些生物大腦對損害或?qū)Σ煌昝赖男盘柨酱埽卜浅S袕椥浴?shù)字計(jì)算機(jī)和傳統(tǒng)計(jì)算卻不能擁有這種能力。

今天篮昧,在人工智能中赋荆,神經(jīng)網(wǎng)絡(luò)是一些神奇的應(yīng)用程序成功的關(guān)鍵部分。人們對神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)懊昨,特別是深度學(xué)習(xí)——也就是使用了有層次結(jié)構(gòu)的機(jī)器學(xué)習(xí)方法窄潭,依然充滿了巨大興趣。在2016年年初酵颁,在古老的圍棋對弈領(lǐng)域嫉你,谷歌的DeepMind擊敗了世界級大師。和國際象棋相比躏惋,圍棋需要更深入的戰(zhàn)略幽污,更加微妙,研究人員原本以為計(jì)算機(jī)需要好幾年的時(shí)間才能下得好圍棋簿姨。因此距误,此次事件成為了人工智能史上一個(gè)巨大的里程碑。神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)的成功中發(fā)揮了關(guān)鍵作用扁位。

我希望你已經(jīng)明白了准潭,神經(jīng)網(wǎng)絡(luò)背后的核心思想其實(shí)是非常簡單的。我希望你也可以從神經(jīng)網(wǎng)絡(luò)的實(shí)驗(yàn)中找到樂趣域仇。也許刑然,你已經(jīng)有了探索其他類型的機(jī)器學(xué)習(xí)和人工智能的興趣。

如果你做到了這些事情暇务,那么我就算大功告成了闰集。

本文摘自《Python神經(jīng)網(wǎng)絡(luò)編程》

?《Python神經(jīng)網(wǎng)絡(luò)編程》

?[英]塔里克·拉希德(Tariq Rashid)?著?

點(diǎn)擊封面購買紙書

當(dāng)前,深度學(xué)習(xí)和人工智能的發(fā)展和應(yīng)用給人們留下了深刻的印象般卑。神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)和人工智能的關(guān)鍵元素,然而爽雄,真正了解神經(jīng)網(wǎng)絡(luò)工作機(jī)制的人少之又少蝠检。本書用輕松的筆觸,一步一步揭示了神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)思想挚瘟,并介紹如何使用Python 3.5編程語言開發(fā)神經(jīng)網(wǎng)絡(luò)叹谁。

本書將帶領(lǐng)您進(jìn)行一場妙趣橫生卻又有條不紊的旅行——從一個(gè)非常簡單的想法開始,逐步理解神經(jīng)網(wǎng)絡(luò)的工作機(jī)制乘盖。您無需任何超出中學(xué)范圍的數(shù)學(xué)知識焰檩,并且本書還給出易于理解的微積分簡介。本書的目標(biāo)是讓盡可能多的普通讀者理解神經(jīng)網(wǎng)絡(luò)订框。讀者將學(xué)習(xí)使用Python開發(fā)自己的神經(jīng)網(wǎng)絡(luò)析苫,訓(xùn)練它識別手寫數(shù)字,甚至可以與專業(yè)的神經(jīng)網(wǎng)絡(luò)相媲美。

本書適合想要了解深度學(xué)習(xí)衩侥、人工智能和神經(jīng)網(wǎng)絡(luò)的讀者閱讀国旷,尤其適合想要通過Python編程進(jìn)行神經(jīng)網(wǎng)絡(luò)開發(fā)的讀者參考。

作者:人郵異步社區(qū)

鏈接:http://www.reibang.com/p/f5ab24b24edb

來源:簡書

著作權(quán)歸作者所有茫死。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)跪但,非商業(yè)轉(zhuǎn)載請注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末峦萎,一起剝皮案震驚了整個(gè)濱河市屡久,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌爱榔,老刑警劉巖被环,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異搓蚪,居然都是意外死亡蛤售,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門妒潭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悴能,“玉大人,你說我怎么就攤上這事雳灾∧穑” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵谎亩,是天一觀的道長炒嘲。 經(jīng)常有香客問我,道長匈庭,這世上最難降的妖魔是什么夫凸? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮阱持,結(jié)果婚禮上夭拌,老公的妹妹穿的比我還像新娘。我一直安慰自己衷咽,他們只是感情好鸽扁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著镶骗,像睡著了一般桶现。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鼎姊,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天骡和,我揣著相機(jī)與錄音相赁,去河邊找鬼。 笑死即横,一個(gè)胖子當(dāng)著我的面吹牛噪生,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播东囚,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼跺嗽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了页藻?” 一聲冷哼從身側(cè)響起桨嫁,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎份帐,沒想到半個(gè)月后璃吧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡废境,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年畜挨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噩凹。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巴元,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驮宴,到底是詐尸還是另有隱情逮刨,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布堵泽,位于F島的核電站修己,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏迎罗。R本人自食惡果不足惜睬愤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纹安。 院中可真熱鬧尤辱,春花似錦、人聲如沸钻蔑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咪笑。三九已至,卻和暖如春娄涩,著一層夾襖步出監(jiān)牢的瞬間窗怒,已是汗流浹背映跟。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扬虚,地道東北人努隙。 一個(gè)月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像辜昵,于是被迫代替她去往敵國和親荸镊。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容