神經網絡是目前最流行的機器學習算法之一。随着時間的推移,神經網絡在準确性和速度方面優于其他算法,已經得到了明确的證明。随着CNN(卷積神經網絡),RNN(循環神經網絡),自動編碼器,深度學習等各種變體,神經網絡正逐漸成為數據科學家或機器學習從業者的統計學家的線性回歸。因此,必須對神經網絡是什麼,如何組成以及它的影響範圍和局限有基本的了解。這篇文章試圖解釋神經網絡從其最基本的構建塊神經元開始,然後深入研究其最流行的變體,如CNN,RNN等。
什麼是神經元?顧名思義,神經網絡的靈感來自人類大腦的神經結構,就像在人類大腦中一樣,基本構建塊被稱為神經元。它的功能類似于人類神經元,即它接收一些輸入并觸發輸出。在純粹的數學術語中,機器學習世界中的神經元是數學函數的占位符,其唯一的工作是通過在所提供的輸入上應用函數來提供輸出。
神經元中使用的函數通常被稱為激活函數。主要的激活函數,step,sigmoid,tanh和ReLU。以下詳細描述這些中的每一個。
激活函數階躍函數
階梯函數定義為
如果x的值大于等于0,則輸出為1;如果x的值小于零,則輸出為0。可以看出階躍函數在零時是不可微分的。目前,神經網絡使用反向傳播方法和梯度下降來計算不同層的權重。由于階躍函數在零處是不可微分的,因此它不能用梯度下降方法取得進展并且在更新權重的任務中失敗。
為了克服這個問題,引入了sigmoid函數而不是step函數。
Sigmoid函數
sigmoid函數或邏輯函數在數學上定義為
當z或自變量趨于負無窮大時,函數的值趨向于零,當z趨于無窮大時,函數的值趨向于1。需要記住,此函數表示因變量行為的近似值,并且是一個假設。現在出現的問題是為什麼我們使用sigmoid函數作為近似函數之一。這有一些簡單的原因。
1.它捕獲數據中的非線性。雖然是近似的形式,但非線性的概念對于精确建模至關重要。
2. sigmoid函數在整個過程中是可微分的,因此可以用于梯度下降和反向傳播方法來計算不同層的權重。
3.因變量跟随sigmoid函數的假設本質上是自變量的高斯分布這是很多随機事件的一般分布這是一個很好的通用分布。
然而,sigmoid函數也存在梯度消失的問題。從圖中可以看出,sigmoid函數将其輸入壓縮到非常小的輸出範圍[0,1]并且具有非常陡峭的梯度。因此,仍然存在大的輸入空間區域,即使很大的變化也會在輸出中産生非常小的變化。這被稱為梯度消失的問題。該問題随着層數的增加而增加,從而在一定程度上阻礙了神經網絡的學習。
Tanh函數
tanh(z)函數是sigmoid的新版本,其輸出範圍是[ - 1,1]而不是[0,1]。
在某些地方使用Tanh函數而不是sigmoid函數的一般原因是因為數據以0為中心,因此導數更高。較高的梯度有助于提高學習率。下面附有兩個函數tanh和sigmoid的繪制梯度。
對于tanh函數,對于[-1,1]之間的輸入,我們有[0.42,1]之間的導數。
另一方面,對于sigmoid函數,對于[0,1]之間的輸入,我們有[0.20,0.25]之間的導數
從上面的圖片可以看出,Tanh函數具有比Sigmoid函數更高的導數範圍,因此具有更好的學習率。然而,梯度消失的問題仍然存在于Tanh函數中。
ReLU函數
ReLU是深度學習模型中最常用的激活函數。如果它接收到任何負輸入,則該函數返回0,但對于任何正值x,它返回該值。因此,它可以寫成f(x)= max(0,x)。
圖形上看起來像這樣
Leaky ReLU是最知名的之一。對于正數,它與ReLU相同。但是對于所有負值而言,它不是0,而是具有恒定的斜率(小于1)。
該斜率是用戶在構建模型時設置的參數,通常稱為α。例如,如果用戶設置α= 0.3,則激活函數為, f(x) = max (0.3*x, x)這具有理論上的優勢,即通過受 x所有值的影響,它可以更完整地使用x中包含的信息。
還有其他選擇,但是從業者和研究人員通常都發現沒有足夠的好處來證明使用除ReLU以外的任何其他方法。在一般實踐中,ReLU發現其性能優于sigmoid或tanh函數。
神經網絡到目前為止,我們已經涵蓋了神經元和激活函數,這些函數一起用于任何神經網絡的基本構建塊。現在,我們将深入探讨什麼是神經網絡及其不同類型。如果他們對此有疑問,我會強烈建議人們重新審視神經元和激活函數。
在理解神經網絡之前,必須了解神經網絡中的層是什麼。一層隻是一組神經元,它們接收輸入并提供輸出。通過分配給神經元的激活函數處理對這些神經元中的每一個的輸入。例如,這是一個小型神經網絡。
網絡的最左邊的層稱為 輸入層,最右邊的層稱為 輸出層(在此示例中,隻有一個節點)。中間層節點稱為 隐藏層,因為在訓練集中未觀察到其值。我們還說我們的示例神經網絡有3個 輸入單元(不計算偏差單元),3個 隐藏單元和1個 輸出單元 [4]
任何神經網絡都至少有1個輸入和1個輸出層。例如,隐藏層的數量在不同網絡之間不同,這取決于要解決的問題的複雜性。
這裡要注意的另一個重點是每個隐藏層可以具有不同的激活函數,例如,隐藏層1可以使用sigmoid函數,隐藏層2可以使用ReLU,然後隐藏層3中的Tanh,全部在同一個神經元中網絡。使用的激活函數的選擇取決于所讨論的問題和所使用的數據類型。
現在,對于神經網絡進行準确預測,這些神經元中的每一個都在每一層都學習一定的權重。他們學習權重的算法稱為反向傳播。
具有多于一個隐藏層的神經網絡通常被稱為深度神經網絡。
卷積神經網絡(CNN)卷積神經網絡(CNN)是在計算機視覺領域中大量使用的神經網絡的變體之一。它的名稱來自它所包含的隐藏層的類型。CNN的隐藏層通常由卷積層,池化層,全連接層和歸一化層組成。在這裡,它隻是意味着不使用上面定義的正常激活函數,而是使用卷積和pooling 函數作為激活函數。
要詳細了解它,需要了解卷積和池化是什麼。這兩個概念都來自計算機視覺領域,并在下面定義。
卷積:卷積對兩個信号(1D)或兩個圖像(2D)進行操作:您可以将一個視為“輸入”信号(或圖像),将另一個(稱為核)視為“過濾器”輸入圖像,産生輸出圖像(因此卷積将兩個圖像作為輸入并産生第三個作為輸出)。
在外行術語中,它接收輸入信号并在其上應用濾波器,實質上将輸入信号與核相乘以獲得修改的信号。數學上,f和g的卷積定義為
它就是輸入函數和核函數的點積。
在圖像處理中,可以更容易地将内核可視化為在整個圖像上滑動,從而改變進程中每個像素的值。
池化:池化是基于樣本的離散化過程。目标是對輸入表示(圖像,隐藏層輸出矩陣等)進行下采樣,降低其維數并允許對包含在子區域中的特征進行池化。
池有兩種主要類型,通常稱為最大和最小池池化。顧名思義,最大池化是基于從所選區域中獲取最大值,而最小池化是基于從所選區域中獲取最小值。
因此,可以看出,卷積神經網絡或CNN基本上是深度神經網絡,其由除了用于引入非線性的激活函數之外具有卷積和池化函數的隐藏層組成。
循環神經網絡(RNN)簡稱為循環神經網絡或RNN,是自然語言處理中大量使用的神經網絡的一個非常重要的變體。在通用神經網絡中,通過多個層處理輸入并産生輸出,假設兩個連續輸入彼此獨立。
然而,在許多現實生活場景中,這種假設并不正确。例如,如果想要在給定時間預測股票的價格或者想要預測序列中的下一個詞,則必須考慮對先前觀察的依賴。
RNN被稱為 循環,因為它們對序列的每個元素執行相同的任務,輸出取決于先前的計算。考慮RNN的另一種方式是它們有一個“記憶”,它可以捕獲到目前為止計算的信息。從理論上講,RNN可以利用任意長序列中的信息,但在實踐中,它們僅限于回顧幾個步驟。
架構方面,RNN看起來像這樣。可以将其想象為多層神經網絡,其中每層代表在特定時間t的觀察結果。
RNN已經證明在自然語言處理方面取得了巨大的成功,尤其是它們的變體LSTM,它們能夠比RNN更長遠。
在本文中,我試圖從理論的角度涵蓋神經網絡,從最基本的結構,神經元和覆蓋到最流行的神經網絡版本開始。這篇文章的目的是讓讀者了解神經網絡是如何從頭開始構建的,它使用的所有領域以及最成功的變體是什麼。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!