G1.4 LV4 強化學習 | Reinforcement learning ('trial and error')
利用獎勵(REWARD)使AI學習
在強化學習(reinforcement learning) , AI 不再從用家提供的例子學習 , 它會透過自己的試驗與錯誤(trials and errors)。當然用家還是需要為AI設定目標 , 以獎勵的形式讓 AI 學習 ( 概念和遊戲中取分 , 勝利或失敗類似 , 其中一個例子是 AlphGO (強化學習的 AI人工智能機械人) 在2016年戰勝了圍棋世界冠軍) 。透過 " tiral and error" , AI 會自行發現在該情況下應該採用什麼的行動。當中的「獎勵」就是「良好/合理的動作和行為」。
對於目前的活動,獎勵設定成「誘導」AlphAI 在場地內四處走動,盡可能以直線行駛,但前題是能避開牆壁。
AlphAI 的計算方法是這樣的 : (你可以先問參加者認為那些動作會被設定成好的獎勵):AlphAI 在每次直行時將獲得最大獎勵(100),當它後退或在被障礙物阻擋時試圖向前移動時會得到負數獎勵(- 50,「懲罰」),左轉(80)右轉(30)。
我們將提出兩種用於引入強化學習的配置。 如果重點是讓學生操縱AlphAI,我們推薦使用「reinforcement learning - camera navigation」。 如果重點是解釋「它是如何運作的」,並以教師或講師演示的形式,我們建議使用「reinforcement learning - navigation blocked vs. movement」。 當然如果有足夠的時間,你可以把2種配置都完成。
從這2個配置選擇1種來導入。你會在 dashboard 在看到「Reward」及「Level」的提示 , 就如你以前在「Level 2 : 編程」看到的皮面一樣。 「Reward」會顯示 AlphAI 在完成每個動作時獲得的獎勵 , 「Level」則是在過去一分鐘的平均獎勵值。需注意的是 , 「Level」是會隨學習時間/水平而提高的。
操縱 : 利用相機導航 | Manipulation: navigation with camera
導入 「reinforcement learning - camera navigation」並開始訓練。 AlphAI 在剛開始的時候你會觀察到它的第一步是猶豫的 , 但它很快就能發現並找出能取得分數的動作 , 即直行及前轉。它還可以很快就學會撞到牆壁時要向後行駛。讓他花更多時間學習的是理解什麼時候可以直線行駛以獲得最大獎勵,什麼時候在撞上牆前轉彎以避免得到阻擋的懲罰。
為了學習 , AI 偶爾會隨機「探索」, i.e AI會選擇執行不是它認為最好的動作 , 而是另一個隨機動作 , 以便讓 AI 發現更好的可能性。我們可以類比成進化過程中生物學的隨機突變。這些探索中大多數結果都是錯誤的,但有少數會變之成最佳行動。
為了更有效地學習,我們可以「引導」機器人I.E.命令它進行某些探索。要做到這, 可以使用dashboard或鍵盤上的箭頭來控制機器人。通過這種方式,學生可以與學習過程互動並加速訓練過程。
經過 10-15 分鐘無人類協助的情況後或透過在學生互動的情況下加速訓練進度,AlphAI 將能有效地在地場上行走,在撞到牆壁前轉彎,在有空礦地時以直線行駛。要阻止這種行為被探索打斷,取消勺選「explorations」:結果(行動)將愈來愈讓人滿意, 「Level」亦會持續提升。
更進一步 | 利用簡單例子作詳細解釋 To go further: Detailed explanations on a simple example
接下來的 demo 會讓我們深入了解第一個強化學習演算法 - Q-learning。這個演算法將視覺化人工神經網絡的形式讓我們可以更熟悉後者的學習。這次我們將不會使用「start」button 來開始訓練 , 而是使用「single step」button。我們建議老師在首次試用時先利用右下角的模擬機器人進行練習而不是直接連接真實的 AlphAI。
導入「reinforcement learning - navigation blocked vs. moving」。在 「LV2 : 編程」時 , AI 只有關於機械人是被阻擋(紅色車輪神經元)或正在移動(綠色車輪神經元) 的感應器資訊 (sensor information)。為了得到最大的獎勵(rewards) , 它必須學會在機械人沒有被阻擋時以直線行駛 , 並在阻擋時向後轉。
由於這個網絡的連接不多 , 我們可以清楚地看到每一個神經元 , 它們有些看起來比較強或比較弱 (線條的粗幼及數字會反映它的強度 , 這稱為連接的「weight | 權重」。一 般來說 , 神經網絡的初始設定都是隨機的 ; 但出於教學目的這個配置是特別的 , 它們總會是以相同的形式初始化。
當機器人沒被擋住 (綠色車輪神經元亮起的時候數值為 1 ) 5個輸出神經元會被綠色車輪神經元「觸發」並以正比例連接 : dashboard 上的數值為 1, 6 , 4 , 1 ,12 。在學習過程中 , Q-learning 演算法會修改這些連接 , 讓這些輸出值能預測出最好的動作從而獲得最好的獎勵。
再次按下「single step」。AlphAI 將會選擇最高數值的動作 i.e 第5個(12) : 它會向右倒行。但 reward 收到的數值是 - 50 i.e. 遠低於 12 。Q-learning 演算法將會減少綠色車輪神經元及「向右倒轉」的連接從而「糾正」這個錯誤。 會以紅色顯示該連接強度正在減少。現在你可以看見「向右倒行」的數值下降至10。
再次按下「step」 : 「向右倒轉」會再被選擇 , 但 reward 將再次顯示為 -50 , 連接強度會再次減少。經過幾次「step」, 該連接強度會變得比「轉左」弱。
在接下來的步驟 , 都會因而選擇「轉左」。Reward 現時的數值為30 , 高於預測值的 6 (Output數值) : 這次演算法將會增加連接強度來糾正錯誤。增加連接強度會以綠色來顯示。
接下來將會以相同的方式重覆以下步驟 : AlphAI 選擇左轉 , 並加強與「左轉」的連接強度。我們理解它的數值會持續增加,直至到達穩定值的 30 ( reward) : 現在按「start」以避免暫停。最重要的是訓練是不完整的因為機械人會無間斷地開啟 , 而且它還有很多東西尚未曾了解到 , 例如 : 以直線行駛實際上會大於目前顯示的數值(4)!
為了解決這個問題 , 你需要不時嘗試其他行動!我們現在需要激活一個全新選項, 那就是探索 (exploration)!
開啟「exploration」:現在AlphAI 偶爾會嘗試另一個動作(選定的箭頭會是藍色的)同時演算法會更新相應連接的數值。 這將導致Alphai在未被阻擋時增加「以直線行駛」的數值。
讓 AlphAI 繼續運行一段時間 (假如你是使用模擬機器人 , 你可以啟動「FAST SIMULATION」幾十秒然後關掉它要加速過程。神經網絡的連接最終會看起來像圖像的反面 : 當機械人沒被擋住時(綠色車輪)最強的連接是直線行駛 ; 當它被擋住時(紅色車輪)最強的連接是2個後轉動作之一(這邊是向右 , 0.37)
在某些時候 AlphAI 亦會卡在障礙物上 ; 這樣「紅色車輪神經元」便會亮起且數值變成 1 , 5個輸出神經元會被「觸發」並以正比例連接 。 基於 dashboard 上顯示的連接強度 , AlphAI 將會以直線開始行駛 , 但鑑於收到 - 50 的獎勵 , 這個連接將會逐步減少。
我們已經看到學習是如何由神經網絡的重新配置而組成,這會讓獎勵變得更高並提高水平。
我們看到了探索(exploration)在學習過程中發現最佳動作的重要性。但是 , 這些探索在某個時間點後會變得無用 , 同時在學習過程接近尾聲時將其停用更可避免出現隨機動作以提高訓練水平。探索與否之間的權衝問題是強化學習研究中的一個主要問題 , 這也跟人類學習有相似的地方 (見討論)。
為完整起見 , 有時候 AlphAI 以直線行駛時撞到牆後被擋住時會出現一個特別的狀況 : 明顯地如果它選擇左轉,直行或右轉 , 它都是無法繼續前進的(仍然被擋住) , 因此它會得到 - 50 的 reward。如果它選擇向左或向右後退 , 它將能擺脫這個困境 , 但仍會獲得相同的 reward (-50)。如果它是基於收到 reward 的數值 , 那演算法在所有行動中採用「向後倒退」這個動行。實際上 , 它應該是可以更鼓勵向後倒退的 , 因為在學習期間更新連接強度是不會即時反映在 reward 數值上的 , 同時還需考慮機器人現時的最新狀態 (受阻與否)。我們沒有在此詳細說明 , 但請注意不僅要考慮即時獎勵,還要考慮接下來可能發生的獎勵的重要性。
討論
雖然監督式學習是在眾多領域中最為廣泛地應用,但強化學習還是令人著迷的,因為AI人工智能具有高度自主學習的能力,尤其適用於與世界各地的人、機器人進行交流:2016年圍棋世界冠軍李世石的勝利,AI 戰勝StarCraft等遊戲中最好的隊伍,機器人技術的應用等。
我們建議討論AI人工智能和人類學習之間的相似之處 :
- AI 的 Exploration (探索)跟人類的好奇心非常類似 , 好奇心是必要的。否則我們將會陷入「這樣做就可以」但找不出最好的解決方案。另一方面 , 過多的好奇心可能會是一種困境 , 阻止人類利用已經學到的東西。
- 除了天真的好奇心外 , 老師的幫助可以更快地發現正確的行為 ( 例如協助同學操縱 AlphAI)
- 在監督式學習下 , 我們強調過訓練數據不應出現任何錯誤。但在這裡犯錯也不是問題 , 相反 : 機器人可以從錯誤中學習!(它將學習到在某些時間或行為下會得到更少的獎勵 , 在此之後它就不會再這樣做了)
- 在「camera navigation」中 , AlphAI 將其經驗儲存到記憶中 , 即使停止(關機)也能繼續學習 , 這跟人類在睡眠也能學習一樣!( 你可以這樣體驗 : 運行學習 3分鐘 , 然後停止自主性行動3分鐘 : 機械人將停止但對其經驗的學習將會繼續 ; 重新開啟「autonomy」 : 機器人的行為會比以前表現得更好。
但就如課本所說的 , 人類跟 AI 人工智能的學習還是存在很大的差異。
機械人的質素(除了以上) | Qualities of Robot (In addition of above) :
- 學習它可以得到的獎勵(reward)
- 會嘗試探索(exploration)行動(自我提升)
- 可以超越人類 (例如 : AlphaGO)
與日常生活相似的地方 :
- Trial and error (從錯誤中學習並進行修正)
- 探索<===>人類的好奇心
- 預計得到的獎勵 <===> 人類努力的回報
機器人不具的品質 / 效能 :
- - 雖然強化學習更為自主,但仍然是由人類編寫的演算法作決定, 仍然沒有「人」的感覺。(意識 , 理解事物的意義 , 抽象性的東西)
- 不知道如何設定自己的目標(獎勵) , 所有學習都需由人類設置獎勵系統
更進一步 , 更多活動 :
你可以以demo簡單地改變機器人獨得獎勵的方式便能完全改變它的學習行為來展示學習的靈活性 : 導入 「reinforcement learning - green balloon」並把一個綠色氣球放到比賽場地中間。dashboard 上的綠色像素(pixel)愈多 , AlphAI 便會得到更多的獎勵(數值更高) [ 請留意綠色的像素會標記成黃點 , 當 AlphAI 向前行的時候才會得到獎勵] 。但是神經網絡及涉及的演算法是跟之前完全一樣的。這次 , 機器人的學習行為是在比賽場地中找出綠色氣球並朝它移動。
您可以通過演示簡單地改變機器人獲得獎勵的方式將完全改變它的學習行為來展示學習的靈活性:加載“強化學習 - 綠色氣球”配置並在競技場中放置一個綠色氣球。 屏幕上的綠色像素越多,機器人將獲得更大的獎勵(請注意,檢測為綠色的像素標有黃點;僅當機器人向前移動時才會獲得獎勵)。 但是,神經網絡和所涉及的算法與之前完全一樣。 這一次,機器人將學習的行為是在競技場中尋找綠球並朝它移動。
可以在這裡找到更多的「reinforcement learning 教學」 , 可讓你更深入地了解強化學習的原理 , 方程什至是如何編程。
總結 :
讓我們總結一下本次活動中學到的概念:
• AI 人工智能是一個我們還遠未實現的項目,但我們仍然將一些程式稱為人工智能,尤其是那些使用機器學習的程式。
• 我們介紹了三個機器學習中的其中兩種:監督式學習、無監督學習(unsupervised learning | 未提被但我們將在未來討論)和強化學習。
- 學習發生階段稱為「訓練階段」,AI 學習過的東西就能使用
- 監督式學習的原理是從訓練數據(示例)中學習,然後歸納其他數據。 一個好的監督式學習需要質素高而且數量足夠數據。
- 強化學習的原理是在獎勵機制下通過反複試驗進行學習(trial and error)。
- 我們還學習了人工神經網絡,一種特別流行的演算法。
- 我們在整個活動中討論了 AI 人工智能和人類智慧之間的相似性,這些相似性會隨著 4 個自主級別而增加。 但差異仍然很大。 在所有情況下控制系統和/或讓機器人學習的都是人類。
- 然而,這一切都在高速發展,因此掌握人工智能的技術和道德倫理方面是非常重要的。