人工智能的新希望-強(qiáng)化學(xué)習(xí)全解
編譯團(tuán)隊(duì) | Jennifer Zhu 賴小娟 張禮俊
作者 | FAIZAN SHAIKH
很多人說(shuō),強(qiáng)化學(xué)習(xí)被認(rèn)為是真正的人工智能的希望。本文將從7個(gè)方面帶你入門強(qiáng)化學(xué)習(xí),讀完本文,希望你對(duì)強(qiáng)化學(xué)習(xí)及實(shí)戰(zhàn)中實(shí)現(xiàn)算法有著更透徹的了解。
介紹
許多科學(xué)家都在研究的一個(gè)最基本的問(wèn)題是“人類如何學(xué)習(xí)新技能?”。 理由顯而易見(jiàn)– 如果我們能解答這個(gè)問(wèn)題,人類就能做到很多我們以前沒(méi)想到的事情。 另一種可能是我們訓(xùn)練機(jī)器去做更多的“人類”任務(wù),創(chuàng)造出真正的人工智能。
雖然我們還沒(méi)有上述問(wèn)題的全部答案,但有一些事情是清楚的。不論哪種技能,我們都是先通過(guò)與環(huán)境的互動(dòng)來(lái)學(xué)習(xí)它。無(wú)論是學(xué)習(xí)駕駛汽車還是嬰兒學(xué)步,我們的學(xué)習(xí)都是基于與環(huán)境的互動(dòng)。 從這些互動(dòng)中學(xué)習(xí)是所有關(guān)于學(xué)習(xí)與智力的理論的基礎(chǔ)概念。
強(qiáng)化學(xué)習(xí)
今天我們將探討強(qiáng)化學(xué)習(xí)(Re-inforcement Learning) 一種基于與環(huán)境互動(dòng)的目標(biāo)導(dǎo)向的學(xué)習(xí)。強(qiáng)化學(xué)習(xí)被認(rèn)為是真正的人工智能的希望。我們認(rèn)為這是正確的說(shuō)法,因?yàn)閺?qiáng)化學(xué)習(xí)擁有巨大的潛力。
強(qiáng)化學(xué)習(xí)正在迅速發(fā)展。它已經(jīng)為不同的應(yīng)用構(gòu)建了相應(yīng)的機(jī)器學(xué)習(xí)算法。因此,熟悉強(qiáng)化學(xué)習(xí)的技術(shù)會(huì)對(duì)深入學(xué)習(xí)和使用機(jī)器學(xué)習(xí)非常有幫助。如果您還沒(méi)聽(tīng)說(shuō)過(guò)強(qiáng)化學(xué)習(xí),我建議您閱讀我之前關(guān)于強(qiáng)化學(xué)習(xí)和開(kāi)源強(qiáng)化學(xué)習(xí)(RL)平臺(tái)的介紹文章
(https://www.analyticsvidhya.com/blog/2016/12/getting-ready-for-ai-based-gaming-agents-overview-of-open-source-reinforcement-learning-platforms/)。
如果您已經(jīng)了解了一些強(qiáng)化學(xué)習(xí)的基礎(chǔ)知識(shí),請(qǐng)繼續(xù)閱讀本文。讀完本文,您將會(huì)對(duì)強(qiáng)化學(xué)習(xí)及實(shí)戰(zhàn)中實(shí)現(xiàn)算法有著更透徹的了解。
附:下面這些算法實(shí)現(xiàn)的講解中,我們將假設(shè)您懂得Python的基本知識(shí)。如果您還不知道Python,建議可以先看看這個(gè)Python教程
(https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-learn-data-science-python-scratch-2/)。
輕松搞定強(qiáng)化學(xué)習(xí)
(1-4是強(qiáng)化學(xué)習(xí)的步驟,5-7是其他資源)
- 1. 提出一個(gè)強(qiáng)化學(xué)習(xí)的問(wèn)題
- 2. 強(qiáng)化學(xué)習(xí) v.s. 其他機(jī)器學(xué)習(xí)方法
- 3. 解決強(qiáng)化學(xué)習(xí)問(wèn)題的基本框架
- 4. 用python實(shí)現(xiàn)強(qiáng)化學(xué)習(xí)算法
- 5. 更復(fù)雜的應(yīng)用
- 6. 強(qiáng)化學(xué)習(xí)的最新進(jìn)展
- 7. 其他強(qiáng)化學(xué)習(xí)的資源
1. 提出一個(gè)強(qiáng)化學(xué)習(xí)的問(wèn)題
強(qiáng)化學(xué)習(xí)的目的是學(xué)習(xí)如何做一件事情,以及如何根據(jù)不同的情況選擇不同的行動(dòng)。 它的最終結(jié)果是為了實(shí)現(xiàn)數(shù)值回報(bào)信號(hào)的最大化。強(qiáng)化學(xué)習(xí)并不告訴學(xué)習(xí)者采取哪種行動(dòng),而是讓學(xué)習(xí)者去發(fā)現(xiàn)采取哪種行動(dòng)能產(chǎn)生最大的回報(bào)。 下面讓我們通過(guò)一個(gè)孩子學(xué)走路的簡(jiǎn)單例子(下圖)來(lái)解釋什么是強(qiáng)化學(xué)習(xí)。
上圖:孩子學(xué)走路。
以下是孩子在學(xué)習(xí)走路時(shí)要采取的步驟:
- 首先孩子將觀察你是如何行走的。你用兩條腿,一步一步走。得到這個(gè)概念后,孩子試圖模仿你走路的樣子。
- 但孩子很快發(fā)現(xiàn),走路之前必須站起來(lái)!這是一個(gè)試圖走路必經(jīng)的挑戰(zhàn)。所以現(xiàn)在孩子試圖先站起來(lái),雖然經(jīng)歷掙扎和滑倒,但仍然決心站起來(lái)。
- 然后還有另一個(gè)挑戰(zhàn)要應(yīng)付:站起來(lái)很容易,但要保持站立又是另一項(xiàng)挑戰(zhàn)!孩子揮舞著雙手,似乎是想找到能支撐平衡的地方,設(shè)法保持著站立。
- 現(xiàn)在孩子開(kāi)始他/她真正的任務(wù)––走路。這是件說(shuō)比做容易的事。要記住很多要點(diǎn),比如平衡體重,決定先邁哪個(gè)腳,把腳放在哪里。
這聽(tīng)起來(lái)像一個(gè)困難的任務(wù)嗎?實(shí)際上站起來(lái)和開(kāi)始走路確實(shí)有點(diǎn)挑戰(zhàn)性,但當(dāng)你走熟練了就不會(huì)再覺(jué)得走路難。不過(guò)通過(guò)我們的分析,現(xiàn)在的您大概明白了一個(gè)孩子學(xué)走路的困難點(diǎn)。
讓我們把上面的例子描述成一個(gè)強(qiáng)化學(xué)習(xí)的問(wèn)題(下圖)。這個(gè)例子的“問(wèn)題”是走路,這個(gè)過(guò)程中孩子是一個(gè)試圖通過(guò)采取行動(dòng)(行走)來(lái)操縱環(huán)境(孩子行走的表面)的智能體(agent)。他/她試圖從一個(gè)狀態(tài)(即他/她采取的每個(gè)步驟)到另一個(gè)狀態(tài)。當(dāng)他/她完成任務(wù)的子模塊(即采取幾個(gè)步驟)時(shí),孩子將得到獎(jiǎng)勵(lì)(讓我們說(shuō)巧克力)。但當(dāng)他/她不能完成走幾步時(shí),他/她就不會(huì)收到任何巧克力(亦稱負(fù)獎(jiǎng)勵(lì))。這就是對(duì)一個(gè)強(qiáng)化學(xué)習(xí)問(wèn)題的簡(jiǎn)單描述。
上圖:把小孩子學(xué)走路的過(guò)程(圖下方)歸納成一個(gè)強(qiáng)化學(xué)習(xí)的問(wèn)題(圖上方)。
這里我們還推薦一個(gè)不錯(cuò)的對(duì)強(qiáng)化學(xué)習(xí)的視頻介紹(https://www.youtube.com/watch?v=m2weFARriE8)。
2. 強(qiáng)化學(xué)習(xí) v.s. 其他機(jī)器學(xué)習(xí)方法
強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)算法的一個(gè)大的類型。下圖描述了機(jī)器學(xué)習(xí)方法的類型。
上圖:機(jī)器學(xué)習(xí)的方法分類:藍(lán)色方框從左到右依次為監(jiān)督學(xué)習(xí),無(wú)監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。
讓我們來(lái)比較一下強(qiáng)化學(xué)習(xí)和其他種類機(jī)器學(xué)習(xí)方法:
● 監(jiān)督學(xué)習(xí)(supervised learning)v.s. 強(qiáng)化學(xué)習(xí):在監(jiān)督學(xué)習(xí)中,有一個(gè)外部“監(jiān)督者”(supervisor)。“監(jiān)督者”了解環(huán)境,并與智能體共享環(huán)境信息以完成任務(wù)。但這其中存在一些問(wèn)題,智能體可以通過(guò)執(zhí)行許多種不同子任務(wù)的組合來(lái)達(dá)到目標(biāo)。所以創(chuàng)建一個(gè)“監(jiān)督者””幾乎是不切實(shí)際的。例如在象棋游戲中,有成千上萬(wàn)種走法。因此,創(chuàng)建一個(gè)可以下象棋的知識(shí)庫(kù)是一個(gè)單調(diào)乏味的任務(wù)。在這樣的問(wèn)題中,從經(jīng)驗(yàn)中學(xué)習(xí)更為可行。這可以說(shuō)是強(qiáng)化學(xué)習(xí)和監(jiān)督學(xué)習(xí)的主要區(qū)別。在監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)中,輸入和輸出之間都存在映射(mapping)。但在強(qiáng)化學(xué)習(xí)中,還存在對(duì)智能體進(jìn)行反饋的獎(jiǎng)勵(lì)函數(shù),這在監(jiān)督學(xué)習(xí)中是不存在的。
● 無(wú)監(jiān)督學(xué)習(xí)(unsupervised learning) v.s. 強(qiáng)化學(xué)習(xí):在強(qiáng)化學(xué)習(xí)中,有一個(gè)從輸入到輸出的映射。這種映射在無(wú)監(jiān)督學(xué)習(xí)中并不存在。在無(wú)監(jiān)督學(xué)習(xí)中,主要任務(wù)是找到數(shù)據(jù)本身的規(guī)律而不是映射。例如,如果任務(wù)是向用戶建議新聞文章,則無(wú)監(jiān)督學(xué)習(xí)算法將查看該人先前讀過(guò)的文章并向他們建議類似的文章。而強(qiáng)化學(xué)習(xí)算法將通過(guò)建議少量新聞文章給用戶,從用戶獲得不斷的反饋,然后構(gòu)建一個(gè)關(guān)于人們喜歡哪些文章的“知識(shí)圖”。
此外,還有第四種類型的機(jī)器學(xué)習(xí)方法,稱為半監(jiān)督學(xué)習(xí)(semi-supervised learning),其本質(zhì)上是監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)的結(jié)合(利用監(jiān)督學(xué)習(xí)的標(biāo)記信息,利用未標(biāo)記數(shù)據(jù)的內(nèi)在特征)。它類似于監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí),不具有強(qiáng)化學(xué)習(xí)具備的反饋機(jī)制(獎(jiǎng)賞函數(shù))。(譯者注:這里應(yīng)該是原文作者的筆誤,強(qiáng)化學(xué)習(xí)有映射,映射是每一個(gè)狀態(tài)對(duì)應(yīng)值函數(shù)。而無(wú)監(jiān)督學(xué)習(xí)沒(méi)有標(biāo)記信息,可以說(shuō)是沒(méi)有映射的。我想這里作者想要表達(dá)的是半監(jiān)督學(xué)習(xí)區(qū)別于強(qiáng)化學(xué)習(xí)的地方是半監(jiān)督學(xué)習(xí)沒(méi)有強(qiáng)化學(xué)習(xí)的反饋這個(gè)機(jī)制。)
3. 解決強(qiáng)化學(xué)習(xí)問(wèn)題的基本框架
為了了解如何解決強(qiáng)化學(xué)習(xí)問(wèn)題,我們將分析一個(gè)強(qiáng)化學(xué)習(xí)問(wèn)題的經(jīng)典例子––多搖臂老虎機(jī)問(wèn)題。 首先,我們將去回答探索 v.s. 利用的根本問(wèn)題,然后繼續(xù)定義基本框架來(lái)解決強(qiáng)化學(xué)習(xí)的問(wèn)題。
上圖:賭場(chǎng)里的“老虎機(jī)”。
假設(shè)你有很多吐出隨機(jī)獎(jiǎng)金的老虎機(jī)(即投幣式游戲機(jī),見(jiàn)上圖)。
現(xiàn)在你想盡可能快地從老虎機(jī)獲得最多的獎(jiǎng)金。你會(huì)怎么做?
一個(gè)幼稚的方法可能是只選擇一個(gè)老虎機(jī),并拉一整天的杠桿。聽(tīng)起來(lái)好無(wú)聊,但這種方法可能會(huì)給你贏點(diǎn)小錢。你也有可能會(huì)中大獎(jiǎng)(幾率接近0.00000 ... .1),但大多數(shù)時(shí)候你可能只是坐在老虎機(jī)面前虧錢。這種方法的正式定義是一種純利用(pureexploitation)的方法。這是我們的最佳選擇嗎?答案是不。
讓我們看看另一種方法。我們可以拉每個(gè)老虎機(jī)的杠桿,并向上帝祈禱,至少有一個(gè)會(huì)中獎(jiǎng)。這是另一個(gè)幼稚的方法,能讓你拉一整天的杠桿,但老虎機(jī)們只會(huì)給你不那么好的收獲。正式地,這種方法也被正式定義為一種純探索(pureexploration)的方法。
這兩種方法都不是最優(yōu)的方法。我們得在它們之間找到適當(dāng)?shù)钠胶庖垣@得最大的回報(bào)。這被稱為強(qiáng)化學(xué)習(xí)的探索與利用困境。
首先,我們要正式定義強(qiáng)化學(xué)習(xí)問(wèn)題的框架,然后列出可能的解決方法。
馬爾可夫決策過(guò)程:
在強(qiáng)化學(xué)習(xí)中定義解法的數(shù)學(xué)框架叫做馬爾可夫決策過(guò)程(Markov Decision Process)。 它被設(shè)計(jì)為:
● 一系列狀態(tài)的集合(Set of states),S
● 一系列行動(dòng)的集合(Set of actions),A
● 獎(jiǎng)勵(lì)函數(shù)(Reward function),R
● 策略(Policy),π
● 價(jià)值(Valu),V
我們必須采取行動(dòng)(A)從我們的開(kāi)始狀態(tài)過(guò)渡到我們的結(jié)束狀態(tài)(S)。我們采取的每個(gè)行動(dòng)將獲得獎(jiǎng)勵(lì)(R)。 我們的行為可以導(dǎo)致正獎(jiǎng)勵(lì)或負(fù)獎(jiǎng)勵(lì)。
我們采取的行動(dòng)的集合(A)定義了我們的策略(π),我們得到的獎(jiǎng)勵(lì)(R)定義了我們的價(jià)值(V)。 我們?cè)谶@里的任務(wù)是通過(guò)選擇正確的策略來(lái)最大化我們的獎(jiǎng)勵(lì)。 所以我們必須對(duì)時(shí)間t的所有可能的S值最大化。
旅行推銷員問(wèn)題
讓我們通過(guò)另一個(gè)例子來(lái)進(jìn)一步說(shuō)明如何定義強(qiáng)化學(xué)習(xí)問(wèn)題的框架。
上圖:旅行推銷員的例子。A–F表示地點(diǎn),之間的連線上的數(shù)字代表在兩個(gè)地點(diǎn)間的旅行成本。
這顯示的是旅行推銷員問(wèn)題。推銷員的任務(wù)是以盡可能低的成本從地點(diǎn)A到地點(diǎn)F。 這兩個(gè)位置之間的每條連線上的數(shù)字表示旅行這段距離所需花費(fèi)的成本。負(fù)成本實(shí)際上是一些出差的收入。 我們把當(dāng)推銷員執(zhí)行一個(gè)策略累積的總獎(jiǎng)勵(lì)定義為價(jià)值。
這里,
● 一系列狀態(tài)的集合是那些節(jié)點(diǎn),即{A,B,C,D,E,F(xiàn)}
● 采取的行動(dòng)的集合是從一個(gè)地方到另一個(gè)地方,即{A→B,C→D等}
● 獎(jiǎng)勵(lì)函數(shù)是節(jié)點(diǎn)的連線上的值,即成本
● 策略是完成任務(wù)的“方式”,即{A - > C - > F}
現(xiàn)在假設(shè)你在位置A,在這個(gè)平臺(tái)上唯一可見(jiàn)路徑是你下一目的地的(亦稱可觀測(cè)的空間),除此之外所有都是未知的。
當(dāng)然你可以用貪婪算法選擇下一步最有可能的,從{A -> (B, C, D, E)}子集中選出{A -> D}。同樣的你在位置D,想要到達(dá)F,你可以從{D -> (B, C, F)}中選擇,可以看出由于{D -> F}路徑花費(fèi)最小,選擇此路徑。
到此為止,我們的規(guī)則是{A -> D -> F},價(jià)值為-120.
恭喜你!你剛剛完成了一個(gè)強(qiáng)化學(xué)習(xí)算法。這個(gè)算法被稱作ε-貪心算法,以貪心方式解決問(wèn)題。現(xiàn)在如果你(銷售人員)想要再次從位置A到F,你總是會(huì)選擇相同的策略。
其他的旅行方式?
你可以猜測(cè)到我們的策略屬于哪一個(gè)類別么(例如,純探索vs純開(kāi)發(fā))?
可以看出我們選擇的并不是最優(yōu)策略,我們必須去一點(diǎn)點(diǎn)“探索”來(lái)發(fā)現(xiàn)最優(yōu)策略。在這里我們使用的方法是基于策略的學(xué)習(xí),我們的任務(wù)是在所有可能策略中發(fā)現(xiàn)最優(yōu)策略。解決這個(gè)問(wèn)題有很多不同的方式,簡(jiǎn)單列舉主要類別如下:
● 基于策略,重點(diǎn)是找到最優(yōu)策略
● 基于價(jià)值,重點(diǎn)是找到最優(yōu)價(jià)值,例如,累計(jì)獎(jiǎng)勵(lì)
● 基于動(dòng)作,重點(diǎn)是在執(zhí)行每一步動(dòng)作時(shí),確定什么是最優(yōu)動(dòng)作
我會(huì)嘗試在以后的文章中更深入地講述強(qiáng)化學(xué)習(xí)算法,那時(shí),你們就可以參考這篇強(qiáng)化學(xué)習(xí)算法調(diào)查的文章(https://www.jair.org/media/301/live-301-1562-jair.pdf)。(譯者注:這里是原文作者的一個(gè)筆誤。Q-learning,它可以用一個(gè)線性函數(shù)作為function approximator, 也可以通過(guò)列舉每一個(gè)q-state的值來(lái)做。用神經(jīng)網(wǎng)絡(luò)來(lái)做Q-learning的function approximator應(yīng)該是15年Google Deepmind發(fā)表在Nature的文章開(kāi)始的,那篇文章中稱該算法為deep-Q-network,后來(lái)統(tǒng)稱為deep q learning)
4. 強(qiáng)化學(xué)習(xí)的實(shí)踐案例
我們會(huì)使用深度Q學(xué)習(xí)算法,Q學(xué)習(xí)是基于策略的,用神經(jīng)網(wǎng)絡(luò)來(lái)近似值函數(shù)的學(xué)習(xí)算法。Google使用該算法在Atari游戲中擊敗了人類。
讓我們看看Q學(xué)習(xí)的偽代碼:
- 初始化價(jià)值表‘Q(s,a)’.
- 觀測(cè)到當(dāng)前狀態(tài)點(diǎn)’s’.
- 基于策略選擇該狀態(tài)下的行動(dòng)’a’(例如,ε-貪心)
- 采取行動(dòng)并觀察獎(jiǎng)勵(lì)值’r’及新?tīng)顟B(tài)點(diǎn)’s’
- 根據(jù)上面描述的公式及參數(shù),用觀測(cè)到的獎(jiǎng)勵(lì)值及下一狀態(tài)可能的最大獎(jiǎng)勵(lì)值更新?tīng)顟B(tài)點(diǎn)新值。
- 設(shè)置新?tīng)顟B(tài),重復(fù)此流程直至到達(dá)最后目標(biāo)點(diǎn)。
Q學(xué)習(xí)算法的簡(jiǎn)單描述可以總結(jié)如下:
該圖是Q學(xué)習(xí)算法流程圖
我們先看看什么是Cartpole問(wèn)題,再繼續(xù)編程提供解決方案
當(dāng)我還是一個(gè)小孩的時(shí)候,我記得我會(huì)撿一根棍子試著用一只手讓它保持平衡。我和我的朋友們一起比賽看誰(shuí)讓棍子保持平衡的時(shí)間最長(zhǎng)就可以得到“獎(jiǎng)勵(lì)”,一塊巧克力!
開(kāi)始我們的代碼前,我們需要先安裝一些東西,
步驟1:安裝keras-rl庫(kù)
從終端運(yùn)行以下命令:
- git clone https://github.com/matthiasplappert/keras-rl.git
- cd keras-rl
- python setup.py install
步驟2:安裝CartPole環(huán)境組件
假設(shè)你已經(jīng)安裝了pip,使用pip命令安裝以下庫(kù)
- pip install h5py
- pip install gym
步驟3:啟動(dòng)
首先我們要導(dǎo)入所需模塊
- import numpy as np
- import gym
- from keras.models import Sequential
- from keras.layers import Dense, Activation, Flatten
- from keras.optimizers import Adam
- from rl.agents.dqn import DQNAgent
- from rl.policy import EpsGreedyQPolicy
- from rl.memory import SequentialMemory
然后設(shè)置相關(guān)變量
- ENV_NAME = 'CartPole-v0'
- # Get the environment and extract the number of actions available in theCartpole problem
- env = gym.make(ENV_NAME)
- np.random.seed(123)
- env.seed(123)
- nb_actions = env.action_space.n
下一步,我們創(chuàng)建一個(gè)簡(jiǎn)單的單隱層神經(jīng)網(wǎng)絡(luò)模型。
- model = Sequential()
- model.add(Flatten(input_shape=(1,) + env.observation_space.shape))
- model.add(Dense(16))
- model.add(Activation('relu'))
- model.add(Dense(nb_actions))
- model.add(Activation('linear'))
- print(model.summary())
接下來(lái),配置并編譯我們的代理端。我們將策略設(shè)成ε-貪心算法,并且將存儲(chǔ)設(shè)置成順序存儲(chǔ)方式因?yàn)槲覀兿胍鎯?chǔ)執(zhí)行操作的結(jié)果和每一操作得到的獎(jiǎng)勵(lì)。
- policy = EpsGreedyQPolicy()
- memory = SequentialMemory(limit=50000, window_length=1)
- dqn = DQNAgent(modelmodel=model, nb_actionsnb_actions=nb_actions, memorymemory=memory,nb_steps_warmup=10,
- target_model_update=1e-2, policypolicy=policy)
- dqn.compile(Adam(lr=1e-3), metrics=['mae'])
- dqn.fit(env, nb_steps=5000, visualize=True, verbose=2)
現(xiàn)在測(cè)試強(qiáng)化學(xué)習(xí)模型
- dqn.test(env, nb_episodes=5, visualize=True)
- This will be the output of our model:
這就是模型輸出結(jié)果:
瞧!你構(gòu)建了一個(gè)強(qiáng)化模型的雛形!
5. 增加復(fù)雜性
現(xiàn)在你已經(jīng)有了一個(gè)強(qiáng)化學(xué)習(xí)的基礎(chǔ)成品,讓我們來(lái)進(jìn)一步的每次增加一點(diǎn)點(diǎn)復(fù)雜度以解決更多的問(wèn)題。
問(wèn)題-漢諾塔
對(duì)于不知道該游戲的人簡(jiǎn)單說(shuō)明一下——發(fā)明于1883年,由3根桿及一些逐增大小的圓盤(如上圖中所示的3個(gè)一樣)從最左邊的桿開(kāi)始,目標(biāo)是從選擇最小移動(dòng)次數(shù)將所有圓盤從最左邊移動(dòng)到最右邊(你可以從維基百科得到更多訊息(https://en.wikipedia.org/wiki/Tower_of_Hanoi))。
如果我們要映射這個(gè)問(wèn)題,從定義狀態(tài)開(kāi)始:
● 開(kāi)始狀態(tài) – 3個(gè)圓盤都在最左邊桿上(從上到下依次為1、2、3)
● 結(jié)束狀態(tài) – 3個(gè)圓盤都在最右邊桿上(從上到下依次為1、2、3)
所有可能的狀態(tài):
列舉可能的27個(gè)狀態(tài):
圖中(12)3*代表的是圓盤1和圓盤2依次在最左邊桿上(從上到下),圓盤3在中間桿上,*表示最右邊桿為空
數(shù)字獎(jiǎng)勵(lì):
因?yàn)槲覀兿胍宰钌俨綌?shù)來(lái)解決問(wèn)題,我們可以設(shè)定每一步的獎(jiǎng)勵(lì)為-1。
規(guī)則:
現(xiàn)在,不考慮任何技術(shù)細(xì)節(jié),我們可以標(biāo)記出在以上狀態(tài)間可能出現(xiàn)的轉(zhuǎn)移。例如從獎(jiǎng)勵(lì)為-1的狀態(tài)(123)** 到狀態(tài) (23)1*,也可以是到狀態(tài)(23)*1。
同樣地,你看出了上面提到的27個(gè)狀態(tài)的每一個(gè)都類似于之前銷售人員旅行的示意圖。我們可以根據(jù)之前的經(jīng)驗(yàn)找出最優(yōu)解決方案選擇不同狀態(tài)和路徑。
問(wèn)題 - 3 x 3 魔方
當(dāng)我在為你解決這個(gè)問(wèn)題的同時(shí),也想要你自己也做一做。遵照我上面使用的相同步驟,你可以更好的理解和掌握。
從定義開(kāi)始和結(jié)束狀態(tài)開(kāi)始,接下來(lái),定義所有可能的狀態(tài)和相應(yīng)的狀態(tài)轉(zhuǎn)移獎(jiǎng)勵(lì)和規(guī)則。最后,使用相同的方法你可以提供解決魔方問(wèn)題的方案。
6. 強(qiáng)化學(xué)習(xí)的研究現(xiàn)狀
你已經(jīng)意識(shí)到了魔方問(wèn)題的復(fù)雜度比漢諾塔高了好幾個(gè)倍,也明白每次可選擇的操作數(shù)是怎么增長(zhǎng)的。現(xiàn)在想想圍棋游戲里面狀態(tài)數(shù)和選擇,行動(dòng)起來(lái)吧!最近谷歌DeepMind創(chuàng)建了一個(gè)深度強(qiáng)化學(xué)習(xí)算法打敗了李世石!
隨著近來(lái)涌現(xiàn)的深度學(xué)習(xí)成功案例,焦點(diǎn)慢慢轉(zhuǎn)向了應(yīng)用深度學(xué)習(xí)解決強(qiáng)化學(xué)習(xí)問(wèn)題。李世石被谷歌deepmind開(kāi)發(fā)的深度強(qiáng)化學(xué)習(xí)算法開(kāi)打敗的新聞鋪天蓋地襲來(lái)。同樣的突破也出現(xiàn)在視頻游戲中,已經(jīng)逼近甚至超出人類級(jí)別的準(zhǔn)確性。研究仍然同等重要,不管是行業(yè)還是學(xué)術(shù)界的翹楚都在共同完成這個(gè)構(gòu)建更好的自我學(xué)習(xí)機(jī)器的目標(biāo)。
圖為李世石與AlphaGo參與圍棋人機(jī)大戰(zhàn)中
深度學(xué)習(xí)應(yīng)用的主要領(lǐng)域如下:
● 游戲原理及多智能體交互
● 機(jī)器人學(xué)
● 計(jì)算機(jī)網(wǎng)絡(luò)
● 車輛導(dǎo)航
● 醫(yī)藥學(xué)
● 行業(yè)物流
隨著近期將深度學(xué)習(xí)應(yīng)用于強(qiáng)化學(xué)習(xí)的熱潮,毫無(wú)疑問(wèn)還有許多未探索的事在等待著更多的突破來(lái)臨!
其中一條最近的新聞:
7. 其他資源
我希望現(xiàn)在你已經(jīng)對(duì)強(qiáng)化學(xué)習(xí)怎么運(yùn)行有了一個(gè)深入的了解。列舉了一些可以幫你探索更多有關(guān)強(qiáng)化學(xué)習(xí)的其他資源:
- 強(qiáng)化學(xué)習(xí)視頻(https://www.analyticsvidhya.com/blog/2016/12/21-deep-learning-videos-tutorials-courses-on-youtube-from-2016/)
- 介紹強(qiáng)化學(xué)習(xí)的書籍(https://webdocs.cs.ualberta.ca/~sutton/book/bookdraft2016sep.pdf)
- Github上強(qiáng)化學(xué)習(xí)的優(yōu)秀資源(https://github.com/aikorea/awesome-rl)
- David Silver強(qiáng)化學(xué)習(xí)課程(https://www.youtube.com/playlist?list=PLV_1KI9mrSpGFoaxoL9BCZeen_s987Yxb)
結(jié)束語(yǔ)
我希望你們能喜歡閱讀這篇文章,如果你們有任何疑慮和問(wèn)題,請(qǐng)?jiān)谙旅嫣岢?。如果你們有?qiáng)化學(xué)習(xí)的工作經(jīng)驗(yàn)請(qǐng)?jiān)谙旅娣窒沓鰜?lái)。通過(guò)這篇文章我希望能提供給你們一
個(gè)強(qiáng)化學(xué)習(xí)的概況,以及算法如何實(shí)際實(shí)施的,希望對(duì)你們有用。
來(lái)源:
https://www.analyticsvidhya.com/blog/2017/01/introduction-to-reinforcement-learning-implementation/?winzoom=1
【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號(hào)“大數(shù)據(jù)文摘( id: BigDataDigest)”】