-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
設計神經網(wǎng)絡的基本原則(設計神經網(wǎng)絡的基本原則是)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于設計神經網(wǎng)絡的基本原則的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內優(yōu)秀的企業(yè),服務客戶遍布全球各地,如需了解SEO相關業(yè)務請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、BP神經網(wǎng)絡原理
人工神經網(wǎng)絡有很多模型,但是日前應用最廣、基本思想最直觀、最容易被理解的是多層前饋神經網(wǎng)絡及誤差逆?zhèn)鞑W習算法(Error Back-Prooaeation),簡稱為BP網(wǎng)絡。
在1986年以Rumelhart和McCelland為首的科學家出版的《Parallel Distributed Processing》一書中,完整地提出了誤差逆?zhèn)鞑W習算法,并被廣泛接受。多層感知網(wǎng)絡是一種具有三層或三層以上的階層型神經網(wǎng)絡。典型的多層感知網(wǎng)絡是三層、前饋的階層網(wǎng)絡(圖4.1),即:輸入層、隱含層(也稱中間層)、輸出層,具體如下:
圖4.1 三層BP網(wǎng)絡結構
(1)輸入層
輸入層是網(wǎng)絡與外部交互的接口。一般輸入層只是輸入矢量的存儲層,它并不對輸入矢量作任何加工和處理。輸入層的神經元數(shù)目可以根據(jù)需要求解的問題和數(shù)據(jù)表示的方式來確定。一般而言,如果輸入矢量為圖像,則輸入層的神經元數(shù)目可以為圖像的像素數(shù),也可以是經過處理后的圖像特征數(shù)。
(2)隱含層
1989年,Robert Hecht Nielsno證明了對于任何在閉區(qū)間內的一個連續(xù)函數(shù)都可以用一個隱層的BP網(wǎng)絡來逼近,因而一個三層的BP網(wǎng)絡可以完成任意的n維到m維的映射。增加隱含層數(shù)雖然可以更進一步的降低誤差、提高精度,但是也使網(wǎng)絡復雜化,從而增加了網(wǎng)絡權值的訓練時間。誤差精度的提高也可以通過增加隱含層中的神經元數(shù)目來實現(xiàn),其訓練效果也比增加隱含層數(shù)更容易觀察和調整,所以一般情況應優(yōu)先考慮增加隱含層的神經元個數(shù),再根據(jù)具體情況選擇合適的隱含層數(shù)。
(3)輸出層
輸出層輸出網(wǎng)絡訓練的結果矢量,輸出矢量的維數(shù)應根據(jù)具體的應用要求來設計,在設計時,應盡可能減少系統(tǒng)的規(guī)模,使系統(tǒng)的復雜性減少。如果網(wǎng)絡用作識別器,則識別的類別神經元接近1,而其它神經元輸出接近0。
以上三層網(wǎng)絡的相鄰層之間的各神經元實現(xiàn)全連接,即下一層的每一個神經元與上一層的每個神經元都實現(xiàn)全連接,而且每層各神經元之間無連接,連接強度構成網(wǎng)絡的權值矩陣W。
BP網(wǎng)絡是以一種有教師示教的方式進行學習的。首先由教師對每一種輸入模式設定一個期望輸出值。然后對網(wǎng)絡輸入實際的學習記憶模式,并由輸入層經中間層向輸出層傳播(稱為“模式順傳播”)。實際輸出與期望輸出的差即是誤差。按照誤差平方最小這一規(guī)則,由輸出層往中間層逐層修正連接權值,此過程稱為“誤差逆?zhèn)鞑ァ保愓?005)。所以誤差逆?zhèn)鞑ド窠浘W(wǎng)絡也簡稱BP(Back Propagation)網(wǎng)。隨著“模式順傳播”和“誤差逆?zhèn)鞑ァ边^程的交替反復進行。網(wǎng)絡的實際輸出逐漸向各自所對應的期望輸出逼近,網(wǎng)絡對輸入模式的響應的正確率也不斷上升。通過此學習過程,確定下各層間的連接權值后。典型三層BP神經網(wǎng)絡學習及程序運行過程如下(標志淵,2006):
(1)首先,對各符號的形式及意義進行說明:
網(wǎng)絡輸入向量Pk=(a1,a2,...,an);
網(wǎng)絡目標向量Tk=(y1,y2,...,yn);
中間層單元輸入向量Sk=(s1,s2,...,sp),輸出向量Bk=(b1,b2,...,bp);
輸出層單元輸入向量Lk=(l1,l2,...,lq),輸出向量Ck=(c1,c2,...,cq);
輸入層至中間層的連接權wij,i=1,2,...,n,j=1,2,...p;
中間層至輸出層的連接權vjt,j=1,2,...,p,t=1,2,...,p;
中間層各單元的輸出閾值θj,j=1,2,...,p;
輸出層各單元的輸出閾值γj,j=1,2,...,p;
參數(shù)k=1,2,...,m。
(2)初始化。給每個連接權值wij、vjt、閾值θj與γj賦予區(qū)間(-1,1)內的隨機值。
(3)隨機選取一組輸入和目標樣本
(4)用輸入樣本
基坑降水工程的環(huán)境效應與評價方法
bj=f(sj) j=1,2,...,p (4.5)
(5)利用中間層的輸出bj、連接權vjt和閾值γt計算輸出層各單元的輸出Lt,然后通過傳遞函數(shù)計算輸出層各單元的響應Ct。
基坑降水工程的環(huán)境效應與評價方法
Ct=f(Lt) t=1,2,...,q (4.7)
(6)利用網(wǎng)絡目標向量
基坑降水工程的環(huán)境效應與評價方法
(7)利用連接權vjt、輸出層的一般化誤差dt和中間層的輸出bj計算中間層各單元的一般化誤差
基坑降水工程的環(huán)境效應與評價方法
(8)利用輸出層各單元的一般化誤差
基坑降水工程的環(huán)境效應與評價方法
(9)利用中間層各單元的一般化誤差
基坑降水工程的環(huán)境效應與評價方法
(10)隨機選取下一個學習樣本向量提供給網(wǎng)絡,返回到步驟(3),直到m個訓練樣本訓練完畢。
(11)重新從m個學習樣本中隨機選取一組輸入和目標樣本,返回步驟(3),直到網(wǎng)路全局誤差E小于預先設定的一個極小值,即網(wǎng)絡收斂。如果學習次數(shù)大于預先設定的值,網(wǎng)絡就無法收斂。
(12)學習結束。
可以看出,在以上學習步驟中,(8)、(9)步為網(wǎng)絡誤差的“逆?zhèn)鞑ミ^程”,(10)、(11)步則用于完成訓練和收斂過程。
通常,經過訓練的網(wǎng)絡還應該進行性能測試。測試的方法就是選擇測試樣本向量,將其提供給網(wǎng)絡,檢驗網(wǎng)絡對其分類的正確性。測試樣本向量中應該包含今后網(wǎng)絡應用過程中可能遇到的主要典型模式(宋大奇,2006)。這些樣本可以直接測取得到,也可以通過仿真得到,在樣本數(shù)據(jù)較少或者較難得到時,也可以通過對學習樣本加上適當?shù)脑肼暬虬凑找欢ㄒ?guī)則插值得到。為了更好地驗證網(wǎng)絡的泛化能力,一個良好的測試樣本集中不應該包含和學習樣本完全相同的模式(董軍,2007)。
二、一文看懂卷積神經網(wǎng)絡-CNN(基本原理+獨特價值+實際應用)
在 CNN 出現(xiàn)之前,圖像對于人工智能來說是一個難題,有2個原因:
圖像需要處理的數(shù)據(jù)量太大,導致成本很高,效率很低
圖像在數(shù)字化的過程中很難保留原有的特征,導致圖像處理的準確率不高
下面就詳細說明一下這2個問題:
圖像是由像素構成的,每個像素又是由顏色構成的。
現(xiàn)在隨隨便便一張圖片都是 1000×1000 像素以上的, 每個像素都有RGB 3個參數(shù)來表示顏色信息。
假如我們處理一張 1000×1000 像素的圖片,我們就需要處理3百萬個參數(shù)!
1000×1000×3=3,000,000
這么大量的數(shù)據(jù)處理起來是非常消耗資源的,而且這只是一張不算太大的圖片!
卷積神經網(wǎng)絡 – CNN 解決的第一個問題就是「將復雜問題簡化」,把大量參數(shù)降維成少量參數(shù),再做處理。
更重要的是:我們在大部分場景下,降維并不會影響結果。比如1000像素的圖片縮小成200像素,并不影響肉眼認出來圖片中是一只貓還是一只狗,機器也是如此。
圖片數(shù)字化的傳統(tǒng)方式我們簡化一下,就類似下圖的過程:
假如有圓形是1,沒有圓形是0,那么圓形的位置不同就會產生完全不同的數(shù)據(jù)表達。但是從視覺的角度來看, 圖像的內容(本質)并沒有發(fā)生變化,只是位置發(fā)生了變化 。
所以當我們移動圖像中的物體,用傳統(tǒng)的方式的得出來的參數(shù)會差異很大!這是不符合圖像處理的要求的。
而 CNN 解決了這個問題,他用類似視覺的方式保留了圖像的特征,當圖像做翻轉,旋轉或者變換位置時,它也能有效的識別出來是類似的圖像。
那么卷積神經網(wǎng)絡是如何實現(xiàn)的呢?在我們了解 CNN 原理之前,先來看看人類的視覺原理是什么?
深度學習的許多研究成果,離不開對大腦認知原理的研究,尤其是視覺原理的研究。
1981 年的諾貝爾醫(yī)學獎,頒發(fā)給了 David Hubel(出生于加拿大的美國神經生物學家) 和TorstenWiesel,以及 Roger Sperry。前兩位的主要貢獻,是“ 發(fā)現(xiàn)了視覺系統(tǒng)的信息處理 ”,可視皮層是分級的。
人類的視覺原理如下:從原始信號攝入開始(瞳孔攝入像素 Pixels),接著做初步處理(大腦皮層某些細胞發(fā)現(xiàn)邊緣和方向),然后抽象(大腦判定,眼前的物體的形狀,是圓形的),然后進一步抽象(大腦進一步判定該物體是只氣球)。下面是人腦進行人臉識別的一個示例:
對于不同的物體,人類視覺也是通過這樣逐層分級,來進行認知的:
我們可以看到,在最底層特征基本上是類似的,就是各種邊緣,越往上,越能提取出此類物體的一些特征(輪子、眼睛、軀干等),到最上層,不同的高級特征最終組合成相應的圖像,從而能夠讓人類準確的區(qū)分不同的物體。
那么我們可以很自然的想到:可以不可以模仿人類大腦的這個特點,構造多層的神經網(wǎng)絡,較低層的識別初級的圖像特征,若干底層特征組成更上一層特征,最終通過多個層級的組合,最終在頂層做出分類呢?
答案是肯定的,這也是許多深度學習算法(包括CNN)的靈感來源。
典型的 CNN 由3個部分構成:
卷積層
池化層
全連接層
如果簡單來描述的話:
卷積層負責提取圖像中的局部特征;池化層用來大幅降低參數(shù)量級(降維);全連接層類似傳統(tǒng)神經網(wǎng)絡的部分,用來輸出想要的結果。
下面的原理解釋為了通俗易懂,忽略了很多技術細節(jié),如果大家對詳細的原理感興趣,可以看這個視頻《 卷積神經網(wǎng)絡基礎 》。
卷積層的運算過程如下圖,用一個卷積核掃完整張圖片:
這個過程我們可以理解為我們使用一個過濾器(卷積核)來過濾圖像的各個小區(qū)域,從而得到這些小區(qū)域的特征值。
在具體應用中,往往有多個卷積核,可以認為,每個卷積核代表了一種圖像模式,如果某個圖像塊與此卷積核卷積出的值大,則認為此圖像塊十分接近于此卷積核。如果我們設計了6個卷積核,可以理解:我們認為這個圖像上有6種底層紋理模式,也就是我們用6中基礎模式就能描繪出一副圖像。以下就是25種不同的卷積核的示例:
總結:卷積層的通過卷積核的過濾提取出圖片中局部的特征,跟上面提到的人類視覺的特征提取類似。
池化層簡單說就是下采樣,他可以大大降低數(shù)據(jù)的維度。其過程如下:
上圖中,我們可以看到,原始圖片是20×20的,我們對其進行下采樣,采樣窗口為10×10,最終將其下采樣成為一個2×2大小的特征圖。
之所以這么做的原因,是因為即使做完了卷積,圖像仍然很大(因為卷積核比較小),所以為了降低數(shù)據(jù)維度,就進行下采樣。
總結:池化層相比卷積層可以更有效的降低數(shù)據(jù)維度,這么做不但可以大大減少運算量,還可以有效的避免過擬合。
這個部分就是最后一步了,經過卷積層和池化層處理過的數(shù)據(jù)輸入到全連接層,得到最終想要的結果。
經過卷積層和池化層降維過的數(shù)據(jù),全連接層才能”跑得動”,不然數(shù)據(jù)量太大,計算成本高,效率低下。
典型的 CNN 并非只是上面提到的3層結構,而是多層結構,例如 LeNet-5 的結構就如下圖所示:
卷積層 – 池化層- 卷積層 – 池化層 – 卷積層 – 全連接層
在了解了 CNN 的基本原理后,我們重點說一下 CNN 的實際應用有哪些。
卷積神經網(wǎng)絡 – CNN 很擅長處理圖像。而視頻是圖像的疊加,所以同樣擅長處理視頻內容。下面給大家列一些比較成熟的應用�:
圖像分類、檢索
圖像分類是比較基礎的應用,他可以節(jié)省大量的人工成本,將圖像進行有效的分類。對于一些特定領域的圖片,分類的準確率可以達到 95%+,已經算是一個可用性很高的應用了。
典型場景:圖像搜索…
目標定位檢測
可以在圖像中定位目標,并確定目標的位置及大小。
典型場景:自動駕駛、安防、醫(yī)療…
目標分割
簡單理解就是一個像素級的分類。
他可以對前景和背景進行像素級的區(qū)分、再高級一點還可以識別出目標并且對目標進行分類。
典型場景:美圖秀秀、視頻后期加工、圖像生成…
人臉識別
人臉識別已經是一個非常普及的應用了,在很多領域都有廣泛的應用。
典型場景:安防、金融、生活…
骨骼識別
骨骼識別是可以識別身體的關鍵骨骼,以及追蹤骨骼的動作。
典型場景:安防、電影、圖像視頻生成、游戲…
今天我們介紹了 CNN 的價值、基本原理和應用場景,簡單總結如下:
CNN 的價值:
能夠將大數(shù)據(jù)量的圖片有效的降維成小數(shù)據(jù)量(并不影響結果)
能夠保留圖片的特征,類似人類的視覺原理
CNN 的基本原理:
卷積層 – 主要作用是保留圖片的特征
池化層 – 主要作用是把數(shù)據(jù)降維,可以有效的避免過擬合
全連接層 – 根據(jù)不同任務輸出我們想要的結果
CNN 的實際應用:
圖片分類、檢索
目標定位檢測
目標分割
人臉識別
骨骼識別
本文首發(fā)在 easyAI - 人工智能知識庫
《 一文看懂卷積神經網(wǎng)絡-CNN(基本原理+獨特價值+實際應用) 》
三、神經網(wǎng)絡是什么
神經網(wǎng)絡是一種模仿動物神經網(wǎng)絡行為特征,進行分布式并行信息處理的算法數(shù)學模型。這種網(wǎng)絡依靠系統(tǒng)的復雜程度,通過調整內部大量節(jié)點之間相互連接的關系,從而達到處理信息的目的。
生物神經網(wǎng)絡主要是指人腦的神經網(wǎng)絡,它是人工神經網(wǎng)絡的技術原型。人腦是人類思維的物質基礎,思維的功能定位在大腦皮層,后者含有大約10^11個神經元,每個神經元又通過神經突觸與大約103個其它神經元相連,形成一個高度復雜高度靈活的動態(tài)網(wǎng)絡。作為一門學科,生物神經網(wǎng)絡主要研究人腦神經網(wǎng)絡的結構、功能及其工作機制,意在探索人腦思維和智能活動的規(guī)律。
人工神經網(wǎng)絡是生物神經網(wǎng)絡在某種簡化意義下的技術復現(xiàn),作為一門學科,它的主要任務是根據(jù)生物神經網(wǎng)絡的原理和實際應用的需要建造實用的人工神經網(wǎng)絡模型,設計相應的學習算法,模擬人腦的某種智能活動,然后在技術上實現(xiàn)出來用以解決實際問題。因此,生物神經網(wǎng)絡主要研究智能的機理;人工神經網(wǎng)絡主要研究智能機理的實現(xiàn),兩者相輔相成。
擴展資料:
神經網(wǎng)絡的研究內容相當廣泛,反映了多學科交叉技術領域的特點。主要的研究工作集中在以下幾個方面:
1、生物原型
從生理學、心理學、解剖學、腦科學、病理學等方面研究神經細胞、神經網(wǎng)絡、神經系統(tǒng)的生物原型結構及其功能機理。
2、建立模型
根據(jù)生物原型的研究,建立神經元、神經網(wǎng)絡的理論模型。其中包括概念模型、知識模型、物理化學模型、數(shù)學模型等。
3、算法
在理論模型研究的基礎上構作具體的神經網(wǎng)絡模型,以實現(xiàn)計算機模擬或準備制作硬件,包括網(wǎng)絡學習算法的研究。這方面的工作也稱為技術模型研究。
神經網(wǎng)絡用到的算法就是向量乘法,并且廣泛采用符號函數(shù)及其各種逼近。并行、容錯、可以硬件實現(xiàn)以及自我學習特性,是神經網(wǎng)絡的幾個基本優(yōu)點,也是神經網(wǎng)絡計算方法與傳統(tǒng)方法的區(qū)別所在。
參考資料:百度百科-神經網(wǎng)絡(通信定義)
四、AI面試題第二彈(神經網(wǎng)絡基礎)
提取主要特征,減小網(wǎng)絡參數(shù)量,減小計算量
層層傳遞的梯度>1 梯度爆炸
層層傳遞的梯度<1 梯度消失
與權重有很大關系,激活函數(shù)的影響較小。
每次訓練一層隱節(jié)點,訓練時將上一層隱節(jié)點的輸出作為輸入,而本層隱節(jié)點的輸出作為下一層隱節(jié)點的輸入,此過程就是逐層“預訓練”(pre-training);在預訓練完成后,再對整個網(wǎng)絡進行“微調”(fine-tunning)。Hinton在訓練深度信念網(wǎng)絡(Deep Belief Networks中,使用了這個方法,在各層預訓練完成后,再利用BP算法對整個網(wǎng)絡進行訓練。
這個方案主要是針對梯度爆炸提出的,其思想是設置一個梯度剪切閾值,然后更新梯度的時候,如果梯度超過這個閾值,那么就將其強制限制在這個范圍之內。這可以防止梯度爆炸。
比較常見的是l1l1l1正則,和l2l2l2正則,在各個深度框架中都有相應的API可以使用正則化
反向傳播中,經過每一層的梯度會乘以該層的權重。
舉個簡單例子:
為了得到一致假設而使假設變得過度復雜稱為過擬合(overfitting), 過擬合表現(xiàn)在訓練好的模型在訓練集上效果很好,但是在測試集上效果差 。也就是說模型的泛化能力弱。
過擬合主要由兩個原因造成,數(shù)據(jù)集太小或模型太復雜
(1). 數(shù)據(jù)集擴增(Data Augmentation)
(2). 改進模型
·Early Stopping。在模型效果比較好的時候便提前停止訓練
·正則化(regularization)
L1:稀疏參數(shù)
L2:更小參數(shù)
·Dropout
·多任務學習
深度學習中兩種多任務學習模式:隱層參數(shù)的硬共享和軟共享
硬共享機制是指在所有任務中共享隱藏層,同時保留幾個特定任務的輸出層來實現(xiàn)。硬共享機制降低了過擬合的風險。多個任務同時學習,模型就越能捕捉到多個任務的同一表示,從而導致模型在原始任務上的過擬合風險越小。
軟共享機制是指每個任務有自己的模型,自己的參數(shù)。模型參數(shù)之間的距離是正則化的,以便保障參數(shù)相似性。
見后文
leaky relu
輸入是x輸出是y,正常的流程是:我們首先把x通過網(wǎng)絡前向傳播,然后把誤差反向傳播以決定如何更新參數(shù)讓網(wǎng)絡進行學習。使用Dropout之后,過程變成如下:
(1)首先隨機(臨時)刪掉網(wǎng)絡中一半的隱藏神經元,輸入輸出神經元保持不變(圖中虛線為部分臨時被刪除的神經元)
(2) 然后把輸入x通過修改后的網(wǎng)絡前向傳播,然后把得到的損失結果通過修改的網(wǎng)絡反向傳播。一小批訓練樣本執(zhí)行完這個過程后,在沒有被刪除的神經元上按照隨機梯度下降法更新對應的參數(shù)(w,b)。
(3)然后繼續(xù)重復這一過程:
恢復被刪掉的神經元(此時被刪除的神經元保持原樣,而沒有被刪除的神經元已經有所更新)
從隱藏層神經元中隨機選擇一個一半大小的子集臨時刪除掉(備份被刪除神經元的參數(shù))。
對一小批訓練樣本,先前向傳播然后反向傳播損失并根據(jù)隨機梯度下降法更新參數(shù)(w,b) (沒有被刪除的那一部分參數(shù)得到更新,刪除的神經元參數(shù)保持被刪除前的結果)。
不斷重復這一過程。
沒有對數(shù)據(jù)進行歸一化
忘記檢查輸入和輸出
沒有對數(shù)據(jù)進行預處理
沒有對數(shù)據(jù)正則化
使用過大的樣本
使用不正確的學習率
在輸出層使用錯誤的激活函數(shù)
網(wǎng)絡中包含壞梯度
初始化權重錯誤
過深的網(wǎng)絡
隱藏單元數(shù)量錯誤
網(wǎng)絡設計不合理(任務-網(wǎng)絡不匹配)
機器學習有個很重要的假設:就是假設訓練數(shù)據(jù)和測試數(shù)據(jù)是滿足獨立同分布的,這保障了通過訓練數(shù)據(jù)獲得的優(yōu)秀模型也能夠在測試集獲得好的效果。但是在機器學習訓練中輸入層的每個批量(X,Y)中X的分布是不一致的,并且神經網(wǎng)絡的隱藏層的輸入分布在每次訓練迭代中發(fā)生變化。 BatchNorm就是在深度神經網(wǎng)絡訓練過程中使得每一層神經網(wǎng)絡的輸入保持相同分布的。
BN的基本思想其實相當直觀:因為深層神經網(wǎng)絡在做非線性變換前(激活前)的 輸入值 (就是那個x=WU+B,U是輸入) 隨著網(wǎng)絡深度加深或者在訓練過程中,其分布逐漸發(fā)生偏移或者變動,之所以訓練收斂慢,一般是整體分布逐漸往非線性函數(shù)的取值區(qū)間的上下限兩端靠近 (對于Sigmoid函數(shù)來說,意味著激活輸入值WU+B是大的負值或正值),所以這 導致反向傳播時低層神經網(wǎng)絡的梯度消失 ,這是訓練深層神經網(wǎng)絡收斂越來越慢的 本質原因 , 而BN就是通過一定的規(guī)范化手段,把每層神經網(wǎng)絡任意神經元這個輸入值的分布強行拉回到均值為0方差為1的標準正態(tài)分布 ,其實就是把越來越偏的分布強制拉回比較標準的分布,這樣使得激活輸入值落在非線性函數(shù)對輸入比較敏感的區(qū)域,這樣輸入的小變化就會導致?lián)p失函數(shù)較大的變化,意思是 這樣讓梯度變大,避免梯度消失問題產生,而且梯度變大意味著學習收斂速度快,能大大加快訓練速度。
但是接下來的問題是:如果都通過BN,那么不就跟把非線性函數(shù)替換成線性函數(shù)效果相同了,意味著網(wǎng)絡的非線性表達能力下降了, 所以BN為了保證非線性的獲得,對變換后的滿足均值為0方差為1的x又進行了scale加上shift操作(y=scale*x+shift), 每個神經元增加了兩個參數(shù)scale和shift參數(shù),這兩個參數(shù)是通過訓練學習到的,意思是通過scale和shift把這個值從標準正態(tài)分布左移或者右移一點并長胖一點或者變瘦一點,每個實例挪動的程度不一樣,這樣等價于激活前的值經過標準正太分布歸一化后再從正中心周圍的線性區(qū)往非線性區(qū)動了動。核心思想應該是想找到一個線性和非線性的較好平衡點,既能享受非線性的較強表達能力的好處,又避免太靠非線性區(qū)兩頭使得網(wǎng)絡收斂速度太慢
Batch Normalization 好處:(1)提高了訓練速度,收斂速度也大大加快(2)另外調參過程也簡單多了,對于初始化要求沒那么高,而且可以使用大的學習率等 (3)可以防止梯度消失(4)BN類似于Dropout的一種防止過擬合的正則化表達方式,可以有效防止過擬合,不用太依賴dropou和正則化
以下情況最好不要使用BN:(1)數(shù)據(jù)不平衡(2)batch_size太小
batch_size是機器學習中的一個重要參數(shù),決定了梯度下降的方向,如果數(shù)據(jù)集比較小,完全可以采用全數(shù)據(jù)集的形式計算梯度,由全數(shù)據(jù)集確定的梯度方向能夠更好地代表樣本總體,從而更準確地朝向極值所在的方向。對于大型數(shù)據(jù)集則需要使用mini-batch_size,因為隨著數(shù)據(jù)集的海量增長和內存限制,一次性載入所有的數(shù)據(jù)進來變得越來越不可行。
當batch_size=1,即在線學習,模型難以達到收斂 。
合理增加batch_size好處 :
(1)內存利用率提高了,大矩陣乘法的并行化效率提高
(2)跑完一次 epoch(全數(shù)據(jù)集)所需的迭代次數(shù)減少,對于相同數(shù)據(jù)量的處理速度進一步加快。
(3)在一定范圍內,一般來說 Batch_Size 越大,其確定的下降方向越準,引起訓練震蕩越小
盲目增大 Batch_Size 壞處 :
(1)內存利用率提高了,但是內存容量可能撐不住了
(2)跑完一次 epoch(全數(shù)據(jù)集)所需的迭代次數(shù)減少,要想達到相同精度所需要的 epoch 數(shù)量越來越多,花費的時間越長
(3)大的batchsize收斂到sharp minimum,而小的batchsize收斂到flat minimum,后者具有更好的泛化能力。
總之batchsize在變得很大(超過一個臨界點)時,會降低模型的泛化能力。在這個臨界點之下,模型的性能變換隨batch size通常沒有學習率敏感
目標所在的真實框(ground truth) 與算法預測的目標所在的框(bounding box)的交集與并集的比值,我們會用IOU閾值來判定預測的bounding box是否有效。一般閾值會設定在0.5,當IOU的值大于等于0.5時,我們會把這個預測的bounding box 歸為正類,而小于0.5的歸為負類。
牛頓法使用的是目標函數(shù)的二階導數(shù),在高維情況下這個Hessian(n*n維度)矩陣非常大,計算復雜度是n*n,計算和存儲都是問題
(1) 通過控制卷積核個數(shù)實現(xiàn)升維或者降維,從而減少模型參數(shù)和計算量
(2) 用于不同channel上特征的融合
(3)1x1的卷積相當于全連接層的計算過程,并且加入了非線性激活函數(shù),從而增加了網(wǎng)絡的非線性,使得網(wǎng)絡可以表達更加復雜的特征。
它能夠把輸入的連續(xù)實值變換為0和1之間的輸出,如果是非常大的負數(shù),那么輸出就是0;如果是非常大的正數(shù),輸出就是1
缺點:
(1)函數(shù)的飽和區(qū),導致梯度幾乎為0,造成梯度消失問題
(2)Sigmoid 的 output 不是0均值,具體解釋見 https://blog.csdn.net/tyhj_sf/article/details/79932893
(3)其解析式中含有冪運算,計算機求解時相對來講比較耗時。對于規(guī)模比較大的深度網(wǎng)絡,這會較大地增加訓練時間。
它解決了Sigmoid函數(shù)的不是零均值輸出問題,然而,梯度消失(gradient vanishing)的問題和冪運算的問題仍然存在。
(1)在正區(qū)間解決了梯度消失的問題
(2)函數(shù)簡單,計算速度快,收斂速度遠快于sigmoid和tanh
缺點:
(1)Relu函數(shù)輸出不是0均值
(2)神經元壞死問題:指的是某些神經元可能永遠不會被激活,導致相應的參數(shù)永遠不能被更新,有兩個主要原因導致這種狀況發(fā)生
(1) 非常不幸的參數(shù)初始化,這種情況比較少見
(2) learning rate太高導致在訓練過程中參數(shù)更新太大,不幸使網(wǎng)絡進入這種狀態(tài)。解決方法是可以采用Xavier初始化方法,以及避免將learning rate設置太大或使用adagrad等自動調節(jié)learning rate的算法
為了解決ReLU函數(shù)帶來的神經元壞死問題 , 提出了將ReLU的前半段設為αx,α通常設為0.01,,另外一種直觀的想法是基于參數(shù)的方法PReLU函數(shù), α可由方向傳播算法學習出來。
ELU也是為解決ReLU存在的問題而提出,顯然,ELU有ReLU的基本所有優(yōu)點,以及:(1)不會有神經元壞死現(xiàn)象(2)函數(shù)輸出均值接近于0
但是ELU的小問題就是計算量稍微有點大。
1、使用不同的激活函數(shù),比如Relu,Leak-Relu,PRelu,elu等激活函數(shù)代替sigmoid函數(shù)
2、使用Batch Normalizaion(批量歸一化)
3、使用殘差網(wǎng)絡
4、預訓練加微調
1、梯度裁剪
2、權重正則化
兩個3x3的卷積核的感受野比5x5的卷積核的感受野大,在保持相同感受野的同時,用3x3的卷積核可以提升網(wǎng)絡的深度,可以很明顯的減少計算量。
1、局部連接
2、權值共享:減小參數(shù)量
3、池化操作:增大感受野
4、多層次結構:可以提取low-level以及high-level的信息
1、數(shù)據(jù)集太小,數(shù)據(jù)樣本不足時,深度學習相對其它機器學習算法,沒有明顯優(yōu)勢。
2、數(shù)據(jù)集沒有局部相關特性,目前深度學習表現(xiàn)比較好的領域主要是圖像/語音/自然語言處理等領域,這些領域的一個共性是局部相關性。圖像中像素組成物體,語音信號中音位組合成單詞,文本數(shù)據(jù)中單詞組合成句子,這些特征元素的組合一旦被打亂,表示的含義同時也被改變。對于沒有這樣的局部相關性的數(shù)據(jù)集,不適于使用深度學習算法進行處理。舉個例子:預測一個人的健康狀況,相關的參數(shù)會有年齡、職業(yè)、收入、家庭狀況等各種元素,將這些元素打亂,并不會影響相關的結果。
作用 :對輸入的特征圖進行壓縮,
一方面使特征圖變小,簡化網(wǎng)絡計算復雜度;
一方面進行特征壓縮,提取主要特征。
通常來講,max-pooling的效果更好,雖然max-pooling和average-pooling都對數(shù)據(jù)做了下采樣,但是 max-pooling感覺更像是做了特征選擇,選出了分類辨識度更好的特征,提供了非線性 。 pooling的主要作用一方面是去掉冗余信息,一方面要保留feature map的特征信息,在分類問題中,我們需要知道的是這張圖像有什么object,而不大關心這個object位置在哪,在這種情況下顯然max pooling比average pooling更合適。在 網(wǎng)絡比較深的地方,特征已經稀疏了,從一塊區(qū)域里選出最大的,比起這片區(qū)域的平均值來,更能把稀疏的特征傳遞下去 。
average-pooling更強調對整體特征信息進行一層下采樣,在減少參數(shù)維度的貢獻上更大一點,更多的體現(xiàn)在 信息的完整傳遞這個維度 上,在一個很大很有代表性的模型中,比如說DenseNet中的模塊之間的連接大多采用average-pooling,在減少維度的同時,更有利信息傳遞到下一個模塊進行特征提取。
average-pooling在 全局平均池化操作 中應用也比較廣,在ResNet和Inception結構中最后一層都使用了平均池化。有的時候在模型接近 分類器的末端使用全局平均池化還可以代替Flatten操作 ,使輸入數(shù)據(jù)變成一位向量。
CNN網(wǎng)絡中另外一個不可導的環(huán)節(jié)就是Pooling池化操作,因為Pooling操作使得feature map的尺寸變化,假如做2×2的池化(步長也為2),假設那么第l+1層的feature map有16個梯度,那么第l層就會有64個梯度,這使得梯度無法對位的進行傳播下去。其實解決這個問題的思想也很簡單,就是把1個像素的梯度傳遞給4個像素,但是需要保證傳遞的loss(或者梯度)總和不變。根據(jù)這條原則,mean pooling和max pooling的反向傳播也是不同的
mean pooling的前向傳播就是把一個patch中的值求取平均來做pooling,那么反向傳播的過程也就是把 某個元素的梯度等分為n份分配給前一層,這樣就保證池化前后的梯度(殘差)之和保持不變 ,圖示如下 :
(2) max pooling
max pooling也要滿足梯度之和不變的原則 ,max pooling的前向傳播是把patch中最大的值傳遞給后一層,而其他像素的值直接被舍棄掉。那么 反向傳播也就是把梯度直接傳給前一層某一個像素,而其他像素不接受梯度,也就是為0。 所以max pooling操作和mean pooling操作不同點在于需要記錄下池化操作時到底哪個像素的值是最大,也就是max id,這個變量就是記錄最大值所在位置的,因為在反向傳播中要用到,那么假設前向傳播和反向傳播的過程就如下圖所示 :
28、細粒度分類
29、LSTM&RNN
30、解釋LSTM結構(相對于RNN)的好處
31、RNN的梯度消失原因和解決辦法
32、Object Detection
33、Unet的介紹
34、FCN和Unet的區(qū)別
35、RCNN系列的算法流程和區(qū)別
36、Fast RCNN中 bbox 回歸的損失函數(shù)什么
37、解釋 ROI Pooling 和 ROI Align
38、Mask RCNN中 mask branch 如何接入 Faster RCNN中
39、解釋 FPN
40、解釋 ROI Align
41、簡述 YOLO 和 SSD
42、簡述 Hough 直線檢測、Sobel 邊緣檢測算法流程
43、Mask RCNN中的anchors如何判定為正負樣本
44、簡述 NMS 算法流程
45、attention起源是用在哪里?pixel還是frame,是soft還是hard
46、anchor的正負樣本比是多少
47、算法和激活函數(shù)等
48、BN的原理和作用
49、BN層反向傳播,怎么求導
50、BN 的作用和缺陷,以及針對batch_size小的情況的改進(GN)
51、BN層,先加BN還是激活,有什么區(qū)別
52、手推BP
53、優(yōu)化算法舉例和他們的區(qū)別(SGD、SGDM、RMSprop、Adam)
54、隨機梯度下降和梯度下降
55、訓練不收斂的原因有哪些
56、簡述 SVM 流程、核函數(shù)尋參及常見的核函數(shù)舉例
57、batch_size 和 learning rate 的關系(怎么平衡和調整二者)
58、解釋過擬合和欠擬合,以及解決方法
59、激活函數(shù)有哪些,各自區(qū)別
60、損失函數(shù)有哪些
61、Sigmoid 和 ReLu 對比(各自優(yōu)缺點)
62、為什么不用sigmoid而用relu?做出了哪些改進?
63、梯度消失和梯度爆炸的原因和解決方法
64、Precision 和 Recall 的定義
65、精確率高、召回率低是為什么
66、SVM,線性回歸和邏輯回歸的原理及區(qū)別
67、PCA原理,PCA和SVD的區(qū)別和聯(lián)系
68、正則化怎么選擇,有哪些方式
69、L1、L2范數(shù),區(qū)別
70、boost、Adaboost
71、dropout和batch normalization
72、講一下決策樹和隨機森林
73、講一下GBDT的細節(jié),寫出GBDT的目標函數(shù)。 GBDT和Adaboost的區(qū)別與聯(lián)系
74、偏差、方差
75、距離度量公式哪些,區(qū)別
76、多標簽識別怎么做
77、data argumentation怎么處理的
78、數(shù)據(jù)不均衡怎么處理、只有少量帶標簽怎么處理
79、權重初始化方法都有哪些
80、權值衰減這個參數(shù)怎么設置
81、分類問題有哪些評價指標?每種的適用場景。
82、無監(jiān)督學習了解哪些
83、圖像處理Opencv
84、邊緣檢測算子有哪些
85、霍夫變換
86、直方圖是什么
87、canny算子是怎么做的
88、圖像的特征提取有哪些算法,適用范圍、優(yōu)缺點
參考:
https://blog.csdn.net/bluesliuf/article/details/89389117
https://zhuanlan.zhihu.com/p/107279000
https://zhuanlan.zhihu.com/p/56475281
以上就是關于設計神經網(wǎng)絡的基本原則相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。
推薦閱讀: