強化學習(Reinforcement Learning)
阿新 • • 發佈:2018-12-18
轉載至https://blog.csdn.net/zhangweijiqn/article/details/53200204
目前在Deep Reinforcement Learning取得開拓性進展的主要集中在DeepMind和UC Berkerley團隊(openAI)
強化學習資料:
《Reinforcement Learning-An Introduction》-----入門經典
《Algorithms for Reinforcement Learning》----各種演算法
《Reinforcement Learning State-of-the-Art》---最新進展(flat,hierarchical...)
《Recent Advances in Reinforcement Learning》
DQN從入門到放棄:
1,2,3,4,5,6,7
Q-learning、DNQ 和 Policy Gradient :
Q-Learning和Policy Gradient:
Q-learning 是一種基於值函式估計的強化學習方法,
Policy Gradient是一種策略搜尋強化學習方法。兩者是求解強化學習問題的不同方法,如果熟悉監督學習,前者可類比Naive
Bayes——通過估計後驗概率來得到預測,後者可類比SVM——不估計後驗概率而直接優化學習目標。
Q-Learning和DQN:
Q-learning中,t 為時刻,每一對狀態s_t
(state)和動作a_t(action),相應的會有一個反饋reward, 定義Q表示從經驗中學習到的知識,對應一個Q_t值。 這裡的s_t就對應網路中的輸入中的一張遊戲截圖,a_t就對應網路中的輸出節點,就是網路看到這個遊戲截圖後,給出的動作。Q-learning學習湊效的原因是對Q矩陣的更新。這個更新遵循一個原則:若當前狀態下執行某動作後的下一個狀態的動作能帶來更多價值,則當前動作的價值就應該往高方向更新,這裡說的動作的價值就是Q值。
上面是一個Reward矩陣,Q矩陣和Reward大小一樣,也是State*Action大小。
把cnn用作生成Q的一個函式。拿遊戲來說,輸入是訓練遊戲截圖(state),輸出是Q矩陣,所以就叫深度質量網路(DQN)。
狀態State到動作Action的過程就稱之為一個策略Policy ,增強學習的任務就是找到一個最優的策略Policy從而使Reward最多。
DQN玩flappyBird:
TensorFlow:
150行程式碼完成DQN:
下面是一個強化學習的入門demo,:
cd blog/RL/Cat vs Mouse exploration
python egoMouseLook.py (可能要pip install pygame)
貓的行動是簡單地朝著老鼠追(沒有智慧),老鼠的行動是學習出來的。老鼠學到避開貓、吃芝士。
MDP(Markov Decision Process)馬爾科夫決策過程
MDP基於這樣一種假設:
未來只取決於當前
什麼意思呢?
就是如果我們站在上帝視角下看,我們知道這個世界的每個物體的狀態,那麼未來的變化只跟當前的狀態相關,和過去沒有關係。
用數學的話來描述就是:
一個狀態是Markov當且僅當
P為概率。簡單的說就是下一個狀態僅取決於當前的狀態和當前的動作。注意這裡的狀態是完全可觀察的全部的環境狀態(也就是上帝視角)。
回到增強學習的範疇,增強學習的問題都可以模型化為MDP的問題。
一個基本的MDP可以用(S,A,P)來表示,S表示狀態,A表示動作,P表示狀態轉移概率,也就是根據當前的狀態和轉移的概率。如果我們知道了轉移概率P,也就是稱為我們獲得了模型Model