首頁>技術>

> Image by Alina Grubnyak on Unsplash

神經網路是將資料對映到資訊的通用逼近器。這是什麼意思?神經網路可以解決任何問題嗎?神經網路是一種經過驗證的解決方案,可用於按場景/逐幀分析,股票價格預測,零售,以及許多其他目的。我們中的許多人在企業級別使用它,但是我們當中有多少人真正理解它呢?

要回答"神經網路可以解決任何問題嗎?"的問題,讓我們從基礎上進行探討。NeuralNet由稱為層的垂直堆疊元件組成:輸入,隱藏和輸出。每層由一定數量的神經元組成。輸入層具有資料集的屬性(特徵)。根據問題陳述,可以存在具有多個神經元的多個隱藏層,而輸出層可以具有多個神經元。

瞭解感知器和啟用功能

感知器(或神經元)是神經網路的基本粒子。它根據閾值化原理工作。令f(x)是一個閾值為40的求和函式。

> Fig 1. Firing of Neurone (Image by Author)

在兩種情況下,定義的函式都返回兩個輸入x 1和x 2的加法。在情況1中,函式返回小於閾值的30。在情況2中,該函式返回大於閾值的50,並且神經元將觸發。現在,此功能變得比這複雜。典型神經網路的神經元接收輸入值的總和乘以其權重和增加的偏差,該函式(也稱為啟用函式或步進函式)有助於做出決策。

> Fig 2. Perceptron (Image by Author)

啟用函式將節點的輸出轉換為二進位制輸出。如果加權輸入超過閾值,則為1,否則為0(取決於啟用功能)。共有三種最常用的啟用功能:

Sigmoid

Sigmoid是一種廣泛使用的啟用函式,有助於捕獲非線性關係。

> Fig 3. Sigmoid Curve (source)

對於任何z值,函式Φ(z)將始終返回二進位制(0/1)輸出。因此,它被廣泛用於基於機率的問題中。

tanh(Tangent雙曲線)

它或多或少像Sigmoid函式,但tanh的範圍是-1到1,這使其適合分類問題。它是非線性的。

> Fig 4. tanh curve (Image by Author)

ReLu(整流線性單位)

它是深度學習中最常用的啟用函式,因為它不像其他啟用函式那樣複雜。f(x)返回0或x。

> Fig 5. ReLu curve (Image by Author)

由於ReLu函式的導數返回0或1,這使計算變得容易。

神經網路

為了理解神經網路的黑匣子,讓我們考慮一個具有三層的基本結構。輸入層,密集/隱藏層(連線在神經元的兩側)和輸出層。

> Fig 6. A simple Neural Network (Image by Author)

權重和偏差是隨機初始化的。神經網路輸出的準確性在於透過不斷更新權重和偏差來找到最佳值。讓我們考慮一個方程,y = wx其中" w"是權重引數," x"是輸入特徵。簡而言之,權重定義了賦予特定輸入屬性(功能)的權重。現在,方程y = wx的解將始終透過原點。因此,增加了一個截距以提供自由度,以適應被稱為偏差的完美擬合,並且方程式變為我們都熟悉的ŷ= wx + b。因此,偏置可以使啟用函式的曲線向上或向下調整軸。

現在讓我們看看神經網路會變得多麼複雜。對於我們的網路,輸入層有兩個神經元,密集層有四個神經元,輸出層有一個。每個輸入值都與其權重和偏差相關聯。輸入特徵與權重和偏差的組合透過密集層,在該層中,網路藉助啟用函式學習特徵,並且網路具有自己的權重和偏差,最後進行預測(輸出)。這就是正向傳播。那麼,我們的網路有多少個總引數?

> Fig 7. Total Parameter calculation of a Neural Network (Image by Author)

對於這樣一個簡單的網路,總共需要最佳化17個引數才能獲得最佳解決方案。隨著隱藏層數量和其中神經元數量的增加,網路獲得了更大的功率(達到特定點),但是隨後我們需要指數級的引數進行最佳化,這可能最終會佔用大量的計算資源。因此,需要進行權衡。

更新網路

在一次正向傳播迭代之後,透過獲取實際輸出與預測輸出之間的(平方)差來計算誤差。在網路中,輸入和啟用功能是固定的。因此,我們可以更改權重和偏差以最小化誤差。可以透過注意兩點來最大程度地減少錯誤:透過少量更改權重來更改錯誤,以及更改的方向。

成本函式

一個簡單的神經網路根據線性關係value = wx + b來預測值,其中ŷ(預測)是y(實際)的近似值。現在,可以有幾條擬合linear的直線。為了選擇最佳擬合線,我們定義了成本函式。

令ŷ=θ₀+xθ₁。我們需要找到θ₀和θ₁的值,以使ŷ與y儘可能接近。為此,我們需要找到θ₀和θ₁的值,以使以下定義的誤差最小。

> (Image by Author)

誤差,E =實際值和預測值之間的平方差=(=-y)²

因此,Cost =(1 / 2n)(θ₀+xθ₁-y)²,其中n是用於計算均方差的總點數,並且將其除以2以減少數學計算量。因此,我們需要最小化此成本函式。

梯度下降

透過最小化成本函式,該演算法有助於找到θ₀和θ₁的最佳值。我知道C =(1 / 2n)(θ₀+xθ₁— y)²。對於分析解決方案,我們將C相對於變數(θ)(稱為梯度)進行了部分微分。

這些梯度表示斜率。現在,原始成本函式是二次函式。因此,該圖將如下所示:

> Fig 8. Gradient Descent curve (Image by Author)

更新θ的公式為:

如果我們在點P1處,則斜率為負,這使梯度為負,整個方程為正。因此,該點沿正方向向下移動,直到達到最小值。類似地,如果我們在點P2處,則坡度為正,這使梯度為正,整個方程為負,使P2沿負方向移動,直到達到最小值。此處,η是點趨於極小值的速率,稱為學習速率。所有θ都會同時更新(對於某些時期),並計算誤差。

附帶說明

透過這樣做,我們可能會遇到兩個潛在問題:1.在更新θ值時,您可能會陷入區域性最小值。一種可能的解決方案是使用具有動量的隨機梯度下降(SGD),這有助於越過區域性極小值。2.如果η太小,收斂將花費很長時間。或者,如果η太大(或什至中等偏高),它將繼續圍繞最小值振盪,並且永遠不會收斂。因此,我們不能對所有引數使用相同的學習率。為了解決這個問題,我們可以安排一個例程,該例程會隨著梯度向最小值移動(例如餘弦衰減)而調整η的值。

後向傳播

使用梯度下降演算法最佳化和更新NeuralNet中的權重和偏差的一系列操作。讓我們考慮一個具有輸入,單個隱藏層和輸出的簡單神經網路(圖2)。

設x為輸入,h為隱藏層,σ為S型啟用,w權重,b為偏置,wᵢ為輸入權重,wₒ為輸出權重,bᵢ為輸入偏置,bₒ為輸出偏置,O為輸出,E為誤差和μ是線性變換((∑wᵢxᵢ)+ b)。

現在,我們透過堆疊從輸入到輸出所需的一系列操作來建立圖2的計算圖。

> 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。我們需要計算權重和偏差的中間變化(相關性)。由於只有一層隱藏層,因此存在輸入和輸出權重和偏差。因此,我們可以將其分為兩種情況。

案例1:w.r.t.輸出權重和偏差

> Fig 10. Computation Graph for case 1 (Image by Author)

因此,透過將導數的值放在上述兩個誤差變化方程中,可以得到如下的梯度

我們可以透過以下公式更新權重和偏差:

此計算用於隱藏層和輸出。同樣,對於輸入和隱藏層如下。

情況2:w.r.t。輸入權重和偏差

> Fig 11. Computation Graph for case 2. (Image by Author)

我們可以使用以下方法更新這些漸變:

兩種情況同時發生,並且計算錯誤直到重複的次數稱為時期。對神經網路進行監督。在運行了一定數量的時間後,我們為資料集的選定要素設定了一組最佳化的權重和偏差。當在此最佳化網路中引入新輸入時,將使用權重和偏差的最佳化值來計算它們,以實現最大精度。

神經網路可以解決任何問題嗎?

如上所述,神經網路是通用逼近器。從理論上講,它們能夠代表任何功能,因此可以解決任何問題。隨著網路的增長(更多的隱藏層),它會獲得更多的功能,但是要最佳化的引數數量呈指數級增長,這會佔用大量資源。

可以在這裡找到實現。

10
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Qt編寫地圖綜合應用21-路徑規劃