1. 程式人生 > >【深度學習】增強學習

【深度學習】增強學習

文中的圖片來自莫煩python視訊。視訊內容真心很贊,一天就可以看完,有興趣的朋友可以點選下邊的連結哦

https://space.bilibili.com/243821484/#/channel/detail?cid=26359

come on, babies! 讓我們一起來聊一下增強學習吧~hhhh

增強學習,簡單來講,就是做對了給獎勵,做錯了給懲罰,超級簡單粗暴。懲罰和獎勵啥的本質上也可以用梯度下降來反傳。

最大的感受是,找最優解的過程中,走一步告訴你對不對,再走一步告訴你對不對,或者走完了告訴你前邊走了那一堆對不對。然後更新。這個演算法有一個表,這個表會告訴你選擇這個優化方向的好壞程度,預測的值是根據之前的經驗來的,我們也會根據每一步或者最終結果的好壞來更新這張表。

我們來一起了解一下幾個經典的增強學習的演算法吧~

1. Q-learning:

一張q表記錄選擇路徑的分數。


為了更明確圖片中的公式具體是怎樣計算的,我直接用數字來算一遍啦

q現實 = 0+0.9*2 = 1.8

q估計 = 1

新q = 1 + alpha * (1.8-1)

然後我們就可以把圖中的s1,a2對應的 1 修改為 1 + alpha * 0.8 咯。然後繼續計算。。。

注意Q-learning是選擇後續路徑中最大的那個來計算q現實,就是說,如果s2情況下,我選擇走a1,那麼我的q現實也是1.8哦。

2. 這裡就可以引出sarsa演算法,sarsa就是走哪條路就選哪個。

體現在更新過程中就是,Q-learning記吃不記打,總是選之後價值大的。sarsa就是每次選錯了就懲罰,就不大敢走,即使這條路另一個支路可能是對的,但是走錯的那條路如果被懲罰多了,那後邊這條路就會很難走的。

當然,為了解決這種直接封鎖道路的一錘子買賣,演算法中加了10%的隨機選路的過程,保證即使這條路不好,演算法也是有可能往這個方向再試一試的。

3. Q-learning和神經網路結合起來就有了DQN(Deep Q Network)

和神經網路結合起來再想記錄引數就不能用一張表來解決啦,我們就會使用兩個網路來記錄結果,一個是現實網路,一個是估計網路。兩個網路非同步更新。現實網路是更新慢的那個,可能是儲存了幾步之前的網路引數,用於打亂經歷相關性。

(1)網路輸入:狀態(s)和動作(a);輸出:value

(2)網路輸入:狀態(s);輸出:動作(a)與對應的value

dqn有記憶庫,記錄之前的經歷來學習,打亂經歷的相關性。


4. policy gradient

輸入是狀態,輸出是動作or動作的概率。基於神經網路,讓某動作更容易被選中。最大化好動作的概率。最終的結果也不是一條確定的通路,而是通過概率來選的路徑。一個回合結束之後才能更新。

5. actor critic

actor:policy gradient 作出動作

critic:q-learning 預判這個動作的value

兩者結合就可以實現單步更新,更有效率。而不是policy gradient那樣一個回合結束才知道每一步是好還是不好。

6. ddpg

兩個actor,兩個critic。相互之間會互通訊息。