深度強化學習task05

2021-10-10 06:59:56 字數 3764 閱讀 6050

如果環境中的 reward 非常 sparse,reinforcement learning 的問題就會變得非常的困難,但是人類可以在非常 sparse 的 reward 上面去學習。我們的人生通常多數的時候,我們就只是活在那裡,都沒有得到什麼 reward 或是 penalty。但是,人還是可以採取各種各式各樣的行為。所以,乙個真正厲害的 ai 應該能夠在 sparse reward 的情況下也學到要怎麼跟這個環境互動。

解決這個問題可從以下3個方向開始:

第乙個方向是reward shaping。reward shaping 的意思是說環境有乙個固定的 reward,它是真正的 reward,但是為了讓 agent 學出來的結果是我們要的樣子,我們刻意地設計了一些 reward 來引導我們的 agent。舉例來說,如果是把小孩當成乙個 agent 的話。那乙個小孩,他可以 take 兩個 actions,乙個 action 是他可以出去玩,那他出去玩的話,在下一秒鐘它會得到 reward 1。但是他在月考的時候,成績可能會很差。所以在100 個小時之後呢,他會得到 reward -100。然後,他也可以決定要念書,然後在下乙個時間,因為他沒有出去玩,所以他覺得很不爽,所以他得到 reward -1。但是在 100 個小時後,他可以得到 reward 100。但對乙個小孩來說,他可能就會想要 take play 而不是 take study。我們計算的是 accumulated reward,但也許對小孩來說,他的 discount factor 會很大,所以他就不太在意未來的reward。而且因為他是乙個小孩,他還沒有很多 experience,所以他的 q-function estimate 是非常不精準的。所以要他去 estimate 很遠以後會得到的 accumulated reward,他其實是**不出來的。所以這時候大人就要引導他,怎麼引導呢?就騙他說,如果你坐下來念書我就給你吃乙個棒棒糖。所以,對他來說,下乙個時間點會得到的 reward 就變成是positive 的。所以他就覺得說,也許 take 這個 study 是比 play 好的。雖然這並不是真正的 reward,而是其他人騙他的reward,告訴他說你採取這個 action 是好的。reward shaping 的概念是一樣的,簡單來說,就是你自己想辦法 design 一些 reward,它不是環境真正的 reward。在玩 atari 遊戲裡面,真的 reward 是遊戲主機給你的 reward,但你自己去設計一些 reward 好引導你的 machine,做你想要它做的事情。

reward shaping 是有問題的,因為我們需要 domain knowledge,舉例來說,機械人想要學會的事情是把藍色的板子從這個柱子穿過去。機械人很難學會,我們可以做 reward shaping。乙個貌似合理的說法是,藍色的板子離柱子越近,reward 越大。但是 machine 靠近的方式會有問題,它會用藍色的板子打柱子。而我們要把藍色板子放在柱子上面去,才能把藍色板子穿過柱子。 這種 reward shaping 的方式是沒有幫助的,那至於什麼 reward shaping 有幫助,什麼 reward shaping 沒幫助,會變成乙個 domain knowledge,你要去調的。

接下來就是介紹各種你可以自己加進去,in general 看起來是有用的 reward。舉例來說,乙個技術是給 machine 加上 curiosity,所以叫curiosity driven reward。如上圖所示,我們有乙個 reward function,它給你某乙個 state,給你某乙個 action,它就會評斷說在這個 state 採取這個 action 得到多少的 reward。那我們當然希望 total reward 越大越好。

2. 第二個方向是curriculum learning。curriculum learning 不是 reinforcement learning 所獨有的概念,其實在 machine learning,尤其是 deep learning 裡面,你都會用到 curriculum learning 的概念。舉例來說,curriculum learning 的意思是說,你為機器的學習做規劃,你給他喂 training data 的時候,是有順序的,通常都是由簡單到難。就好比說,假設你今天要交乙個小朋友作微積分,他做錯就打他一巴掌,這樣他永遠都不會做對,太難了。你要先教他九九乘法,然後才教他微積分。所以 curriculum learning 的意思就是在教機器的時候,從簡單的題目教到難的題目。就算不是 reinforcement learning,一般在 train deep network 的時候,你有時候也會這麼做。舉例來說,在 train rnn 的時候,已經有很多的文獻都 report 說,你給機器先看短的 sequence,再慢慢給它長的 sequence,通常可以學得比較好。那用在 reinforcement learning 裡面,你就是要幫機器規劃一下它的課程,從最簡單的到最難的。

3. 第三個方向是分層強化學習(hierarchical reinforcement learning,hrl)。分層強化學習是說,我們有好幾個 agent。然後,有一些 agent 負責比較 high level 的東西,它負責訂目標,然後它訂完目標以後,再分配給其他的 agent,去把它執行完成。

這邊是舉乙個例子,就是假設校長、教授和研究生通通都是 agent。那今天假設我們只要進入百大就可以得到 reward。假設進入百大的話,校長就要提出願景告訴其他的 agent 說,現在你要達到什麼樣的目標。那校長的願景可能就是說教授每年都要發三篇期刊。然後接下來這些 agent 都是有分層的,所以上面的 agent,他的動作就是提出願景這樣。那他把他的願景傳給下一層的 agent,下一層的 agent 就把這個願景吃下去。如果他下面還有其他人的話,它就會提出新的願景。比如說,校長要教授發期刊,但其實教授自己也是不做實驗的。所以,教授也只能夠叫下面的研究生做實驗。所以教授就提出願景,就做出實驗的規劃,然後研究生才是真的去執行這個實驗的人。然後,真的把實驗做出來,最後大家就可以得到reward。那現在是這樣子的,在 learn 的時候,其實每乙個 agent 都會 learn。那他們的整體的目標就是要達到最後的reward。那前面的這些 agent,他提出來的 actions 就是願景這樣。你如果是玩遊戲的話,他提出來的就是,我現在想要產生這樣的遊戲畫面。但是,假設他提出來的願景是下面的 agent 達不到的,那就會被討厭。舉例來說,教授對研究生都一直逼迫研究生做一些很困難的實驗,研究生都做不出來的話,研究生就會跑掉,所以他就會得到乙個 penalty。所以如果今天下層的 agent 沒有辦法達到上層 agent 所提出來的 goal 的話,上層的 agent 就會被討厭,它就會得到乙個 negative reward。所以他要避免提出那些願景是底下的 agent 所做不到的。那每乙個 agent 都是把上層的 agent 所提出來的願景當作輸入,然後決定他自己要產生什麼輸出。

q:解決sparse reward的方法有哪些?

a:reward shaping、curiosity driven reward、(reverse)curriculum learning 、hierarchical reinforcement learning等等。

q:reward shaping方法存在什麼主要問題?

a:主要的乙個問題是我們人為設計的reward需要domain knowledge,需要我們自己設計出符合environment與agent更好的互動的reward,這需要不少的經驗知識,需要我們根據實際的效果進行調整。

pandas學習 Task05合併

問題二 merge ordered和merge asof的作用是什麼?和merge是什麼關係?merge ordered 根據官方說明,適用與帶時間序列的資料,自帶ffill bfill 引數,可以方便填充 merge asof 模糊匹配版的merge 問題三 請構造乙個多級索引與多級索引合併的例子...

深度強化學習

這是寫給自己看的,大佬請忽略 深度學習和其他機器學習演算法最大的不同在於如何找到特徵,而特徵的抽取過程就是乙個抽象的全過程。以往機器學習演算法的特徵抽取都是對一類問題有解,比如k means等聚類。深度學習抽象模擬了人類神經元傳遞和連線方式,理論上可以解決多種分類問題和 問題,甚至研究未知領域。深度...

深度強化學習

一 簡介 1 深度強化學習出現的原因 傳統的強化學習中當狀態和動作空間是離散且維數不高時可使用q table儲存每個狀態動作對的q值。然而比較複雜的 更加接近實際情況的任務則往往有著很大的狀態空間和連續的動作空間,這種情況下使用q table不現實。同時實現端到端的控制也是要求能處理高維的,如影象 ...