back to index
【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (四) - 回饋非常罕見的時候怎麼辦?機器的望梅止渴

link |
好,這個接下來啊,想要跟大家分享的是一個叫做reward shaping的概念。
link |
什麼是reward shaping呢?到目前為止,我們學到的東西是,我們把我們的actor拿去跟環境互動,得到一堆reward。
link |
那把這些reward做某些的整理以後,得到這邊的分數A,有了這邊的分數A,你就可以去教你的actor該做什麼,不做什麼。
link |
但是在這個reinforcement learning裡面,我們很怕遇到一種狀況是,假設reward永遠都是零的時候,怎麼辦呢?
link |
假設多數的時候reward都是零,只有非常低的機率你會得到一個巨大的reward的時候,那怎麼辦呢?
link |
假設reward幾乎都是零,那意味著什麼?意味著說你今天這個A不管怎麼算,都是零。
link |
因為每一個action都是差不多的,反正不管執行什麼action得到的reward都是零嘛,所以執行這個action執行那個action根本沒差。
link |
那如果不管執行什麼action,reward幾乎都是零的話,那你根本沒有辦法去train你的actor。
link |
那講到這種sparse reward的問題,也許有人馬上會想到的是,下圍棋也許是一個sparse reward的問題。
link |
因為在下圍棋的時候,你每落一子,你並沒有得到reward,你並沒有得到positive或negative的reward。
link |
在整場遊戲結束,落完最後一子的時候,在中盤落完最後一子遊戲結束的時候,你贏了才會得到positive的reward,你輸了才會得到negative的reward。
link |
但是我覺得相較於有一些其他任務,下圍棋還算是比較有reward的RL的問題。
link |
舉例來說,假設今天的問題是你要教機器的手臂去拴螺絲。
link |
然後教機器的手臂拴螺絲這個問題啊,你合理的reward的定義是,假設今天機器的手臂成功把螺絲拴進去,他就得到positive reward。
link |
沒有把螺絲拴進去,reward就是零。
link |
但是你想想看,一開始你的機器的手臂,他裡面的actor的參數是隨機的啊,所以他就在空中隨便揮舞。
link |
不像是下圍棋,你至少整場遊戲玩完,你還有正面的或負面的reward。
link |
而像機器的手臂,你要教機器的手臂去拴螺絲,除非他正好且非常巧合的拿起一個螺絲再把他拴進去,他得到正向的reward。
link |
不管他做什麼事情都沒差,得到的reward通通都是零分。
link |
遇到這種狀況的時候有一個解法,就是我們想辦法去提供額外的reward來引導我們的agent學習。
link |
也就是說在原來的reward,也就是我們真正要agent去maximize的reward之外,我們再定義一些額外的reward。
link |
我們定義這些額外的reward來幫助我們的agent學習。
link |
這種定額外的reward來幫助agent學習這種事情就叫做reward shaping。
link |
我們人其實也很擅長做reward shaping。
link |
舉例來說,這讓我想到一個妙法蓮華經中的故事,這個故事出自妙法蓮華經中的化塵玉瓶。
link |
這個故事就是有一個領隊帶一群人去找寶藏。
link |
然後寶藏在500遊行之外,那遊行是什麼單位我也忘了,你就當作很遠就對了,就當500萬公里之外。
link |
然後這群人走到半路,已經過了半途了,覺得很累,不想再往前走了。
link |
那大家就坐在地上哀號,不想再往前走了。
link |
他就跟大家說,再往前10公里有一個五星級的飯店,大家就可以去休息了。
link |
大家就看到五星級的飯店就很高興,就去休息了。
link |
領隊說那個飯店是我用法力變出來的,那飯店是領隊用法力變出來的,為了鼓勵大家再繼續往前走,免得大家半途而廢。
link |
廟法蓮華經說這個故事是為了表示說,佛最後希望大家成就的是佛道,但是佛道非常的長,所以中間設了小聖、中聖、大聖等不同的位階來引導大家前進。
link |
那如果對應到比較生活化的例子就是,比如說現在叫你念博士,你要博士畢業才能夠拿到博士學位才能夠得到reward,
link |
那你就會覺得,哇,這個路非常的長,然後就不想要念博班了。
link |
但是如果告訴你說,你先修個課就可以得到reward,然後做一點專題,雖然可能也沒有做出什麼厲害的成果,但老師就會說你好棒,你也得到reward。
link |
然後最後先發一個second tier的conference來得到reward,再發表top tier conference,再就得到reward,然後最後你就可以博班畢業,這樣一步一步地往前走,最終你就可以達成最終的目標。
link |
這種地方也要業配念博班,我實在是有點受不了了,不過沒關係,反正這門課快結束了,要再業配也沒幾次了。
link |
好,那這個就是reward shaping的概念。
link |
好,那我們接下來就舉一個reward shaping真正實際使用在RL裡面的例子給大家參考。
link |
那這邊舉的例子是用Vston來跟大家舉例,那因為怕大家不知道Vston是什麼,所以這邊還是放一個影片給大家看一下。
link |
這個Vston是一個第一人稱的射擊遊戲,那蠻常有人用RL來玩Vston的。
link |
那以下呢是一個Vston用RL來玩Vston,用機器來玩Vston這個遊戲的比賽錄影,我們來看一下這個比賽錄影,長起來像這個樣子。
link |
這邊的每一個選手都不是人喔,每一個選手通通都是機器。
link |
所以你仔細看一下會發現說,有些人的行為很奇怪,比如說右上角這個人,他還蠻容易卡牆的,右上角這個人還蠻容易卡牆的。
link |
你看他在撞牆壁,為什麼?因為他不是個人,他是一個機器。
link |
好,這個是讓你知道一下Vston大概是什麼樣的遊戲。
link |
那這個影片非常長啦,它是一個長達兩小時的史詩級的戰鬥,你有興趣再慢慢把它看完。
link |
在當年那個Vston的比賽裡面,第一名的隊伍就有用到了Reward Shaping的概念。
link |
那在Vston這個遊戲裡面,你被敵人殺掉,你就扣分,你殺了敵人就加分。
link |
但如果你光憑著這個遊戲裡面真正的Reward來訓練Agent,你是很難把他訓練起來的。
link |
所以呢,在這篇文章裡面就使用了一些Reward Shaping的概念,那我們就來看一下他是怎麼訂這些Reward的。
link |
舉例來說,這個第一點呢,我們等一下再看,我們先看第二點。
link |
第二點他說,如果今天有扣血,那你就得到負的Reward。
link |
那其實在遊戲裡面,扣血並沒有懲罰,扣血並不會扣分,你要死掉才扣分。
link |
但是如果機器要到死掉才知道他得到負的Reward,那可是他可能要花很久的時間才能學到扣血跟死掉之間的關聯性。
link |
所以這邊直接告訴機器,不可以扣血,扣血是壞的事情。
link |
好,然後這邊是如果損失彈藥就扣一點分數,然後減到這個醫藥包就加分,減到彈藥的補給包就加分。
link |
那這些事情在遊戲裡面是不會影響分數的,但是我們人,我們Developer,另外強加給機器來引導機器學習。
link |
好,接下來就是一些比較有趣的Reward了。
link |
舉例來說,他說呢,如果你的Agent總是待在原地,那就要扣分。
link |
為什麼需要這樣的Reward呢?因為如果你沒有這樣的Reward,對Agent來說,一開始他非常弱。
link |
他出去可能隨便走兩步就被敵人殺死了,所以對他來說,對一開始很弱的Agent來說,可以得到比較高Reward的做法,也許就是待在原地。
link |
待在原地至少Reward是0啊,那出去碰到敵人還要被扣血,那多划不來啊。
link |
所以為了避免機器最後什麼都沒有學到就只會待在原地,所以強制告訴他說,你只要待在原地就直接扣分。
link |
然後還告訴他說,如果你動就給你一個很小的分數,這邊你只要每動一下就給你9乘以10的負次方,一個非常小的,但是是positive的Reward。
link |
好,但是光是要求機器動是不夠的,所以這邊就多加了一個非常有趣的Reward。
link |
這個Reward是每次如果Agent活著,Agent每活著他就要被扣分。
link |
你可能覺得很奇怪,活著不是一件好事嗎?為什麼活著反而應該要被扣分呢?
link |
那是因為假設現在活著沒有扣分,或者甚至是一件正面的事情,對Agent來說他會學到的可能就是邊緣OBR。
link |
你雖然有要求他動,你要求他動沒有關係啊,他就在邊緣一直自轉就好,邊緣一直轉圈圈就好,看到敵人就躲開,不要跟敵人做任何的正面交鋒。
link |
對Agent來說也許這樣是一個最安全的做法,但是為了強迫Agent學習去殺敵人,所以反而告訴他說你只要活著就是扣分,
link |
你要想辦法不可以活太久,你要想辦法去跟別人交手,所以這是一個非常有趣的Reward Shaping的方式。
link |
看到這些Reward Shaping你就會發現說,Reward Shaping這件事情其實是需要花Domain Knowledge的,它其實是需要憑藉著人類對你現在環境的理解來強加上去。
link |
那今天再舉另外一個Reward Shaping的例子,假設你今天要訓練一個機器手臂,那這個機器手臂的工作就是把這個藍色的板子插到這個棍子上。
link |
那像這樣子的任務,你要憑藉RL的方法讓機器憑空學會把藍色的板子插到這個棍子上,沒有那麼容易。
link |
但是你可能會想到一個很直覺的Reward Shaping的方法是,假設今天這個藍色的板子離這個棍子越近,那我們得到的Reward就越大。
link |
但是如果你仔細想想會發現說,單純讓藍色的板子離這個棍子越近是不夠的,為什麼讓藍色的板子離棍子近是不夠的呢?
link |
你可以看看像右邊這兩個Case,機器手臂也是想把藍色的板子挪近棍子,但他做的事情其實就是去打那個棍子,從側面接近。
link |
從側面接近是沒有用的啊,把藍色的板子從側面接近棍子並不能夠達到你最終的目標啊。
link |
所以如果我們單純只是說,現在你的藍色的板子離這個棍子越近,他的Reward就越大。
link |
你就用Reward Shaping的方法把藍色的板子跟棍子之間的距離當作一個新的Reward,但可能對你最終想要解決的問題本身是不一定有幫助的。
link |
所以Reward Shaping這個東西你在用的時候必須要小心,他需要你對這個問題本身有足夠的理解,你才有辦法使用Reward Shaping這樣的招數。
link |
好,我們看一下有沒有同學有問問題的。
link |
好,目前沒有同學問問題,那我們就繼續啦。
link |
Reward Shaping裡面有一個特別有趣而知名的做法叫做Curiosity Based Reward Shaping,也就是給機器加上好奇心。
link |
什麼叫做給機器加上好奇心呢?所謂好奇心的意思就是要去探索新的事物。
link |
所以在原來的Reward之外,我們加上一個Reward,這個Reward是如果機器他在活動的過程中看到新的東西,他就被加分。
link |
但這邊又有一點要強調的是新的東西必須是有意義的心,不是無謂的心。
link |
什麼叫做有意義的心,不是無謂的心呢?這個我們等一下再解釋。
link |
好,這個Curiosity Based Reinforcement Learning來自於ICML2017的這篇文章。
link |
那這篇文章裡面有一個非常驚人的Demo,那我們來播一下這個Demo。
link |
我想稍微解釋一下剛才那個影片的意思。
link |
剛才那個影片的意思是說,他讓機器玩瑪利歐,那他甚至在瑪利歐這個遊戲裡面沒有任何的Reward,
link |
他甚至沒有告訴機器說,破關就可以得到Positive的Reward。
link |
那其實你告訴機器破關可以得到Positive的Reward也沒用啦,這個Reward太Sparse了,大概很難拿來訓練Agent。
link |
他只告訴機器說,你要不斷地看到新東西。
link |
那光是這件事情就可以讓機器學會破瑪利歐的其中一些關卡。
link |
那當然這樣子的方法也許對瑪利歐而言是最合適的,你知道瑪利歐是橫向卷軸遊戲嘛,那你要破關就是要不斷地往右走嘛。
link |
那機器他要看到新的東西就不斷地需要往右走嘛,所以機器會光藉由Curiosity這件事就可以學到破解瑪利歐的一些關卡。
link |
不過他有嘗試說,訓練在前面幾關,然後直接把Agent放在地下的關卡,然後就發現說做不起來,
link |
在地下的關卡還是要微調一下Nervo才做得起來。
link |
好,那這個影片還有後半段了,我們直接從某個地方開始看好了。
link |
他接下來是直接叫機器去玩Vston,我們來放一下Vston的部分好了。
link |
好,那這個影片就到這裡了,謝謝觀看,我們下部影片見。
link |
好,那最後那個背景有一堆雜訊,有點像是那個電視機壞掉那種雜訊的畫面,你可能有點不知道他這個影片想要表達什麼。
link |
那個部分就是我想要我剛才在最前面講到的有意義的心這件事情。
link |
假設我們要求Agent要一直看到新的東西,那如果你的畫面背景有一個雜訊,那雜訊會不斷地變化啊。
link |
所以對Agent來說,雜訊是新的東西,也許他就不會學到去探索新的環境了,反正光站在那邊看雜訊就夠了,他會覺得他不斷地看到新的東西。
link |
所以其實在curiosity based的RL裡面,也有想辦法克服這種沒意義的心,這種看到雜訊的問題。
link |
至於實際上怎麼做,那你再參考他的論文。