iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0

Hey yo!經過了一個禮拜,各位不知道是否有收穫,無論如何今日總算要進入正題了,今天要介紹在人工智慧領域佔有一席之地的強化學習(Reinforcement Learning,簡稱為RL),那強化學習是甚麼呢?強化學習是機器學習的其中一個分支,特色是讓電腦跟環境不間斷的互動,來正確有效率的執行一項行為任務。

圖源:https://sourcezones.net/2020/09/29/ai_3/

強化學習主要是基於代理人(agent)根據環境(environment)去執行最有效益的行動(action),強化學習是監督學習跟非監督學習以外第三種學習方式,他不依靠訓練標籤(label),可以根據環境跟反饋(reward)去進行試錯,並找出最佳的方式。缺點是訓練時間會變長,因為沒有正確答案,所以會花一些時間去試錯,在未知的行動中找出最佳解。

Untitled

圖源:https://www.terasoft.com.tw/support/tech_articles/reinforcement_learning_a_brief_guide.asp

強化學習被應用在許多領域,最廣為人知的是alpha go,那個用圍棋擊敗人類的程式。其他也有使用在訓練機器人行動,走路跑步甚至是特技動作等,因為強化學習只需要設定訓練的環境,而後交給電腦去訓練就好了,我們可以完全不必干擾電腦訓練,由此可知強化學習的潛力無窮。

那甚麼情況下適合訓練強化學習呢?我認為在參數設定較複雜的情況或者不是評估是非而是評估好壞的時候可以利用強化學習。例如機器人行走,我們很難去控制機器人各個關節的相關參數,所以可以交給電腦去嘗試,我們只需要設定這些動作造成環境的反饋是好是壞就好。另外像文字生成等,不確定生成文字的流暢度(品質好壞)之類的,也都可以利用強化學習去評斷,不過這個部分就扯到自然語言處理(NLP)以及其他領域了,有點離題了哈哈。話說回來,強化學習能解決問題的種類繁多,他們都是使用什麼樣的演算法呢,該不會一個演算法可以應付所有問題吧。這當然是不可能的,所以接下來就介紹一些演算法吧,不過不會扯到太高深的數學,因為我認為數學建模雖然重要,不過直接測試並確認演算法效果比較實際。當然這部分就因人而異了。

強化學習在發展上也演化出了許多演算法,不同演算法都各能解決不同類型的問題,例如前面介紹的Alpha go是使用蒙地卡羅樹搜尋法,使用兩種神經網路去進行估算旗子可能的落點,還有實際選擇旗子該下載哪是最有效益的。除了蒙地卡羅樹搜尋法以外還有最基礎的策略梯度(Policy Gradient)、Q-learning、sarsa,到結合深度學習的Deep Q Network(DQN)…等五花八門的演算法,不過在這一個專案中我們主要是使用Proximal Policy Optimization(之後會簡稱PPO)來作為訓練的演算法,PPO是Policy Gradient的一種演算法,會把當前Agent的狀態(observation)輸入到神經網路中,並且透過算法來生成action跟這個action的reward。演算法會建立兩個神經網路,分別為actor跟critic,狀態會作為actor的輸入,輸出為action(輸出會經過softmax得到各種action的概率,再選擇最高概率的action),根據設定的環境得到新的狀態跟reward,狀態也會作為critic的輸入,會輸出一個值,這個值是用來調整reward用的。

講了那麼多,接下來如何實現呢,網路上有非常多自己建立演算法或者建立神經網路跟深度強化學習模型的文章。在這邊我想推薦一個模組叫做stable baselines3,模組的github會貼在底下~這個模組下載之需要使用pip install stable-baselines3就好了,不過也要下載pytorch,需使用pip install torch。這部分之後會有更詳細的說明喔。

結語

今天沒有什麼程式碼的部分,不過話雖如此,其實我對原理等數學不太擅長嗚嗚,小弟我是偏實作型的,所以今天內容如果有很多錯誤的話也麻煩各位大神補充,小弟我先在這邊感謝各位。明天會介紹Open AI Gym,這個模組可以建立起強化學習的環境。也可以搭配stable baselines3使用。在建立學習的任務我認為蠻方便的,不過缺點是無法針對神經網路超參數進行調整,只能使用現成的模型。本來想說實作都很容易,不過報名比賽到今天開始講解演算法才發現仍有許多不足,不過可以看到自己的知識盲點也算是有收穫,希望未來可以補足囉。


上一篇
D7:數據可視化!matplotlib教學
下一篇
D9:強化學習入門!Open AI Gym介紹
系列文
高中生也可以!利用強化學習讓機器人動起來!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言