神經網路簡易教程

2022-06-14 10:45:10 字數 3910 閱讀 6950

作者|renu khandelwal

編譯|vk

**|medium

在這篇文章中,我們將了解神經網路的基礎知識。

這個部落格的先決條件是對機器學習的基本理解,如果你嘗試過一些機器學習演算法,那就更好了。

首先簡單介紹一下人工神經網路,也叫ann。

很多機器學習演算法的靈感來自大自然,而最大的靈感來自我們的大腦,我們如何思考、學習和做決定。

有趣的是,當我們觸控到熱的東西時,我們身體裡的神經元將訊號傳遞給大腦的。然後,大腦產生衝動,從熱的區域撤退。我們根據經驗接受了訓練。根據我們的經驗,我們開始做出更好的決定。

使用同樣的模擬,當我們向神經網路傳送乙個輸入(觸控熱物質),然後根據學習(先前的經驗),我們產生乙個輸出(從熱區域退出)。在未來,當我們得到類似的訊號(接觸熱表面),我們可以**輸出(從熱區退出)。

假設我們輸入了諸如溫度、風速、能見度、濕度等資訊,以**未來的天氣狀況——下雨、多雲還是晴天。

這可以表示為如下所示。

讓我們用神經網路來表示它並理解神經網路的組成部分。

神經網路接收輸入,通過使用啟用函式改變狀態來轉換輸入訊號,從而產生輸出。

輸出將根據接收到的輸入、強度(如果訊號由權值表示)和應用於輸入引數和權值的啟用而改變。

神經網路與我們神經系統中的神經元非常相似。

x1、x2、…xn是神經元向樹突的輸入訊號,在神經元的軸突末端會發生狀態改變,產生輸出y1、y2、…yn。

以天氣預報為例,溫度、風速、能見度和濕度是輸入引數。然後,神經元通過使用啟用函式對輸入施加權重來處理這些輸入,從而產生輸出。這裡**的輸出是晴天、雨天或陰天的型別。

那麼,神經網路的組成部分是什麼呢

神經網路會有

輸入層、隱含層和輸出層通常稱為全連線層

這些權值是什麼,什麼是啟用函式,這些復方程是什麼?

讓我們簡化

權重是神經網路學習的方式。我們調整權重來確定訊號的強度。

權重幫助我們得到不同的輸出。

例如,要**晴天,溫度可能介於宜人到炎熱之間,晴天的能見度非常好,因此溫度和能見度的權重會更高。

濕度不會太高,否則當天會下雨,所以濕度的重量可能會小一些,也可能是負的。

風速可能與晴天無關,它的強度要麼為0,要麼非常小。

我們隨機初始化權重(w)與輸入(x)相乘並新增偏差項(b),所以對於隱藏層,乙個版本是計算z,然後應用啟用函式(ɸ)。

我們稱之為前項傳播。乙個方程可以表示如下,其中\(l\)為層的編號。對於輸入層\(l=1\)。

說到啟用函式,我們來了解一下它們的用途

啟用函式幫助我們決定是否需要啟用乙個神經元如果我們需要啟用乙個神經元那麼訊號的強度是多少。

啟用函式是神經元通過神經網路處理和傳遞資訊的機制。

讓我們用**天氣的樣本資料來理解神經網路

為了更好地理解,我們將進行簡化,我們只需要兩個輸入:有兩個隱藏節點的溫度和能見度,沒有偏置,我們仍然希望將天氣劃分為晴天或不晴天

溫度是華氏溫度,能見度是英里。

讓我們看乙個溫度為50華氏度,能見度為0.01英里的資料。

步驟1:我們將權重隨機初始化為乙個接近於0但不等於0的值。

步驟2:接下來,我們用我們的溫度和能見度的輸入節點獲取我們的單個資料點,並通過神經網路。

步驟3:應用從左到右的前項傳播,將權值乘以輸入值,然後使用relu作為啟用函式。我們知道relu是隱層的最佳啟用函式。

步驟4:現在我們**輸出,並將**輸出與實際輸出值進行比較。由於這是乙個分類問題,我們使用交叉熵函式

交叉熵是乙個非負的代價函式,取值範圍在0和1之間

在我們的例子中,實際的輸出不是晴天,所以y的值為0。如果ŷ是1,那麼我們把值代入成本函式,看看得到什麼

類似地,當實際輸出和**輸出相同時,我們得到成本c=0。

我們可以看到,對於交叉熵函式,當**的輸出與實際輸出相匹配時,成本為零。當**產量與實際產量不匹配時,成本是無窮大的。

步驟5:從右向左反向傳播並調整權重。權重是根據權重對錯誤負責的程度進行調整的。學習率決定了我們更新權重的多少。

反向傳播,學習率。我們將用簡單的術語來解釋一切。

反向傳播

把反向傳播看作是我們有時從父母、導師、同伴那裡得到的反饋機制。反饋幫助我們成為乙個更好的人。

反向傳播是一種快速的學習演算法。它告訴我們,當我們改變權重和偏差時,成本函式會發生怎樣的變化。從而改變了神經網路的行為。

不需要深入研究反向傳播的詳細數學。在反向傳播中,我們計算每個訓練例項的成本對權重的偏導數和成本對偏差的偏導數。求所有訓練樣本的偏導數的平均值。

對於我們的單個資料點,我們確定每個權值和偏差對錯誤的影響程度。基於這些權值對錯誤的影響程度,我們同時調整所有權值。

對於使用批量梯度下降(gd)的所有訓練資料,可以更新一次權值;對於使用隨機梯度下降(sgd)的每個訓練示例,可以更新一次權值。

對於不同的權重,我們使用gd或sgd重複步驟1到步驟5。

隨著權重的調整,某些節點將根據啟用函式開啟或關閉。

在我們的天氣例子中,溫度與**多雲的相關性較小,因為夏季的溫度可能在70度以上,而冬季仍然是多雲的,或者冬季的溫度可能在30度或更低,但仍然是多雲的。在這種情況下,啟用函式可以決定關閉負責溫度的隱藏節點,只開啟可見度節點,以**輸出不是晴天,如下圖所示

epoch是指用於一次學習,一次正向傳播和一次反向傳播的完整資料集。

我們可以重複也就是在多個epoch下前項和反向傳播,直到我們收斂到乙個全域性極小值。

什麼是學習率?

學習率控制著我們應該在多大程度上根據損失梯度調整權重。

值越低,學習率越慢,收斂到全域性最小。

較高的學習率值不會使梯度下降收斂

學習率是隨機初始化的。

如何確定隱藏層的數量和每個隱藏層的節點數量?

隨著隱層數目的增加和隱層神經元或節點數目的增加,神經網路的容量也隨之增大。神經元可以協作來表達不同的功能。這常常會導致過擬合,我們必須小心過擬合。

對於神經網路中隱藏層的最優數量,根據jeff heaton提出的下表

對於隱藏層中神經元的最佳數目,我們可以採用下面的任何一種方法

這是一種試圖以一種簡單的方式解釋人工神經網路而不深入複雜數學的文章。

歡迎關注磐創ai部落格站:

sklearn機器學習中文官方文件:

歡迎關注磐創部落格資源彙總站:

簡易神經網路

torch.autogard包的主要功能是完成神經網路後向傳播中的鏈式求導。實現自動梯度功能的過程大致為 先通過輸入的tensor資料型別的變數在神經網路的前向傳播過程中生成一張計算圖,然後根據這個計算圖和輸出結果準確計算出每個引數需要更新的梯度,並通過完成後向傳播完成對引數的梯度更新。variab...

Tensorflow教程 遞迴神經網路

可以在 here。本教程的目的是重現 zaremba et al.2014 的成果,他們在 ptb 資料集上得到了很棒的結果。本教程使用的下面檔案的目錄是models rnn ptb 檔案作用 ptb word lm.py在 ptb 資料集上訓練乙個語言模型.reader.py讀取資料集.本教程需要...

神經網路 卷積神經網路

這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...