(十)稀疏奖励
??關于獎勵有這么一個問題:很多智能體,有時候根本沒辦法得到獎勵。比如對于一件概率特別小的事情,如果做到了給它獎勵為1,做不到就是0。從隨機性的角度看,最終的獎勵就會是0。沒有獎勵,機器也學不到什么有價值的東西。
??稱上面這種情況就叫做稀疏獎勵。如果獎勵很稀疏,RL的問題就會變得很難解決。一個真正厲害的智能體應該能夠在系數獎勵的情況下也學會和環境互動。本章就介紹一些解決稀疏獎勵問題的方法
1.設計獎勵
??定義:設計獎勵意思說環境中有一個固定的獎勵,它是真正的獎勵,但是為了智能體學出來的結果是我們想要的樣子,可以設計一些獎勵來引導智能體。
??舉個例子,文字啰嗦,直接上圖:
??上面的例子中,通過我們自己設計的棒棒糖獎勵,幫助孩子得到最終的更多獎勵。
??這個思想是簡單的,但有一個關鍵也是問題:作為使用者自身是需要明確獎勵的方向(我們要知道選擇學習未來會有獎勵),這也叫領域知識。
2.好奇心
??這個獎勵的全名叫做好奇心驅動的獎勵(curiosity driven reward)。在常規的方式中是有一個獎勵函數、給一個狀態和動作。獎勵函數負責判斷在這個狀態下執行這個動作得到的獎勵(我們自然希望獎勵越大越好)。好奇心的思路是除了常規的獎勵r,再加上一個r_bar。同時希望這個r_bar越來越好。那這個r_bar是什么呢?
??在說r_bar的含義之前,先說說好奇心模塊的組成:s(t),action,s(t+1),好奇心模塊會根據s(t)和action去預測s(t+1)_bar。這個預測值與真實s(t+1)去比,想不想,越不像獎勵越大,這個獎勵就是r_bar(有木有很奇怪?)。r_bar的意思是未來的狀態如果很難預測的話獎勵會越多。這是鼓勵探索(好奇心被滿足~)所以好奇心的主要思路就是增強探索。
??那好奇心具體有哪些實現細節呢?
??其實好奇心本身可以通過網絡訓練,但好奇心思想存在一個漏洞:某些狀態很難預測不代表它是好的,所以一味鼓勵機器冒險是不對的,光有好奇心是不夠的,要讓它明白什么事情是重要的。那如何讓機器明白什么事情是重要的呢?
??要加上一個特征提取器,它的作用是過濾掉那些沒有用的東西(不重要的)。如果有了這個特征提取器,網絡1做的事情就是給s1和a預測s2。現在的問題是怎么學習這個特征提取器呢?
??學習的方法就是再找一個網絡:這個網絡把狀態s(t)和s(t+1)當作輸入,去預測動作a。希望預測的動作a和真實動作a越接近越好。有了這個網絡后提取的特征就和預測動作這件事保持了有關,就自然過濾掉那兒寫與動作無關的內容。好奇心整體模塊的實現圖如下:
3.課程學習
??其實這個思路很簡單:如果最開始就學很難的,可能很難學會。不過如果從簡單的開始,慢慢增加難度。最終就能完成困難任務的學習。這個就像我們學課程一樣,有順序的完成。對于這個一個最大的問題就是:如何設計課程學習?
??常用的思路是逆向課程生成(reverse curriculum generation)。這個思路是從目標(也叫黃金狀態)反推,不過反推過程中可能會推斷出上一時刻很多狀態,狀態之間會有獎勵體現。不要選擇那些獎勵極端的,這些可能代表難度過于簡單或者困難。就要選擇獎勵適中的情況。然后根據這些獎勵適中的再去采樣更多之前的狀態,知道最初的狀態。
4.分層強化學習
??這個實現的思路是把任務劃分給多個智能體去完成,每個智能體負責的層次不同。有一些比較高級(定目標),有些低級(具體執行)。不過要想達到目標,上層對下層會有要求:一定要實現預期的任務。那往往有的時候干著干著跑偏了,也不能說完全沒干,只是最后達成的目標不是預期的。為了不浪費動作,可以修改愿景,也就是最終目標。
??分層強化學習是將一個復雜的強化學習問題,分解成多個小的,簡單的子問題。每個子問題都可以使用馬爾可夫決策過程來進行建模。這樣,我們可以將智能體的策略分為高層次策略和低層次策略,高層次策略根據當前狀態決定如何執行低層次策略,這樣可以解決一些復雜的任務。
??這一章的內容比極少,而且都是陳述的思想。看看課后題:
因作者水平有限,如有錯誤之處,請在下方評論區指正,謝謝!
總結
- 上一篇: 汇编编译器以及 DOSBox0.74的安
- 下一篇: 32位、64汇编区别