• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于BP神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別

      2020-05-29 09:02:18許朋
      科技視界 2020年11期
      關(guān)鍵詞:手寫神經(jīng)網(wǎng)絡(luò)誤差

      許朋

      摘 要

      隨著人工智能的再次崛起,機(jī)器學(xué)習(xí)作為人工智能的一部分也被重新重視起來,數(shù)字識別技術(shù)也得到了關(guān)注并通過各種算法提高了識別準(zhǔn)確率。手寫數(shù)字識別在各個(gè)方面和領(lǐng)域發(fā)揮越來越重要的作用。本文采用包含隱含層的BP神經(jīng)網(wǎng)絡(luò)對手寫數(shù)字識別進(jìn)行實(shí)現(xiàn)。文章首先介紹BP神經(jīng)網(wǎng)絡(luò)原理及模型,并分別介紹了前向傳播,反向傳播中所用到的數(shù)學(xué)模型,然后通過BP神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì),從參數(shù)的隨機(jī)初始化開始,前向傳播,反向傳播,代價(jià)函數(shù)的偏導(dǎo)數(shù)求解及驗(yàn)證,和最終的參數(shù)優(yōu)化等完成實(shí)驗(yàn),最終得到實(shí)驗(yàn)結(jié)果,并進(jìn)行優(yōu)化,結(jié)果表明BP神經(jīng)網(wǎng)絡(luò)在手寫體數(shù)字識別方面的實(shí)際應(yīng)用價(jià)值。

      關(guān)鍵詞

      手寫數(shù)字識別;BP神經(jīng)網(wǎng)絡(luò);識別

      中圖分類號: TP391.41;TP183 ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼: A

      DOI:10.19694/j.cnki.issn2095-2457.2020.11.019

      0 引言

      在人工智能的影響下,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)也重新掀起了一股熱潮。目前人工智能包含語音識別、自然語音處理、計(jì)算機(jī)視覺、機(jī)器學(xué)習(xí)四大部分[1-2]。其中機(jī)器學(xué)習(xí)是人工智能發(fā)展最快的分支之一。

      計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,大量的數(shù)字信息在進(jìn)行處理之前需要通過一定的方式采集到計(jì)算機(jī)之中,如信件上的郵政編碼,銀行各種票據(jù)上的數(shù)字信息,試卷上的準(zhǔn)考證號,物流行業(yè)中手寫快遞單據(jù)等手寫數(shù)字的錄入等都可通過手寫體數(shù)字識別技術(shù)來進(jìn)行識別,提高效率,節(jié)省了人力。手寫數(shù)字識別方法從原理上大致可以分為基于統(tǒng)計(jì)特征分類、基于結(jié)構(gòu)特征分類、基于神經(jīng)網(wǎng)絡(luò)三大類算法[3-4]。筆者主要針對BP神經(jīng)網(wǎng)絡(luò)在手寫數(shù)字識別方面的技術(shù)進(jìn)行了matlab實(shí)現(xiàn)。

      1 BP神經(jīng)網(wǎng)絡(luò)原理及模型

      神經(jīng)網(wǎng)絡(luò)的實(shí)質(zhì)是一個(gè)給定輸入x到輸出函數(shù)y的映射函數(shù)f(X)=Y,函數(shù)的各項(xiàng)系數(shù)就是我們要通過網(wǎng)絡(luò)訓(xùn)練得到的參數(shù)θ,通過神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法將函數(shù)的系數(shù)確定下來,當(dāng)給定任意輸入x時(shí),通過神經(jīng)網(wǎng)絡(luò)計(jì)算輸出一個(gè)與之相對應(yīng)的y,至于通過訓(xùn)練輸出的結(jié)果y是否滿足我們的預(yù)期結(jié)果,這就是我們需要通過提高模型性能方面,優(yōu)化學(xué)習(xí)算法來完成的事情。

      1.1 神經(jīng)網(wǎng)絡(luò)的原理

      BP是一種反饋型學(xué)習(xí)網(wǎng)絡(luò),算法的學(xué)習(xí)過程包括兩部分,首先是信息的前向傳播,然后是通過誤差進(jìn)行的反向傳播。通過神經(jīng)網(wǎng)絡(luò)的輸入層將數(shù)據(jù)信息輸入到神經(jīng)網(wǎng)絡(luò),輸入層的各個(gè)單元將數(shù)據(jù)傳遞給隱含層各個(gè)神經(jīng)元進(jìn)行數(shù)據(jù)的內(nèi)部處理,隱含層也稱為中間層,其作用主要是信息的處理和交換,它的結(jié)構(gòu)可以是單層結(jié)構(gòu)也可以是多層結(jié)構(gòu),層數(shù)越多神經(jīng)網(wǎng)絡(luò)的復(fù)雜度就越高,隱含層將經(jīng)過內(nèi)部處理的數(shù)據(jù)信息傳遞到輸出層的各個(gè)單元,處理后的數(shù)據(jù)信息在輸出層進(jìn)行輸出,這樣就完成了前向傳播的一次訓(xùn)練[5]。反向傳播則是將神將網(wǎng)絡(luò)的輸出值與期望值相比較,計(jì)算出誤差,并利用誤差逐層向前求解的過程。

      1.2 BP神經(jīng)網(wǎng)絡(luò)模型

      神經(jīng)網(wǎng)絡(luò)的模型是許多邏輯單元按照不同的層級組織起來,首先按照前向傳播進(jìn)行逐層計(jì)算,每一層的輸出加權(quán)求和后,作為下一層輸入變量,圖1所示,為一個(gè)三層的神經(jīng)網(wǎng)絡(luò)。將需要進(jìn)行處理和計(jì)算的數(shù)據(jù)在神經(jīng)網(wǎng)絡(luò)的第一層即輸入層進(jìn)行輸入,經(jīng)過訓(xùn)練數(shù)據(jù)預(yù)測結(jié)果在由輸出層輸出。然后將輸出層輸出的結(jié)果與期望值進(jìn)行比較,傳統(tǒng)神經(jīng)網(wǎng)絡(luò)在評價(jià)性能時(shí)通常采用均方誤差[6]。其定義為:

      式(1),n為訓(xùn)練樣本總數(shù),x(i)為訓(xùn)練樣本,y為訓(xùn)練樣本的標(biāo)簽,即期望值, 為網(wǎng)絡(luò)輸出結(jié)果,參數(shù)θ即需要求解的最優(yōu)參數(shù)。

      有時(shí)神經(jīng)網(wǎng)絡(luò)在訓(xùn)練集上表現(xiàn)出很好的特性,但是,在測試集上則表現(xiàn)不好,這是因?yàn)樵谟?xùn)練網(wǎng)絡(luò)時(shí),訓(xùn)練集上出現(xiàn)了過擬合的現(xiàn)象。基于此,關(guān)于過擬合的處理方法是在代價(jià)函數(shù)后面加上正則化項(xiàng)。加入正則化項(xiàng)后的代價(jià)函數(shù)變?yōu)槭剑?)。

      式(1),式(2)是通過網(wǎng)絡(luò)最終輸出結(jié)果求解最優(yōu)值的表達(dá)式,下面我們介紹,神經(jīng)網(wǎng)絡(luò)的內(nèi)部模型。首先,我們先引入一些符號ω ?表示第j層的第i個(gè)激活單元,求解方式如式(3)。θ 表示第j層映射到第j+1層的權(quán)重矩陣,其尺寸為:以第j+1層激活單元數(shù)量為行數(shù),以第j層的激活單元數(shù)加1為列數(shù)的矩陣[7]。

      式(3)中m表示前一層即第j-1層激活單元的個(gè)數(shù)。

      2 BP神經(jīng)網(wǎng)絡(luò)手寫數(shù)字識別模型

      本節(jié)將針對本實(shí)驗(yàn)對神經(jīng)網(wǎng)絡(luò)的前向傳播,代價(jià)函數(shù),反向傳播以及代價(jià)函數(shù)偏導(dǎo)數(shù)的求解等實(shí)驗(yàn)中用到的幾個(gè)重要數(shù)學(xué)模型進(jìn)行詳細(xì)的介紹。

      2.1 前向傳播和代價(jià)函數(shù)

      本文采用圖2所示的神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。根據(jù)圖片的大小輸入層,選用的784個(gè)節(jié)點(diǎn)(不包含添加的權(quán)重為1的偏置單元),隱含層為200個(gè)節(jié)點(diǎn)(不包含添加的權(quán)重為1的偏置單元),輸出層采用10個(gè)節(jié)點(diǎn)的神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。

      根據(jù)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),本文采用將采用交叉熵?fù)p失函數(shù)作為代價(jià)函數(shù)并加入了正則化項(xiàng):

      其中,K=10表示所有可能數(shù)字的標(biāo)簽,即0到9個(gè)數(shù)字的標(biāo)簽。這里需要注意,正則化項(xiàng)中不需要對添加的為權(quán)重為1的偏置單元正則化。

      2.2 反向傳播

      通過前向傳播算法得到神經(jīng)網(wǎng)絡(luò)預(yù)測值 ,然后采用反向傳播算法,計(jì)算代價(jià)函數(shù)的偏導(dǎo)數(shù),即從輸出層的預(yù)測值和期望值之間的誤差計(jì)算開始,然后逐層的反向求出每一層的誤差,直到神經(jīng)網(wǎng)絡(luò)的第二層。

      首先我們引入sigmoid函數(shù),sigmoid函數(shù)的梯度為:

      上述公式中l(wèi)表示當(dāng)前所計(jì)算的層數(shù),j表示當(dāng)前計(jì)算層中激活單元的下標(biāo),也將是下一層第j個(gè)輸入變量的下標(biāo),i表示下一層誤差單元的下表,是受到權(quán)重矩陣中第i行影響的下一層中的誤差單元的下標(biāo)[8]。

      3 實(shí)驗(yàn)與結(jié)果分析優(yōu)化

      本文選用來自美國國家標(biāo)準(zhǔn)與技術(shù)研究所的MNIST手寫數(shù)字訓(xùn)練集。共60000張,每張大小為28*28像素的灰度圖[8]。

      首先,我們采用的是matlab中rand()函數(shù)對參數(shù)進(jìn)行初始化,ε(代碼中表示為esp)一般選用為0.001,學(xué)習(xí)速率選用0.001,Theta的初始化代碼如下:

      Theta1=rand(785,200)*(2*esp)-esp

      Theta2=rand(201,10)*(2*esp)-esp

      然后用前向傳播算法逐層計(jì)算出激活單元,利用訓(xùn)練集中對應(yīng)的數(shù)據(jù)和經(jīng)過神經(jīng)網(wǎng)絡(luò)的訓(xùn)練的預(yù)測結(jié)果得出第三層的誤差,然后采用反向傳播算法,通過該第三層的誤差,計(jì)算出第二層所有的誤差,計(jì)算出誤差矩陣G 后,再根據(jù)式(8)計(jì)算代價(jià)函數(shù)的偏導(dǎo)數(shù),并用利用數(shù)值檢驗(yàn)方法檢驗(yàn)求得的偏導(dǎo)數(shù)。計(jì)算步驟如下:

      (1)令ω (i)=x (i),通過前向傳播計(jì)算出ω (l)=1,2,3……L

      (2)通過反向傳播計(jì)算出前一層的誤差向量:δ(L)=ω(L)-y(i)

      (3)計(jì)算誤差矩陣:

      (4)數(shù)值檢驗(yàn):

      在matlab中采用fminunc()函數(shù)進(jìn)行參數(shù)的優(yōu)化。這樣需要將權(quán)重矩陣展開為向量,需采用matlab中的reshape()函數(shù)實(shí)現(xiàn)。

      通過以上步驟采用0.001學(xué)習(xí)速率,迭代50次后,精度達(dá)到94.34%。

      采用隨機(jī)失活(Dropout)對實(shí)驗(yàn)進(jìn)行優(yōu)化。隨機(jī)失活的意思是在訓(xùn)練過程使一定比例的神經(jīng)元失效,這個(gè)函數(shù)的使用場景是當(dāng)網(wǎng)絡(luò)設(shè)計(jì)比較復(fù)雜時(shí),容易出現(xiàn)過擬合現(xiàn)象,通過使用隨機(jī)失活可以減小網(wǎng)絡(luò)復(fù)雜度,有效防止過擬合[3,9]。在訓(xùn)練過程中,丟棄一定比例的神經(jīng)元,可以使神經(jīng)網(wǎng)絡(luò)中各神經(jīng)元之間的依賴性降低,從而使神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)具有更好的魯棒性。經(jīng)過優(yōu)化后實(shí)驗(yàn)精度為95.56%。

      4 結(jié)論

      BP算法在使用時(shí)表現(xiàn)出簡單、容易執(zhí)行、運(yùn)算量小等優(yōu)點(diǎn),是神經(jīng)網(wǎng)絡(luò)訓(xùn)練比較常用且相對比較成熟的算法。本文采用BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了對手寫數(shù)字的識別,介紹了具體是實(shí)現(xiàn)步驟,通過matlab編程實(shí)現(xiàn),并在實(shí)驗(yàn)后,通過加入Dropout,在一定程度上提高了神經(jīng)網(wǎng)絡(luò)訓(xùn)練結(jié)果的精度,但是由于本文神經(jīng)網(wǎng)絡(luò)復(fù)雜度不高,所以優(yōu)化效果不是很明顯。因BP神經(jīng)網(wǎng)絡(luò),存在學(xué)習(xí)效率不高,訓(xùn)練時(shí)可能出現(xiàn)局部最優(yōu)點(diǎn),參數(shù)選擇不當(dāng)容易過擬合現(xiàn)象和收斂過慢的現(xiàn)象等缺點(diǎn)。筆者將在以后的學(xué)習(xí)中繼續(xù)加強(qiáng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的相關(guān)研究,學(xué)習(xí)更具優(yōu)勢的神經(jīng)網(wǎng)絡(luò)算法,研究卷積神經(jīng)網(wǎng)絡(luò),將機(jī)器學(xué)習(xí)中常用的一些算法,如貝葉斯算法,模糊推理算法,深度置信網(wǎng)絡(luò)融入其中,進(jìn)一步提高神經(jīng)網(wǎng)絡(luò)精確度。

      參考文獻(xiàn)

      [1]Ian Goodfellow等著.深度學(xué)習(xí)(Deep Learning). 趙申劍等.譯. 人民郵電出版社,2017.

      [2]劉磊.基于多卷積層和隨機(jī)失活優(yōu)化的卷積神經(jīng)網(wǎng)絡(luò)手寫數(shù)字識別[D].哈爾濱理工大學(xué),2019.

      [3]胡君萍,傅科學(xué).基于改進(jìn)KNN算法的手寫數(shù)字識別研究[J].武漢理工大學(xué)學(xué)報(bào)(信息與管理工程版),2019,41(01):22-26.

      [4]張黎,劉爭鳴,唐軍.基于BP神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別方法的實(shí)現(xiàn)[J].自動化與儀器儀表,2015(06):169-170.

      [5]夏少杰,項(xiàng)鯤.基于BP神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別及優(yōu)化方法[J].智能物聯(lián)技術(shù),2018,1(01):19-22.

      [6]宋曉茹,吳雪,高嵩,陳超波.基于深度神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識別模擬研究[J].科學(xué)技術(shù)與工程,2019,19(05):193-196.

      [7]Nadir Murru,Rosaria Rossini. A Bayesian approach for initialization of weights in backpropagation neural net with application to character recognition[J].Neuroco mputing,2016,193.

      [8]王玲.數(shù)據(jù)挖掘?qū)W習(xí)方法[M].北京:冶金工業(yè)出版社,2017.08.

      [9]Srivastava N,Hinton G,Krizhevsky A,et al.Dropout:A Simple Way to Prevent Neural Networks from Overfitting[J].Journal of Machine Learning Research,2014,15(1):1929-1958.

      猜你喜歡
      手寫神經(jīng)網(wǎng)絡(luò)誤差
      手寫比敲鍵盤更有助于學(xué)習(xí)和記憶
      我手寫我心
      角接觸球軸承接觸角誤差控制
      哈爾濱軸承(2020年2期)2020-11-06 09:22:26
      抓住身邊事吾手寫吾心
      Beidou, le système de navigation par satellite compatible et interopérable
      神經(jīng)網(wǎng)絡(luò)抑制無線通信干擾探究
      電子制作(2019年19期)2019-11-23 08:42:00
      壓力容器制造誤差探究
      基于集成學(xué)習(xí)的MINIST手寫數(shù)字識別
      電子制作(2018年18期)2018-11-14 01:48:08
      基于神經(jīng)網(wǎng)絡(luò)的拉矯機(jī)控制模型建立
      九十億分之一的“生死”誤差
      山東青年(2016年2期)2016-02-28 14:25:41
      芮城县| 定襄县| 济阳县| 江达县| 庆城县| 清河县| 枣阳市| 梧州市| 张家口市| 邓州市| 抚宁县| 吕梁市| 安吉县| 龙川县| 衡东县| 台南县| 陕西省| 榕江县| 盈江县| 施秉县| 建湖县| 乐都县| 昭觉县| 南丹县| 贡嘎县| 溆浦县| 旺苍县| 黎川县| 永嘉县| 鄂温| 外汇| 蕉岭县| 揭西县| 资兴市| 平阴县| 荔波县| 奉贤区| 中卫市| 尤溪县| 通渭县| 桐城市|