1. 程式人生 > >深度強化學習:從畫素玩Pong!

深度強化學習:從畫素玩Pong!

強化學習(Reinforcement Learning,RL)特別火!你看過許多新聞:電腦能自動學習ATARI遊戲,在圍棋比賽中擊敗世界冠軍,模擬四足動物學習跑和跳,機器人學習完成程式設計無法實現的複雜操作任務。這些進展都屬於RL研究的範疇。我本人自去年起關注RL:我閱讀了Richard Sutton的書,學習了David Silver的課程,看了John Schulmann的講座,寫了RL的Javascript庫,整個夏天在DeepMind的DeepRL組實習,最近了解一些關於RL標準工具庫OpenAI Gym的設計與開發。我涉足這個領域一年多,最近才有時間寫一篇博文,來探討為什麼RL了不起,它是什麼,怎樣發展及未來展望。

上圖從左至右:深度Q學習網路玩ATARI,AlphaGo,Berkeley機器人搭樂高,物理模擬的四足動物跳躍

近期RL進展的性質值得反映。我認為制約AI發展有四個因素:

  1. 計算(明顯者如:摩爾定律,GPU,ASIC)
  2. 資料(比較好的形式,不僅是在網上隨便某處,如ImageNet)
  3. 演算法(研究與思想,如:backprop,CNN,LSTM)
  4. 基礎架構(底層軟體:Linux,TCP/IP,Git,ROS,PR2,AWS,AMT,TensorFlow等)

同機器視覺類似,RL的發展不是由你想象的驚人新想法驅動的。在機器視覺上,2012年的AlexNet是1990年ConvNets的升級版(更深、廣)。類似地,2013年ATARI深度Q學習論文是標準演算法的一個應用(函式近似的Q學習,可以在1998年Sutton的標準RL書上找到),其函式近似恰好是ConvNet。AlphaGo使用策略梯度同蒙特卡羅樹搜尋(MCTS)—— 這些也是標準組件。當然花不少精力和耐心去實現,在舊演算法上若干聰明的技巧被髮明出來,但一階近似的驅動力不是演算法而是計算/資料/基礎架構。

回到RL來,當我發現看起來奇妙實際卻很簡單的東西時總想記錄到部落格中。我看到許多人不敢相信機器能夠通過演算法學習ATARI遊戲,從一個個畫素、從零開始,達到人的級別,我也一度驚歎這十分不可思議。但使用的核心方法實際上很簡單。總之,我會帶你理解策略梯度(Policy Gradients,PG),這是解決RL問題最受歡迎的選項。如果你不瞭解RL你會問我為什麼不講DQN —— DQN是更知名的RL演算法,因ATARI game論文而廣泛流行。其實Q-學習並不是那麼好,很多人更喜歡用策略梯度,包括DQN論文作者在內,證實策略梯度優於Q-學習。PG受歡迎由於它是端到端的:有顯式策略及原則性的方法直接優化期望回報。總之,我們學習玩ATARI遊戲(Pong!), 用策略梯度、從零開始、從一個個畫素,構建深度神經網路,總共130行的依賴numpy的Python程式(

gist連結),讓我們開始吧!

從畫素玩Pong

左圖:Pong遊戲 右圖:Pong是馬爾科夫決策過程(Markov Decision Process,MDP)的特例:每個結點是個特定遊戲狀態,每條邊是一種可能轉換,每條邊也給出獎勵分,目標是計算某一狀態下最大化獎勵的最優解。

Pong遊戲是簡單RL任務的絕佳例子。在ATARI 2600版本中你玩一邊的球拍(AI控制另一個),將球打到另一邊。遊戲的底層原理如下:有一個圖片框(210x160x3位元組的陣列,0至255整數的畫素值),我們決定球拍該移上還是移下(二元選項)。每次選擇後遊戲模擬器執行動作並給出得分:將球打回對手+1分,丟球-1分,對手丟球0分。目標是移動球拍得分。

策略網路 首先定義策略網路來操作球員。這個網路獲取遊戲狀態並決定做什麼(移上還是移下)。選擇2層神經網路獲取原始圖片畫素(一共100,800(210x160x3)個數),產生移上的概率。注意到一般會採用隨機策略,只能產生移上的概率。每次迭代我們都從這個分佈中取樣實際移動。原因會在下面談及訓練時更為清晰。

使用2層完全連結的策略網路

下面介紹怎樣在Python/numpy中實現這個策略。假設一個向量x表示(預處理過的)畫素資訊,計算:

h = np.dot(W1, x) # 計算隱藏層神經元啟用值
h[h<0] = 0 # ReLU非線性:閾值設0
logp = np.dot(W2, h) # 計算向上移的對數概率
p = 1.0 / (1.0 + np.exp(-logp)) # sigmoid函式(向上的概率)

這段程式中W1W2是兩個隨機初始化的矩陣。沒有采用偏差是由於最後使用了sigmoid非線性,將輸出概率壓縮至[0,1]區間。隱藏層的神經元(他們的權重排列在W1的每一行)能檢測不同的遊戲場景(如,球在上、拍在中間),W2決定每個場景中移上還是移下。初始隨機的W1W2令球員陣顫,唯一的問題就是找出專業玩Pong的W1W2了!

說明:預處理 你需要至少提供2幀給策略網路檢測動作。簡單來說,我會做些預處理,例如將幀之間的差提供給網路(當前幀及前一幀相減)。

聽起來不可能 我希望你意識到RL有多難。我們有100,800個數字(210x160x3),傳遞策略網路(很容易涉及到W1 W2數百萬的引數)。假設決定移上,遊戲響應這步得0分,並在下一幀給出另一組100,800個數字。在獲得非0獎勵之前,這個過程要重複數百次!終於獲得了1分,但究竟怎樣得分的?是因為剛才的做法,還是76幀之前?還是同第10幀與第90幀有關?如何算出上萬次的扭轉如何改進?這是信用分配問題。在Pong的特例中,球傳給對手可得1分。將球彈到恰好的軌跡,實際的原因卻發生在好幾幀之前 —— Pong的例子中大約20幀,而之後的動作對是否得分毫無影響。換言之我們在面對一道困難的題目。

監督學習 深入策略梯度方案之前我想提起監督學習,因為同RL非常相似。下圖中,在一般監督學習中將圖片輸入到網路中得到概率,比如上和下兩類概率。這裡是對數概率(-1.2, -0.36)而不是原始概率(30%, 70%),我們總是在優化正確標註的對數概率(令數字更加整潔,因對數函式的單調性,等同於優化原始概率)。在監督學習中,得到一個標註,比如向上移動(標註0)。在一次實現中,我們在向上的對數概率中輸入1.0的梯度,執行backprop計算梯度向量$\nabla_{W} \log p(y=UP \mid x)$。這個梯度將告訴我們該如何改變上百萬的引數來使網路更能預測向上。例如,網路中的一個引數的梯度為-2.1,意味著對該引數增加一點數值(e.g. 0.001),向上的對數概率會下降2.1*0.001(下降是由於負號)。更新這個引數,yay,當再次遇見類似影象時,網路會稍微更能預測向上。

策略梯度 如果沒有正確標註,在強化學習中該怎樣做?這裡是策略梯度的方案(如下圖)。策略網路計算向上的概率30%(對數概率-1.2)向下70%(對數概率-0.36)。現在從這個分佈中取樣動作;假設取樣向下,然後在遊戲中執行。注意到一個有趣的事實:我們能立即為向下加入1.0的梯度,就像在監督學習中一樣,找到更能預測網路向下的梯度向量。這很好,我們可以立即衡量這個梯度,但問題是並不清楚向下移動是否正確。沒關係,等等再說!在Pong遊戲中,等到遊戲得分(+1為贏或-1為輸),再輸入採取該動作(向下)的梯度值。下例中,向下會導致丟分,所以如果把向下的對數概率填充-1並執行backprop,找到梯度來阻止網路未來做移下的動作(應當如此,向下會輸掉比賽)。

隨機策略取樣動作,偶然造成好結果的行動未來被促進,造成壞結果的行為被阻止。如果最終贏得比賽,獎勵不一定是+1或-1,可以是對最終質量的任意衡量。如結果非常好,分數可以是10.0分,輸入到梯度中而不是將-1作為backprop的開始。神經網路之美在此,就像在用祕技:你可以將1百萬引數嵌入1萬億浮點運算,並用SGD來做任何事。這不應該有用,但有趣的是,我們住在的世界就能奏效。

訓練協議 下面講訓練的細節。為策略網路初始化W1W2並玩100局Pong(我們叫這策略“首展”)。假設每個回合有200幀,總共要決定20,000次向上還是向下,每個引數梯度告知未來該情景下如何改善決策的引數,然後將每個決策標註為好或壞。假設贏12局輸88局,我們為20012 = 2400個勝利的決策做正更新(在取樣動作的梯度中填充+1.0,做backprop,更新引數來促進這些狀態下的動作)。將另外20088 = 17600個失敗的決策做負更新(阻止這些動作)。網路現在更能重複勝利的動作,減少輸局的可能。用改進的策略再玩100局遊戲並更新、反覆。

策略梯度:執行一陣策略,看哪些動作易得高分,提高相應的概率。

4次遊戲的圖解。黑圈是遊戲狀態(三個狀態示例在下面),箭頭表示轉化、註釋取樣的動作。此例中贏2局輸2局。策略梯度將稍微促進贏局中的每一個動作,並稍微阻止輸局中的動作。

在這一步會得到非常有趣的性質。如果在50幀做出對的行動(正確將球彈回),卻在150幀丟掉球會怎樣?如果每一步都被標為壞(因為輸球),那會抑制50幀的正確彈球嗎?答案是會的。但考慮在成千上萬次遊戲中,第一個正確反彈令你稍微更加能贏,因此總體正確彈球是正面更新的,策略會做出正確的事。

更多通用優勢函式 我講過還會討論回報,現在基於是否贏得比賽已經判斷了每一動作的優劣。在更通用的RL設定中每一時間步長中得到$r_t$獎勵。通常選擇用打折的獎勵,因此上表中的最終獎勵為$ R_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k} $。其中$\gamma$是介於0到1之間的折扣因子。表示式說明促進取樣行為的強度是這之後獎勵的加權之和,而後獎勵的重要性呈指數下降。實際上標準化也很重要。假設為上述首展中100個Pong遊戲的所有20,000個行動計算$R_t$,一種方法是標準化這些回報(減去平均值,除以標準差),再插入標準值來執行backprop。這樣總是促進或抑制大約一半的行為。數學上可解釋為控制策略梯度估計方差的方法。更深入的探索在此

推導策略梯度 我想介紹一下策略梯度怎樣在數學上得到。策略梯度是一種通用評分函式梯度估計的特例。通常表示式形式是$E_{x \sim p(x \mid \theta)} [f(x)] $ —— 即,在某個由$\theta$做引數的概率分佈$p(x;\theta)$下,標量的評分函式$f(x)$的期望。提示是,$f(x)$將成為獎勵函式(或通常點,優勢函式),$p(x)$成為策略網路,給定任意影象$I$行為分佈的真正的$p(a \mid I)$模型。然後(通過引數$\theta$)找到如何移動分佈來增加取樣的分數,由$f$評判(如何改變網路的引數行動取樣來得到高分)。我們有:

我們有$p(x;\theta)$的分佈(簡寫為$p(x)$)來取樣(可以是高斯分佈)。對於每個樣本可以估計評分函式$f$給出標量的得分值。這個等式告知如何由$f$評判改變分佈(通過引數$\theta$)來達到高分。詳細講是取一些$x$的樣本,估計得分$f(x)$,併為每個$x$估計第二項$ \nabla_{\theta} \log p(x;\theta) $。第二項是什麼?是個向量 —— 在引數空間中給出用來增加$x$概率方向的梯度。如果將$\theta$輕推至$ \nabla_{\theta} \log p(x;\theta) $的方向,會看到$x$的概率略微增加。回看公式中採取這個方向並乘上$f(x)$的標量分數。這將高分的樣本拽向概率密度更強的低分樣本。所以若基於$p$中的若干樣本更新,概率密度將移向高分的方向,令高分樣本更加可能。

得分函式梯度估計的的視覺化檢視。:高斯分佈及其樣本(藍點)。在每個藍點上繪製關於高斯均值的對數概率的梯度。箭頭指示分佈的均值應該輕移至增加樣本概率方向。:得分函式的疊加,其中小部分割槽域+1,剩餘區域-1(注意這個函式是任意值不一定可微)。更新的乘積令箭頭染上色,均勻所有綠箭頭,及負的紅箭頭。:引數更新後,綠箭頭及反向的紅箭頭推至左下,這個分佈的樣本將有希望的更高得分。

我希望RL的關係講清楚了。策略網路給出行為的取樣,有些行為優於其它(由優勢函式評定)。這些數學說明改變策略引數就是做首展,得到樣本行為的梯度,乘以評分並加和,如前文描述。更詳細的推導和討論推薦看John Schulman的講座

學習 好了,現在我們認識了策略網路,看了大致推導。全部過程由130行的Python程式執行完成,使用OpenAI Gym的ATARI 2600 Pong。我訓練了一個有200隱藏層單元的2層策略網路,以10節為批次(每一節由若干遊戲組成,遊戲最高能得21分)使用RMSProp。我沒有過多調整超引數,實驗在Macbook上執行,我訓練3個晚上得到的策略稍超過AI選手。共計訓練約8,000節,演算法玩了約200,000次Pong遊戲(是不是很多!),更新了~800次。朋友告訴我如果在GPU上訓練ConvNets,幾天後你能經常打敗AI選手,如果仔細優化超引數你就能始終控制AI選手(贏得每場比賽)。我沒有計算或微調,但我們闡釋了Pong AI的主要思想,執行起來十分奏效:

訓練的選手(綠色,右)面對硬編碼的AI對手(左)

學習的權重 我們來看下學習的權重。預處理後每項輸入都是80x80的差分圖(現一幀減前一幀)。取出W1的每一行,伸展為80x80的圖。下圖是(200箇中的)40個神經元組成的格子。白畫素點表示正權重,黑色表示負權重。許多神經元被調為彈球的特定軌跡,由沿線交替的黑與白編碼。球只能在一點,所以這些神經元是多工處理的並在沿球軌跡的多處“啟用”。交替的黑白十分有趣,因為球會沿著軌跡,神經元的活動就像正弦曲線一樣波動,使用ReLU函式令神經元在軌跡分離的位置“啟用”。影象中有些噪音,使用L2正則化以緩解。

沒有發生什麼

我們由原始畫素通過策略梯度學習如何玩Pong。這個方法是“猜測與檢驗”的華麗形式,“猜測”指從現在的策略中取樣首展,“檢測”指促進產生好結果的行為。餘下的細節代表處理強化學習問題的先進水平。學習行為這件事令人印象深刻,但理解了演算法後你會有些失望。特別是,它怎樣工作的?

對比人類學習玩Pong的過程,你給他們展示遊戲並解說“控制球拍,移上或移下,你的任務是將球彈給另一側的AI球員”,於是你就準備好了。二者的差異是:

  • 人在交流時會持有某種態度,但在標準RL問題中你假設任意獎勵函式並通過環境的互動查明。可以解釋為人蔘與到Pong遊戲中,無需瞭解獎勵的機制(特別是當獎勵函式是靜態而不是隨機的),人學習很困難但策略梯度卻不在意,而且會工作得更好。相似地,如果要隨機取出幀、交換畫素,人容易失敗,策略梯度則不辨差異(這裡使用了全連結網路)。

  • 人類擁有大量的先驗知識,如物理上(球彈起,不瞬移也不停止,保持勻速),心理上(AI對手“想要”贏,有明顯向球移動的策略等)。你理解控制球拍的概念,響應向上/向下鍵的操作。相反地,演算法從零開始,同時令人矚目(因為它起作用)及沮喪的(我們不知道如何不這麼做)。

  • 策略梯度是一種粗暴的解決方法,正確的做法最終被發現並被吸納到策略中。人類構建豐富的抽象模型並通過它籌劃。在Pong中,我通過發現對手行動慢,推斷出加快垂直彈球速度這樣有利的策略,令對手不能及時接到球。但似乎最終我們也將好的方法“吸收”到肌肉的記憶策略中。例如你在學習新的機動車任務(開車換檔?),你經常覺得開始想許多但最後會自動地、無意識地完成任務。

  • 策略梯度要經常體驗正激勵,逐漸改變策略引數來重複高獎勵的移動。通過抽象模型,人類不必經歷失分得分就能發現如何得到獎勵,就像不用經歷幾百次才能避免撞車。

左:蒙提祖瑪的復仇:對RL演算法有挑戰的遊戲。玩家需要跳下爬上去、取鑰匙開門。人類知道獲得鑰匙很有用。計算機取樣數億次隨機移動,99%的時間摔死或被怪獸殺死,很難撞進得分的狀態。右:另一個有難度的遊戲叫做寒霜引擎,人類理解東西能移動,有些能摸,有些不能,目標是一磚一瓦地搭建冰屋。關於這個遊戲人機方法區別的分析和討論見Building Machines That Learn and Think Like People

相反,需要特別指出的是,在許多遊戲中策略梯度能夠輕易擊敗人類。尤其是獎勵訊號頻繁、要求精準快速的反應、又無需長期計劃的遊戲十分理想,因為獎勵和行為間的短期相關性容易被策略梯度“注意到”,策略精心地實施。我們在Pong代理球員中看到了這樣的跡象:它開發一種策略,等到球並快速地撞擊邊沿,給球以極快的垂直速度。代理重複這個策略連續得了若干分。在許多ATARI遊戲中深度Q學習這樣打破了人類的基線,如桌上彈球、打磚塊等遊戲。

總之,一旦你理解了這些演算法的“訣竅”,就能推斷出其長處和弱點。演算法不能像人類一樣對遊戲建立抽象、豐富的表達,在其中計劃和快速學習。總有一天,計算機看到一陣列的畫素點,會注意到鑰匙、門,並自己思考應該撿起鑰匙開啟門。現在離這樣還遠,是一項活躍的研究領域。

神經網路中的不可微計算

與遊戲無關的策略梯度其它的有趣應用:它允許利用不可微計算(或與之互動)的成分設計和訓練神經網路。這個想法在一系列中心凹掃視(由人自身啟發)處理低解析度圖片的模型背景下,最初在Recurrent Models of Visual Attention上介紹。特別的是,RNN的每次迭代接收一小張圖片取樣一個位置再看下一個。例如,RNN檢視位置(5, 30),接收一小部分圖片,然後看(24, 50)。這個想法的問題是,有一部分網路會用於產生下一個取樣位置的分佈。不幸的是這個操作不可微,我們不知道取樣下一位置會發生什麼。考慮一個由輸入到輸出的神經網路:

注意到多數箭頭(藍色)是可微的,有些表示轉換可選地包含不可微的取樣操作(紅色)。藍色箭頭可以backprop,紅色箭頭表示不能backprop的依賴項。

策略梯度來拯救了!我們認為取樣的那部分網路是內建在更寬闊網路的小的隨機策略。因此,在訓練時我們產生若干樣本(下圖的分支),然後促進樣本通向好結果(這個例子中最後由損失衡量)。換言之,我們像往常一樣訓練涉及backprop藍色箭頭的引數,涉及紅色箭頭的引數會獨立於使用策略梯度的後向傳遞而更新,促進導致低損失的樣本。這個想法在Gradient Estimation Using Stochastic Computation Graphs一文中正式化。

可訓練的記憶體I/O 你會在許多文章中找到這個想法。如Neural Turing Machine中可讀寫的儲存帶。進行寫操作來執行類似m[i] = x的語句,其中ix分別由RNN的控制網路預測。但是,這個操作不可微分,因為沒有訊號告訴我們如果將j != i寫在不同位置,損失會怎樣。因此,NTM要做讀寫操作。它預測注意力分佈a(包括0到1的元素,總和為1,峰值在指標附近),然後跑for all i: m[i] = a[i]*x。這現在可微分,但要付出沉重的計算代價,因為每個儲存單元只寫一個位置。想想如果每個分配進入,電腦將佔滿整個RAM!

但(理論上)使用策略梯度可以迴避這個問題,如RL-NTM中。仍舊預測注意力分佈a,但作為軟讀寫的替換,取位置寫:i = sample(a); m[i] = x。訓練時以小批量i為單元,最終可能令分支效果更好。巨大的計算優勢是隻需在測試時讀/寫一個位置。正如文章中指出這個策略很難起作用,因為要在取樣時意外地進入起作用的狀態。現在的共識是PG在只有少數間斷的選擇時有效,不必無助地在巨大的搜尋空間中取樣。

但是使用策略梯度,在許多資料/計算可用的案例中,原則上都可以大膽想象 —— 例如設計神經網路同大型、不可微的模組互動,像Latex編譯器(char-rnn產生可編譯的latex),SLAM系統,LQR解算器,或者其他。例如超智慧學習通過TCP/IP(不幸的是不能微分)同網際網路互動來訪問掌控世界的關鍵資訊。這是個很好的例子。

總結

策略梯度是強大的、通用的演算法,我們從原始畫素、從零開始訓練ATARI Pong代理球員作為例子,用130行python實現。一般同樣的演算法可為任意遊戲訓練代理,希望有一天可以解決實際有價值的控制問題。我想在結束前加一些筆記:

先進的AI 此演算法通過暴力搜尋,開始時球拍隨機抖動,偶然撞入得分狀態,然後不停地重複這個狀態,移動策略分佈的引數以重現這個可靠的動作。人用不同的方式解決這些問題,就像快速建模 —— 在研究中僅僅涉及皮毛(很多人在嘗試)。這些抽象模型很難明確解釋,這是為什麼最近的(非監督)生成模型和程式歸納很有吸引力。

複雜機器人學中的應用 演算法不會簡單地擴充套件,因為大量的探索很難得到。例如,在機器人學領域,有一個(或幾個)機器人,實時同外界互動。這限制了本文中介紹的演算法的原生應用。相關工作deterministic policy gradients試圖緩和這個問題 —— 取代從隨機策略中取樣及促進增加得分,這個方法使用決定策略,由第二個網路(稱為評論員)直接得到梯度資訊,建立分數函式的模型。這個方法理論上在取樣覆蓋度低的高維動作時更加有效,但目前看實際工作起來有些苛求。另一相關的方法是增加機器人,參見Google機器人臂工廠或是Tesla Model S的自動駕駛

有一系列的工作新增附加監督,令搜尋過程不那麼無望。在許多實踐案例中,舉例來說,能從人那裡獲得專家軌跡。AlphaGo首先從專家Go遊戲用監督學習預測人的移動,模仿人的決策結果隨後被策略梯度以贏取遊戲為“真實”目標精細地調整。某些情況下,只有很少的專家軌跡(如機器人遠距離操作),利用這些資料的技術,屬於apprenticeship learning的範圍。最後,如果沒有人提供無監督資料,計算則需要昂貴的優化方法,如在動態模型(比如物理模擬$F=ma$)中採用trajectory optimization,或某些情況下學習近似區域性動態模型(非常有前景的Guided Policy Search框架)。

實際使用PG 最後,我最後講下希望做的事情。我也許留下了RNN很神奇、能自動處理任意序列問題的印象。真相是這些模型工作起來十分複雜,需要注意和專業技術;它們在許多例項中過猶不及,簡單的方法反而令你達到90%+的進度。策略梯度亦然。它不是自動的:需要有許多樣本,永遠在訓練,不起作用時很難排錯。一個人總應該在拿到火箭筒之前先嚐試BB槍。在強化學習的例子中,cross-entropy method (CEM)是個有力的起點,它是一種單純隨機爬坡、由進化啟發的“猜測與檢驗”方法。如果堅持要嘗試用策略梯度解決問題,你要確保仔細閱讀文章中的技巧一節,先由簡單的開始,用PG的變種方法TRPO,它幾乎總比普通PG在實踐中更好更持續。其核心思想是避免過多更新改變策略的引數,通過批量資料上新舊策略預測分佈之間的KL散度限制(取代共軛梯度的最簡單例項是採用線搜尋並一直監測KL)。

相關推薦

深度強化學習Pong!

強化學習(Reinforcement Learning,RL)特別火!你看過許多新聞:電腦能自動學習ATARI遊戲,在圍棋比賽中擊敗世界冠軍,模擬四足動物學習跑和跳,機器人學習完成程式設計無法實現的複雜操作任務。這些進展都屬於RL研究的範疇。我本人自去年起關注RL:我閱讀了

深度強化訓練點發出的Pong

這是一篇報道Reinforcement Learnning(RL)的部落格。RL是很熱門的!你可能已經注意到,電腦現在可以自動學習玩ATARI遊戲(從原始的 pixelsi遊戲中!),他們模擬的四足動物擊敗了世界冠軍,學習了跑步和跳躍。而且機器人正在學習如何執行復雜的操作任務

深度學習介紹系列之二】——深度強化學習卷積神經網路

介紹深度學習強化學習中的卷積神經網路 卷積神經網路的大致介紹我們在前一篇文章深度強化學習(一)中已經說過了。本篇文章會詳細介紹卷積神經網路的起源,發展和應用。本篇文章我們會從以下幾個方面介紹: 1)神經網路是什麼 2)卷積神經網路的起源與經典結構 3)卷積網路的

深度強化學習入門(Deep Reinforcement Learning: Scratching the surface)

本部落格是對學習李巨集毅教授在youtube上傳的課程視訊《Deep Reinforcement Learning: Scratching the surface》所做的筆記,供大家學習參考。 熱度起源 15年2月:Google在nature

陳俊龍深度強化學習到寬度強化學習—結構,演算法,機遇及挑戰

來源:AI科技評論摘要:如何賦予機器自主學習的能力,一直是人工智慧領域的研究熱點。強化學習與寬度

深度強化學習(一) Deep Q Network(DQN)

原文:https://blog.csdn.net/LagrangeSK/article/details/80321265 一、背景 DeepMind2013年的論文《Playing Atari with Deep Reinforcement Learning》指

萌新學習手冊級別角點檢測

在現實應用中我們的角點往往並不是整數,所以為了提高我們尋找角點的精確程度,我們需要進行處理,一般有三種方法 1.插值方法 2.基於影象矩計算 3.圖線擬合(高斯曲面,多項式,橢圓曲面)其中高斯曲面最為常用 具體的使用過程就是我們先用Shi-Tomasi角點檢測 把角點

CNTK與深度強化學習筆記之一 環境搭建和基本概念

如需轉載,請指明出處。 前言 深度強化學習是人工智慧當前的熱點,CNTK也是微軟力推的深度學習框架,2.x版本比之前有了長足的進步。目前國內將這兩者融合起來的文章還不多。因此寫作了這個學習筆記,希望能對大家有所幫助。 硬體,開發環境以及CNTK安裝 CN

學習轉HTML5前端+跨平臺開發(假連結(掌握))

假連結:點選之後不跳轉 假連結:點選之後不跳轉 <a href="#"><a><a href="JavaScript"><a>#的假連結會自動回到網頁的頂部,而javascript:的假連結不會自動回到網頁的頂部

如何基於spark做深度學習ML到keras、Elephas

http://blog.csdn.net/Richard_More/article/details/53215142 Elephas的網址:https://github.com/maxpumperla/elephas 分散式深層神經網路的Spark ML模型管線 該筆

學習轉HTML5前端+跨平臺開發(表單標籤-非input標籤(掌握))

form表單標籤 <form action = "提交到伺服器地址">       <表單元素> </form>常見的表單元素     <input type = "text" name = "username"> 明文輸入框 

####好好好好好#####如何基於Spark做深度學習Mllib到keras,elephas

Spark ML model pipelines on Distributed Deep Neural NetsThis notebook describes how to build machine learning pipelines with Spark ML for

學習轉HTML5前端+跨平臺開發(表單練習(理解))

單選框:radio,通過name屬性進行互斥;checked預設選中多選框:checkbox,通過name屬性進行互斥;checked預設選中下拉選中框:select除了按鈕型別的input標籤以外,其他的型別的標籤都可以通過一個value屬性來指定將來提交到伺服器的值提交:

深度學習MLP到樸素的神經網路

文章目錄 神經網路都幹了些什麼? 分類的理解: 從這個角度再看神經網路: 神經網路實現: 求∂L/∂w1,∂L/∂w2: 實現程式碼: 測試程式碼: 神經網路都幹了些什麼?

學習轉HTML5前端+跨平臺開發(表單標籤-按鈕(掌握))

【表單標籤——按鈕】(需要配合JS使用)1.普通按鈕<input type="button" value="我是按鈕”>2.圖片按鈕<input type="image" src="">3.重置按鈕<input type="reset">

學習轉HTML5前端+跨平臺開發(伺服器和瀏覽器 瞭解)

https://www.jianshu.com/p/f6da3875834b1、什麼是瀏覽器主流有5款瀏覽器;都有不同的核心;使用份額最高;處理相容問題,主要處理5種瀏覽器;Google國內國外使用份額最高;2、什麼是伺服器可以理解為超級計算機;伺服器也是一臺電腦,但是配置比

學習轉HTML5前端+跨平臺開發(video標籤(掌握))

A:video屬性:播放視訊  1.autoplay: 自動播放  2.controls: 控制條  3.poster: 佔位圖片  4..loop: 廣告視訊迴圈播放  5.muted: 靜音  6.preload: 預載入視訊和autoplay衝突  7.height:

學習轉HTML5前端+跨平臺開發(base標籤(掌握))

base標籤就是專門用來統一的指定當前網頁中的所有超連結(a標籤)需要如何開啟格式:        <head>                <base target="_blank">        </head>注意:必須寫在head

如何基於Spark做深度學習Mllib到keras,elephas

Spark ML model pipelines on Distributed Deep Neural Nets This notebook describes how to build machine learning pipelines with Spar

微軟鄧力深度強化學習在聊天機器人領域的應用

微軟人工智慧首席科學家鄧力在此前接受CSDN的採訪時曾表示深度強化學習是A.I. Bots的關鍵技術,在這篇發表於venturebeat的文章中,他詳細解析了為什麼需要A.I. Bots,A.I. Bots的實現,以及深度強化學習如何發揮作用。 在今年3月