0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

新機(jī)器視覺 ? 來源:CSDN ? 作者:CSDN ? 2021-05-11 09:40 ? 次閱讀

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

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

34c7fdb8-b1d6-11eb-bf61-12bb97331649.jpg

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)元處接受輸入信號(hào)。同時(shí)它的軸突也會(huì)伸展向不同神經(jīng)元輸出信號(hào)。那神經(jīng)元A的樹突和另一個(gè)神經(jīng)元B的軸突之間是如何實(shí)現(xiàn)信號(hào)傳遞的呢?這就引出下一個(gè)概念:突觸(Synapse)。

34d34cc2-b1d6-11eb-bf61-12bb97331649.jpg

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

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

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

這僅僅是一個(gè)信息處理單元,據(jù)估計(jì)大腦皮層擁有大約100億神經(jīng)細(xì)胞和60萬億的突觸連接,這樣的網(wǎng)絡(luò)結(jié)構(gòu)結(jié)果就是造就了大腦這樣的高效組織。大腦的能效大約是34e9c362-b1d6-11eb-bf61-12bb97331649.jpg焦耳每操作每秒,而相比之下最好的計(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)元:

34f4d504-b1d6-11eb-bf61-12bb97331649.jpg

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

看過了前面的神經(jīng)元,這個(gè)模型就不難理解是如何模擬的。同樣,它也有多個(gè)(m)輸入,突觸以及樹突上信號(hào)傳遞的過程被簡化為加權(quán)34feec7e-b1d6-11eb-bf61-12bb97331649.jpg,這里下標(biāo)的順序是神經(jīng)元k的第j個(gè)輸入權(quán)重(synaptic weight)。在這里引入一個(gè)偏置項(xiàng)(bias)35099552-b1d6-11eb-bf61-12bb97331649.jpg,然后共同作為加法器(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)練獲得的知識(shí)表達(dá)(knowledge representation)就是這些權(quán)重和偏置項(xiàng)(偏置項(xiàng)可以看做是一個(gè)輸入為+1、權(quán)重為35099552-b1d6-11eb-bf61-12bb97331649.jpg的突觸連接)的具體取值。

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

351d9dc2-b1d6-11eb-bf61-12bb97331649.jpg

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

形式分別為:Threshold

35286770-b1d6-11eb-bf61-12bb97331649.jpg

Sigmoid

3531a98e-b1d6-11eb-bf61-12bb97331649.jpg

其中

353b80ee-b1d6-11eb-bf61-12bb97331649.jpg

激活函數(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ì)算單元。輸入層只是接收輸入信號(hào),并沒有做計(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)。

3547b08a-b1d6-11eb-bf61-12bb97331649.jpg

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í),曲線的平滑度將會(huì)隨之變化: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è)是存儲(chǔ)訓(xùn)練數(shù)據(jù)的Mat train,第二個(gè)是存儲(chǔ)類別的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);

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4717

    瀏覽量

    100020
  • 神經(jīng)元
    +關(guān)注

    關(guān)注

    1

    文章

    363

    瀏覽量

    18403
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    622

    瀏覽量

    41091

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

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    不同類型神經(jīng)網(wǎng)絡(luò)回歸任務(wù)的應(yīng)用

    神經(jīng)網(wǎng)絡(luò)是一種強(qiáng)大的機(jī)器學(xué)習(xí)模型,可以用于各種任務(wù),包括回歸。本文中,我們將討論不同類型的神經(jīng)網(wǎng)絡(luò),以及它們回歸任務(wù)
    的頭像 發(fā)表于 07-11 10:27 ?542次閱讀

    BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)機(jī)制

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network),即反向傳播神經(jīng)網(wǎng)絡(luò),是一種基于梯度下降算法的多層前饋神經(jīng)網(wǎng)絡(luò),其學(xué)習(xí)機(jī)制的核心在于通過反向傳播算法
    的頭像 發(fā)表于 07-10 15:49 ?219次閱讀

    BP神經(jīng)網(wǎng)絡(luò)語言特征信號(hào)分類的應(yīng)用

    Network),即反向傳播神經(jīng)網(wǎng)絡(luò),作為一種強(qiáng)大的多層前饋神經(jīng)網(wǎng)絡(luò),憑借其優(yōu)異的非線性映射能力和高效的學(xué)習(xí)機(jī)制,語言特征信號(hào)分類展現(xiàn)
    的頭像 發(fā)表于 07-10 15:44 ?191次閱讀

    BP神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的關(guān)系

    BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Network)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡稱CNN)是兩種人工智能和機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 07-10 15:24 ?588次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)視頻處理的應(yīng)用

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)作為深度學(xué)習(xí)的代表算法之一,計(jì)算機(jī)視覺領(lǐng)域取得了顯著成就,特別是視頻處理方面。本文將深入探討卷積
    的頭像 發(fā)表于 07-09 15:53 ?321次閱讀

    rnn是遞歸神經(jīng)網(wǎng)絡(luò)還是循環(huán)神經(jīng)網(wǎng)絡(luò)

    RNN(Recurrent Neural Network)是循環(huán)神經(jīng)網(wǎng)絡(luò),而非遞歸神經(jīng)網(wǎng)絡(luò)。循環(huán)神經(jīng)網(wǎng)絡(luò)是一種具有時(shí)間序列特性的神經(jīng)網(wǎng)絡(luò),能夠處理序列數(shù)據(jù),具有記憶功能。以下是
    的頭像 發(fā)表于 07-05 09:52 ?385次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的區(qū)別

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是深度學(xué)習(xí)領(lǐng)域中兩種非常重要的神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-04 14:24 ?516次閱讀

    循環(huán)神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)的區(qū)別

    循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,簡稱RNN)和遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,簡稱RvNN)是深度學(xué)習(xí)兩種重要的
    的頭像 發(fā)表于 07-04 14:19 ?429次閱讀

    深度神經(jīng)網(wǎng)絡(luò)與基本神經(jīng)網(wǎng)絡(luò)的區(qū)別

    探討深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks, DNNs)與基本神經(jīng)網(wǎng)絡(luò)(通常指傳統(tǒng)神經(jīng)網(wǎng)絡(luò)或前向神經(jīng)網(wǎng)絡(luò))的區(qū)別時(shí),我們需
    的頭像 發(fā)表于 07-04 13:20 ?338次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)的區(qū)別

    深度學(xué)習(xí)領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks, RNN)是兩種
    的頭像 發(fā)表于 07-03 16:12 ?978次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    不同的神經(jīng)網(wǎng)絡(luò)模型,它們結(jié)構(gòu)、原理、應(yīng)用等方面都存在一定的差異。本文將從多個(gè)方面對這兩種神經(jīng)網(wǎng)絡(luò)進(jìn)行詳細(xì)的比較和分析。 引言 神經(jīng)網(wǎng)絡(luò)是一種模擬人腦
    的頭像 發(fā)表于 07-02 14:24 ?1037次閱讀

    神經(jīng)網(wǎng)絡(luò)在數(shù)學(xué)建模的應(yīng)用

    數(shù)學(xué)建模是一種利用數(shù)學(xué)方法和工具來描述和分析現(xiàn)實(shí)世界問題的過程。神經(jīng)網(wǎng)絡(luò)是一種模擬人腦神經(jīng)元結(jié)構(gòu)和功能的計(jì)算模型,可以用于解決各種復(fù)雜問題。在數(shù)學(xué)建模神經(jīng)網(wǎng)絡(luò)可以作為一種有效的工具
    的頭像 發(fā)表于 07-02 11:29 ?539次閱讀

    神經(jīng)網(wǎng)絡(luò)圖像識(shí)別的應(yīng)用

    隨著人工智能技術(shù)的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)圖像識(shí)別領(lǐng)域的應(yīng)用日益廣泛。神經(jīng)網(wǎng)絡(luò)以其強(qiáng)大的特征提取和分類能力,為圖像識(shí)別帶來了革命性的進(jìn)步。本文將詳細(xì)介紹神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-01 14:19 ?412次閱讀

    神經(jīng)網(wǎng)絡(luò)的激活函數(shù)有哪些

    神經(jīng)網(wǎng)絡(luò),激活函數(shù)是一個(gè)至關(guān)重要的組成部分,它決定了神經(jīng)元對于輸入信號(hào)的反應(yīng)方式,為神經(jīng)網(wǎng)絡(luò)引入了非線性因素,使得
    的頭像 發(fā)表于 07-01 11:52 ?386次閱讀

    詳解深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用

    如今的網(wǎng)絡(luò)時(shí)代,錯(cuò)綜復(fù)雜的大數(shù)據(jù)和網(wǎng)絡(luò)環(huán)境,讓傳統(tǒng)信息處理理論、人工智能與人工神經(jīng)網(wǎng)絡(luò)都面臨巨大的挑戰(zhàn)。近些年,深度學(xué)習(xí)逐漸走進(jìn)人們的視線
    的頭像 發(fā)表于 01-11 10:51 ?1610次閱讀
    詳解深度<b class='flag-5'>學(xué)習(xí)</b>、<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>與卷積<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的應(yīng)用