成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的原理與在OpenCV中的應(yīng)用

韓冰 / 1256人閱讀

摘要:分工各不相同,樹突的龐大組織作為神經(jīng)元的輸入,軸突則作為輸出。這對應(yīng)的是神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的兩種狀態(tài)激活狀態(tài)和未激活狀態(tài)。輸入節(jié)點(diǎn)因?yàn)闆]有計(jì)算因?yàn)橛梅綁K表示,神經(jīng)元用深色圓形表示。模擬的能力首先考慮一個(gè)神經(jīng)元里的輸出與之間的關(guān)系。

1. 神經(jīng)網(wǎng)絡(luò)介紹 ?

神經(jīng)網(wǎng)絡(luò)的原理根本在于對人類大腦行為的神經(jīng)生物學(xué)模擬,這樣看的話克隆技術(shù)也能算一種了吧。大腦可以看做一臺精密、穩(wěn)定、計(jì)算能力超強(qiáng)的計(jì)算機(jī),其中的信息處理單元就是神經(jīng)元(Neuron)。神經(jīng)元是大腦處理信息的最小單元,它的結(jié)構(gòu)如下圖:

Figure 1. 神經(jīng)元結(jié)構(gòu)

這個(gè)圖抽象一下,由三部分組成:細(xì)胞體(Cell Body)、樹突(Dendrite)、軸突(Axon)。名字都很形象,樹突像一棵樹那樣伸展開來,軸突長而細(xì),我隱約記得某篇文章里好像曾說道軸突有2mm那么長,對于一個(gè)看不見的細(xì)胞體帶著這樣長的軸突,還是相對較長的。神經(jīng)元之間就是通過這些樹突和軸突連接進(jìn)行信息交互。分工各不相同,樹突的龐大組織作為神經(jīng)元的輸入,軸突則作為輸出。一個(gè)神經(jīng)元通過其龐大的樹突結(jié)構(gòu)從多個(gè)神經(jīng)元處接受輸入信號。同時(shí)它的軸突也會伸展向不同神經(jīng)元輸出信號。那神經(jīng)元A的樹突和另一個(gè)神經(jīng)元B的軸突之間是如何實(shí)現(xiàn)信號傳遞的呢?這就引出下一個(gè)概念:突觸(Synapse)。

Figure 2. 突觸結(jié)構(gòu)圖

軸突/樹突上的信號以電信號形式傳輸,突觸在信號傳遞的過程中會把電信號轉(zhuǎn)變成化學(xué)信號,然后通過突觸間隙傳遞到下一個(gè)神經(jīng)元的樹突,再次轉(zhuǎn)換成電信號,從而經(jīng)歷電信號-化學(xué)信號-電信號的轉(zhuǎn)變過程。

介紹完輸入輸出,下面就是神經(jīng)元的細(xì)胞體了。細(xì)胞體接收輸入信號后,合成為一個(gè)輸出,它的具體作用過程是我所不知的,但是后面在人工神經(jīng)網(wǎng)絡(luò)中可以看到用Sigmoid function來模擬它的處理過程。

這僅僅是一個(gè)信息處理單元,據(jù)估計(jì)大腦皮層擁有大約100億神經(jīng)細(xì)胞和60萬億的突觸連接,這樣的網(wǎng)絡(luò)結(jié)構(gòu)結(jié)果就是造就了大腦這樣的高效組織。大腦的能效大約是焦耳每操作每秒,而相比之下較好的計(jì)算機(jī)這一數(shù)據(jù)要指數(shù)級地增長。由此也可以看到“集群”的力量,就好像螞蟻或者蜜蜂那樣。

2. 人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network) ??

2.1 ?神經(jīng)元模型 ?

現(xiàn)在用計(jì)算技術(shù)來模擬這樣的網(wǎng)絡(luò),首先就是要實(shí)現(xiàn)一個(gè)神經(jīng)元那樣的處理單元。來看一下人造的神經(jīng)元:

Figure 3.神經(jīng)元模型

看過了前面的神經(jīng)元,這個(gè)模型就不難理解是如何模擬的。同樣,它也有多個(gè)(m)輸入,突觸以及樹突上信號傳遞的過程被簡化為加權(quán),這里下標(biāo)的順序是神經(jīng)元k的第j個(gè)輸入權(quán)重(synaptic weight)。在這里引入一個(gè)偏置項(xiàng)(bias),然后共同作為加法器(adder)的輸入。到此為止,可以看到我們是對輸入做了一個(gè)加權(quán)和計(jì)算,偏置項(xiàng)的引入實(shí)際上把加權(quán)和變成了對輸入的Affine transform。而這些突觸權(quán)重在神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程中承擔(dān)著主體作用,因?yàn)樯窠?jīng)網(wǎng)絡(luò)通過學(xué)習(xí)或者訓(xùn)練獲得的知識表達(dá)(knowledge representation)就是這些權(quán)重和偏置項(xiàng)(偏置項(xiàng)可以看做是一個(gè)輸入為+1、權(quán)重為的突觸連接)的具體取值。

加法器的輸出就是后面激活函數(shù)(Activation function)的輸入范圍,通過激活函數(shù)得到神經(jīng)元的最終輸出。激活函數(shù)有多種類型,最常見的就是Threshold函數(shù)和Sigmoid函數(shù)。

Figure 4. (a) Threshold function; ?(b) Sigmoid function

形式分別為:Threshold?

? ? ? ? ? ? ? ? ? ? ? Sigmoid?其中

激活函數(shù)的作用是把輸出壓扁(squash)到一定范圍內(nèi)。以Sigmoid函數(shù)為例,輸入從負(fù)無窮到正無窮,經(jīng)過sigmoid函數(shù)映射到(0,1)范圍,與Threshold函數(shù)不同的是它的連續(xù)性使得它的輸出可以看做是結(jié)果等于1的概率。當(dāng)v>0時(shí)輸出為1;v<0時(shí)輸出為0。這對應(yīng)的是神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的兩種狀態(tài):激活狀態(tài)和未激活狀態(tài)。

最后總結(jié)起來,神經(jīng)元模型是一個(gè)對輸入做Affine變換后經(jīng)過激活函數(shù)的數(shù)學(xué)模型。

2.2 ?網(wǎng)絡(luò)模型

人工神經(jīng)網(wǎng)絡(luò)是以層(layer)形式組織起來,包含一個(gè)輸入層、一個(gè)輸出層和一個(gè)或多個(gè)隱含層。每一層(除去輸入層)中包含多個(gè)神經(jīng)元,或者叫計(jì)算單元。輸入層只是接收輸入信號,并沒有做計(jì)算。層與層之間通過神經(jīng)連接(synaptic link)連接起來,如果神經(jīng)元與前一層的每一個(gè)神經(jīng)元之間都有連接(下圖所示),這樣的網(wǎng)絡(luò)叫做全連接網(wǎng)絡(luò)(completely-linked network),否則叫做部分連接網(wǎng)絡(luò)(partially-linked network)。

Figure 5. 神經(jīng)網(wǎng)絡(luò)模型

這樣的網(wǎng)絡(luò)包含一個(gè)4個(gè)神經(jīng)元的隱含層,一個(gè)2個(gè)神經(jīng)元的輸出層,一個(gè)包含10個(gè)輸入節(jié)點(diǎn)的輸入層。輸入節(jié)點(diǎn)因?yàn)闆]有計(jì)算因?yàn)橛梅綁K表示,神經(jīng)元用深色圓形表示。

2.3 ?模擬的能力

首先考慮一個(gè)神經(jīng)元里的輸出y與x之間的關(guān)系。激活函數(shù)的曲線在上面圖4b中已經(jīng)畫出來,當(dāng)輸入由x變?yōu)閍x時(shí),曲線的平滑度將會隨之變化:a越大函數(shù)曲線越陡,當(dāng)a趨于正無窮時(shí)sigmoid函數(shù)逼近到Threshold函數(shù)。而如果輸入由x變?yōu)閤+b時(shí),對曲線做平移。因而單個(gè)神經(jīng)元是對輸入的非線性映射。如圖5中的網(wǎng)絡(luò)模型,如果只有一個(gè)輸入x,這個(gè)只包含一個(gè)隱含層的網(wǎng)絡(luò)結(jié)構(gòu)可以逼近x任意的非線性函數(shù)(隱含層神經(jīng)元數(shù)目未必為4)。因而一個(gè)大型的全連接網(wǎng)絡(luò)的模擬能力是可以想見的。

2.4 ?計(jì)算的能力

利用網(wǎng)絡(luò)模型計(jì)算時(shí),由輸入層開始,每一個(gè)節(jié)點(diǎn)接收來自前一層中節(jié)點(diǎn)的輸出,然后將計(jì)算結(jié)果傳遞到后面一層直到最后的輸出層,叫做前向傳播過程。

2.5 ?訓(xùn)練---BP

網(wǎng)絡(luò)的訓(xùn)練目的就是要找到網(wǎng)絡(luò)中各個(gè)突觸連接的權(quán)重和偏置項(xiàng)。作為有監(jiān)督學(xué)習(xí)的一種,它的訓(xùn)練過程是通過不斷反饋當(dāng)前網(wǎng)絡(luò)計(jì)算結(jié)果與訓(xùn)練數(shù)據(jù)的label之間的誤差來修正網(wǎng)絡(luò)權(quán)重。當(dāng)滿足某個(gè)條件時(shí)退出訓(xùn)練。

首先取一個(gè)訓(xùn)練樣例,輸入經(jīng)過初始化后的網(wǎng)絡(luò)得到輸出,然后計(jì)算輸出與樣例的desired output的誤差,然后計(jì)算該誤差對輸出層輸入的導(dǎo)數(shù),再根據(jù)對輸入層導(dǎo)數(shù)計(jì)算誤差函數(shù)對隱含層-輸出層權(quán)重的導(dǎo)數(shù),根據(jù)此導(dǎo)數(shù)修正隱含層-輸出層權(quán)重。繼續(xù)這樣的過程,計(jì)算誤差函數(shù)對輸入層-隱含層權(quán)重的導(dǎo)數(shù),并修正輸入層-隱含層權(quán)重……直到滿足退出條件(誤差精度或無調(diào)整),訓(xùn)練過程結(jié)束。

3. ?OpenCV中的神經(jīng)網(wǎng)絡(luò)

OpenCV中封裝了類CvANN_MLP,因而神經(jīng)網(wǎng)絡(luò)利用很方便。

首先構(gòu)建一個(gè)網(wǎng)絡(luò)模型:

? ? CvANN_MLP ann;

? ? Mat structure(1,3,CV_32SC1);

? ? structure.at(0) = 10;

? ? structure.at(0) = 4;

? ? structure.at(0) = 2; ?// structure中表示每一層中神經(jīng)元數(shù)目

? ? ann.create(structure,CvANN_MLP::SIGMOID_SYM,1,1); ?// 很明顯第二個(gè)參數(shù)選擇的是激活函數(shù)的類型

然后需要對訓(xùn)練數(shù)據(jù)放在兩個(gè)Mat結(jié)構(gòu)中。第一個(gè)是存儲訓(xùn)練數(shù)據(jù)的Mat train,第二個(gè)是存儲類別的Mat label。其中,train的每一行代表一個(gè)訓(xùn)練樣例,label的對應(yīng)的一行是訓(xùn)練樣例的類別。比如有25個(gè)屬于7個(gè)類別的訓(xùn)練樣例,每個(gè)樣例為16維向量。則train結(jié)構(gòu)為25*16,label結(jié)構(gòu)為25*7。需要解釋的是類別數(shù)據(jù),label中一行表示樣例所處類別,如果屬于第一類則為(1,0,0,0,0,0,0),第二類為(0,1,0,0,0,0,0)...

接下來需要給ann提供一個(gè)樣例的權(quán)重向量Mat weight,它標(biāo)記的是訓(xùn)練樣例的權(quán)重,這里都初始化為1:

Mat weight;

?weight.ones(1,25,CV_32FC1);

接下來可以做訓(xùn)練了:

ann.train(train,label,weight);

訓(xùn)練結(jié)束后用ann來做分類,輸入為Mat testSample,testSample為1*16的向量,輸出為Mat output,output為1*7向量:

ann.predict(testSample,output);

最后找到output中的較大值就知道所屬類別maxPos了:

int maxPos;

double maxVal;

minMaxLoc(output,0,&maxVal,0,&maxPos);

歡迎加入本站公開興趣群

商業(yè)智能與數(shù)據(jù)分析群

興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價(jià)值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報(bào)表系統(tǒng)等全方位知識

QQ群:81035754

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/4351.html

相關(guān)文章

  • opencv+mtcnn+facenet+python+tensorflow 實(shí)現(xiàn)實(shí)時(shí)人臉識別

    摘要:實(shí)現(xiàn)實(shí)時(shí)人臉識別本文記錄了在學(xué)習(xí)深度學(xué)習(xí)過程中,使用,開發(fā)環(huán)境為,實(shí)現(xiàn)局域網(wǎng)連接手機(jī)攝像頭,對目標(biāo)人員進(jìn)行實(shí)時(shí)人臉識別,效果并非特別好,會繼續(xù)改進(jìn)這里是項(xiàng)目地址項(xiàng)目中用到的大文件地址如果各位老爺看完覺得對你有幫助的話,請給個(gè)小星星,當(dāng)前時(shí)間 opencv+mtcnn+facenet+python+tensorflow 實(shí)現(xiàn)實(shí)時(shí)人臉識別 Abstract:本文記錄了在學(xué)習(xí)深度學(xué)習(xí)過程中,...

    megatron 評論0 收藏0
  • 首次公開,整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<