iT邦幫忙

2022 iThome 鐵人賽

DAY 11
3
AI & Data

OH~ AI 原來如此,互助就此開始!系列 第 11

Day 10. 機器學習模型 - 強化學習

  • 分享至 

  • xImage
  •  

監督和非監督式學習使用了所有的資料來學習進行預測,但是在強化學習中,並非所有資料從一開始就看得見,而是透過摸索的形式和環境互動取得經驗,從錯誤中學習找到一個長期的最佳行動,也就是做出決策

馬爾可夫決策過程(MDP,Markov Decision Process)

強化學習是建立在馬爾可夫決策過程的架構之上,組成如下。

  • s:狀態(State)
  • a:行動(Action)
  • r:報酬(Reward)
  • t:時間(Time)

https://ithelp.ithome.com.tw/upload/images/20220925/20150622TOhp3KUdfo.jpg

  1. Agent 在當下的時間 https://chart.googleapis.com/chart?cht=tx&chl=t 觀察環境取得狀態 https://chart.googleapis.com/chart?cht=tx&chl=s_t
  2. Agent 從狀態根據目前的行為基準選擇了行動 https://chart.googleapis.com/chart?cht=tx&chl=a_t
  3. Agent 因此獲得了報酬 https://chart.googleapis.com/chart?cht=tx&chl=r_t
  4. 時間變成 https://chart.googleapis.com/chart?cht=tx&chl=t%2B1 回步驟1反覆進行

以自駕車(Agent)為例,先用影像辨識和感測器觀察周遭環境有哪些其他物體,自己在道路的什麼位置取得狀態https://chart.googleapis.com/chart?cht=tx&chl=s_t,以此為依據選擇了行為https://chart.googleapis.com/chart?cht=tx&chl=a_t用一個速率向前開,如果碰撞到物體就是得到負的報酬,沒有碰撞而且透過 GPS 計算更接近目的地就得到正的報酬https://chart.googleapis.com/chart?cht=tx&chl=r_t,透過報酬作行為的修正。此時來到新的時間 https://chart.googleapis.com/chart?cht=tx&chl=t%2B1,重新觀察新的環境有沒有其他車子或行人在附近,重複循環。

這個架構在狀態變化時假定有馬爾可夫性質(Markov property),也就是未來的狀態僅依賴現在狀態,不考慮過去的狀態。 https://chart.googleapis.com/chart?cht=tx&chl=s_%7Bt%2B1%7D 只依賴 https://chart.googleapis.com/chart?cht=tx&chl=s_t ,不考慮 https://chart.googleapis.com/chart?cht=tx&chl=s_%7Bt-1%7Dhttps://chart.googleapis.com/chart?cht=tx&chl=s_%7Bt-2%7D 造成的影響。

因為未來狀態如果不只考慮現在狀態,還要考慮前一個,前前一個狀態給予的影響會沒完沒了,太複雜了,但也不是說之前的就沒影響,畢竟現在的狀態也是過去狀態造成的。

最終把每次得到的報酬加總起來最大化就是學習的目標。也就是最大化累積報酬
但由於有時間這個概念,每次的報酬在做加總時還會乘上當時的折舊率https://chart.googleapis.com/chart?cht=tx&chl=%5Cgamma(discount rate)。畢竟未來的報酬太遙遠,現在的100元和未來的100元相比,一定是現在的100元比較有影響力。

https://chart.googleapis.com/chart?cht=tx&chl=R_t%3Dr_%7Bt%2B1%7D%2B%5Cgamma%20r_%7Bt%2B2%7D%2B%5Cgamma%5E2%20r_%7Bt%2B3%7D...

吃角子老虎機演算法(Bandit algorithm)

選擇行動時,有複數選項要選哪個比較好呢?
我們希望累積報酬最大,所以每次選擇的行動(做出的決策)都有他的理由存在。

  • 探索(exploration)
    為了獲得新的資訊所做的行動(有機會知道拿更大報酬的方法)
  • 利用(exploitation)
    目前的已知資訊中選擇能得到最大報酬的行動(確實的拿下目前的最大報酬)

而吃角子老虎機就是一個如何在探索和利用間取得平衡的一種策略(Policy)

吃角子老虎機是一個拉一個搖桿出現相同圖案就中獎的賭博機,而很多台吃角子老虎機象徵同時有好幾個選擇。

https://ithelp.ithome.com.tw/upload/images/20220903/20150622x5xFYzbMo7.png
—— 吃角子老虎機,圖片出處:多腕バンディット入門

具體有以下兩個方法

  • Epsilon 貪婪策略(https://chart.googleapis.com/chart?cht=tx&chl=%20%5Cvarepsilon-greedy policy)
    • 探索:行動未滿N次,隨機選擇
    • 利用:N次行動後選擇平均報酬(中獎比例)最高的

你有聽說過柏青哥有容易中獎和不容易中獎的機台嗎?吃角子老虎機也是一樣,如果你今天的錢可以投100次硬幣,我們用https://chart.googleapis.com/chart?cht=tx&chl=%20%5Cvarepsilon(探索率)=10%,也就是前10次讓你去挑選一台老虎機去拉搖桿看看(探索),當你找到了其中最容易中獎的機台,那剩下90次就通通玩那個機台就好(利用),可以說是賭徒的智慧。

實際用程式跑看看,三台老虎機 A,B,C 隱藏的中獎期望值為 70%,50%,30%:
https://ithelp.ithome.com.tw/upload/images/20220904/20150622kFTSmhtTlN.png

儘管玩家不知道隱藏的機率,但是透過這個策略,自然而然會把錢都用在老虎機 A。

以剛才的貪婪策略來說,探索(找易中獎機台)次數過多會使得利用次數過少,反之探索過少可能會漏掉超容易中獎的機台,所以好一點的方法是兼顧當前利益和探索次數的算法,也就是 UCB 策略。

  • 置信上限策略(UCB,Upper Confidence Bound)
    • 探索:沒選過的優先
    • 利用:針對個別行動計算分數,選擇分數最大的

簡單來說 分數 = 中獎率 + Bonus ,Bonus 是被選的次數越少數值越高,而中獎率高的老虎機如果一直被選擇,導致 Bonus 逐漸變低,直到分數低於其他台,就選擇其他分數高的老虎機。也就是雖然這台中獎率可能最高,偶爾也要給其他機台一點機會的概念。(除非這台中獎機率高到沒有 Bonus 也比其他台的分數高。)

Bonus 為什麼選越多次會越來越少,因為選越多次代表目前中獎概率越趨近這台實際的中獎概率,還記得硬幣拋了無數次正反面的出現機率會逼近理論值的一半一半嗎,因此這台選了那麼多次,大概的中獎分布已經看得出來,而其他台還沒選那麼多次,可能有非常大的潛力,要多給它們一些機會表現。至於這個演算法為什麼叫置信上限,算出來的分數其實就是一個置信區間(Confidence intervals)的上限。

同樣地三台老虎機不設定探索率改 UCB 策略:
https://ithelp.ithome.com.tw/upload/images/20220904/20150622EhRdZ2U8uo.png

價值函數(Value function)

雖然有了策略,但要找出累積報酬最大的策略其實是很難的,所以加入了價值的概念,針對狀態給價值,選擇可以往高價值的狀態移動的行為。

  • 狀態價值函數(state-value function)
    https://chart.googleapis.com/chart?cht=tx&chl=V%5E%5Cpi(s_t):狀態 https://chart.googleapis.com/chart?cht=tx&chl=s_t時使用策略https://chart.googleapis.com/chart?cht=tx&chl=%5Cpi的價值。
  • 行動價值函數(action-value function)
    https://chart.googleapis.com/chart?cht=tx&chl=Q%5E%5Cpi(s_t%2Ca_t):透過https://chart.googleapis.com/chart?cht=tx&chl=V%5E%5Cpi(s_t),找出狀態 https://chart.googleapis.com/chart?cht=tx&chl=s_t時使用策略https://chart.googleapis.com/chart?cht=tx&chl=%5Cpi選擇動作 https://chart.googleapis.com/chart?cht=tx&chl=a_t 的價值,又叫 Q 函數,經由函數取得的值叫 Q 值。

一般說的價值函數指的是 Q 函數,Q 表示https://chart.googleapis.com/chart?cht=tx&chl=s_t狀態下https://chart.googleapis.com/chart?cht=tx&chl=a_t動作的品質(Quality)。

這邊用迷路問題舉例:

  • 每格的狀態價值
    https://ithelp.ithome.com.tw/upload/images/20220903/20150622SCH54y6t4h.jpg
  • 每格做出行動(上下左右)的價值
    列舉其中3格的行動價值:
    https://ithelp.ithome.com.tw/upload/images/20220903/20150622KL3XpOUJLU.jpg

為了做出最好的決策,找到最大值的 Q 值,也就是最佳化 Q 函數的方法,叫做 Q 學習(Q-Learning)。

策略梯度(policy gradient method)

除了使用價值函數,也另外發展出用策略函數去求解最大累積報酬的方法。策略梯度就是用一個函數表示策略,然後透過梯度提升調整裏頭的參數(parameter)找到一個最佳的參數讓報酬最大化。

梯度提升是監督式學習的一種演算法,Day 8有介紹過,可以回顧加強印象。

常用的具體方法有:

  • REINFORCE
    策略梯度的方法之一,圍棋 AI 的 AlphaGo 就是使用這一個手法。
  • Actor-Critic(參與者-評價者)
    結合策略梯度和價值函數。參與者使用策略函數,決定採取什麼行動和環境互動。評價者使用價值函數評估狀態和行動的價值,指導參與者下一個動作。
    由此延伸出來的還有 A3C(Asynchronous Advantage Actor-Critic)這個方法。

REINFORCE 全名是 REward Increment = Non-negative Factor x Offset Reinforcement x Characteristic Eligibility

補充資料

立即複習

  1. 強化學習是建立在什麼架構之上?學習的目標是什麼?
  2. 吃角子老虎機主要是平衡什麼和什麼的策略?
  3. 價值函數又叫什麼函數,最佳化這個函數的方法叫做什麼學習?
  4. 策略梯度是透過什麼方法去調整參數?
  5. AlphaGo 是使用強化學習的哪個方法?

參考資料


上一篇
Day 9. 機器學習模型 - 非監督式學習
下一篇
Day 11. 機器學習模型 - 評價模型
系列文
OH~ AI 原來如此,互助就此開始!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言