強化學習--Pytorch篇

Q_learning算法

首先祭出強化學習中的基礎方法Q-Learning,算法流程如下圖所示:
在這裏插入圖片描述
Q-learning是一個不斷摸索,最終找到最優的方法。個人理解是這樣的:
首先Q表是一個初值都爲0 的表,被學習體只能隨意摸索。當得到reward之後,乘以學習率 alpha ,更新Q表。這樣,在下一次走到這一步的時候,就能夠根據maxQ(s’,:)來決定選擇,其 gammar可以理解爲眼界,gammar取值爲0~1,極端的,當gammar爲1時,表示可以看到後續多步的結果;當gammar爲0的時候,則表示只能看到眼前的利益。epsilon 表示貪心,假設epsilon爲0.9,則表示90%的概率最選擇獲得最大reward的action,10%的概率選擇其他action。這裏選取貪心是爲了避免陷入局部最優的尷尬。而maxQ(s’,:)則表示算法會朝着最快獲得最大reward的方向前進。off-policy

Sarsa算法

與之相對應的是Sarsa算法,其算法流程爲:
在這裏插入圖片描述
Q_learning 和 Sarsa算法很多地方都是相同的構架,不同之處在於Q-learning選取maxQ(s,:)maxQ(s',:),而Sarsa則是根據貪婪策略來進行選擇。

Sarsa(λ\lambda)

Sarsa(λ\lambda)相比於Sarsa又多加入了一張表格,用以記錄走過的路徑。同時該路徑上的值會隨着每次迭代的進行衰減。所以在算法上,主程序循環不用進行修改,只在更新表的時候,額外在更新一個路徑表格,同時讓路徑表格中的值進行衰減即可,算法流程圖如下圖所示:
在這裏插入圖片描述

DQN算法

前面的算法都是基於Q表的,但是在很多實際例子中,一個學習需要的狀態很多,或者達到最後Reward所需的步驟很多,這都會造成Q表逐漸增大。因此,總是基於Q表的方法就有些捉襟見肘了,而神經網絡確可以很好的完成這個工作,我們需要乾的是給神經網絡一個state,然後讓他自己產生所有的action,然後在結合Q-learning算法即可。
DQN的精華還有一個Fixed-Q target, 也就是說使用兩個神經網絡,其中一個動態更新Q值,另一個則隔一定步驟之後在進行copyQ值,平常是凍結狀態。Q估計採用的是最新的神經網絡,Q現實採用的是Fix_Q的神經網絡
在這裏插入圖片描述
兩個輸入,兩層神經網絡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章