人工智慧-強化學習簡介

學習是一類算法,是讓計算機實現從一開始什麼都不懂,腦袋裡沒有一點想法,通過不斷地嘗試,從錯誤中學習,最後找到規律,學會了達到目的的方法,這就是一個完整的強化學習過程。實際中的強化學習例子有很多,比如最有名的Alpha go,機器頭一次在圍棋場上戰勝人類高手,讓計算機自己學著玩經典遊戲Atari,這些都是讓計算機在不斷的嘗試中更新自己的行為準則,從而一步步學會如何下好圍棋,如何操控遊戲得到高分。既然要讓計算機自己學,那計算機通過什麼來學習呢?

       原來計算機也需要一位虛擬的老師,這個老師比較吝嗇,他不會告訴你如何移動,如何做決定,他為你做的事只有給你的行為打分,那我們應該以什麼形式學習這些現有的資源,或者說怎麼樣只從分數中學習到我應該怎樣做決定呢?很簡單,我只需要記住那些高分、低分對應的行為,下次用同樣的行為拿高分,並避免低分的行為。

      比如老師會根據我的開心程度來打分,我開心時可以得到高分,我不開心時得到低分。有了這些被打分的經驗,我就能判斷為了拿到高分,我應該選擇一張開心的臉,避免選到傷心的臉,這也是強化學習的核心思想。可以看出在強化學習中,一種行為的分數是十分重要的,所以強化學習具有分數導向性,我們換一個角度來思考,這種分數導向性好比我們在監督學習中的正確標籤。

我們知道監督學習,是已經有了數據和數據對應的正確標籤。比如這樣,監督學習就能學習出那些臉對應哪種標籤。不過強化學習還要更進一步,一開始它並沒有數據和標籤。
     他要通過一次次在環境中的嘗試,獲取這些數據和標籤, 然後再學習通過哪些數據能夠對應哪些標籤,通過學習到的這些規律,竟可能地選擇帶來高分的行為(比如這裡的開心臉)。這也就證明了在強化學習中,分數標籤就是他的老師,他和監督學習中的老師也差不多。



強化學習的工作流程:

利用強化學習來訓練一個主體,主要包含五個步驟:
       1. 建立環境:定義出一個環境,讓主體可以在裡面進行學習,包含主體與環境之間的介面也須被定義出來。這個環境可以是一個模擬模型,也可能是真實的物理系統。經過模擬的環境通常是作為第一步的較好選擇,因為它較為安全且容許實驗操作。
       2. 定義獎賞:具體定義獎賞的訊號,供主體用來衡量其表現(與執行目標相比),以及訊號如何在環境中被計算。獎賞的設計可能會需要經過幾次的疊代才能達到完備。
       3. 建立主體:主體由策略和訓練演算法組合而成,所以你會需要:

                   A. 選擇一個代表策略的方法 (比如利用類神經網路或是查找表)。思考一下,你希望如何去建構這些參數和邏輯以成為主體的決策部分。
                   B. 選擇適當的訓練演算法。現代大部分的強化學習演算法多仰賴類神經網路,因為這是處理大量狀態/動作空間和複雜的問題的好方法。
       4. 訓練及驗證主體:你還需要設置訓練的選項(例如停止的標準),並訓練主體來調整策略。驗證經過訓練策略的最簡單的方法就是模擬了。
       5. 策略的佈署:如何呈現已經被訓練好的策略?舉例來說,可以用C/C++或CUDA程式碼等方式來表示。此時你已經不需要擔心主體和訓練演算法了—因為到此階段,策略已經被轉為一個獨立的決策系統可直接執行。

哪些情況適合使用強化學習?

雖然強化學習被視為大幅進化的機器學習,不過它卻不一定是適用於所有情況的最好方法。如果你考慮嘗試使用強化學習,請記住以下三點:
       1. 它不具備所謂的樣本效率(sample-efficient)。這指的是,如果要達到可接受的表現,需要有大量的訓練。即使是在相對簡單的應用,可能會花費幾分鐘、幾小時、或甚至是幾天的訓練的時間。AlphaGo就是經過了好幾天沒有間斷、幾百萬次比賽的訓練,等同人類幾千年知識的累積。
       2. 問題的正確設定可能很棘手。可能會需要很多的設計決策、相當次數的疊代來達到正確的行為。這些決策包含了選擇合適的類神經網路架構、調整超參數、以及塑造獎賞訊號等。
       3. 訓練過的深度神經網路策略是一個”黑盒子”。也就是說,網路內部的結構(通常由幾百萬個參數構成)可能複雜到幾乎難以了解及解釋、以及去評估它所做出的決定,這使得利用類神經網路所建立的策略,很難用正式的性能表現來加以保證它的成效。

如果你所處理的專案攸關時間或安全性至上,你可能可以嘗試其他的替代方案,比如說控制設計,使用傳統的控制方法可能是較好的開始。

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論