• 神經網路是模擬人腦巨量並行的處理問題的能力和方式

感知器w1 ~ wn :參數為便於數學上的運算,一般取x0 = 1,同時擁有 w0 。

特徵x1 ~ xn 分別對應參數 w1 ~ wn

對 wi * xi 求和(或其它代價函數演算法),然後經過激勵函數得出最後結果

激勵函數 :將結果分類

感知器能做什麼

可以做門電路運算,主要依靠 x0 和 w0 的改變,對於此二參數的選擇會產生誤差。

產生誤差的情況下,利用誤差平面 - 梯度下降更新 w 參數 。

因為有雜訊的存在,所以整體趨向的最小值往往不一定是 0 。

神經網路中,單層神經元(無中間層)的計算可用來表示邏輯運算,比如邏輯與(AND)、邏輯或(OR)。

E(vec{x}) = frac{1}{2}Sigma(t_{d}-o_{d})^{2}

上方為批量學習公式,還有逐步學習(隨機梯度下降)。

| 逐步學習 | 批量學習 |

| :----------------------: | :--------------------: |

| 每一步誤差出現就立刻修正 | 全部誤差出現再一起修正 |

如何更新? w_{i}leftarrow w_{i}+Delta{wi} ~~~~~where ~~~~~~Delta{x}=-etafrac{partial{E}}{partial{w_{i}}}

因為求得是極小值,所以梯度方向是偏導數的反方向。

frac{partial{E}}{partial{w_{i}}} 
ightarrow Sigma(t_{d}-0_{d})(-x_{id})~~while~~din D


批量學習偽代碼

  • wi 的值很小
  • 只要終止條件不滿足,循環。

1、- 將 Δwi 初始化為 0

2、- 將實例x輸入到該單元並計算輸出o

? - 對每個線性權重,Δwi← Δwi+ η(t-o)xi

3、- 對每個線性權重 wi ← wi+ Δwi

逐步學習

w_{i}leftarrow w_{i}+Delta{wi} ~~~~~where ~~~~~~Delta{w_{i}}=eta(t-o)x_{i}

即逐步調整。會出現線性函數圖像離區域邊界很近,但其實風險最佳情況是圖像在空白區域中間。

η(t-o)xi 是 閾值函數 近似得來,因為原函數不可導。

逐步學習中,數據的順序會影響參數值;批量學習則沒有。


單個神經元的侷限

無法處理非線性問題。

如何解決?

使用多層感知器(三層)

  1. 輸入層:將輸入參數轉化成數學含義。
  2. 隱含層:通過組合,將其輸出當作某一神經元(輸出層)的輸入。
  3. 輸出層:數據與實際含義的鏈接。

關於隱含層的神經元個數的確定需要試錯才能解決。

Eg

異或 = 『p或q』 <與運算> 『p與非q』


隱含層

其表達是將輸入層的輸出重新組合為輸入,以新輸入為坐標重新繪製的圖像更利於線性分割。


Sigmoid輸出單元(激勵函數)

 sigma(y)=frac{1}{1+e^{-y}}    ~  ~  frac{dsigma(y)}{dy}=sigma(y)·(1-sigma(y))

通過Sigmoid激勵函數,得到: o=sigma(net)=frac{1}{1+e^{-net}}

神經網路的初值w0 w1 ... wn怎麼選?

選 0 附近的隨機數。因為導數最大,收斂速度快。希望Sigmoid函數結果是0,即參數乘數據的和為0,數據不可控,所以參數要為0附近。w0 取到函數變化幅度最大的點附近。

為什麼選擇Sigmoid函數為激勵函數?

理想中的激勵函數是階躍函數,它將輸入值映射為輸出值「0」或「1」,顯然「1」對應於神經元興奮,「0」對應於神經元抑制。然而,階躍函數具有不連續、不光滑等不太好的性質,因此時機常用Sigmoid函數作為激活函數……它把可能在較大範圍內變化的輸入值擠壓到(0,1)輸出值範圍內,因此有時也稱為擠壓函數……

? —— 周志華 《機器學習》

BP演算法(誤差逆傳播)

 E_{d}({ar{w}}) = frac{1}{2}Sigma(t_{k}-o_{k})^{2}~~~~~~~~~Delta{w_{ji}}=-etafrac{partial{E_{d}}}{partial{w_{ji}}} frac{partial{E_{d}}}{partial{w_{ji}}} = frac{partial{E_{d}}}{partial{net_{j}}}·frac{partial{net_{j}}}{partial{w_{ji}}}=frac{partial{E_{d}}}{partial{net_{j}}}x_{ji}

? x_ji = 第 j 個神經元的第 i 個輸入

? w_ji =第 j 個神經元的第 i 個輸入的權重

? net_j = ∑ w_ji · x_ji (第 j 個神經元的輸入加權和)

? o_j = 第 j 個神經元的輸出

? t_j = 第 j 個神經元的目標輸出

? σ = sigmoid函數

? outputs = 最終輸出

? Downstream( j ) = 第 j 個單元的所有下游神經元

輸出單元的訓練規則隱含層的訓練規則具體過程略,最後輸出單元的方程為: frac{partial{E_{d}}}{partial{net_{j}}} = -(t_{j}-o_{j})o_{j}(1-o_{j}) \Delta{w}{ji}=-etafrac{partial{E{d}}}{partial{w_{ji}}}=eta(t_{j}-o_{j})o_{j}(1-o_{j})x_{ji} 隱含層的方程為: frac{partial{E_{d}}}{partial{net_{j}}}=Sigma-delta_{k}w_{kj}o_{j}(1-o_{j}) \kin Downstream(j) \delta_{k}=-frac{partial{E_{d}}}{partial{net_{k}}} \delta_{j}=o_{j}(1-o_{j}) \Delta{w_{ji}}=etadelta_{j}x_{ji}

工作流程

  • 將輸入示例提供給輸入層神經元,逐層將信號前傳直到產生輸出層的結果
  • 計算輸出層的誤差,再將誤差逆向傳播至隱層神經元
  • 根據隱層神經元的誤差來對連接權和閾值調整

該迭代循環進行,直到達到某些停止條件為止。(與緩解BP過擬合的策略有關)

BP的問題

1、採用梯度下降的方式,可能取到的是局部極小值。可以在多種網路中訓練,取誤差最小解或平均解;使用隨機梯度下降等。

2、過擬合。①退火後減小學習率(course to fine) ②使用驗證集

實際考慮

  • 對於平坦區域梯度消失,需加衝量:
  •  Delta{w_{ji}}(n)=etadelta_{j}x_{ji}+aDelta{w_{ji}}(n-1)
  • 自適應的學習率:
  • 太小:收斂慢,受雜訊影響大
  • 太大:收斂快。可能局部振蕩

神經網路在什麼時候有效?

? 樣本可以被一組具有實數值的特徵向量表示。

? 目標輸出可以是離散的值,連續的實數值或者 一個向量。 (自由度很高)

? 訓練樣本可能包含錯誤。

? 能夠接受較長時間的訓練:幾秒、幾分鐘、幾 小時、幾天。 ? 對於學到的函數需要快速評估。 ? 對於學到的函數的解釋並不重要。 ? o 權重很難被解釋。

案例提示:

  • 選擇可在現實意義與數學轉化上封閉循環或過程化的特徵編碼,或者選擇以概率為思想的向量為編碼。
  • 除了預測輸出編碼之外,還需要others的選項。
  • Softmax回歸(借鑒)
  • 對數據集(所有集)的加工。

(本篇為冬令營AI集訓期間的筆記,第一次用Markdown記筆記,可能有些小亂,多包涵!因為是筆記故內容不可能包含此分類下所有知識點,只請各位參考而非學習。)

推薦閱讀:

相關文章