1. 程式人生 > >強化學習(Reinforcement Learning)

強化學習(Reinforcement Learning)

轉載至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