1. 程式人生 > >周志華《機器學習》學習筆記(第 5 章 神經網路)

周志華《機器學習》學習筆記(第 5 章 神經網路)

  本內容記錄 周志華《機器學習》——第 5 章 神經網路 學習筆記。

第 5 章 神經網路

5.1 神經元模型

  神經網路(neural networks)方面的研究很早就已開始,今天“神經網路”已是一個相當大的、多學科交叉的學科領域。各相關學科對神經網路的定義多種多樣,本書採用目前使用得最廣泛的一種,即“神經網路是由具有適應性的簡單單元組成的廣泛並行互連的網路,它的組織能夠模擬生物神經系統對真實世界物體所作出的互動反應”。我們在機器學習中談論神經網路時指的是“神經網路學習”,或者說,是機器學習與神經網路這兩個學科領域的交叉部分。
  神經網路中的最基本的成分是神經元(neuron)模型,即上述定義中的“簡單單元”。
  在“M-P 神經元模型”中,神經元接收到來自 n

n 個其他神經元傳遞過來的輸入訊號,這些輸入訊號通過帶權重的連線(connection)進行傳遞,神經元接收到的總輸入值與神經元的閾值進行比較,然後通過“啟用函式”(activation function)處理以產生神經元的輸出。
  在實際應用中,通常採用 Sigmoid 函式作為啟用函式。
  把許多個這樣的神經元按一定的層次結構連線起來,就得到了神經網路。

5.2 感知機與多層網路

  感知機(Perceptron)由兩層神經元組成,輸入層接收外界輸入訊號後傳遞給輸出層,輸出層是 M-P 神經元,亦稱“閾值邏輯單元”(threshold logic unit)。
  需注意的是,感知機只有輸出層神經元進行啟用函式處理,即只擁有一層功能神經元(functional neuron),其學習能力非常有限。其無法解決非線性可分問題。
  要解決非線性可分問題,需考慮使用多層功能神經元。輸出層與輸入層之間的神經元,被稱為隱層或隱含層(hidden layer),隱含層和輸出層神經元都是擁有啟用函式的功能神經元。
  每層神經元與下一層神經元全互連,神經元之間不存在同層連線,也不存在跨層連線。這樣的神經網路結構通常稱為“多層前饋神經網路”(multi-layer feedforward neural networks),其中輸入層神經元接收外界輸入,隱層和輸出層對訊號進行加工,最終結果由輸出層神經元輸出。神經網路的學習過程,就是根據訓練資料來調整神經元之間的“連線權”(connection weight)以及每個功能神經元的閾值。

5.3 誤差逆傳播法

  多層網路的學習能力比單層感知機強得多。欲訓練多層網路,需要更強大的學習演算法。誤差逆傳播(error BackPropagation,簡稱 BP,也成“反向傳播演算法”)演算法就是其中最傑出的代表,它是迄今最成功的神經網路學習演算法。現實任務中使用神經網路時,大多是在使用 BP 演算法進行訓練。值得指出的是,BP 演算法不僅可用於多層前饋神經網路,還可用於其他型別的神經網路。

  證明,只需一個包含足夠多神經元的隱層,多層前饋網路就能以任意精度逼近任意複雜度的連續函式。然而,如何設定隱層神經元的個數仍是個未決問題,實際應用中通常靠“試錯法”(trial-by-error)調整。
  正是由於其強大的表示能力,BP 神經網路經常遭遇過擬合,其訓練誤差持續降低,但測試誤差卻可能上升。有兩種策略常用來緩解 BP 網路的過擬合。第一種策略是“早停”(early stopping):將資料分為訓練集和驗證集,訓練集用來計算梯度、更新連線權和閾值,驗證集用來估計誤差,若訓練集誤差降低但驗證集誤差升高,則停止訓練,同時返回具有最小驗證集誤差的連線權和閾值。第二種策略是“正則化”(regularization),其基本思想是在誤差目標函式中增加一個用於描述網路複雜度的部分。

5.4 全域性最小與區域性極小

  若用 EE 表示神經網路在訓練集上的誤差,則它顯然是關於連線權 ww 和閾值 θ\theta 的函式。此時,神經網路的訓練過程可看作一個引數尋優過程,即在引數空間中,尋找一組最優引數使得 EE 最小。
  我們常會談到兩種“最優”:“區域性極小”(local minimum)和“全域性最小”(global minimum)。對 ww^*θ\theta^*,若存在 ϵ>0\epsilon > 0 使得
(w;θ){(w;θ)(w;θ)(w;θ)ϵ},∀(w;\theta)\in\{(w;\theta)\mid||(w;\theta)-(w^*;\theta^*)||\leq\epsilon\},
都有 E(w;θ)E(w;θ)E(w;\theta)\geq E(w^*;\theta^*) 成立,則 (w;θ)(w^*;\theta^*) 為區域性極小解;若對引數空間中的任意 (w;θ)(w;\theta) 都有 E(w;θ)E(w;θ)E(w;\theta)\geq E(w^*;\theta^*),則 (w;θ)(w^*;\theta^*) 為全域性最小解。兩者對應的 (w;θ)(w^*;\theta^*) 分別稱為誤差函式的區域性極小值和全域性最小值。
  顯然,引數空間內梯度為零的點,只要其誤差函式值小於鄰點的誤差函式值,就是區域性極小點。
  基於梯度的搜尋是使用最為廣泛的引數尋優方法。在此類方法中,我們從某些初始解出發,迭代尋找最優引數值。每次迭代中,我們先計算誤差函式在當前點的梯度,然後根據梯度確定搜尋方向。若誤差函式在當前點的梯度為零,則已達到區域性極小,更新量將為零,這意味著引數的迭代更新將在此停止。顯然,如果誤差函式僅有一個區域性極小,那麼此時找到的區域性極小就是全域性最小;然而,如果誤差函式具有多個區域性極小,則不能保證找到的解是全域性最小。對後一種情形,我們稱引數尋優陷入了局部極小。
  在現實任務中,人們常採用以下策略來試圖“跳出”區域性極小,從而進一步接近全域性最小:

  • 以多組不同引數值初始化多個神經網路,按標準方法訓練後,取其中誤差最小的解作為最終引數。
  • 使用“模擬退火”(simulated annealing)技術。模擬退火在每一步都以一定的概率接收比當前解更差的結果,從而有助於“跳出”區域性極小。在每次迭代過程中,接受“次優解”的概率要隨著時間的推移而逐漸降低,從而保證演算法穩定。
  • 使用隨機梯度下降。與標準梯度下降法精確計算梯度不同,隨機梯度下降法在計算梯度時加入了隨機因素。於是,即便陷入區域性極小點,它計算出的梯度仍可能不為零,這樣就有機會跳出區域性極小繼續搜尋。
      此外,遺傳演算法(genetic algorithms)也常用來訓練神經網路以更好地逼近全域性最小。需注意的是,上述用於跳出區域性極小的技術大多是啟發式,理論上尚缺乏保障。