繼續接著上一篇,這篇文章介紹強化學習中的一個經典算法——Q Learning.
在之前的文章中已經介紹過了,強化學習就是讓智能體(Agent),在與環境的互動過程學習解決問題的最佳路徑的過程。
強化學習通常包括這麼幾個重要概念:
狀態(State (S))
動作(Action(A))
獎勵(Reward(R))
下面以一個格子世界的例子來解釋這幾個概念,並介紹一下Q Learning是什麼:
上圖紅色方框就是我們的智能體,任務是要在4x4的迷宮中找到黃色圓圈的寶藏,並學習到達寶藏的最佳路徑。如果以左上角的初始狀態為S0,那麼整個迷宮一共有16個狀態(State)(從左到右從上到下分別是S0到S15)。智能體的行動(Action)有四個: 分別是向左(A1)向右(A2)向上(A3)和向下(A4)移動。如果找到黃色圓圈(寶藏)獎勵(Reward)為1,掉入黑色陷阱獎勵(Reward)為-1,其他地方為0。
1. Q表(Q table)Q Learning 就是創造一個Q表,來指導智能體的行動,Q表對應Action的數值越大,智能體就越大概率地採取這個Action.
這個Q表是經過學習之後的結果,學習並不斷更新這個表的過程就是Q Learning。比如Q表在S0最大概率會向右移動,在S1最大概率還是向右移動,因為A2在兩個狀態的Q表數值都是最大的。
2. 探索-利用困境(Explore-Exploit dilemma)Q Learning 是如何學習並更新Q表呢?正如多臂老虎機(Multi-armed bandit)問題一樣,如果智能體僅僅按照表中最大概率指導行動的話,是學不到任何東西的,它還需要不停地在未知地圖上進行探索,這就是是探索-利用困境(Explore-Exploit dilemma)。同樣的,我們也可以用ε貪婪方法(ε -Greedy method)的方法來解決這個困境。
也就是設定一個ε(比如0.9),90%的機率按照Q表數值最大Action行動,10%隨機行動。每行動一次就要更新一下Q表。
3. 如何更新Q表Q learning的算法就是如何更新Q表的方法。還是以表下為例:
Q(S0,A2) = Q(S0,A2) + α[R(S1) + γ*maxaQ(S1,a)-Q(S0,A2)]
當智能體處於S0的狀態時,如果剛好選擇了A2,那麼下一個狀態就是S1(注意有10%的概率會選擇其他的Action, 而到達其他的狀態)。行動之後,我們就需要更新Q(S0,A2)的數值, 先給結果吧:
解釋一下
R(S1)是智能體在S1能活的的獎勵(Reward)(該遊戲除了陷阱的地方為-1,寶藏的地方為1,其他地方均為0)。
γ為衰減值。
maxaQ(S1,a)是S1狀態下,Q表數值最大的一個(這裡是2)。
α是學習速率(Learning Rate)。
R(S1) + γ*maxa Q(S1,a)是Q(S0,A2) 的目標數值。
那我們再把公式重寫一遍就清楚了吧:
Q(S0,A2)新=Q(S0,A2) 舊 + α* [Q(S0,A2)目標 - Q(S0,A2)舊]
上面的公式像極了在線性回歸中的梯度下降法(Gradient Descent)。只不過在線性回歸我們更新權重W的方法,在這裡我們更新Q表而已。
完整的公式如下:
4. 衰減值這裡再解釋一下為什麼要用衰減值 γ,從上面的公式可以看出,St 和 St+1是一個遞歸的關係。當智能體走到第n步的時候,會受到0到n-1每一步狀態的影響。如果衰減值γ=1,那麼每一步的影響都是一樣的。γ在0到1之間,就可以讓越靠近n的狀態對第n步影響越大,之前的狀態隨著行動的增加,影響力會越來越小。
相關文章
強化學習與Open AI 入門
End-to-End(端到端)的深度學習
免費使用Google的GPU和TPU來訓練你的模型
長按或掃描二維碼關注公眾號,獲取原始碼,你的支持是作者創作的動力。