從0~1的機器學習:神經網路與BP演算法-學習筆記
- 神經網路是模擬人腦巨量並行的處理問題的能力和方式
感知器w1 ~ wn :參數為便於數學上的運算,一般取x0 = 1,同時擁有 w0 。
特徵x1 ~ xn 分別對應參數 w1 ~ wn
對 wi * xi 求和(或其它代價函數演算法),然後經過激勵函數得出最後結果激勵函數 :將結果分類
感知器能做什麼
可以做門電路運算,主要依靠 x0 和 w0 的改變,對於此二參數的選擇會產生誤差。
產生誤差的情況下,利用誤差平面 - 梯度下降更新 w 參數 。
因為有雜訊的存在,所以整體趨向的最小值往往不一定是 0 。
神經網路中,單層神經元(無中間層)的計算可用來表示邏輯運算,比如邏輯與(AND)、邏輯或(OR)。
上方為批量學習公式,還有逐步學習(隨機梯度下降)。
| 逐步學習 | 批量學習 |
| :----------------------: | :--------------------: |
| 每一步誤差出現就立刻修正 | 全部誤差出現再一起修正 |
如何更新?
因為求得是極小值,所以梯度方向是偏導數的反方向。
批量學習偽代碼
- wi 的值很小
- 只要終止條件不滿足,循環。
1、- 將 Δwi 初始化為 0
2、- 將實例x輸入到該單元並計算輸出o
? - 對每個線性權重,Δwi← Δwi+ η(t-o)xi
3、- 對每個線性權重 wi ← wi+ Δwi
逐步學習
即逐步調整。會出現線性函數圖像離區域邊界很近,但其實風險最佳情況是圖像在空白區域中間。
η(t-o)xi 是 閾值函數 近似得來,因為原函數不可導。
逐步學習中,數據的順序會影響參數值;批量學習則沒有。
單個神經元的侷限
無法處理非線性問題。
如何解決?
使用多層感知器(三層)
- 輸入層:將輸入參數轉化成數學含義。
- 隱含層:通過組合,將其輸出當作某一神經元(輸出層)的輸入。
- 輸出層:數據與實際含義的鏈接。
關於隱含層的神經元個數的確定需要試錯才能解決。
Eg
異或 = 『p或q』 <與運算> 『p與非q』
隱含層
其表達是將輸入層的輸出重新組合為輸入,以新輸入為坐標重新繪製的圖像更利於線性分割。
Sigmoid輸出單元(激勵函數)
通過Sigmoid激勵函數,得到:
神經網路的初值w0 w1 ... wn怎麼選?
選 0 附近的隨機數。因為導數最大,收斂速度快。希望Sigmoid函數結果是0,即參數乘數據的和為0,數據不可控,所以參數要為0附近。w0 取到函數變化幅度最大的點附近。
為什麼選擇Sigmoid函數為激勵函數?
理想中的激勵函數是階躍函數,它將輸入值映射為輸出值「0」或「1」,顯然「1」對應於神經元興奮,「0」對應於神經元抑制。然而,階躍函數具有不連續、不光滑等不太好的性質,因此時機常用Sigmoid函數作為激活函數……它把可能在較大範圍內變化的輸入值擠壓到(0,1)輸出值範圍內,因此有時也稱為擠壓函數……
? —— 周志華 《機器學習》
BP演算法(誤差逆傳播)
? 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 個單元的所有下游神經元
輸出單元的訓練規則與隱含層的訓練規則具體過程略,最後輸出單元的方程為: 隱含層的方程為:
工作流程
- 將輸入示例提供給輸入層神經元,逐層將信號前傳直到產生輸出層的結果
- 計算輸出層的誤差,再將誤差逆向傳播至隱層神經元
- 根據隱層神經元的誤差來對連接權和閾值調整
該迭代循環進行,直到達到某些停止條件為止。(與緩解BP過擬合的策略有關)
BP的問題
1、採用梯度下降的方式,可能取到的是局部極小值。可以在多種網路中訓練,取誤差最小解或平均解;使用隨機梯度下降等。
2、過擬合。①退火後減小學習率(course to fine) ②使用驗證集
實際考慮
- 對於平坦區域梯度消失,需加衝量:
- 自適應的學習率:
- 太小:收斂慢,受雜訊影響大
- 太大:收斂快。可能局部振蕩
神經網路在什麼時候有效?
? 樣本可以被一組具有實數值的特徵向量表示。
? 目標輸出可以是離散的值,連續的實數值或者 一個向量。 (自由度很高)? 訓練樣本可能包含錯誤。
? 能夠接受較長時間的訓練:幾秒、幾分鐘、幾 小時、幾天。 ? 對於學到的函數需要快速評估。 ? 對於學到的函數的解釋並不重要。 ? o 權重很難被解釋。
案例提示:
- 選擇可在現實意義與數學轉化上封閉循環或過程化的特徵編碼,或者選擇以概率為思想的向量為編碼。
- 除了預測輸出編碼之外,還需要others的選項。
- Softmax回歸(借鑒)
- 對數據集(所有集)的加工。
(本篇為冬令營AI集訓期間的筆記,第一次用Markdown記筆記,可能有些小亂,多包涵!因為是筆記故內容不可能包含此分類下所有知識點,只請各位參考而非學習。)
推薦閱讀: