自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

人工智能的新希望-強(qiáng)化學(xué)習(xí)全解

開(kāi)發(fā) 開(kāi)發(fā)工具
很多人說(shuō),強(qiáng)化學(xué)習(xí)被認(rèn)為是真正的人工智能的希望。本文將從7個(gè)方面帶你入門強(qiáng)化學(xué)習(xí),讀完本文,希望你對(duì)強(qiáng)化學(xué)習(xí)及實(shí)戰(zhàn)中實(shí)現(xiàn)算法有著更透徹的了解。

[[183719]]

編譯團(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í)。

[[183720]]

上圖:孩子學(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)題(圖上方)

把小孩子學(xué)走路的過(guò)程(圖下方)歸納成一個(gè)強(qiáng)化學(xué)習(xí)的問(wè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í)方法的類型

上圖:機(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)題。

[[183723]]

上圖:賭場(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í)算法流程圖

該圖是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)行以下命令:

  1. git clone https://github.com/matthiasplappert/keras-rl.git 
  2. cd keras-rl 
  3. python setup.py install 

步驟2:安裝CartPole環(huán)境組件

假設(shè)你已經(jīng)安裝了pip,使用pip命令安裝以下庫(kù)

  1. pip install h5py 
  2. pip install gym 

步驟3:啟動(dòng)

首先我們要導(dǎo)入所需模塊

  1. import numpy as np 
  2. import gym 
  3.  
  4. from keras.models import Sequential 
  5. from keras.layers import Dense, Activation, Flatten 
  6. from keras.optimizers import Adam 
  7.  
  8. from rl.agents.dqn import DQNAgent 
  9. from rl.policy import EpsGreedyQPolicy 
  10. from rl.memory import SequentialMemory 

然后設(shè)置相關(guān)變量

  1. ENV_NAME = 'CartPole-v0' 
  2.  
  3. # Get the environment and extract the number of actions available in theCartpole problem 
  4. env = gym.make(ENV_NAME) 
  5. np.random.seed(123) 
  6. env.seed(123) 
  7. nb_actions = env.action_space.n 

下一步,我們創(chuàng)建一個(gè)簡(jiǎn)單的單隱層神經(jīng)網(wǎng)絡(luò)模型。

  1. model = Sequential() 
  2. model.add(Flatten(input_shape=(1,) + env.observation_space.shape)) 
  3. model.add(Dense(16)) 
  4. model.add(Activation('relu')) 
  5. model.add(Dense(nb_actions)) 
  6. model.add(Activation('linear')) 
  7. print(model.summary()) 

接下來(lái),配置并編譯我們的代理端。我們將策略設(shè)成ε-貪心算法,并且將存儲(chǔ)設(shè)置成順序存儲(chǔ)方式因?yàn)槲覀兿胍鎯?chǔ)執(zhí)行操作的結(jié)果和每一操作得到的獎(jiǎng)勵(lì)。

  1. policy = EpsGreedyQPolicy() 
  2. memory = SequentialMemory(limit=50000window_length=1
  3. dqn = DQNAgent(modelmodel=model, nb_actionsnb_actions=nb_actions, memorymemory=memory,nb_steps_warmup=10
  4. target_model_update=1e-2, policypolicy=policy) 
  5. dqn.compile(Adam(lr=1e-3), metrics=['mae']) 
  6.  
  7. dqn.fit(env, nb_steps=5000visualize=Trueverbose=2

現(xiàn)在測(cè)試強(qiáng)化學(xué)習(xí)模型

  1. dqn.test(env, nb_episodes=5visualize=True
  2. This will be the output of our model: 

這就是模型輸出結(jié)果:

[[183725]]

瞧!你構(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)題-漢諾塔

 問(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在中間桿上,*表示最右邊桿為空

圖中(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)中

圖為李世石與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)”】

     大數(shù)據(jù)文摘二維碼

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2020-12-23 06:07:54

人工智能AI深度學(xué)習(xí)

2024-02-04 19:45:43

人工智能電信

2023-06-30 11:08:13

AI人工智能

2021-11-30 08:00:00

人工智能數(shù)據(jù)技術(shù)

2018-12-25 17:33:32

人工智能創(chuàng)業(yè)人才

2023-09-28 15:04:53

人工智能AI

2022-11-03 14:13:52

強(qiáng)化學(xué)習(xí)方法

2021-04-13 16:18:30

人工智能強(qiáng)化學(xué)習(xí)人臉識(shí)別

2023-03-20 16:08:27

2017-11-21 14:34:30

2023-12-03 22:08:41

深度學(xué)習(xí)人工智能

2020-12-24 15:56:01

人工智能人機(jī)對(duì)抗技術(shù)

2023-08-28 06:52:29

2020-11-02 10:15:11

人工智能機(jī)器學(xué)習(xí)金融科技

2022-09-01 18:25:45

網(wǎng)絡(luò)安全人工智能數(shù)據(jù)泄露

2019-10-25 15:58:10

人工智能機(jī)器學(xué)習(xí)技術(shù)

2015-10-10 09:32:24

機(jī)器學(xué)習(xí)人工智能

2023-10-12 15:20:23

人工智能機(jī)器學(xué)習(xí)

2017-04-04 19:52:24

強(qiáng)化學(xué)習(xí)深度學(xué)習(xí)機(jī)器學(xué)習(xí)

2021-04-07 10:48:45

人工智能深度學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)