DL基石-神經網絡簡易教程

在這篇文章中,咱們將去學習神經網絡的基礎知識。
本篇文章的學習須要對機器學習有着基本理解,若是你學習過一些機器學習算法,那就更好了。
首先簡單介紹一下人工神經網絡,也叫ANN。
不少機器學習算法的靈感來自於大天然,而最大的靈感來自咱們的大腦,咱們如何思考、學習和作決定。
有趣的是,當咱們觸摸到熱的東西時,咱們身體裏的神經元會將信號傳遞給大腦的,而後大腦會產生讓咱們從熱的區域撤退的反應。咱們能夠根據經驗來進行訓練,根據咱們的經驗,咱們開始作出更好的決定。
使用一樣的類比,當咱們向神經網絡發送一個輸入(觸摸熱物質),而後根據學習(先前的經驗),咱們產生一個輸出(從熱區域退出)。在將來,當咱們獲得相似的信號(接觸熱表面),咱們能夠預測輸出(從熱區退出)。
假設咱們輸入了諸如溫度、風速、能見度、溼度等信息,以預測將來的天氣情況——下雨、多雲仍是晴天。
這能夠表示爲以下所示。
DL基石-神經網絡簡易教程
讓咱們用神經網絡來表示它並理解神經網絡的組成部分。
神經網絡接收輸入,經過使用激活函數改變狀態從而轉換輸入信號,進而產生輸出。
輸出將根據接收到的輸入、強度(若是信號由權值表示)和應用於輸入參數和權值的激活而改變。
神經網絡與咱們神經系統中的神經元很是類似。
DL基石-神經網絡簡易教程
x一、x二、…xn是神經元向樹突的輸入信號,在神經元的軸突末端會發生狀態改變,產生輸出y一、y二、…yn。
以天氣預報爲例,溫度、風速、能見度和溼度是輸入參數,而後神經元經過使用激活函數對輸入施加權重來處理這些輸入,從而產生輸出,這裏預測的輸出是晴天、雨天或陰天的類型。
DL基石-神經網絡簡易教程
那麼,神經網絡的組成部分是什麼呢
神經網絡會有算法

  • 輸入層,偏置單元
  • 一個或多個隱藏層,每一個隱藏層將有一個偏置單元
  • 輸出層
  • 與每一個鏈接相關的權重
  • 將節點的輸入信號轉換爲輸出信號的激活函數
    輸入層、隱含層和輸出層一般稱爲全鏈接層
    DL基石-神經網絡簡易教程
    這些權值是什麼,什麼是激活函數,這些方程是什麼?
    讓咱們簡化一下
    權重是神經網絡學習的方式,咱們調整權重來肯定信號的強度。
    權重幫助咱們獲得不一樣的輸出。
    例如,要預測晴天,溫度可能介於宜人到炎熱之間,晴天的能見度很是好,所以溫度和能見度的權重會更高。
    溼度不會過高,不然當天會下雨,因此溼度的重量可能會小一些,也多是負的。
    風速可能與晴天無關,它的強度要麼爲0,要麼很是小。
    咱們隨機初始化權重(w)與輸入(x)相乘並添加誤差項(b),因此對於隱藏層,會先計算z,而後應用激活函數(ɸ)。
    咱們稱之爲前向傳播。方程能夠表示以下,其中爲層的編號,對於輸入層。
    DL基石-神經網絡簡易教程
    說到激活函數,咱們來了解一下它們的用途
    激活函數幫助咱們決定是否須要激活該神經元,若是咱們須要激活該神經元那麼信號的強度是多少。
    激活函數是神經元經過神經網絡處理和傳遞信息的機制。
    讓咱們用預測天氣的樣本數據來理解神經網絡
    爲了更好地理解,咱們將進行簡化,咱們只須要兩個輸入:有兩個隱藏節點的溫度和能見度,沒有偏置。對於輸出,咱們仍然但願將天氣劃分爲晴天或不晴天
    溫度是華氏溫度,能見度是英里。
    DL基石-神經網絡簡易教程
    讓咱們看一個溫度爲50華氏度,能見度爲0.01英里的數據。
    步驟1:咱們將權重隨機初始化爲一個接近於0但不等於0的值。
    步驟2:接下來,咱們用溫度和能見度的輸入節點獲取咱們的單個數據點,並輸入到神經網絡。
    步驟3:從左到右進行前向傳播,將權值乘以輸入值,而後使用ReLU做爲激活函數。目前ReLU是全鏈接網絡最經常使用的激活函數。
    步驟4:如今咱們預測輸出,並將預測輸出與實際輸出值進行比較。因爲這是一個分類問題,咱們使用交叉熵函數
    DL基石-神經網絡簡易教程
    交叉熵是一個非負的代價函數,取值範圍在0和1之間 在咱們的例子中,實際的輸出不是晴天,因此y的值爲0。若是ŷ是1,那麼咱們把值代入成本函數,看看獲得什麼
    DL基石-神經網絡簡易教程
    相似地,當實際輸出和預測輸出相同時,咱們獲得成本c=0。
    DL基石-神經網絡簡易教程
    咱們能夠看到,對於交叉熵函數,當預測的輸出與實際輸出相匹配時,成本爲零;當預測的輸出與實際輸出不匹配時,成本是無窮大的。
    步驟5:從右向左反向傳播並調整權重。權重是根據權重對錯誤負責的程度進行調整的,學習率決定了咱們更新權重的多少。
    反向傳播、學習率,咱們將用簡單的術語來解釋一切。
    反向傳播
    把反向傳播看做是咱們有時從父母、導師、同伴那裏獲得的反饋機制,反饋幫助咱們成爲一個更好的人。
    反向傳播是一種快速的學習算法,它告訴咱們,當咱們改變權重和誤差時,成本函數會發生怎樣的變化,從而改變了神經網絡的行爲。
    這裏不深刻研究反向傳播的詳細數學。在反向傳播中,咱們計算每一個訓練實例的成本對權重的偏導數和成本對誤差的偏導數,而後求全部訓練樣本的偏導數的平均值。
    對於咱們的單個數據點,咱們肯定每一個權值和誤差對錯誤的影響程度,基於這些權值對錯誤的影響程度,咱們同時調整全部權值。
    對於使用批量梯度降低(GD)算法,全部訓練數據更新一次權值;對於使用隨機梯度降低(SGD)算法,每個批次訓練示例更新一次權值。
    對於不一樣的權重,咱們使用GD或SGD重複步驟1到步驟5。
    隨着權重的調整,某些節點將根據激活函數進行打開或關閉。
    在咱們的天氣例子中,溫度與預測多雲的相關性較小,由於夏季的溫度可能在70度以上,而冬季仍然是多雲的,或者冬季的溫度可能在30度或更低,但仍然是多雲的,在這種狀況下,激活函數能夠決定關閉負責溫度的隱藏節點,只打開可見度節點,以預測輸出不是晴天,以下圖所示

DL基石-神經網絡簡易教程
DL基石-神經網絡簡易教程
Epoch是指用於一次學習,一次正向傳播和一次反向傳播的完整數據集。
咱們能夠重複也就是在多個epoch下前向和反向傳播,直到咱們收斂到一個全局極小值。
什麼是學習率?
學習率控制着咱們應該在多大程度上根據損失梯度調整權重。
值越低,學習越慢,收斂到全局最小也越慢。
較高的學習率值不會使梯度降低收斂
學習率是隨機初始化的。
DL基石-神經網絡簡易教程
如何肯定隱藏層的數量和每一個隱藏層的節點數量?
隨着隱層數目的增長和隱層神經元或節點數目的增長,神經網絡的容量也隨之增大,神經元能夠協做來表達不一樣的功能,這經常會致使過擬合,咱們必須當心過擬合。
對於神經網絡中隱藏層的最優數量,根據Jeff Heaton提出的下表
DL基石-神經網絡簡易教程
對於隱藏層中神經元的最佳數目,咱們能夠採用下面的方法網絡

相關文章
相關標籤/搜索