2021年9月13日 星期一

好書 : 人工智慧與深度學習-理論與 Python 實踐

此書借自市圖, 係東吳資管系黃日鉦教授所著, 全書理論性較強, 但每章末尾則有 Python 程式實例, 對各種機器學習演算法有簡明公式推導與歸納整理, 看來是從多年教學資料彙整而得, 篇幅不大故顯得很精煉, 可說是極精華之作 :



Source : 博客來


特別是序言後面的八張彩圖, 描繪了各種目標函數與機率分配圖形, 以及神經元與機器學習演算法如 LSTM 與 Attention 等運作原理之圖解, 非常有價值. 

最後一章強化學習摘要如下 :
  1. 強化學習是一種特殊的學習過程, 與監督與非監督學習截然不同, 強化學習開始時沒有任何資料可供訓練與學習, 它是利用代理人 (agent) 對環境 (environment) 以嘗試錯誤法 (try-and-error) 來收集樣本資料, 據此來獲得最佳的結果. 代理人從與環境的互動中獲取報酬 (rewards), 強化學習的目標是讓代理人透過不斷試誤學習最佳化策略, 經由探索環境得到未來最大期望累積報酬 (expected cumulative rewards).





    狀態是指, 可以提供給代理人關於環境的所有訊息, 包括過去所有訊息之摘要, 故狀態具有馬可夫鏈的性質. 
  2. 強化學習假設代理人與環境互動時, 環境如何回應代理人的行動是由我們未知的模型所決定, 代理人可以在某個狀態 s 採取特定行動 a 以轉換到另一個狀態, 而狀態的轉換是由狀態間的轉換機率 (transition probabilities) 所決定, 整個強化學習可視為一個馬可夫鏈過程, 因此強化學習可以視為如下的軌跡 (trajectory) :
    s0, a0, r1, s1, a1, r2, s2, a2, r3, .... rt+1, ....
  3. 在深度強化學習中, 若資訊是不完整或未知, 稱為 model-free 強化學習; 反之若資訊完全已知則稱為 model-based 強化學習, 這可用動態規劃來得到最佳解. 其中 model-free 強化學習又可分為 value-based 與 policy-based 這兩大類, 其細類如下圖所示 :




    Model-free 強化學習都是直接從 episode 中學習, 不需要馬可夫鏈的轉換機率與報酬等資訊. 蒙地卡羅 (Monte-Carlo) 法是從完整的 episode 中進行參數更新, 而 TD (temporal difference, 拔靴法) 則是從 episode 中進行抽樣 (不是完整), 亦即可從不完整的 episode 中進行學習. TD 法又可分 on-policy 與 off-policy 兩種, 差別為代理人是否為實際的學習者, 是的話為 on-policy, 否的話即為 off-policy. Off-policy 的主要方法為 Q-Learning. 以政策為基礎的方法分為 DFO/evolution 與政策梯度 (policy gradient) 兩種, 前者針對不可微分函數, 後者 (policy gradient) 直接學習最佳化策略, 不需透過價值函數. 
  4. 馬可夫決策過程 (Markov Decision Process, MDP) 是一種離散時間的隨機控制過程, 結果的產出是部分隨機與部分決策者控制所形成. 強化學習的問題可以用馬可夫決策過程來表示, 因為所有強化學習的狀態都有馬可夫性質, 亦即每一個狀態發生的機率都只受前一期狀態的影響, 而不受更早的狀態影響. 
  5. 一個 episode 可以表示為 (s, a, s', r), 即代理人在狀態 s 決定採取行動 a, 此行動導致進入狀態 s', 並獲得報酬 r. 
  6. 報酬函數定義了強化學習問題之目的, 在每一個時間, 環境都會給代理人特定的報酬 (可能正也可能負), 代理人的目標則是決定如何行動以使整體報酬最大化. 故報酬是代理人政策改變之依據, 代理人會選擇能使報酬最高的那個政策. 但報酬是一個目前狀態下的概念, 若要考慮整體或長時間報酬, 必須考慮狀態的價值函數. 
  7. 一般求解馬可夫決策過程 (MDP) 有兩個目的 :
    (1). 在給定政策下估計狀態的價值函數及狀態行動價值 (又稱預測目的). 
    (2). 估計狀態的價值函數及狀態行動價值來求得最佳化政策 (又稱為控制目的)
  8. 政策為代理人的行為函數, 指導代理人如何在特定時間及給定的狀態下採取行動. 強化學習中一般而言設定政策是隨機的, 因此 MDP 下的政策只依據當時的狀態, 與過去的歷史政策無關, 故可將政策視為定態 (stationary). 
  9. 在強化學習中會使用行為政策 (behavior policy) 來產生訓練的資料, 而目標政策即為代理人想要使用的政策, 當行為政策與目標政策相同時稱為 on-policy, 否則稱為 off-policy. 
  10. 狀態價值函數 (又稱 Q 函數) 是用來衡量一個狀態多好, 或是一組狀態行動下可獲得多少報酬的指標. 報酬是一次的狀態行動下所獲得的立即性回饋, 而價值函數則是在長期行動下所得之平均報酬概念. 
  11. 在強化學習中, 已知的資訊包括目前狀態, 可行動方案, 與過去報酬. 未知資訊為機率轉換模型與報酬結構. 通常會假設機率轉換模型滿足馬可夫鏈轉換模型, 以及報酬結構為 episode (s, a, s') 的固定報酬. 強化學習的目的之一是預測, 利用預測來估計特定的政策, 看看其長期報酬是否為最大, 即求出價值函數的最大值. 
  12. Bellman 方程式是價值函數 (Q 函數) 的一種表示法, 它將價值函數分解為目前的報酬加上未來折現後的報酬, 其求解方法有三種 : 動態規劃, 蒙地卡羅法, 與 TD 法. 在計算 Bellman 方程式最佳解時, 為了避免搜尋空間過大導致的維度詛咒 (curse of dimensionality) 問題, 必須使用 Q-Learning 與 SARSA 方法來進行 Q 值計算, Q-Learning 為 off-policy 方法, 是以 one-step (一步) 的方式緩步改善 Q 值. 理論上 Q-Learning 學習中, 只要計算 Q(s, a) 的次數夠多且學習率夠小, 基本上不論如何選擇行動均會收斂到最佳政策. 然而 Q-Learning 與 SARSA 都有在訊訓練時容易出現震盪的問題, 這是因為一個小的行動改變, 都有可能會造成估計的行動價值產生劇烈的變化. 
  13.  Q-Learning 雖然是強化學習中最經典的一種方法, 但在實務上存在許多問題, 例如高估行動價值等. 此外, 因為 Q-Learning 是一種表格方法, 它是根據過劇狀態來更新 Q 值, 若某個狀債未曾出現過, Q-Learning 就無法解決, 亦即 Q-Learning 沒有預測能力. 而 DQN (Deep Q-Learning Network) 則可解決此問題, 它結合了深度神經網路與 Q 函數, 將 Q-Learning 的學習視為一個回歸問題, 故可找到一個函數來近似 Q 函數, 透過計算其誤差函數之梯度下降來更新參數, 將 Q-Learning 原本的 on-policy 學習轉成 off-policy 學習> 

沒有留言 :