1. 程式人生 > >幾種常見DRL(深度強化學習)方法總結與對比之前提基本概念

幾種常見DRL(深度強化學習)方法總結與對比之前提基本概念

版權宣告:本文為博主原創文章,未經博主允許不得轉載。                    https://blog.csdn.net/FrankieHello/article/details/78821488                 從今年的九月份到現在,接觸機器學習、深度學習再到現在的深度強化學習已經有三個月的時間了。從java web開發到人工智慧的領域轉變的過程中,學到了很多很雜的東西,感覺這才是我以後要研究的東西。然而,在這個轉變的過程中,老是急於求成,雖然程式碼寫過很多,論文看了不少,但是總是覺得基礎不夠牢固,所以想寫下部落格來沉澱一下。    前提概念   1、離散動作和連續動作      根據動作的不同型別選擇和構造的模型影響很大,之前在研究各種方法的時候,經常會遇到關於動作的連續還是離散的問題。      所謂離散動作就是不連續的動作,好比在進行交易的時候,用-1、0、1分別代表這賣、持倉和買,這幾個動作就是離散的,動作的空間也就是{-1,0,1}。而在操控汽車的自動駕駛的時候,方向盤要轉動多少角度,這就是個連續動作問題了,因為這個動作是從[-X度,X度]的選擇,動作的空間是一個區間[-X度,X度]。

2、Q函式和策略函式(Value-based Function&Policy-based Function)     Q函式也就是經常用到的價值函式,用來估計一個(s,a)狀態動作對的價值,而策略函式則是根據狀態來輸出動作或者動作的概率。     兩者的區別就是,Q函式輸入狀態和動作,輸出價值。策略函式就是輸入狀態,輸出動作或者動作的概率。在深度強化學習中,就是用神經網路進行function approximation(函式逼近),來模擬這幾種函式。     如下圖所示:     

3、單步更新與回合更新(Monte-carlo update&Temporal-Difference update)      單步更新,顧名思義,也就是每次執行一次action後,進行一次更新;而回合更新,就是在一次訓練的epoch中,結束後才進行更新。      用我現在在研究的量化交易與人工智慧來舉個例子,就好比每次執行一次買或賣的action後,更新一下模型中的引數,這就是單步更新;而從開盤到結束作為一次的訓練epoch,從開始到結束的這一回合訓練過程中,所有動作都是根據目前的引數進行選擇,直到結束這一回合的訓練後,才進行更新引數。      個人目前覺得,單步更新容易陷入區域性最小,而回合更新則更全域性一些,但是回合更新要等到這一回合的訓練結束才進行引數更新,所以學習的效率不高。

4、基於概率和基於值(Policy-based&Value-based)      基於概率的學習方法就是根據每個動作的概率來進行選擇,那麼每個動作都有可能被選中,只是概率不同;而基於值的則是為每一個動作都評一個分數,選擇時直接選擇那個分數最高的動作。      如果動作是離散的,那麼通過基於值的方法就可以很好的解決,當動作是在一個連續的區間上進行選擇,那麼就只能通過基於概率的方法了。因為,如果把一個區間的動作進行離散化,那麼動作將很多,而基於概率的方法可以直接輸出一個概率分佈。 ---------------------  作者:敲程式碼的quant  來源:CSDN  原文:https://blog.csdn.net/FrankieHello/article/details/78821488  版權宣告:本文為博主原創文章,轉載請附上博文連結!

問題:

1. 到底應該如何更新?單步更新能不能和回合更新之間做一個權衡,既能保證效率又不會陷入區域性極值點中去。