點(diǎn)擊上方 “小白學(xué)視覺 ”,選擇加" 星標(biāo) "或“ 置頂 ”
重磅干貨,第一時(shí)間送達(dá)
人工神經(jīng)網(wǎng)絡(luò)通常通過一個(gè)基于數(shù)學(xué)統(tǒng)計(jì)學(xué)類型的學(xué)習(xí)方法得以優(yōu)化,本文詳細(xì)的介紹了神經(jīng)網(wǎng)絡(luò)的定義以及相關(guān)運(yùn)算模型的知識(shí)點(diǎn)。
一、神經(jīng)網(wǎng)絡(luò)簡介
對(duì)于非線性分類問題(如圖1所示),“非線性”意味著你無法使用形式為: 的模型準(zhǔn)確預(yù)測(cè)標(biāo)簽。也就是說,“決策面”不是直線。之前,我們了解了對(duì)非線性問題進(jìn)行建模的一種可行方法 - 特征組合。 現(xiàn)在,請(qǐng)考慮以下數(shù)據(jù)集: 圖 2 所示的數(shù)據(jù)集問題無法用線性模型解決。為了了解神經(jīng)網(wǎng)絡(luò)可以如何幫助解決非線性問題,我們首先用圖表呈現(xiàn)一個(gè)線性模型: 每個(gè)藍(lán)色圓圈均表示一個(gè)輸入特征,綠色圓圈表示各個(gè)輸入的加權(quán)和。要提高此模型處理非線性問題的能力,我們可以如何更改它? 1.1 隱藏層 在下圖所示的模型中,我們添加了一個(gè)表示中間值的“隱藏層”。隱藏層中的每個(gè)黃色節(jié)點(diǎn)均是藍(lán)色輸入節(jié)點(diǎn)值的加權(quán)和。輸出是黃色節(jié)點(diǎn)的加權(quán)和。 此模型是線性的嗎?是的,其輸出仍是其輸入的線性組合。 在下圖所示的模型中,我們又添加了一個(gè)表示加權(quán)和的“隱藏層”。 此模型仍是線性的嗎?是的,沒錯(cuò)。當(dāng)你將輸出表示為輸入的函數(shù)并進(jìn)行簡化時(shí),你只是獲得輸入的另一個(gè)加權(quán)和而已。該加權(quán)和無法對(duì)圖 2 中的非線性問題進(jìn)行有效建模。 1.2 激活函數(shù) 要對(duì)非線性問題進(jìn)行建模,我們可以直接引入非線性函數(shù)。我們可以用非線性函數(shù)將每個(gè)隱藏層節(jié)點(diǎn)像管道一樣連接起來。 在下圖所示的模型中,在隱藏層 1 中的各個(gè)節(jié)點(diǎn)的值傳遞到下一層進(jìn)行加權(quán)求和之前,我們采用一個(gè)非線性函數(shù)對(duì)其進(jìn)行了轉(zhuǎn)換。這種非線性函數(shù)稱為激活函數(shù)。 現(xiàn)在,我們已經(jīng)添加了激活函數(shù),如果添加層,將會(huì)產(chǎn)生更多影響。通過在非線性上堆疊非線性,我們能夠?qū)斎牒皖A(yù)測(cè)輸出之間極其復(fù)雜的關(guān)系進(jìn)行建模。簡而言之,每一層均可通過原始輸入有效學(xué)習(xí)更復(fù)雜、更高級(jí)別的函數(shù)。如果你想更直觀地了解這一過程的工作原理,請(qǐng)參閱 Chris Olah 的精彩博文。 以下 S 型激活函數(shù)將加權(quán)和轉(zhuǎn)換為介于 0 和 1 之間的值。 相較于 S 型函數(shù)等平滑函數(shù),以下修正線性單元激活函數(shù)(簡稱為 ReLU)的效果通常要好一點(diǎn),同時(shí)還非常易于計(jì)算。 ReLU 的優(yōu)勢(shì)在于它基于實(shí)證發(fā)現(xiàn)(可能由 ReLU 驅(qū)動(dòng)),擁有更實(shí)用的響應(yīng)范圍。S 型函數(shù)的響應(yīng)性在兩端相對(duì)較快地減少。 實(shí)際上,所有數(shù)學(xué)函數(shù)均可作為激活函數(shù)。假設(shè) σσ 表示我們的激活函數(shù)(ReLU、S 型函數(shù)等等)。因此,網(wǎng)絡(luò)中節(jié)點(diǎn)的值由以下公式指定: TensorFlow 為各種激活函數(shù)提供開箱即用型支持。但是,我們?nèi)越ㄗh從 ReLU 著手。 1.3 小結(jié) 現(xiàn)在,我們的模型擁有了人們通常所說的“神經(jīng)網(wǎng)絡(luò)”的所有標(biāo)準(zhǔn)組件: 一組節(jié)點(diǎn),類似于神經(jīng)元,位于層中。 一組權(quán)重,表示每個(gè)神經(jīng)網(wǎng)絡(luò)層與其下方的層之間的關(guān)系。下方的層可能是另一個(gè)神經(jīng)網(wǎng)絡(luò)層,也可能是其他類型的層。 一組偏差,每個(gè)節(jié)點(diǎn)一個(gè)偏差。 一個(gè)激活函數(shù),對(duì)層中每個(gè)節(jié)點(diǎn)的輸出進(jìn)行轉(zhuǎn)換。不同的層可能擁有不同的激活函數(shù)。 警告:神經(jīng)網(wǎng)絡(luò)不一定始終比特征組合好,但它確實(shí)可以提供適用于很多情形的靈活替代方案。
二、訓(xùn)練神經(jīng)網(wǎng)絡(luò)
本部分介紹了反向傳播算法的失敗案例,以及正則化神經(jīng)網(wǎng)絡(luò)的常見方法。 2.1 失敗案例 很多常見情況都會(huì)導(dǎo)致反向傳播算法出錯(cuò)。 較低層(更接近輸入)的梯度可能會(huì)變得非常小。在深度網(wǎng)絡(luò)中,計(jì)算這些梯度時(shí),可能涉及許多小項(xiàng)的乘積。 當(dāng)較低層的梯度逐漸消失到 0 時(shí),這些層的訓(xùn)練速度會(huì)非常緩慢,甚至不再訓(xùn)練。 如果網(wǎng)絡(luò)中的權(quán)重過大,則較低層的梯度會(huì)涉及許多大項(xiàng)的乘積。在這種情況下,梯度就會(huì)爆炸:梯度過大導(dǎo)致難以收斂。批標(biāo)準(zhǔn)化可以降低學(xué)習(xí)速率,因而有助于防止梯度爆炸。 一旦 ReLU 單元的加權(quán)和低于 0,ReLU 單元就可能會(huì)停滯。它會(huì)輸出對(duì)網(wǎng)絡(luò)輸出沒有任何貢獻(xiàn)的 0 激活,而梯度在反向傳播算法期間將無法再從中流過。由于梯度的來源被切斷,ReLU 的輸入可能無法作出足夠的改變來使加權(quán)和恢復(fù)到 0 以上。 降低學(xué)習(xí)速率有助于防止 ReLU 單元消失。 2.2 丟棄正則化 這是稱為丟棄的另一種形式的正則化,可用于神經(jīng)網(wǎng)絡(luò)。其工作原理是,在梯度下降法的每一步中隨機(jī)丟棄一些網(wǎng)絡(luò)單元。丟棄得越多,正則化效果就越強(qiáng): 1.0 = 丟棄所有內(nèi)容。模型學(xué)不到任何規(guī)律。 三、多類別神經(jīng)網(wǎng)絡(luò)
3.1 一對(duì)多(OnevsAll) 一對(duì)多提供了一種利用二元分類的方法。鑒于一個(gè)分類問題會(huì)有 N 個(gè)可行的解決方案,一對(duì)多解決方案包括 N 個(gè)單獨(dú)的二元分類器,每個(gè)可能的結(jié)果對(duì)應(yīng)一個(gè)二元分類器。在訓(xùn)練期間,模型會(huì)訓(xùn)練一系列二元分類器,使每個(gè)分類器都能回答單獨(dú)的分類問題。以一張狗狗的照片為例,可能需要訓(xùn)練五個(gè)不同的識(shí)別器,其中四個(gè)將圖片看作負(fù)樣本(不是狗狗),一個(gè)將圖片看作正樣本(是狗狗)。即: 當(dāng)類別總數(shù)較少時(shí),這種方法比較合理,但隨著類別數(shù)量的增加,其效率會(huì)變得越來越低下。 我們可以借助深度神經(jīng)網(wǎng)絡(luò)(在該網(wǎng)絡(luò)中,每個(gè)輸出節(jié)點(diǎn)表示一個(gè)不同的類別)創(chuàng)建明顯更加高效的一對(duì)多模型。圖9展示了這種方法: 圖 9. 一對(duì)多神經(jīng)網(wǎng)絡(luò) 我們已經(jīng)知道,邏輯回歸可生成介于 0 和 1.0 之間的小數(shù)。例如,某電子郵件分類器的邏輯回歸輸出值為 0.8,表明電子郵件是垃圾郵件的概率為 80%,不是垃圾郵件的概率為 20%。很明顯,一封電子郵件是垃圾郵件或非垃圾郵件的概率之和為 1.0。 Softmax 將這一想法延伸到多類別領(lǐng)域。也就是說,在多類別問題中,Softmax 會(huì)為每個(gè)類別分配一個(gè)用小數(shù)表示的概率。這些用小數(shù)表示的概率相加之和必須是 1.0。與其他方式相比,這種附加限制有助于讓訓(xùn)練過程更快速地收斂。 例如,回到我們?cè)趫D 9 中看到的圖片分析示例,Softmax 可能會(huì)得出圖片屬于某一特定類別的以下概率: Softmax 層是緊挨著輸出層之前的神經(jīng)網(wǎng)絡(luò)層。Softmax 層必須和輸出層擁有一樣的節(jié)點(diǎn)數(shù)。 圖 10. 神經(jīng)網(wǎng)絡(luò)中的 Softmax 層 請(qǐng)注意,此公式本質(zhì)上是將邏輯回歸公式延伸到了多類別。 4.1 Softmax 選項(xiàng) 完整 Softmax 是我們一直以來討論的 Softmax;也就是說,Softmax 針對(duì)每個(gè)可能的類別計(jì)算概率。 候選采樣指 Softmax 針對(duì)所有正類別標(biāo)簽計(jì)算概率,但僅針對(duì)負(fù)類別標(biāo)簽的隨機(jī)樣本計(jì)算概率。例如,如果我們想要確定某個(gè)輸入圖片是小獵犬還是尋血獵犬圖片,則不必針對(duì)每個(gè)非狗狗樣本提供概率。 類別數(shù)量較少時(shí),完整 Softmax 代價(jià)很小,但隨著類別數(shù)量的增加,它的代價(jià)會(huì)變得極其高昂。候選采樣可以提高處理具有大量類別的問題的效率。
五、一個(gè)標(biāo)簽與多個(gè)標(biāo)簽
Softmax 假設(shè)每個(gè)樣本只是一個(gè)類別的成員。但是,一些樣本可以同時(shí)是多個(gè)類別的成員。對(duì)于此類示例: 例如,假設(shè)你的樣本是只包含一項(xiàng)內(nèi)容(一塊水果)的圖片。Softmax 可以確定該內(nèi)容是梨、橙子、蘋果等的概率。如果你的樣本是包含各種各樣內(nèi)容(幾份不同種類的水果)的圖片,你必須改用多個(gè)邏輯回歸。 下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程 在「小白學(xué)視覺 」公眾號(hào)后臺(tái)回復(fù): 擴(kuò)展模塊中文教程 , 即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理 等二十多章內(nèi)容。下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講 在「小白學(xué)視覺 」 公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目 , 即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別 等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。 下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講 在「小白學(xué)視覺 」 公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講 , 即可下載含有20 個(gè)基于OpenCV 實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目 ,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。 交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺 、傳感器、自動(dòng)駕駛、 計(jì)算攝影 、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競賽 等微信群(以后會(huì)逐漸細(xì)分), 請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請(qǐng)按照格式備注,否則不予通過 。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿 在群內(nèi)發(fā)送廣告 ,否則會(huì)請(qǐng)出群,謝謝理解~