1. 程式人生 > >46.強化學習例項 翻譯自 吳恩達新書-Machine Learning Yearning

46.強化學習例項 翻譯自 吳恩達新書-Machine Learning Yearning

引導圖片

假如你正在使用機器學習教直升飛機,執行復雜的飛行任務。這兒有一張直升飛機引擎關閉時,著陸時拍攝的照片。

這就是所謂的“autorotation”策略。它可以在引擎意外關閉的情況下,讓直升飛機平穩著陸。這種訓練時人類飛行員訓練的一部分。你的目標是,讓機器學習演算法指導直升飛機通過軌道T,並最終安全著陸。

為了應用強化學習,你需要設計一個"獎勵方法"R(), 這個方法來計算每種可能的軌道T的得分值。比如如果軌道T,最終導致直升飛機墜毀,此時的獎勵R(T) = -1000,是一個非常大的負數。如果直升飛機安全著陸,則R(T)為正式,他的大小取決於著陸軌道是否光滑平穩。獎勵函式R()通常由人手工設計,用來計算軌道T有多好。它需要平衡著陸點有多崎嶇(直升飛機是否落到了期望的著陸點)以及對於乘客來說,下降過程的的舒適度,設計好的獎勵函式並不簡單。

設計好獎勵函式R(T)後,強化學習演算法就會控制直升分級取得maxTR(T),然而強化學習演算法有很多的近似值,可能取得最大值。

假設你選擇了一些獎勵函式R(T),並你的學習演算法開始訓練。然而,你的演算法效能可能遠差於人類飛行員的水平,下降過程非常顛簸,而且也沒有人類操作是更安全。那如何區分這個問題是因為學習演算法(通過學習演算法來取得maxTR(T))導致的還是由於獎勵函式(通過獎勵函式來衡量下降舒適度和降落準確率的得分)導致的呢?

為了使用優化驗證測試,將Thuman定義為人類飛行員飛行的軌道,將Tout定義為演算法得出的飛行軌道。根據我們之前的描述,Thuman優於Tout。因此關鍵測試如下:

**R(Thuman) > R(Tout)**
  1. 如果不等式成立,則獎勵函式R()的計算是正確的。Thuman優於Tout,這時我們的槍火學習演算法就是有問題的,因此改進學習演算法是非常有意義的。
  2. 如果不等式不成立R(Thuman) < R(Tout),這就意味著獎勵函式R()是有問題的,你應該修改獎勵函式。

很多機器學習應用使用近似搜尋演算法的模式,來優化近似得分函式Socore()。有時沒有特定的輸入x,因此這種優化方法只適用於得分函式Score()。上面的例子中,得分函式就是獎勵函式:Score(T) = R(T),優化演算法就是強化學習演算法試著去執行的合理飛行軌道T。

這個例子跟之前例子的一點不同是,這例子中比較的物件不是最優的輸出,而是人類的水平Thuman。我們假設人類的水平即使不是最優的,但是依然非常好。一幫情況下,只要你能找到最優y*(本例中為Thuman),如果你的演算法比最優的接過差,那麼優化驗證測試就能幫你改進優化演算法或得分函式。