強化學習(reinforcement learning)本身是一種人工智能在訓練中得到策略的訓練過程。
有這樣一種比喻:如果你教一個孩子學古箏,他可以躺著,趴著,坐著,用手彈,用腳彈,很大力氣彈等等,如果他正確得到要領給他一顆糖表示獎勵,如果不對抽他一下。在過程中讓他自己慢慢總結規律。
模型核心就是訓練他的行為策略。
Action:行為,做出的反應,或者輸出。
Reward:反饋和獎勵,即對行為之后所產生的結果的評價,如果是好的正向的,就給一個正的獎勵,負面的就負的獎勵(懲罰),其絕對值衡量了好壞的程度。
1、我們需要定義好懲罰和獎勵,讓環境中產生的獎勵能夠有效量化反饋給主體。
2、讓主體以較低成本快速的嘗試,總結不同state的情況下reward較大的工作方式。
HMM:統計一下狀態轉換的概率和得到Reward的數學期望值,然后找到一條獲取最大Reward的路徑。
MDP(markov decision procee,MDP):在一個狀態下,會有多大的概率選擇某一種動作,以及每一次狀態的遷移會獲得一個多大的獎勵。
S:state A:action P(s,s’)表示兩張狀態的轉化概率R(s,s’)表示從狀態s到s’轉化后所應該得到就reward。
S是描述棋局盤面的一個向量,每個維度上都有棋子的描述信息
A是描述動作的向量(如車六平二)
R是狀態得失的衡量
P則是概率
最后基于大量的觀測統計出的結果就是馬爾科夫決策過程的模型。
可以表示為一個二維表,其中再嵌套一個二維表。
總結時就計算出具體數值填入表格,用的時候就直接查表:去查獲得Reward最大且概率最大的那個狀態轉換。
所以只要能把state向量化,reward數值化,即可使用MDP。
Q-learning解決短視問題:
比如,在貪吃蛇問題中,為了吃一個槍而下一步撞死,則吃槍的意義就不復存在了。所以會給一個嚴重的懲罰系數,配合Q-learning更新公式,這樣一定程度上可解決貪心問題。
表示對遠期收益的重視程度。
整個訓練過程,在某一步Reward較大,就推斷它的前一步state和action比較靠譜,從而提高前一步的state的reward的評價。哪些經常反復出現有著較高reward的狀態會被大量驗證和強化,從而學出靠譜的路徑來。這些路徑由state和action組成。(這些均屬于動態規劃,DP)這種樹也叫做蒙特卡洛樹。
DQN:輸入state向量,輸出是action,收斂過程就是把樹靠下的部分的Reward向靠上的部分去移動的過程,每次迭代計算都會發生reward的值從葉子向根部傳播,而誤差被定義成了傳播的量。讓網絡不斷去擬合,映射關系不斷調整,是的這個映射滿足從一個state到action的映射關系。
輸出的action是選擇Q值最高的對應的那個action。
(E表示error,即誤差)是指在全局中優化,后面一項statet+1的reward要和statet的reward接近,要同時經過這張網絡來構造出這個損失函數的結果。
Q(s,w)是DQN網絡的表達式,Q(s,a)是指Q-learning的表格。把reward從后往前傳:
(1)初始化一個經驗池,就是樣本集;
(2)初始化Q(s,w)這個網絡;
(3)做M輪如下工作,做M個mini batch:
3.1以一個概率e做action at,以1-e選取一個值最大的action;這樣可以以一定概率接受新的東西,以免陷入局部困境一直執行下去
3.2根據xt和at在環境中的反饋獲得相應的reward值和rt和盤面的xt+1;
3.3把xt,at,xt+1,rt這個序列放進經驗池
3.4從經驗池中隨機選擇部分序列xj,aj,xj+1,rj,生成一個yj標記,yj標記的定義如下:
如果xj+1已經是最后一個狀態,那么yj=rj;
如果xj+1不是最后一個狀態,那么yj=rj+rmaxQ(xj+1,a’;theta)
3.5對誤差值做梯度下降優化,一邊生成樣本,一邊對損失函數進行優化。
總結:網絡擬合出來的是一個評價值,訓練過程是伴隨著那個由短視慢慢通過Reward傳播來形成的不短視的過程中的state到Q最大值的映射邏輯。損失函數描述的是一個差距,就是一個state到它后面的一個state評估的差距,目標是讓這個差距最小化。
開源框架:open Gym
使用TensorFlow訓練神經網絡玩Atari游戲:
DQN前三層都是卷積層提取特征,輸入為84*84*4最后兩個全連接層。