Re: [心得] 文章翻譯:為何DRL還行不通? Part2

看板DataScience作者 (LawTea)時間6年前 (2018/09/17 23:43), 6年前編輯推噓7(700)
留言7則, 7人參與, 6年前最新討論串1/1
Github好讀版 https://github.com/LilTwo/Article/issues/2 這是本系列第二部分,比想像中還多... 看來還需要再三篇才能翻完 獎勵函數的設計是很難的 只是要得到一個獎勵函數並不難 困難的點在於獎勵函數的設計要能獎勵那些你想要的行為,並且要是可學習 在HalfCheetah環境,你有一個兩隻腳的機器人,被限制在垂直平面 意味著它只能向前或向後移動 https://www.alexirpan.com/public/rl-hard/upright_half_cheetah.mp4 此環境的目標是學習如何跑步,獎勵是機器人的速度 這種獎勵是shaped reward,意思是當狀態離目標越近時,會得到越多的獎勵 這與sparse reward相反,sparse reward只有在達到目標時會給予獎勵,其餘狀態則沒有 任何獎勵 shaped reward通常好學很多,因為即使策略還沒有完全解決問題,它也會給出正面的回 饋 不幸地,shaped reward可以讓學習出現偏差,就如之前所說,這可能會導致你不想要的 行為出現 這篇部落格文章是一個好的例子 https://blog.openai.com/faulty-reward-functions/ 這是關於一個賽船遊戲,目標是要完成比賽 可以想像sparse reward只有完成比賽時會給予+1的獎勵,其他狀況則都給予0的獎勵 而下面影片中的採用的獎勵函數則是當到達檢查點以及拿到加速道具(可以讓你更快完成 比賽)時都會給予獎勵,但最後的結果是策略發現不斷地重新拿到加速道具可以獲得的獎 勵比完成比賽還多 https://www.youtube.com/watch?time_continue=27&v=tlOIHko8ySg
老實說,當這篇文章剛出來時我對它有點反感,並不是因為我覺得它講得不夠到位 而是我認為這個結果是非常顯而易見的,當你使用不適當的獎勵函數時RL當然會學到一些 怪事! 我感覺這篇部落格文有點小題大作了 後來我開始寫篇文章時,才發現這部影片是用來解釋不適當的獎勵函數時最有說服力的範 例 並且已經被用在許多說明此問題的主題上了,所以我只好承認那篇部落格文還是挺不錯的 部分RL演算法具有很多關於環境的知識 另一部分則對於環境沒有太多了解,例如RL中最廣的分支:model-free RL 這種RL幾乎等同於黑盒優化(black box optimization) 它們只知道自己身處一個MDP,完全沒有其他知識 agent只被告知做這些事情會得到+1的獎勵,做那些事情則無 而問題在於任何給予+1獎勵的事情都是好的,即使得到這些獎勵並不來自於正確的結果 一個經典的非RL例子為應用遺傳演算法來做電路設計,然後得到一個必須有未連結邏輯閘 的電路 https://www.alexirpan.com/public/rl-hard/circuit.png
要得到正確的行為,灰色的區塊是必須的,包括最左上角的那一個,即使它沒有連接到任 何東西 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.50.9691&rep=rep1&type=pdf 一個比較近期的例子可以看這篇文章 https://www.salesforce.com/products/einstein/ai-research/tl-dr-reinforced-model-abstractive-summarization/ 他們的目標是自動摘要擷取,並且使用一個以SL方式訓練的模型做為比較基準 比較方式是藉由一個叫ROGUE的度量標準,ROUGE是不可微分的 但RL可以處理不可微分的獎勵函數,所以他們試著直接對ROUGE做優化 結果是RL得到了很高的ROGUE分數,但並沒有取得很好的摘要擷取結果 所以最後他們採取了另一種的模型 https://arxiv.org/abs/1705.04304 另一個例子是這篇paper,有時被稱為"Lego stacking paper" https://arxiv.org/abs/1704.03073 使用的的算法是分散式的DDPG,目標是把紅色積木抓起來疊到藍色積木上 他們成功地讓RL運作了,但也遇到的一些一致的失敗案例 在第一個抓取任務時,獎勵是以紅色積木的高度來決定,這是以紅色積木底層平面的z座 標來定義 https://www.youtube.com/watch?time_continue=27&v=8QnD8ZM0YCo
一個失敗的模式是策略學到將積木翻過來而不是把它抓起來,顯然這不是原本的目的,但 RL不管這個 從RL的角度來看,將積木翻過來可以得到獎勵,所以它就會這麼做 一個解決方法是將獎勵改成sparse reward,讓獎勵函數只有在積木成功疊起來時會給予 正的值 有時候可以這樣做,因為sparse reward是可以學習的 但更多的時候過少的正面回饋會讓訓練變得太難 另一個方法是更謹慎地定義獎勵函數,加入新的項或是修改現有的係數 直到RL學到的行為是你想要它學的 這樣的調整是可能讓RL變得更好的並且有時候是必要的,但是讓人不太滿意 在這些調整過程中我總是覺得學不到任何東西 為了給讀者參考,下面是Lego stacking paper的獎勵函數 https://www.alexirpan.com/public/rl-hard/lego_reward.png
我不知道他們花了多久時間來設計這個獎勵,但根據這些項以及係數的數量,我猜花了很 久 與RL研究者聊天時,我聽他們講過一些不適當的獎勵函數會造成的有趣怪行為 1.一個agent被訓練來探索一個房間,當agent走到房間的邊界時即結束episode 他對於episode的結束沒有加入任何懲罰機制,結果最後學到是一個自殺策略 因為負獎勵太多了,正的獎勵太難取得,所以agent傾向快速的自殺以取得0獎勵 2.一個機器手臂被訓練來碰到桌上的某個目標點,點的座標是根據桌子的相對位置定義的 而桌子沒有被固定住,結果手臂學到的策略是把桌子翻到,讓目標點也跟著桌子移動 桌子倒下來目標點也剛好在手臂端點的旁邊了 3.一個機器人被訓練來撿起一個槌子並把釘子槌進洞裡 一開始獎勵是被定義為訂子離洞還有多遠,結果機器人用它自己的肢體把釘子槌進去,而 不會使用槌子 所以他們加入一些獎勵鼓勵機器人撿起槌子,他們也得到一個會撿起槌子的策略 但是之後機器人朝著釘子丟出槌子而不是使用它 當然這些都是二手消息,我沒有看過關於這些例子的影片 但對我來說這些聽起來都是有可能的,我已經因為過於相信RL而失望很多次了 即使有了一個好的獎勵函數,也很容易陷入局部最佳 前面的幾個RL例子,有時也被稱為reward hacking(不合適的reward設計) 從我的觀點來看,這暗示了有一個聰明、跳脫框架的答案 這個答案相較於獎勵函數設計者所預期的行為可以取得更多的獎勵 比起reward hacking,更常見的例子是困在不夠好的局部最佳解 這來自於exploration-exploitation取捨錯誤 底下這個影片是我最喜歡用來說明這個現象的例子,他們採用了Normalized Advantage Function https://arxiv.org/abs/1603.00748 影片如下 https://www.alexirpan.com/public/rl-hard/upsidedown_half_cheetah.mp4 從旁觀者來看,這真的非常愚蠢,但這是因為我們第三者的位置來看,並且我們早就知道 用腳跑步是更好的,但RL並不知道! 它只看到一個狀態向量,給出一個動作項輛,然後得到一些正面的獎勵,僅此而已 底下是我對於訓練過程的猜測: 1.在隨機的探索過程中,策略發現向前倒下比站著更好 2.重複了多次的訓練過程後,1.的行為變成固定的 3.向前倒下之後,策略學習到如果施了一次很大的力,會讓agent做空翻,並得到更多獎 勵 4.重複了多次訓練過程後,3.的行為也變成固定的 4.一但空翻的動作變成固定之後,接下要策略要學習:在躺著的情況下把自己向右移動, 或是站起來後再用標準的動作向右走,顯然前者勝出了 這個現象非常好玩,但當然,並不是我們要的結果 底下是Reacher環境裡,另一個失敗的結果 https://www.alexirpan.com/public/rl-hard/failed_reacher.mp4 在這次的訓練中,初始的隨機權重傾向輸出一個較大的動作,這讓大部分的動作都輸出極 值 而要快速地旋轉是很簡單的,只要在每個關節中一直給予很大的力 一但機器人陷入這個情況,就很難再脫離了,要脫離必須要有足夠多的探索步驟來停止旋 轉 當然這是可能的,但在這個例子下並沒有 這些exploration-exploitation取捨問題已經困擾了RL的研究很久了 你的訓練資料來自於現有的策略,如果策略探索太多你會取得一堆沒用的資料 如果策略利用太多則會讓你陷入一個非最佳的策略 有一些直覺上的方法可以一定程度地解決這個問題: intrinsic motivation, curiosity-driven exploration, count-based exploration等等 這些方法很多是在1980年代以前就被提出來,最近又隨著深度網路的出現被重新提起 不過就我所知,沒有一個方法能在所有環境中都有效地發揮作用 最好還是有一個exploration-exploitation策略在所用環境都能順利作用 但我想這種策略短時間內還不太可能被發現 不是因為人們沒有在嘗試,而是exploration-exploitation真的、真的、真的很難 底下引用一段維基的話: Originally considered by Allied scientists in World War II, it proved so intractable that, according to Peter Whittle, the problem was proposed to be dropped over Germany so that German scientists could also waste their time on it. 我現在將DRL想像為一個故意誤解你的獎勵函數,並且積極地往最懶惰的局部最佳搜尋的 惡魔 這聽起來很荒謬,但我也發現它實際上是講究效率的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 58.114.212.150 ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1537199032.A.400.html ※ 編輯: thefattiger (58.114.212.150), 09/17/2018 23:48:00

09/18 18:58, 6年前 , 1F
推推
09/18 18:58, 1F

09/18 20:04, 6年前 , 2F
感謝好心提供~
09/18 20:04, 2F

10/01 05:27, 6年前 , 3F
非常有趣
10/01 05:27, 3F

10/04 08:13, 6年前 , 4F
非常有意思
10/04 08:13, 4F

10/05 12:24, 6年前 , 5F
推推
10/05 12:24, 5F

10/13 07:46, 6年前 , 6F
有看有推
10/13 07:46, 6F

10/13 11:58, 6年前 , 7F
10/13 11:58, 7F
文章代碼(AID): #1RdykuG0 (DataScience)
文章代碼(AID): #1RdykuG0 (DataScience)