> Image by Alina Grubnyak on Unsplash 神經(jīng)網(wǎng)絡(luò)是將數(shù)據(jù)映射到信息的通用逼近器。這是什么意思?神經(jīng)網(wǎng)絡(luò)可以解決任何問題嗎?神經(jīng)網(wǎng)絡(luò)是一種經(jīng)過驗(yàn)證的解決方案,可用于按場景/逐幀分析,股票價格預(yù)測,零售,以及許多其他目的。我們中的許多人在企業(yè)級別使用它,但是我們當(dāng)中有多少人真正理解它呢? 要回答'神經(jīng)網(wǎng)絡(luò)可以解決任何問題嗎?'的問題,讓我們從基礎(chǔ)上進(jìn)行探討。NeuralNet由稱為層的垂直堆疊組件組成:輸入,隱藏和輸出。每層由一定數(shù)量的神經(jīng)元組成。輸入層具有數(shù)據(jù)集的屬性(特征)。根據(jù)問題陳述,可以存在具有多個神經(jīng)元的多個隱藏層,而輸出層可以具有多個神經(jīng)元。 了解感知器和激活功能感知器(或神經(jīng)元)是神經(jīng)網(wǎng)絡(luò)的基本粒子。它根據(jù)閾值化原理工作。令f(x)是一個閾值為40的求和函數(shù)。 > Fig 1. Firing of Neurone (Image by Author) 在兩種情況下,定義的函數(shù)都返回兩個輸入x 1和x 2的加法。在情況1中,函數(shù)返回小于閾值的30。在情況2中,該函數(shù)返回大于閾值的50,并且神經(jīng)元將觸發(fā)?,F(xiàn)在,此功能變得比這復(fù)雜。典型神經(jīng)網(wǎng)絡(luò)的神經(jīng)元接收輸入值的總和乘以其權(quán)重和增加的偏差,該函數(shù)(也稱為激活函數(shù)或步進(jìn)函數(shù))有助于做出決策。 > Fig 2. Perceptron (Image by Author) 激活函數(shù)將節(jié)點(diǎn)的輸出轉(zhuǎn)換為二進(jìn)制輸出。如果加權(quán)輸入超過閾值,則為1,否則為0(取決于激活功能)。共有三種最常用的激活功能: SigmoidSigmoid是一種廣泛使用的激活函數(shù),有助于捕獲非線性關(guān)系。 > Fig 3. Sigmoid Curve (source) 對于任何z值,函數(shù)Φ(z)將始終返回二進(jìn)制(0/1)輸出。因此,它被廣泛用于基于概率的問題中。 tanh(Tangent雙曲線)它或多或少像Sigmoid函數(shù),但tanh的范圍是-1到1,這使其適合分類問題。它是非線性的。 > Fig 4. tanh curve (Image by Author) ReLu(整流線性單位)它是深度學(xué)習(xí)中最常用的激活函數(shù),因?yàn)樗幌衿渌せ詈瘮?shù)那樣復(fù)雜。f(x)返回0或x。 > Fig 5. ReLu curve (Image by Author) 由于ReLu函數(shù)的導(dǎo)數(shù)返回0或1,這使計(jì)算變得容易。 神經(jīng)網(wǎng)絡(luò)為了理解神經(jīng)網(wǎng)絡(luò)的黑匣子,讓我們考慮一個具有三層的基本結(jié)構(gòu)。輸入層,密集/隱藏層(連接在神經(jīng)元的兩側(cè))和輸出層。 > Fig 6. A simple Neural Network (Image by Author) 權(quán)重和偏差是隨機(jī)初始化的。神經(jīng)網(wǎng)絡(luò)輸出的準(zhǔn)確性在于通過不斷更新權(quán)重和偏差來找到最佳值。讓我們考慮一個方程,y = wx其中' w'是權(quán)重參數(shù),' x'是輸入特征。簡而言之,權(quán)重定義了賦予特定輸入屬性(功能)的權(quán)重?,F(xiàn)在,方程y = wx的解將始終通過原點(diǎn)。因此,增加了一個截距以提供自由度,以適應(yīng)被稱為偏差的完美擬合,并且方程式變?yōu)槲覀兌际煜さ?= wx + b。因此,偏置可以使激活函數(shù)的曲線向上或向下調(diào)整軸。 現(xiàn)在讓我們看看神經(jīng)網(wǎng)絡(luò)會變得多么復(fù)雜。對于我們的網(wǎng)絡(luò),輸入層有兩個神經(jīng)元,密集層有四個神經(jīng)元,輸出層有一個。每個輸入值都與其權(quán)重和偏差相關(guān)聯(lián)。輸入特征與權(quán)重和偏差的組合通過密集層,在該層中,網(wǎng)絡(luò)借助激活函數(shù)學(xué)習(xí)特征,并且網(wǎng)絡(luò)具有自己的權(quán)重和偏差,最后進(jìn)行預(yù)測(輸出)。這就是正向傳播。那么,我們的網(wǎng)絡(luò)有多少個總參數(shù)? > Fig 7. Total Parameter calculation of a Neural Network (Image by Author) 對于這樣一個簡單的網(wǎng)絡(luò),總共需要優(yōu)化17個參數(shù)才能獲得最佳解決方案。隨著隱藏層數(shù)量和其中神經(jīng)元數(shù)量的增加,網(wǎng)絡(luò)獲得了更大的功率(達(dá)到特定點(diǎn)),但是隨后我們需要指數(shù)級的參數(shù)進(jìn)行優(yōu)化,這可能最終會占用大量的計(jì)算資源。因此,需要進(jìn)行權(quán)衡。 更新網(wǎng)絡(luò)在一次正向傳播迭代之后,通過獲取實(shí)際輸出與預(yù)測輸出之間的(平方)差來計(jì)算誤差。在網(wǎng)絡(luò)中,輸入和激活功能是固定的。因此,我們可以更改權(quán)重和偏差以最小化誤差??梢酝ㄟ^注意兩點(diǎn)來最大程度地減少錯誤:通過少量更改權(quán)重來更改錯誤,以及更改的方向。 成本函數(shù)一個簡單的神經(jīng)網(wǎng)絡(luò)根據(jù)線性關(guān)系value = wx + b來預(yù)測值,其中?(預(yù)測)是y(實(shí)際)的近似值?,F(xiàn)在,可以有幾條擬合linear的直線。為了選擇最佳擬合線,我們定義了成本函數(shù)。 令?=θ?+xθ?。我們需要找到θ?和θ?的值,以使?與y盡可能接近。為此,我們需要找到θ?和θ?的值,以使以下定義的誤差最小。 > (Image by Author) 誤差,E =實(shí)際值和預(yù)測值之間的平方差=(=-y)2 因此,Cost =(1 / 2n)(θ?+xθ?-y)2,其中n是用于計(jì)算均方差的總點(diǎn)數(shù),并且將其除以2以減少數(shù)學(xué)計(jì)算量。因此,我們需要最小化此成本函數(shù)。 梯度下降通過最小化成本函數(shù),該算法有助于找到θ?和θ?的最佳值。我知道C =(1 / 2n)(θ?+xθ?— y)2。對于分析解決方案,我們將C相對于變量(θ)(稱為梯度)進(jìn)行了部分微分。 這些梯度表示斜率?,F(xiàn)在,原始成本函數(shù)是二次函數(shù)。因此,該圖將如下所示: > Fig 8. Gradient Descent curve (Image by Author) 更新θ的公式為: 如果我們在點(diǎn)P1處,則斜率為負(fù),這使梯度為負(fù),整個方程為正。因此,該點(diǎn)沿正方向向下移動,直到達(dá)到最小值。類似地,如果我們在點(diǎn)P2處,則坡度為正,這使梯度為正,整個方程為負(fù),使P2沿負(fù)方向移動,直到達(dá)到最小值。此處,η是點(diǎn)趨于極小值的速率,稱為學(xué)習(xí)速率。所有θ都會同時更新(對于某些時期),并計(jì)算誤差。 附帶說明通過這樣做,我們可能會遇到兩個潛在問題:1.在更新θ值時,您可能會陷入局部最小值。一種可能的解決方案是使用具有動量的隨機(jī)梯度下降(SGD),這有助于越過局部極小值。2.如果η太小,收斂將花費(fèi)很長時間?;蛘?,如果η太大(或什至中等偏高),它將繼續(xù)圍繞最小值振蕩,并且永遠(yuǎn)不會收斂。因此,我們不能對所有參數(shù)使用相同的學(xué)習(xí)率。為了解決這個問題,我們可以安排一個例程,該例程會隨著梯度向最小值移動(例如余弦衰減)而調(diào)整η的值。 后向傳播使用梯度下降算法優(yōu)化和更新NeuralNet中的權(quán)重和偏差的一系列操作。讓我們考慮一個具有輸入,單個隱藏層和輸出的簡單神經(jīng)網(wǎng)絡(luò)(圖2)。 設(shè)x為輸入,h為隱藏層,σ為S型激活,w權(quán)重,b為偏置,w?為輸入權(quán)重,w?為輸出權(quán)重,b?為輸入偏置,b?為輸出偏置,O為輸出,E為誤差和μ是線性變換((∑w?x?)+ b)。 現(xiàn)在,我們通過堆疊從輸入到輸出所需的一系列操作來創(chuàng)建圖2的計(jì)算圖。 > Fig 9. Computation Graph (Image by Author) 這里,E依賴于O,O依賴于μ2,μ2依賴于b 1,w 3和h,h依賴于μ1,并且μ1依賴于x,w 1和b 5。我們需要計(jì)算權(quán)重和偏差的中間變化(相關(guān)性)。由于只有一層隱藏層,因此存在輸入和輸出權(quán)重和偏差。因此,我們可以將其分為兩種情況。 案例1:w.r.t.輸出權(quán)重和偏差> Fig 10. Computation Graph for case 1 (Image by Author) 因此,通過將導(dǎo)數(shù)的值放在上述兩個誤差變化方程中,可以得到如下的梯度 我們可以通過以下公式更新權(quán)重和偏差: 此計(jì)算用于隱藏層和輸出。同樣,對于輸入和隱藏層如下。 情況2:w.r.t。輸入權(quán)重和偏差> Fig 11. Computation Graph for case 2. (Image by Author) 我們可以使用以下方法更新這些漸變: 兩種情況同時發(fā)生,并且計(jì)算錯誤直到重復(fù)的次數(shù)稱為時期。對神經(jīng)網(wǎng)絡(luò)進(jìn)行監(jiān)督。在運(yùn)行了一定數(shù)量的時間后,我們?yōu)閿?shù)據(jù)集的選定要素設(shè)置了一組優(yōu)化的權(quán)重和偏差。當(dāng)在此優(yōu)化網(wǎng)絡(luò)中引入新輸入時,將使用權(quán)重和偏差的優(yōu)化值來計(jì)算它們,以實(shí)現(xiàn)最大精度。 神經(jīng)網(wǎng)絡(luò)可以解決任何問題嗎?如上所述,神經(jīng)網(wǎng)絡(luò)是通用逼近器。從理論上講,它們能夠代表任何功能,因此可以解決任何問題。隨著網(wǎng)絡(luò)的增長(更多的隱藏層),它會獲得更多的功能,但是要優(yōu)化的參數(shù)數(shù)量呈指數(shù)級增長,這會占用大量資源。 可以在這里找到實(shí)現(xiàn)。 (本文由聞數(shù)起舞翻譯自Shubham Dhingra的文章《Simplified Mathematics behind Neural Networks》,轉(zhuǎn)載請注明出處,原文鏈接:https:///simplified-mathematics-behind-neural-networks-f2b7298f86a4) |
|