A. 如何通過人工神經網路實現圖像識別
神經網路實現圖像識別的過程很復雜。但是大概過程很容易理解。我也是節選一篇圖像識別技術的文章,大概說一下。
圖像識別技術主要是通過卷積神經網畝答絡來實現的。這種神經網路的優勢在於,它利用了「同一圖像中相冊耐族鄰像素的強關聯性和強相似度」這一原理。具體而言就是,在一張圖像中的兩個相鄰像素,比圖像中兩個分開的像素更具有關聯性。但是,在一個常規的神經網路中,每個像素都被連接到了單獨的神經元。這樣一來,計算負擔自然加重了。卷積神經網路通過削減許多不必要的連接來解決圖像識別技術中的這一問題。運用圖像識別技術中的術語來說就是,卷積神經網路按照關聯程度篩選不必要的連接,進而使圖像識別過程在計算上更具有可操作性。卷積神經網路有意地限制了圖像識別時候的連接,讓一個神經元只接受來自之前圖層的小分段的輸入(假設是3×3或5×5像素),避免了過重的計算負擔。因此,每一個神經元只需要負責處理圖像的一小部分。大大加快了速度和准確率。
卷積神經網路在實施的過程中,實際上是分為兩層,一個是卷積層,一個是匯聚層,簡單理解就是
卷積層將圖片分散成一個一個或者3*3/5*5的小像素塊,然後把這些輸出值排列在圖組中,用數字表示照片中各個區域的內容,數軸分別代表高度州弊、寬度和顏色。那麼,我們就得到了每一個圖塊的三維數值表達。匯聚層是將這個三維(或是四維)圖組的空間維度與采樣函數結合起來,輸出一個僅包含了圖像中相對重要的部分的聯合數組。這一聯合數組不僅能使卷積神經網路計算負擔最小化,還能有效避免過度擬合的問題。
以上大概就是使用卷積神經網路進行圖像識別的過程。具體可以關注ATYUN人工智慧平台的文章:揭秘圖像識別技術,機器如何利用卷積神經網路「看見」這個世界
B. 神經網路如何識別和編碼性別
神經網路模擬人腦中的神經元,神經元相互連接。每個神經元接收數據,並將判斷過程中產生的信號傳輸到下一個神經元,該神經元逐層傳輸,最終達到識別的目的,與其他模型不同,神經網路很像模糊統計預測模型。由於這一特點,其適應性非常強。只要有充足的數據和充足的神經元,就可以實現識別,決策,預測等功能。
其實人工神經網路他是一種簡單的數學模型,它將類似於大腦神經突觸連接的結構應用於信息處理。因為在工程和學術界裡面,它也經常被直接稱為神經網路或准神經網路。神經網路是一種操作模型,它由大量的節點或神經元及其相互連接組成,每個節點代表一個稱為激勵函數的特定輸出函數。
C. 遺傳神經網路識別原理
4.3.1 遺傳BP簡介
遺傳識別是遺傳演算法+神經網路的一種新興的尋優技術,適合於復雜的、疊加的非線性系統的辨識描述。神經網路演算法是當前較為成熟的識別分類方法,但網路權值的訓練一直存在著缺陷。為此結合具體應用,在對遺傳演算法進行改進的基礎上,本文採用了一種基於遺傳學習權值的神經網路識別方法,並取得了較好的效果。
盡管常規遺傳演算法是穩健的,但針對一個具體問題遺傳演算法只有和其他方法(或稱原有演算法)有效地結合在一起,組成一個新的混合演算法,才能在實際中得到廣泛應用。混合演算法既要保持原有演算法的長處,又要保持遺傳演算法的優點,因此常規遺傳演算法中的適應值函數、編碼、遺傳運算元等必須做適當的修改以適應混合演算法的要求。
4.3.1.1 適應值信息
常規演算法中,適應值常被表示為全局極小,用歐氏距離來實現。例如,適應值常被表示為如下形式:
圖4-5 改進的 GABP計算流程圖
GABP的計算過程圖如圖4-5所示。
D. 卷積神經網路CNN在圖像識別問題應用綜述(20191219)
這兩天在公司做PM實習,主要是自學一些CV的知識,以了解產品在解決一些在圖像識別、圖像搜索方面的問題,學習的主要方式是在知網檢索了6.7篇國內近3年計算機視覺和物體識別的碩博士論文。由於時間關系,後面還會繼續更新圖片相似度計算(以圖搜圖)等方面的學習成果
將這兩天的學習成果在這里總結一下。你將會看到計算機視覺在解決特定物體識別問題(主要是卷積神經網路CNNs)的基礎過程和原理,但這里不會深入到技術的實現層面。
計算機視覺(Computer vision)是一門研究如何使機器「看」的科學,更進一步的說,就是指用攝影機和計算機代替人眼對目標進行識別、跟蹤和測量等機器視覺,並進一步做圖像處理,用計算機處理成為更適合人眼觀察或傳送給儀器檢測的圖像。
————維基網路
通常而言,計算機視覺的研究包括三個層次:
(1)底層特徵的研究:
這一層次的研究主要聚焦如何高效提取出圖像對象具有判別性能的特徵,具體的研究內容通常包括:物體識別、字元識別等
(2)中層語義特徵的研究:
該層次的研究在於在識別出對象的基礎上,對其位置、邊緣等信息能夠准確區分。現在比較熱門的:圖像分割;語義分割;場景標注等,都屬於該領域的范疇
(3)高層語義理解:
這一層次建立在前兩層的基礎上,其核心在於「理解」一詞。 目標在於對復雜圖像中的各個對象完成語義級別的理解。這一層次的研究常常應用於:場景識別、圖像摘要生成及圖像語義回答等。
而我研究的問題主要隸屬於底層特徵和中層語義特徵研究中的物體識別和場景標注問題。
人類的視覺工作模式是這樣的:
首先,我們大腦中的神經元接收到大量的信息微粒,但我們的大腦還並不能處理它們。
於是接著神經元與神經元之間交互將大量的微粒信息整合成一條又一條的線。
接著,無數條線又整合成一個個輪廓。
最後多個輪廓累加終於聚合我們現在眼前看到的樣子。
計算機科學受到神經科學的啟發,也採用了類似的工作方式。具體而言,圖像識別問題一般都遵循下面幾個流程
(1)獲取底層信息。獲取充分且清潔的高質量數據往往是圖像識別工作能否成功的關鍵所在
(2)數據預處理工作,在圖像識別領域主要包括四個方面的技術:去噪處理(提升信噪比)、圖像增強和圖像修復(主要針對不夠清晰或有破損缺失的圖像);歸一化處理(一方面是為了減少開銷、提高演算法的性能,另一方面則是為了能成功使用深度學習等演算法,這類演算法必須使用歸一化數據)。
(3)特徵提取,這一點是該領域的核心,也是本文的核心。圖像識別的基礎是能夠提取出足夠高質量,能體現圖像獨特性和區分度的特徵。
過去在10年代之前我們主要還是更多的使用傳統的人工特徵提取方法,如PCALCA等來提取一些人工設計的特徵,主要的方法有(HOG、LBP以及十分著名的SIFT演算法)。但是這些方法普遍存在(a)一般基於圖像的一些提層特徵信息(如色彩、紋理等)難以表達復雜的圖像高層語義,故泛化能力普遍比較弱。(b)這些方法一般都針對特定領域的特定應用設計,泛化能力和遷移的能力大多比較弱。
另外一種思路是使用BP方法,但是畢竟BP方法是一個全連接的神經網路。這以為這我們非常容易發生過擬合問題(每個元素都要負責底層的所有參數),另外也不能根據樣本對訓練過程進行優化,實在是費時又費力。
因此,一些研究者開始嘗試把諸如神經網路、深度學習等方法運用到特徵提取的過程中,以十幾年前深度學習方法在業界最重要的比賽ImageNet中第一次戰勝了SIFT演算法為分界線,由於其使用權重共享和特徵降采樣,充分利用了數據的特徵。幾乎每次比賽的冠軍和主流都被深度學習演算法及其各自改進型所佔領。其中,目前使用較多又最為主流的是CNN演算法,在第四部分主要也研究CNN方法的機理。
上圖是一個簡易的神經網路,只有一層隱含層,而且是全連接的(如圖,上一層的每個節點都要對下一層的每個節點負責。)具體神經元與神經元的作用過程可見下圖。
在諸多傳統的神經網路中,BP演算法可能是性能最好、應用最廣泛的演算法之一了。其核心思想是:導入訓練樣本、計算期望值和實際值之間的差值,不斷地調整權重,使得誤差減少的規定值的范圍內。其具體過程如下圖:
一般來說,機器學習又分成淺層學習和深度學習。傳統的機器學習演算法,如SVM、貝葉斯、神經網路等都屬於淺層模型,其特點是只有一個隱含層。邏輯簡單易懂、但是其存在理論上缺乏深度、訓練時間較長、參數很大程度上依賴經驗和運氣等問題。
如果是有多個隱含層的多層神經網路(一般定義為大於5層),那麼我們將把這個模型稱為深度學習,其往往也和分層訓練配套使用。這也是目前AI最火的領域之一了。如果是淺層模型的問題在於對一個復雜函數的表示能力不夠,特別是在復雜問題分類情況上容易出現分類不足的弊端,深度網路的優勢則在於其多層的架構可以分層表示邏輯,這樣就可以用簡單的方法表示出復雜的問題,一個簡單的例子是:
如果我們想計算sin(cos(log(exp(x)))),
那麼深度學習則可分層表示為exp(x)—>log(x)—>cos(x)—>sin(x)
圖像識別問題是物體識別的一個子問題,其魯棒性往往是解決該類問題一個非常重要的指標,該指標是指分類結果對於傳入數據中的一些轉化和扭曲具有保持不變的特性。這些轉化和扭曲具體主要包括了:
(1)噪音(2)尺度變化(3)旋轉(4)光線變化(5)位移
該部分具體的內容,想要快速理解原理的話推薦看[知乎相關文章] ( https://www.hu.com/search?type=content&q=CNN ),
特別是其中有些高贊回答中都有很多動圖和動畫,非常有助於理解。
但核心而言,CNN的核心優勢在於 共享權重 以及 感受野 ,減少了網路的參數,實現了更快的訓練速度和同樣預測結果下更少的訓練樣本,而且相對於人工方法,一般使用深度學習實現的CNN演算法使用無監督學習,其也不需要手工提取特徵。
CNN演算法的過程給我的感覺,個人很像一個「擦玻璃」的過程。其技術主要包括了三個特性:局部感知、權重共享和池化。
CNN中的神經元主要分成了兩種:
(a)用於特徵提取的S元,它們一起組成了卷積層,用於對於圖片中的每一個特徵首先局部感知。其又包含很關鍵的閾值參數(控制輸出對輸入的反映敏感度)和感受野參數(決定了從輸入層中提取多大的空間進行輸入,可以簡單理解為擦玻璃的抹布有多大)
(b)抗形變的C元,它們一起組成了池化層,也被稱為欠采樣或下采樣。主要用於特徵降維,壓縮數據和參數的數量,減小過擬合,同時提高模型的容錯性。
(c*)激活函數,及卷積層輸出的結果要經過一次激勵函數才會映射到池化層中,主要的激活函數有Sigmoid函數、Tanh函數、ReLU、Leaky ReLU、ELU、Maxout等。
也許你會抱有疑問,CNN演算法和傳統的BP演算法等究竟有什麼區別呢。這就會引出區域感受野的概念。在前面我們提到,一個全連接中,較高一層的每個神經元要對低層的每一個神經元負責,從而導致了過擬合和維度災難的問題。但是有了區域感受野和,每個神經元只需要記錄一個小區域,而高層會把這些信息綜合起來,從而解決了全連接的問題。
了解區域感受野後,你也許會想,區域感受野的底層神經元具體是怎麼聚合信息映射到上一層的神經元呢,這就要提到重要的卷積核的概念。這個過程非常像上面曾提到的「神經元與神經元的聯系」一圖,下面給大家一個很直觀的理解。
上面的這個過程就被稱為一個卷積核。在實際應用中,單特徵不足以被系統學習分類,因此我們往往會使用多個濾波器,每個濾波器對應1個卷積核,也對應了一個不同的特徵。比如:我們現在有一個人臉識別應用,我們使用一個卷積核提取出眼睛的特徵,然後使用另一個卷積核提取出鼻子的特徵,再用一個卷積核提取出嘴巴的特徵,最後高層把這些信息聚合起來,就形成了分辨一個人與另一個人不同的判斷特徵。
現在我們已經有了區域感受野,也已經了解了卷積核的概念。但你會發現在實際應用中還是有問題:
給一個100 100的參數空間,假設我們的感受野大小是10 10,那麼一共有squar(1000-10+1)個,即10的六次方個感受野。每個感受野中就有100個參數特徵,及時每個感受野只對應一個卷積核,那麼空間內也會有10的八次方個次數,,更何況我們常常使用很多個卷積核。巨大的參數要求我們還需要進一步減少權重參數,這就引出了權重共享的概念。
用一句話概括就是,對同一個特徵圖,每個感受野的卷積核是一樣的,如這樣操作後上例只需要100個參數。
池化是CNN技術的最後一個特性,其基本思想是: 一塊區域有用的圖像特徵,在另一塊相似的區域中很可能仍然有用。即我們通過卷積得到了大量的邊緣EDGE數據,但往往相鄰的邊緣具有相似的特性,就好像我們已經得到了一個強邊緣,再擁有大量相似的次邊緣特徵其實是沒有太大增量價值的,因為這樣會使得系統里充斥大量冗餘信息消耗計算資源。 具體而言,池化層把語義上相似的特徵合並起來,通過池化操作減少卷積層輸出的特徵向量,減少了參數,緩解了過擬合問題。常見的池化操作主要包括3種:
分別是最大值池化(保留了圖像的紋理特徵)、均值池化(保留了圖像的整體特徵)和隨機值池化。該技術的弊端是容易過快減小數據尺寸,目前趨勢是用其他方法代替池化的作用,比如膠囊網路推薦採用動態路由來代替傳統池化方法,原因是池化會帶來一定程度上表徵的位移不變性,傳統觀點認為這是一個優勢,但是膠囊網路的作者Hinton et al.認為圖像中位置信息是應該保留的有價值信息,利用特別的聚類評分演算法和動態路由的方式可以學習到更高級且靈活的表徵,有望沖破目前卷積網路構架的瓶頸。
CNN總體來說是一種結構,其包含了多種網路模型結構,數目繁多的的網路模型結構決定了數據擬合能力和泛化能力的差異。其中的復雜性對用戶的技術能力有較高的要求。此外,CNN仍然沒有很好的解決過擬合問題和計算速度較慢的問題。
該部分的核心參考文獻:
《深度學習在圖像識別中的應用研究綜述》鄭遠攀,李廣陽,李曄.[J].計算機工程與應用,2019,55(12):20-36.
深度學習技術在計算機圖像識別方面的領域應用研究是目前以及可預見的未來的主流趨勢,在這里首先對深度學習的基本概念作一簡介,其次對深度學習常用的結構模型進行概述說明,主要簡述了深度信念網路(DBN)、卷積神經網路(CNN)、循環神經網路(RNN)、生成式對抗網路(GAN)、膠囊網路(CapsNet)以及對各個深度模型的改進模型做一對比分析。
深度學習按照學習架構可分為生成架構、判別架構及混合架構。
其生成架構模型主要包括:
受限波爾茲曼機、自編碼器、深層信念網路等。判別架構模型主要包括:深層前饋網路、卷積神經網路等。混合架構模型則是這兩種架構的集合。深度學習按數據是否具有標簽可分為非監督學習與監督學習。非監督學習方法主要包括:受限玻爾茲曼機、自動編碼器、深層信念網路、深層玻爾茲曼機等。
監督學習方法主要包括:深層感知器、深層前饋網路、卷積神經網路、深層堆疊網路、循環神經網路等。大量實驗研究表明,監督學習與非監督學習之間無明確的界限,如:深度信念網路在訓練過程中既用到監督學習方法又涉及非監督學習方法。
[1]周彬. 多視圖視覺檢測關鍵技術及其應用研究[D].浙江大學,2019.
[2]鄭遠攀,李廣陽,李曄.深度學習在圖像識別中的應用研究綜述[J].計算機工程與應用,2019,55(12):20-36.
[3]逄淑超. 深度學習在計算機視覺領域的若干關鍵技術研究[D].吉林大學,2017.
[4]段萌. 基於卷積神經網路的圖像識別方法研究[D].鄭州大學,2017.
[5]李彥冬. 基於卷積神經網路的計算機視覺關鍵技術研究[D].電子科技大學,2017.
[6]李衛. 深度學習在圖像識別中的研究及應用[D].武漢理工大學,2014.
[7]許可. 卷積神經網路在圖像識別上的應用的研究[D].浙江大學,2012.
[8]CSDN、知乎、機器之心、維基網路
E. 第五章 神經網路
神經網路 :神經網路是由具有適應性的簡單單元組成的廣泛並行互連的網路,它的組織能夠模擬生物神經系統對真實世界物體所作出的交互反應。
神經網路中最基本的成分便是 神經元模型 。
M-P神經元模型:
感知機由兩層神經元組成,分別為輸入層、輸出層。
以下是具體過程:
多層神經網路的拓撲結構如圖:
如上圖可知,多層網路由輸入層、隱含層和輸出層組成,頂層是輸出層,底層是輸入層,中間的便是隱含層。隱含層與輸出層都具有功能神經元。
多層前饋神經網路的結構需要滿足:
1、每層神經元必須與下一層完全互連
2、神經元之間不存在同層連接
3、神經元不可跨層連接
只需包含一個足夠多神經元的隱層,就能以任意精度逼近任意復雜度的連續函數
BP神經網路由於學習能力太強大比較榮譽造成過擬合問題,故有兩種策略來減緩過擬合的問題:
1、早停:將數據分成訓練集和驗證集,訓練集學習,驗證集評估性能,在訓練過程中,若訓練集的累積誤差降低,而驗證集的累積誤差提高,則終止訓練;
2、引入正則化:其基本思想是在誤差目標函數中增加一個用於描述網路復雜程度的部分,有如連接權和閾值的平方和:
其中λ∈(0,1)用於對累積經驗誤差與網路復雜度這兩項進行折中,常通過交叉驗證法來估計。
神經網路的訓練過程可看作一個參數尋優的過程,即尋找到適當的參數使得E最小。於是我們時常會談及「全局最小」和「局部最小」。
1、全局最小:即全局最小解,在參數空間中,所有其他點的誤差函數值均大於該點;
2、局部最小:即局部最小解,在參數空間中,其鄰近的點的誤差函數值均大於該點。
我們要達到局部極小點,很容易,只要滿足梯度為零的點便是了,局部極小點可以有多個,但全局最小點只有一個。顯然,我們追求的是全局最小,而非局部極小,於是人們通常採用以下策略來試圖「跳出」局部極小,使其接近全局最小:
1、以多組不同參數值初始化多個神經網路,按標准方法訓練,在迭代停止後,取其中誤差最小的解作為最終參數;
2、使用隨機梯度下降(在計算梯度時加入了隨機因素),使得在局部最小時,計算的梯度仍可能不為0,從而可能跳出局部極小,繼續進行迭代;
3、「模擬退火」技術,在每一步都以一定的概率接受比當前解更差的結果,但接受「次優解」的概率要隨著迭代進行,時間推移而逐漸減低以確保演算法的穩定。
1、RBF網路
單隱層前饋神經網路 ,使用徑向基函數作為隱層神經元激活函數,輸出層是對隱層神經元輸出的線性組合。RBF網路可表示為:
2、ART網路
競爭型學習 (神經網路中一種常用的 無監督學習 策略),由 比較層、識別層、識別閾值和重置模塊 組成。接收到比較層的輸入信號後,識別層神經元相互競爭以產生獲勝神經元,最簡單的方式就是計算輸入向量與每個識別層神經元所對應的模式類代表向量間的距離,距離小者獲勝。若獲勝神經元對應的代表向量與輸入向量間 相似度大於識別閾值 ,則將輸入樣本歸為該代表向量所屬類別,網路 連接權 也會進行 更新 以保證後面接收到相似的輸入樣本時該模式類會計算出更大的相似度,使得這樣的樣本能夠歸於一類;如果 相似度不大於識別閾值 ,則 重置模塊 會在 識別層 加一個神經元,其 代表向量 就 設置 為當前 輸入向量 。
3、SOM網路
競爭型學習的無監督神經網路 ,將高維輸入數據映射到低維空間(通常是二維),且保持輸入數據在高維空間的拓撲結構。
4、級聯相關網路
結構自適應網路 。
5、Elman網路
遞歸神經網路 。
6、Boltzmann機
基於能量的模型,其神經元分為顯層與隱層,顯層用於數據輸入輸出,隱層被理解為數據的內在表達。其神經元皆為布爾型,1為激活,0為抑制。
理論上,參數越多的模型其復雜程度越高,能完成更加復雜的學習任務。但是復雜模型的訓練效率低下,容易過擬合。但由於大數據時代、雲計算,計算能力大幅提升緩解了訓練效率低下,而訓練數據的增加則可以降低過擬合風險。
於是如何增加模型的復雜程度呢?
1、增加隱層數;
2、增加隱層神經元數.
如何有效訓練多隱層神經網路?
1、無監督逐層訓練:每次訓練一層隱節點,把上一層隱節點的輸出當作輸入來訓練,本層隱結點訓練好後,輸出再作為下一層的輸入來訓練,這稱為預訓練,全部預訓練完成後,再對整個網路進行微調。「預訓練+微調」即把大量的參數進行分組,先找出每組較好的設置,再基於這些局部最優的結果來訓練全局最優;
2、權共享:令同一層神經元使用完全相同的連接權,典型的例子是卷積神經網路。這樣做可以大大減少需要訓練的參數數目。
深度學習 可理解為一種特徵學習或者表示學習,是通過 多層處理 ,逐漸將初始的 低層特徵表示 轉化為 高層特徵表示 後,用 簡單模型 即可完成復雜的分類等 學習任務 。