日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深度强化学习探索

發布時間:2025/7/25 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度强化学习探索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2016年年初備受矚目的圍棋 “人機大戰”,以人類圍棋冠軍被血虐落下帷幕。這只谷歌DeepMind團隊開發的圍棋機器人阿法狗不僅賺足了眼球,更是掀起了一波關于人工智能的討論狂潮。現在好像作報告還是寫文章都要把阿法狗提一下才能緊跟時代潮流啊(好像也自黑了一下)。其實人家DeepMind不光是下圍棋的,在他們的主頁上寫著大大的 “Solve Intelligence”。要“Solve Intelligence”光會下圍棋可不行,還得能像人一樣能干各種各樣的事情。究竟有些什么樣的技術能夠作為支撐,使得他們敢說出這樣的話呢?見識了阿法狗之后,可能很多人記住了深度學習,還有人記住了蒙特卡洛樹。其實還有個叫深度強化學習的東西也是DeepMind一直在重點研究的領域。他們在這個方向上做了很多工作。這篇文章,我們拋開阿法狗,來簡單看看DeepMind提出的被他們稱之為深度強化學習的東西大概是怎么一回事。

大家一看到深度強化學習,大概會認為現如今深度學習這么火,什么東西都喜歡拿深度學習去套,也是個跟風的產物吧。當然我們可以這么認為。但是在這個套的過程中DeepMind套得恰到好處,大大擴大了強化學習的應用范圍。

深度學習大家可能都比較了解,簡單說來就是在多層神經網絡的結構下,輔以結構設計和各種梯度技術,能夠對比如圖像分類之類的問題有很好的效果。它的優點在于不僅能夠提供端到端的解決方案,而且能夠提取出遠比人工特征有效得特征向量。

而強化學習,大家可能就比較陌生了。但是要是說起波士頓動力,大家可能就又知道了,前段時間被刷屏的機器人,憑借出色的平衡性給大家留下了深刻的印象。像機器人控制這類領域就大量的使用了強化學習技術。除此之外,游戲領域,比如棋類游戲,甚至用戶個性化比如推薦等領域都有應用。

Ⅰ.什么是強化學習?

強化學習其實也是機器學習的一個分支,但是它與我們常見的機器學習(比如監督學習supervised learning)不太一樣。它講究在一系列的情景之下,通過多步恰當的決策來達到一個目標,是一種序列多步決策的問題。舉一個周志華老師在《機器學習》【8】中種西瓜的例子來幫助大家理解。種瓜有很多步驟,要經過選種,定期澆水,施肥,除草,殺蟲這么多操作之后最終才能收獲西瓜。但是,我們往往要到最后收獲西瓜之后,才知道種的瓜好不好,也就是說,我們在種瓜過程中執行的某個操作時,并不能立即獲得這個操作能不能獲得好瓜,僅能得到一個當前的反饋,比如瓜苗看起來更健壯了。因此我們就需要多次種瓜,不斷摸索,才能總結一個好的種瓜策略。以后就用這個策略去種瓜。摸索這個策略的過程,實際上就是強化學習??梢钥吹綇娀瘜W習有別于傳統的機器學習,我們是不能立即得到標記的,而只能得到一個反饋,也可以說強化學習是一種標記延遲的監督學習。

通過這個種瓜的過程能夠看出來,強化學習實際上和我們人類與環境的交互方式類似。是一套非常通用的框架,可以用來解決各種各樣的人工智能的問題。

總結起來,強化學習的目標就是要尋找一個能使得我們獲得最大累積獎賞的策略。為啥是累積獎賞?你之前不是說種個好瓜就可以了嘛。但是種瓜得澆水施肥啊,比如你在一個資源稀缺的地方,你當然就會希望我少用資源,又能種出好瓜。因此這樣的定義適用性更廣。

通常呢,累積獎賞表示為

Jt=rt+1+γrt+2+γ2rt+3+?Jt=rt+1+γrt+2+γ2rt+3+?其中γ(0<=γ&lt;=1)γ(0<=γ<=1)為折扣系數,tt表示第幾步。引入折扣系數這個東西,一方面是處于數學證明方便(預知詳情可以去讀強化學習的教科書),另一方面也是為了拓寬適用性。比如大家做買賣都喜歡現錢,因為夜長夢多,比如錢之后貶值了,那不就相當于少賺了嘛。

策略一般是用π(s)=aπ(s)=a來表示,也就是在狀態ss下,根據ππ策略,我們采取aa動作。有了策略的定義,我們還得知道一個策略到底好不好?最直接的就是用一個值函數來評估,值越高越好唄。比如可以定義一個值函數Qπ(s,a)Qπ(s,a),它表示在策略ππ下,從狀態ss出發,執行動作aa所帶來的累積獎賞。

Ⅱ.怎么求解強化學習?

這兩個基本的概念實際上給我們指了兩條可以求解強化學習的明路。一種就是直接去尋找一個好的策略(這不是廢話嘛)。另外一種就是能求解一個最優的值函數,這個最優的值函數能夠告訴我們在這個狀態下,選取哪個動作能得到的期望值最高,不管在什么狀態,我們總是能從值函數表那里查表獲得應該選取哪個動作。這個表實際上也就可以作為策略了。

我們首先來看看怎么直接尋找策略。前面也提到了策略實際上就是一個從狀態到動作的一個映射,那么就可以用個參數θθ的模型去近似它(表示為a=πθ(s)a=πθ(s))。既然目標就是要讓累積的獎賞最大,我們只要以這個目標求梯度?θJ?θJ,按照梯度不斷更新θθ值,就可以最終得到期望的策略。

然后再來看看基于值函數的方法。幾乎所有的強化學習的模型都是定義在Markov決策過程上的。這個是什么呢?其實就是包含了上面我們說的那些狀態,動作,獎賞,以及影響狀態轉移的概率,在這個模型下,未來的狀態只與當前狀態有關,與以前的沒有關系(即Markov性質)。一個Markov決策過程可以表示為

s0,a0,r1,s1,a1,r2,…s0,a0,r1,s1,a1,r2,…基于這個假設,很容易得到值函數是滿足一個遞歸式子的。

最優的值函數也是一樣

Q?(s,a)=E[rt+1+γQ?(s′,a′)|st=s,at=a]Q?(s,a)=E[rt+1+γQ?(s′,a′)|st=s,at=a]這就是著名的Bellman Equation,它是求解值函數的關鍵。


最優的Bellman Equation指導我們通過不斷迭代就能夠得到最優的值函數。如圖所示,一個實心點就是值函數Q,白圈表示狀態。上述的Bellman Equation實際上可以按照Markov決策過程展開成一個樹狀的結構,我們不斷向前看,探索后面的情況,然后將這些得到的獎賞綜合起來。然后就能得到一步一步往狀態動作值函數里填。熟悉動態規劃的同學,對于這種迭代求解的方法應該不會陌生。


如果我們對于這個環境了如指掌,那些狀態之間的轉移概率我們都清清楚楚,那么所有的轉移都可以被展開,如圖所示。利用動態規劃就可以求得值函數的精確解。


但是大自然是偉大的,我們不是上帝,基本上不可能吃透它。轉移概率這些東西是無從得知了,因此我們做不到像上面那樣對所有的狀態和動作進行展開。那怎么來算值函數呢?還是像種瓜一樣,一次可能種不好,但是可以多種幾次,來總結經驗。求取平均的累積獎賞來作為期望累積獎賞的近似就可以估算值函數。


具體說來,也就是我們從起始狀態出發,使用某種已掌握的策略進行探索,不斷執行該策略,來得到一個完整的軌跡,如圖所示紅色標記的部分,記錄其獎賞之和,作為一次的累積獎賞的采樣值。多次采樣之后,我們就可以根據這些軌跡得到一個估計。


有時候我們的策略可能是固定的,那么不是所有的軌跡都一樣了嘛,或者策略總是一個很高的概率告訴我們執行某個動作,這樣我們其實就是一直在認知范圍內做最好的,那采樣再多也沒用。世界太大,我們需要出去看看,可能在未知的地方,有很重要的東西,就像哥倫布發現新大陸一樣。


因此為了不做井底之蛙,能更好的獲得估計值,通常會加一點“擾動”,比如??的概率從所有動作中均勻隨機選取一個,以1??1??的概率選取當前策略給出的最優動作。通常將這種加了這種擾動的策略記為π?π?。(這只是一個簡單的處理方法,其實也有很多研究,感興趣的同學可以去看看exploitation & exploration dilemma)

但是注意到這里為了獲得軌跡,瓜得全部種好啊?,F在21世紀,時間就是金錢啊,哪有這個閑工夫種那么多瓜。話說不是有Markov假設嘛,能不能我種一點總結一點?答案是肯定的。

我們每次不走完,就只向前看一步,然后估計出一個值函數的目標。對比當前的值函數做改進。如下圖所示,將只向前看一步的作為樣本。假設已經有$m$個樣本估計出一個Qm(st,at)Qm(st,at),如果現在有了第m+1m+1個樣本,那么就可以在原來Qm(st,at)Qm(st,at)的基礎上加上基于這m個樣本估計的(st,at)(st,at)最優Q值與當前Q值的差就能起到更新Q值的作用了。一輪中,我們實際上就只使用了一個樣本來更新。

表達起來就是下面這個式子來進行增量式的學習Qm+1(st,at)=Qm+1(st,at)+α[rt+1+γQm(st+1,at+1)?Qm(st,at)]Qm+1(st,at)=Qm+1(st,at)+α[rt+1+γQm(st+1,at+1)?Qm(st,at)]其中αα起到一個控制學習步長的作用。


估計出值函數之后,要得到最優策略,還需要改進策略去達到這個估計出來的最優值函數。說來也簡單,我們就在每個狀態,枚舉一下動作集合,然后選一個能達到最大值函數的動作就可以了



這里簡單的放一個算法來描述這個過程,這就是強化學習中非常常用的Q-Learning。通過前面的鋪墊,這個算法大家應該不難看懂。


可以看到,到目前為止,我們這個值函數似乎就是一張表啊,狀態和動作好像都是離散的。如果狀態是連續的怎么辦?如果動作也是連續的怎么辦?這種情況很常見啊,因為本來世界就是連續的。最簡單的可以做離散化。但是連續空間離散出來怕是空間有點大,你這個表更新起來也麻煩,而且泛化性能可能也有問題。


Ⅲ.一探深度強化學習

對于連續狀態問題,科學家們就說了,可以用函數來近似這個連續空間,比如對于Q函數,可以將其表示為Q(s,a)=[F(θ)](s;a)Q(s,a)=[F(θ)](s;a),其中F(θ)F(θ)表示參數為θθ的函數,只要能夠求解這個θθ就能近似值函數,進而得到策略。我們將上面Q-Learning里的Q函數用這個式子代換即可。這里函數可以是線性的也可以是非線性的,通常線性的函數由于更容易分析理論結果,經常被用在強化學習里面。即Q(s,a)=θT(s;a)Q(s,a)=θT(s;a)。

當然也可以用一個神經網絡去代替值函數(假設網絡權值向量ωω,那么值函數可以表示為Q(s,a,ω)Q(s,a,ω)),特別現在深度學習那么強,能夠刻畫很多高維的(圖像)狀態,如果換成深度網絡能夠帶來很多好處(這里總算有點深度強化學習的意思了)。如何來確定網絡的權值來逼近值函數呢?

可以將更新Q值的目標函數設置為Q-learning中更新的差值的均方差

然后就可以進行使用梯度下降來求解了

參照Q-Learning,它實際上每一步就用了一個樣例來更新Q值,在這里計算梯度的時候,可以只用一個樣例也可以使用mini-batch的方式來進行更新。

在Q-learning中使用神經網絡的做法其實之前就有人想到了,但是效果并不好,因為一方面那時候深度學習的技術還沒有現在這么成熟,變成個神經網絡也會比其他模型更好。而另一方面也是最關鍵的問題來源于強化學習的特殊性。這個特殊性體現在兩個方面,一個是它的數據是序列產生的,這樣子數據之間并不滿足機器學習中通常假設的獨立同分布的性質,這樣我們進行隨機梯度下降,其實并不隨機。套一個機器學習算法當然效果不好。另一個是,機器人采取什么動作實際上會影響環境的,好比走路,左轉是陽關道,右轉是獨木橋,場景大不相同。這意味著后面產生數據的分布也在變化,訓練出來的策略可能非常不穩定,產生震蕩的情況。

但是DeepMind提出了簡單而有效的技巧解決這兩個問題。對于第一個問題,他們用了一個叫Replay Memory的東西記為D,就是字面含義,把產生的數據都往里面扔,然后要計算梯度的時候,就像看回放一樣,從D里面隨機采樣。這樣就使得數據之間關聯性得到了打破。

對于第二個問題,他們說,先隨機設定一個網絡權值,并且固定住,即一直為ω?ω?,慢慢優化,穩定了,再更新,再優化。這樣監督信息實際上在很長的時間內是不變的,達到了一種監督學習的感覺。

他們將這一套東西拿來玩Atari游戲機【1】,這是個風靡80年代的游戲機。畫面就和馬里奧差不多,像素一格一格的,很多經典游戲比如打磚塊都是出自這個游戲機。游戲機本身很簡單,就是一個搖桿,有18種操作。他們直接讓游戲畫面作為狀態描述,搖桿作為動作集,游戲中的得分作為獎賞,搞了個深度神經網絡來學習值函數。

我來給大家畫一張圖,大家一看就明白了,實際上就是游戲畫面通過一個深度網絡變成狀態,然后按照Q-learning的流程會產生(st,at,rt,st+1)(st,at,rt,st+1)這樣的數據,我們將這些數據扔進Replay Memory中。訓練網絡時,以Q-learning的中的差作為目標函數,從Replay Memory中進行采樣,進行mini-batch的梯度求解。


最后效果還不錯,在40個游戲中,比傳統的強化學習方法都好,有29個達到了人類75%的得分。


我們來看看他們提出的這兩個技術到底起了多大的作用。從他們提供的統計表中我們可以看到replay貢獻挺高,兩個結合起來確實有奇效


到這里好像一副就可以結尾了的樣子。然而并沒有。


Ⅳ.二探深度強化學習

可以看到這個地方動作集是離散的,并且也就只有18種。前面我們也提到了,動作難道不能是連續的么?當然是可以的,比如你開車的時候,方向盤就不可能只有左右,是個關于角度的連續值啊。

那這些東西可以做連續動作的嘛?不可以。再來看改進策略的方式,這需要從動作集里面枚舉的。這顯然對連續情況是沒法處理的。如果離散化呢?那可能是一個非常大的動作空間,那每一步改進的計算代價都會非常大。

那么怎么處理呢?大家別忘了求解策略的是兩條路的。我們前面講的都是基于值函數的方法。我們還能直接求策略的梯度啊。這里策略是一個單獨的函數了,至于做什么動作,把狀態帶進入就可得到。這里自然的就可以處理連續的動作了,不涉及上面那個改進策略的式子。

由于采用梯度方法,因此這種求解方式有很好的收斂性保證。當然另一方面也是容易陷入到局部最優解。由于沒有枚舉動作改進策略的這個步驟,它不像值函數方法有對動作天然的泛化性,用人話說就是對于沒有見過的動作,它就不知道是啥了。

看起來兩種方法各有優勢啊,能不能相互取長補短呢?于是聰明的科學家提出了一種叫做actor-critic的框架,也就是分為actor和critic兩個部分。簡單說來,critic就是類似之前說的那種Q-Learning那種值函數的方法,但是我們這里主要用它來評估策略,而actor就是梯度方法,我們用它來改進策略。這樣子critic使得策略的評估得到了改善,能給actor一個更好的梯度估計值,能改善局部最優的問題,actor避免了值函數中低效的值估計過程,同時也能應對連續動作空間。

當然這兩個部分也都是可以用深度神經網絡來取代的,也就能自然的結合深度學習的優勢了。

當然DeepMind不僅僅就是換個網絡上去這么簡單。他們更進一步,證明了在一些情況下,存在著決定性策略梯度而且具有很利于估計的形式。這個在之前普遍認為是不存在的。那這個決定性策略梯度到底是什么意思呢?之前算梯度的式子是(其中ρπρπ是狀態分布)

如果采用隨機策略梯度的求法,需要對狀態,動作進行采樣的,如果動作空間大了,那么采樣需要的樣例也就多了。

他們證明可以這樣【3】

不要看式子好像很復雜,我們看求期望的部分,發現沒有?我們不用管動作空間了,這極大的提高了在連續空間中梯度的估計效率。

同樣加上前面提到的回放和固定目標的技術,深度強化學習不僅可以處理連續狀態空間,也可以處理連續動作空間【4】。

Ⅴ.三探深度強化學習

人類總是容易不滿足,有些問題就是有非常大的離散動作空間,你光能處理連續的不行啊。如果動作有千千萬。前面這些東西就又跪了。但是DeepMind的科學家想啊,上面這套處理連續的不是非常棒嘛,那我就把離散動作空間先變成連續的,用上面這一套來搞,然后再把連續都又變回離散的動作,這不就皆大歡喜了。具體說來來呢,他們提出了一個叫Wolpertinger的框架(wolpertinger是一種歐美傳說中的動物,有松鼠的身子,兔子的頭,鹿的角,野雞的翅膀……不知道他們是不是覺得他們這個框架雜糅了各種東西,所以起這么一個名字),框架大概就是圖上這樣。


再具體一點,就是將原來的策略函數變成這樣,


先將狀態與連續的動作空間對應,得到一個屬于連續空間的“原型”動作(proto-action)。但是這個動作不一定合法,因此我們需要再把它映射到原動作空間去。其實就是尋找k個最接近的原始動作

為了魯邦一點呢,就用值函數評估一下,選那個值最大的動作就ok了,

大家這時候可能會有點納悶,到底什么樣的問題需要這么大的離散動作空間呢。實際上這樣的問題還是挺多的。比如在推薦系統中,可以假設有一個機器給用戶作推薦,推薦物品的集合就是動作的集合,每個用戶可能會接受這個推薦或者不接受,接受了就相當于,這個動作帶來的狀態轉移獲得了正反饋。所以人的行為就是環境的反饋。由于現實生活中人的行為會隨著時間一直變化著的,目前很多推薦系統都難以解決這一點。而強化學習的這種與環境不斷交互,以謀求長期利益的模式很容易將這種情況建模起來。因此強化學習在這類問題上也是有其優點的。

他們在實驗時構造了一個推薦的環境,其中包括商品集合,對應動作集A。轉移概率矩陣Wi,jWi,j,表征用戶上一個接受的物品是ii的情況下,接受jj的概率。每個物品如果被用戶接受,有rr的獎賞。用戶當前的狀態,就是其正在消費的商品。當前轉移不受之前推薦的物品影響。在每一步,我們的機器人用動作AiAi給用戶提供一個商品ii,用戶可能會接受它或者隨機選擇一個。


可以看到當考慮近鄰數為10%的時候能有比較好的近似,在第二張圖中,如果考慮全部動作空間(100%),已經跑不動了。


在速度上來看,下面這個表表示每秒鐘能夠進行的步數,越多表示越快??梢钥吹?0%還是比全部考慮快很多的。因此通過他們這個離散到連續,連續再到離散過程,大規模離散動作空間的問題也能夠得到解決了。

說到這里,基本把深度強化學習的幾個方面都介紹了一下。我們可以看到,強化學習實際上是一套很通用的解決人工智能問題的框架,很值得大家去研究。另一方面,深度學習不僅能夠為強化學習帶來端到端優化的便利,而且使得強化學習不再受限于低維的空間中,極大地拓展了強化學習的使用范圍。

我覺得一句話能夠很好的概括深度強化學習“Reinforcement Learning + Deep Learning = AI”,這是DeepMind中深度強化學習領頭人David Silver寫在他的slides上的。就用它作為結尾吧。

致謝:感謝南京大學俞揚副教授(強化學習領域的專家)@eyounx_俞揚及@龍星鏢局在本文成文中給予的建議。本文在騰訊實習期間完成,感謝精準推薦中心同事和領導的支持。

參考文獻:

【1】Playing Atari with Deep Reinforcement Learning(13’ NIPS Deep Learning Workshop)

【2】Human Level Control Though Deep Reinforcement Learning(15’ Nature)

【3】Deterministic Policy Gradient Algorithms(14’ ICML)

【4】Continuous Control With Deep Reinforcement Learning(16’ ICLR)

【5】Deep Reinforcement Learning in Large Discrete Action Spaces (ArXiv:1512.07679V2)

【6】L. Busoniu, R. Babuska, B.D. Schutter and D. Ernst, Reinforcement Learning and Dynamic Programming using function approximators

【7】R.S. Sutton and A.G. Barto, Reinforcement Learning: An Introduction

【8】周志華,機器學習


總結

以上是生活随笔為你收集整理的深度强化学习探索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品视频一区二区三区 | 成人免费视频软件网站 | 日韩欧美www| 激情国产一区 | 国产精品久久久爽爽爽麻豆色哟哟 | 欧美黄色小说 | 国产精品一品 | 久久青娱乐 | 99热这里只有精品9 日韩综合在线 | 中国少妇做爰全过程毛片 | 久久观看 | 人妻丰满熟妇岳av无码区hd | 国产精品无码AV | 97欧美视频| 日韩视频免费在线播放 | 欧美片一区二区三区 | 亚洲国产精品一区二区久久hs | 天天操天天操天天 | 催眠调教后宫乱淫校园 | 九九久视频 | 成年性生交大片免费看 | 一本色道无码道dvd在线观看 | 银娇在线观看 | 国产一区二区在线不卡 | 美女日日日 | 亚洲成人精品一区 | 两个人看的www视频免费完整版 | 国产美女视频免费观看下载软件 | 欧洲av无码放荡人妇网站 | 国产成人无码一区二区在线播放 | 一区小视频 | 爱爱一区二区三区 | 欧美一区二区三区免费看 | 国产精品露脸视频 | 日韩免费高清 | 一区二区三区美女视频 | 国内国产精品天干天干 | av手机在线 | 日韩久久久久 | 欧美xxxxbbb| 男人添女人下部高潮视频 | 国产做爰全过程免费视频 | 91精品国产91久久久久福利 | 欧洲精品在线观看 | 国产精品久久久久久久久久久新郎 | 啪啪福利视频 | 亚洲区小说区图片区 | 国产女人18毛片18精品 | 国产精品12 | 久久99热这里只频精品6学生 | 欧美精品一区二区免费看 | 国模私拍一区二区 | 猛1被调教成公厕尿便失禁网站 | 麻豆福利在线观看 | 午夜精品久久久久久久99热浪潮 | 午夜少妇| 色中色av | 色www亚洲国产阿娇yao | 免费亚洲网站 | 日本精品久久久久中文字幕 | av在线资源播放 | 人妻丰满熟妇av无码区不卡 | 青青在线| 久久综合网址 | 美女又爽又黄视频 | 欧美一级淫片免费视频魅影视频 | 红桃av在线 | 精品国产一区二区三区四区精华 | 爱臀av | 亚洲欧美自偷自拍 | 国产精品一线二线三线 | 91在线日本 | 精品久久久久久久久久久久久 | 五月天婷婷激情视频 | 亚洲人成电影网 | 伊人婷婷色 | 成人免费激情视频 | av片一区二区三区 | 国产一区二区在线免费观看视频 | 国产成人精品视频ⅴa片软件竹菊 | 国产精品一区二区无码对白 | 国产成人无码精品久久久久久 | 在线视频观看一区 | 国产我不卡 | 久久密桃 | 国产成人精品久久二区二区 | 91爱在线观看 | 久久久国产一区二区三区 | 中国字幕一色哟哟 | 性欢交69国产精品 | 丁香六月综合激情 | 98av视频 | 欧美黑人啪啪 | av黄色在线看 | 国产日韩欧美另类 | 亚洲天堂网视频 | 亚洲一二三区视频 | 精品国产自| 国产又大又粗又爽的毛片 |