用強化學習中(Q-learning)玩Flappy bird遊戲

用強化學習中(Q-learning)玩Flappy bird遊戲

強化學習通常包括兩個實體Agent和Environment,狀態(State)、動作(Action)、獎賞(Reward)這三個要素。需要根據當前State來採取動作,獲得相應的Reward之後,再去改進這些Action,使得下次再到相同State時,Agent能做出更優的動作。

Q-learning的含義

Q動作效用函數(action-utility function),用於評價在特定狀態下采取某個動作的優劣,可以將之理解為Agent的大腦。Q-learning的核心是Q-table,Q-table的行和列分別表示state和action的值,Q-table的值Q(s,a),衡量當前state(s)採取action(a)的優劣。

以Flappy Bird遊戲為例,遊戲的目標就是在不觸碰水管的情況下,通過儘可能多的關卡。強化學習在這類遊戲上獲得了非常棒的成績。

讓小鳥學習怎麼飛是一個強化學習的過程,其中:

Agent:小鳥;

State:小鳥到下一根下側管子的水平距離dx和垂直距離dy作為小鳥的狀態(dx, dy);

Action: 飛,不動

Reward: 小鳥活著,每一幀給予1的獎賞;若死亡,則給予-1000的獎賞;若成功經過一個水管,則給予50的獎賞。

用強化學習中(Q-learning)玩Flappy bird遊戲

Q-table:

記錄歷史經驗的表,類似於人的大腦,在什麼狀態下,採取那種行動更加有利。小鳥用當前的狀態在Q-table中查找歷史經驗,選擇效用值最大的作為當前的動作。

用強化學習中(Q-learning)玩Flappy bird遊戲

Q-learning的訓練

訓練的偽代碼如下:

用強化學習中(Q-learning)玩Flappy bird遊戲

ε-greedy策略

如果每次都在Q-table中查找,然後根據效用值選擇狀態效用值最大的動作,小鳥永遠禁錮在歷史的經驗中,那可能有更好的選擇永遠探測不到。所以需要增加一些突變,這個思想類似於動物的基因突變。

ε-greedy的策略是一種基因突變的策略,在每個狀態有ε的概率進行探索(即隨機選取飛或不飛),而剩下的1-ε的概率則依賴歷史經驗(選取當前狀態下效用值較大的那個動作)。ε一般取值較小,0.01即可。

所以Q-learning並非每次迭代都沿當前Q值最高的路徑前進。

Q-learning的訓練公式

用強化學習中(Q-learning)玩Flappy bird遊戲

其中α為學習速率(learning rate),γ為折扣因子(discount factor),R是眼前利益,maxQ(s', a)是歷史經驗中的利益。學習速率α越大,保留之前訓練的效果就越少。折扣因子γ越大,小鳥越重視歷史經驗,越小,小鳥越重視眼前利益。

Agent利用上述算法在訓練中學習,不斷優化Q表,Q表被訓練優化的越好就越容易快速有效找到獲取解決方案的最佳途徑。

訓練效果:

用強化學習中(Q-learning)玩Flappy bird遊戲


分享到:


相關文章: