神經網絡+增強學習
馬里奧AI實現方式探索 ——神經網絡+增強學習
兒時我們都曾有過一個經典游戲的體驗,就是馬里奧(頂蘑菇^v^),這次里約奧運會閉幕式,日本作為2020年東京奧運會的東道主,安倍最后也已經典的馬里奧形象出現。平時我們都是人來玩馬里奧游戲,能否可以讓馬里奧智能的自己闖關個呢?OK,利用人工智能的相關算法來進行自動化通關一直是一個熱門的話題,最近最火的相關東東就是傳說中的alphaGo啦。而在游戲的自動化測試當中,這種算法也是非常實用的,可以大量的減少測試人力成本。
首先,對於實現馬里奧AI當中涉及到的神經網絡和增強學習的相關概念進行整理,之后對智能通關的兩種方式進行闡述。(本人才疏學淺,在神經網絡和增強學習方面基本門外漢,如有任何紕漏,還請大神指出,我會第一時間改正。)
神經網絡
像飛機的靈感來源於鳥類,雷達的靈感來源於蝙蝠,紅外線的靈蓋來源於蛇,而本文要討論的神經網絡靈感來源於我們自己,人類大腦的神經元結構。從神經元結構被提出,到時下火熱的無以復加的深度神經網絡,發展過程也可為一波三折。我們按照時間的順序,對一些經典的神經網絡模型進行整理:
M-P模型
40年代初心理學家 W.W.Mcculloch 和梳理邏輯家 W.Pitts 提出 M-P 模型(為啥叫M-P模型,看看這兩位大牛的名字,也不考慮下我們非英語系國家人民的感受。。。),神經網絡被引入到計算機領域當中,其最初起源的靈感就是人類大腦中的神經元,如下圖:
生物學上具體的專業術語我們這里不展開描述,我們總結一下神經元結構的特點:
- 每個神經元都是一個多輸入單輸出的信息處理單元;
- 神經元輸入分興奮性輸入和抑制性輸入兩種類型;
- 神經元具有空間整合特性和閾值特性;
- 神經元輸入與輸出間有固定的時滯,主要取決於突觸延擱。
由此兩位大牛提出了神經網絡的早期M-P模型,如下圖:
該模型的基本思想很簡單,就是仿照神經元接受多個輸入信號,由於突觸的性質和突觸強度不同,所以對神經元的影響程度不同,我們加上了權重的概念,其正負模擬了神經元中的興奮和抑制作用,最后所有信號累加整合,其值為:
輸入信號有了,神經元是否被激活,要看輸入信號是否超過了某一閾值電位,如果被激活神經元輸出脈沖,否則神經元不會輸出信號,其過程如下函數:
當然這里我們也可以寫成矩陣的形式
類似神經元結構的特點,經典的M-P模型的特點可以總結如下:
- 每個神經元都是一個多輸入單輸出的信息處理單元;
- 神經元輸入分興奮性輸入和抑制性輸入兩種類型;
- 神經元具有空間整合特性和閾值特性;
- 神經元輸入與輸出間有固定的時滯,主要取決於突觸延擱;
- 忽略時間整合作用和不應期;
- 神經元本身是非時變的,即其突觸時延和突觸強度均為常數。(神經網絡中權重在訓練結束后是固定的)
結合兩個公式來看這幾個特點:對於特點1,我們的公式有多個x輸入信號,但我們的輸出信號只有一個o;權重的正負體現了特點2中輸入分興奮和抑制;對於第3個特點,我們第2個公式中只有當輸入信號的累加和超出電位閾值才會有輸出;另外我們的公式只考慮了所有輸入信號的整合,並沒有去考慮時間整合(就是不管你信號早到晚到,只要到了都是好信號),體現了特性4和5。
隨着M-P模型的提出,神經網絡的研究有三次興起,最近的一次就是隨着卷積神經網絡提出的深度學習的火熱。
早期神經網絡
M-P模型很簡單,僅僅是一種單個神經元上的建模,並沒有形成網絡,沒法去完成一些特定的任務。由此人們提出了神經網絡的概念,而早期的研究,由於當時硬件水平和計算條件的限制,神經網絡結構一般比較簡單。
兩層神經網絡
由此1958年,計算科學家Rosenblatt提出了由兩層神經元組成的神經網絡。他給它起了一個名字“感知器”(Perceptron)
其結構如下圖:
這種簡單的單層神經網絡有點類似於邏輯回歸,通過簡單的權重訓練,能夠處理簡單的線性分類問題,類似下圖:
而對於非線性的分類問題(如經典的異或問題)卻無能為力,后來研究人員也發現了這一點,神經網絡研究遍進入了低谷期(好傷心TT)
三層神經網絡(帶有隱層)
問題總是用來解決的嘛,既然兩層神經網絡hold不住非線性分類問題,那么我們就加一層,稱為隱含層,由此而來的三層神經網絡如下圖:
這種三層神經網絡具有非常好的非線性分類效果,其計算公式如下:
當然啦,就像我們平時的邏輯回歸模型一樣,bias在模型中是必不可少的,所以我們在原有結構上加入偏置節點,結構圖如下:
神經網絡中偏置節點是默認存在的,而且它非常特殊,就是沒有輸入,並且會輸出的后一層的所有節點。加入偏置節點后計算公式如下:(一般情況下,偏置節點不會被畫出來)
與兩層神經網絡不同,理論證明三層神經網絡能夠無限逼近任意連續函數。這里我們不禁會有疑問,我們知道兩層神經網絡是線性分類問題,那么兩個線性問題拼在一起為什么就可以解決非線性分類問題了呢?
上圖很好的解釋了我們的疑問。首先上圖左側部分可以看出,三層神經網絡的決策分界非常平滑,而且分類的很好。而上圖右側部分展示了該圖經過空間變換后的結果,我們可以看到輸出層的決策分界仍然是直線,關鍵是,從輸入層到隱含層時,發生了空間變換。
也就是說三層神經網絡可以做非線性分類的關鍵便是隱含層的加入,通過矩陣和向量相乘,本質做了一次線性變換,使得原先線性不可分的問題變得線性可分。所以多層神經網絡本質就是復雜函數的擬合。
現在三層神經網絡結構定了,如何來進行網絡的訓練,這就需要用到反向傳播算法(本質就是梯度下降,還說的這兒玄乎<-T->)
BP算法
上面我們提到兩層神經網絡,其中隱層的權值是需要我們學習的,而這個權值我們不能直接獲取,所以我們利用輸出層得到輸出結果和期望輸出的誤差來間接調整隱層的權值。BP算法的學習過程由信號的正向傳播和誤差的反向傳播兩個過程組成。
- 正向傳播時,輸入樣本從輸入層傳入,經各隱層逐層處理后,傳向輸出層。若輸出層的實際輸出與期望的輸出(教師信號)不符,則轉入誤差的反向傳播階段。
- 反向傳播時,將輸出以某種形式通過隱層向輸入層逐層反傳,並將誤差分攤給各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號即作為修正各單元權值的依據。
下圖展示了整個BP算法的信號流程圖:
BP網絡有三個要素:
- 網絡拓撲結構
- 傳遞函數
- 學習算法
網絡拓撲結構便是我們之前總結的兩層神經網絡結構,我們主要從傳遞函數和學習算法進行整理闡述下。
傳遞函數
首先什么是傳遞函數呢?請看下圖:
圖中是最基本的單個神經元的模型,針對於多個輸入,我們會進行整合並利用一個非線性函數進行輸出,函數的要求必須是可微單調遞增函數,通常采用非線性變換函數———sigmoid函數也稱S函數(形狀),有單極性S型函數和雙極性S型函數兩種(高中數學里的東東)。
-
單極性S型函數定義如下:
函數曲線圖如下(似乎不夠S。。) -
雙極性S型函數定義如下:
函數曲線圖如下:
可以看出根據上面的S函數,我們會整合所有輸入,輸出一個新的值,從之前生物學的原理來看也就是說神經元是否被激活。
學習算法
學習算法是BP神經網絡結構的核心,也是兩層神經網絡有一次興起的重要原因,因為人們找到了如何去訓練一個神經網絡來達到我們預期的分類效果(擬合不同的非線性連續函數)。而BP算法(反向傳播算法)的本質其實就是一種逐層梯度下降。
我們以三層感知器為例,當網絡輸出與期望輸出不一致時,存在誤差E,定義如下:
將以上誤差反向逐層展開(體現了反向傳播算法中的反向含義)
最終我們展開到輸入層如下:
根據上式我們發現誤差E是的函數,我們發現調整權值可以改變誤差E的大小,而調整權值的原則是使得誤差不斷減小。因此我們應該使得權值與誤差的梯度下降成正比,如下:
其中值得注意的是表示學習效率,即權重調整的幅度。
我們可以看出對於權重的調整是從輸出層逐層反傳過來的,而且我們也發現我們在梯度下降的過程中需要求導,這也就是我們在最初要求傳遞函數可微的原因
深度神經網絡
有三層神經網絡,我們自然而然就會想到將神經網絡加入更多層,擴展到深度神經網絡,但是一個非常顯著的問題就是參數的個數,比如之前我們的三層神經網絡每層有1000個節點,那么我們需要調整的權值參數就達到了10^9量級,這問題限制了很大程度上限制了深度神經網絡的發展。這就要把大哥叫出來幫忙了,就是近期一直火熱的deep learning,由於本人在這方面也是門外漢,只從經典的卷積神經網絡(CNN)進行一些歸納整理。
CNN的解決之道
根據網上的資料總結,CNN的核心點有三個:
-
局部感知:形象地說,就是模仿你的眼睛,想想看,你在看東西的時候,目光是聚焦在一個相對很小的局部的吧?嚴格一些說,普通的多層神經網絡,隱層節點會全連接到一個圖像的每個像素點上,而在卷積神經網絡中,每個隱層節點只連接到圖像某個足夠小局部的像素點上,從而大大減少需要訓練的權值參數。我們用兩張對比圖來說明下:
從圖中我們可以看出,對於一張1000×1000像素的圖片,假設神經網絡中的隱節點有1M個。對於傳統的深度神經網絡,所有的隱節點會連接到圖像中的每個像素點,那么我們需要訓練的權重參數就達到了匪夷所思的10^12量級。而CNN提出局部感知,即圖中右側展示的,每個神經元只與10×10個像素值相連,那么我們的權重參數就下降到10^8,參數數量為原來的萬分之一(雖然還是很多TT) -
權值共享:形象地說,就如同你的某個神經中樞中的神經細胞,它們的結構、功能是相同的,甚至是可以互相替代的。局部感知的方式在一定程度上減少了參數,那么另一個減少參數的神器便是權值共享。在上面我們提到的局部感知的例子中,對於1M個神經元,每個神經元需要局部感知10×10個像素點,那么參數個數是100×1M個,那么如果我們在這里假設每個神經元的權重參數都是相同的,那么我們的參數個數就會驟減到100個,很誇張對不拉,做到這一步的神器便是卷積操作。
權值共享基於的原理或者說假設是圖像中局部的統計特征與其他部分是一樣的,也就意味着假設我們在圖像的局部學習到了一組特征,那么我們可以直接將這組特征應用到圖像的其它部分。就拿上面的例子來看,我們假設在第一個神經元中學習到了局部10×10像素點的特征,那么我們完全可以將這個特征應用在圖像的其他位置上,那么我們另外的1M-1的神經元權重參數就不需要訓練了,所以我們只需要訓練第一個神經元的權重參數即可,而這第一個神經元得到的局部特征稱為卷積核。當然啦,我們不會這么變態的只用一個卷積核,這樣對於圖像特征的提取也是不充分的,所以往往CNN中都會有多個卷積核來進行卷積操作,每個卷積核會提取出圖像某一方面的特征。如下圖展示了卷積操作的基本原理:
圖中展示了一個3×3的卷積核在5×5的圖像上做卷積的過程。每個卷積都是一種特征提取方式,就像一個篩子,將圖像中符合條件(激活值越大越符合條件)的部分篩選出來。 -
池化:形象地說,你先隨便看向遠方,然后閉上眼睛,你仍然記得看到了些什么,但是你能完全回憶起你剛剛看到的每一個細節嗎?不能(也沒必要),我們通常會提取整個圖像中一些關鍵的點作為一種“映像”放到腦海中。同樣,在卷積神經網絡中,通過卷積獲得了特征之后,下一步我們需要利用這些特征去做分類,當然我們可以利用所有這些特征去做分類(如softmax分類器),但同樣的這里又會遇到我們的老問題,計算量過大。所以,在進行分類之前,我們利用人類判別圖片記錄關鍵特征的原理,同樣在處理卷積層輸出的特征時,我們也可以做一些“壓縮”或者說提取處理,這種方法被稱為池化(Down-pooling)。以最大池化(Max Pooling)為例,1000×1000的圖像經過10×10的卷積核卷積后,得到的是991×991的特征圖(參考上圖5×5圖像經過卷及操作變成了3×3的圖像),然后使用2×2的池化規模,即每4個點組成的小方塊中,取最大的一個作為輸出,最終得到的是496×496大小的特征圖。池化得原理我們可以用下圖形象的說明:
CNN整體結構
上面我們從CNN的三個核心點出發,闡述了CNN的基本原理,下圖我們列出了CNN的整體結構:
圖中從左至右描述了CNN神經網絡的幾個不同層
- 輸入層(圖像):在CNN神經網絡的輸入當中,一般為了減少復雜度,往往采用灰度化后的圖像作為輸入,而如果使用RGB的彩色圖像,那么輸入會分為RGB三個分量圖像。輸入圖像一般都需要歸一化,常規的可以使用我們前面闡述的sigmoid函數,歸一化到[0,1],如果使用tanh激活函數,則歸一化到[-1, 1]。這一部分我們涉及到了我們上面闡述的局部感知的方式來減少參數。
- 多個卷積(C)-下采樣(S)層:將上一層的輸出與本層權重W做卷積得到各個C層,然后下采樣得到各個S層,這一部分主要涉及了我們上面闡述的三個核心點中的卷積和池化操作,而這些層的輸出稱為Feature Map。
- 光柵化(X):是為了與傳統的多層感知器全連接。即將上一層的所有Feature Map的每個像素依次展開,排成一列。
- 傳統的多層感知器(N&O):最后的分類器一般使用Softmax,如果是二分類,當然也可以使用邏輯回歸LR。
至此關於CNN的基本原理基本闡述完畢啦,關於CNN的參數訓練等內容這里不再贅述,可以參考Deep learning:五十一(CNN的反向求導及練習)
總結
~長出一口氣~,從最一開始單個神經元模型的提出,到兩層和三層的簡單神經網絡,再到時下火熱的深度學習,我們可以用下圖從時間上進行一個大致的梳理:
我們可以看到,神經網絡的發展經歷了三次跌宕起伏:
- 感知器:第一次興起的研究點便是科研人員利用兩層神經網絡(起了個玄乎的名字感知器)進行了簡單的分類問題,當時的人們大呼找到了人工智能的奧秘,從而興起了對神經網絡的研究,但是隨着眾多學者發現兩層感知器只能完成最簡單的線性分類問題,對於經典的異或分類問題都無法完成時,神經網絡陷入低谷。
- BP算法:第二次興起的關鍵點便是BP算法的提出,當人們發現兩層神經網絡無法勝任非線性分類問題時,已經想到了增加神經網絡層數,但是隨着網絡層數的增加,權重參數如何訓練的問題無法解決,直到BP反向傳播算法的提出,解決了這一問題,從而發生了神經網絡的又一次興起。但是隨之而來的其它算法,如SVM,等算法的提出,人們發現這些算法的通用性和可計算性都優於神經網絡,神經網絡進入到了第二次低谷。
- 深度學習:第三次興起的關鍵點便是時下火熱的深度學習了,它的標致之一便是CNN卷積神經網絡的提出,將它用於圖像分類問題當中(當然了這也離不開硬件水平的提高,比如高並行的GPU誕生)。
而對於每次神經網絡可解決的問題,我們可以用下圖來闡述:
上圖中我們可以看出,隨着神經網絡的發展,我們在解決最基本的分類問題時的效果越來越好,這也是神經網絡的魅力所在啦^v^。當然在神經網絡發展的過程當中,計算機硬件水平的發展也是不容忽視的,隨着計算能力和性能的提高,原來不可能實現的想法、算法都能付諸實踐進行試驗。
增強學習
機器學習領域,我們都知道兩位大哥就是監督學習和非監督學習,我們有樣本X和標記或者未標記的Y,我們通過訓練可以做一些分類或者聚類的任務。但是,對於一些序列決策或者控制問題,是很難得到上面那樣的規則樣本的,比如機器人的控制問題,決策機器人下一步該怎么走,那么這時我們就需要清楚另外一位大哥——增強學習,雖然他似乎曝光度並不是很高,那么何謂增強學習呢?
增強學習(Reinforcement Learning, RL),其英文定義如下:
Reinforcement learning is learning what to do ----how to map situations to actions ---- so as to maximize a numerical reward signal.[6]
也就是說增強學習關注的是智能體如何在環境中采取一系列行為,從而獲得最大的累積回報。
通過增強學習,一個智能體(agent)應該知道在什么狀態下應該采取什么行為。RL是從環境狀態到動作的映射的學習,我們把這個映射稱為策略。
馬爾可夫決策過程(MDP)
一提到馬爾科夫,大家通常會立刻想起馬爾可夫鏈(Markov Chain)以及機器學習中更加常用的隱式馬爾可夫模型(Hidden Markov Model, HMM)。它們都具有共同的特性便是馬爾可夫性:當一個隨機過程在給定現在狀態及所有過去狀態情況下,其未來狀態的條件概率分布僅依賴於當前狀態;換句話說,在給定現在狀態時,它與過去狀態(即該過程的歷史路徑)是條件獨立的,那么此隨機過程即具有馬爾可夫性質。具有馬爾可夫性質的過程通常稱之為馬爾可夫過程。[7]
之后我們便來說說馬爾可夫決策過程(Markov Decision Process),其也具有馬爾可夫性,與上面不同的是MDP考慮了動作,即系統下個狀態不僅和當前的狀態有關,也和當前采取的動作有關。
用表格描述馬爾可夫各個模型的關系(摘自[8])
基本定義
一個馬爾可夫決策過程由五元組組成
- S:表示狀態集(states)
- A:表示一系列動作(actions)
:表示狀態轉移概率。
表示的是在當前s ∈ S狀態下,經過a ∈ A作用后,會轉移到的其他狀態的概率分布情況。比如,在狀態s下執行動作a,轉移到s'的概率可以表示為p(s'|s,a)。
(dicount factor):表示阻尼系數[0,1)
- R:
,表示回報函數(reward function)
MDP 的動態過程如下:某個智能體(agent)的初始狀態為s0,然后從 A 中挑選一個動作a0執行,執行后,agent 按概率隨機轉移到了下一個s1狀態,s1∈
。然后再執行一個動作a1,就轉移到了s2,接下來再執行a2…,我們可以用下面的圖表示狀態轉移的過程。
如果回報r是根據狀態s和動作a得到的,則MDP還可以表示成下圖:
值函數
上面我們給出了MDP的定義,作為一個智能體(agent),當它在決定下一步應該走什么時,最簡單的方式就是看下Reward函數的值是多少,即比較走不同動作的回報,從而做出決定。但是就像下棋的時候,我們每走一步都會向后考慮,所謂“走一步看三步”,所以這里我們只看一步即一次Reward函數是不夠的,這就引出了值函數(Value Function)也叫折算累積回報(discounted cumulative reward)。
狀態值函數(state value function)
當我們遵循某個策略,我們將值函數定義如下:
我們將上面的式子寫作遞推的樣子如下:
另外當策略,在狀態s時,我們可以確定唯一的動作a,但是s經過動作a會進入哪個狀態是不唯一的,比如同樣是擲骰子操作,可能得到的狀態有6種,那么利用Bellman等式我們便可以得到下面的公式:
再根據我們最初增強學習的目的,我們便可以得出,求V的目的就是想找到一個當前狀態s下,最優的行動策略,表示如下:
動作值函數(action value function)
上面我們的值函數的只與狀態s有關,如果與狀態s和動作a都有關,便稱為動作值函數,即所謂的Q函數,如下:
從上式我們可以看出,我們不僅僅依賴狀態s和策略,並且還依賴於動作a。
綜上我們可以將MDP的最優策略定義如下:
關於MDP的求解主要分為值迭代和策略迭代,分別站在不同的角度對MDP進行求解,這里我們不在贅述,網上有很多相關資料。下面我們簡單闡述下動作值函數的值迭代求解方式,即所謂的Q-learning
Q學習
Q學習的基本迭代公式如下:
從公式中我們也可以看出它是一種值迭代方式,因為我們每次更新的是Q函數的值,而非策略。簡單起見,整理一個簡單的例子加以說明。
假設我們有這樣一個房間:
我們的目的是訓練一個機器人,使得它在圖中的任意一個房間都能夠到達房間外。
OK,我們對房間進行建模:
並得到reward矩陣:
通過一下過程的迭代我們最終得出了我們的結果Q矩陣
可以看出,我們的機器人現在無論在哪個房間,都可以利用我們的Q矩陣順利的走到屋外。
噗噗噗,終於寫到這里了,綜上我們將馬里奧只能AI需要用到的算法簡單整理了下(如有任何謬誤請指出^v^)。下面我們結合兩種成熟的算法,歸納整理馬里奧AI的兩種實現方式。
基於NEAT算法的馬里奧AI實現
所謂NEAT算法即通過增強拓撲的進化神經網絡(Evolving Neural Networks through Augmenting Topologies),算法不同於我們之前討論的傳統神經網絡,它不僅會訓練和修改網絡的權值,同時會修改網絡的拓撲結構,包括新增節點和刪除節點等操作。
NEAT算法幾個核心的概念是:
- 基因:網絡中的連接
- 基因組:基因的集合
- 物種:一批具有相似性基因組的集合
- Fitness:有點類似於增強學習中的reward函數
- generation:進行一組訓練的基因組集合,每一代訓練結束后,會根據fitness淘汰基因組,並且通過無性繁殖和有性繁殖來新增新的基因組
- 基因變異:發生在新生成基因組的過程中,可能會出現改變網絡的權重,增加突出連接或者神經元,也有可能禁用突觸或者啟用突觸
下圖我們展示了算法從最一開始簡單的神經網絡,一直訓練到后期的網絡
利用NEAT算法實現馬里奧的只能通關的基本思想便是,利用上面NEAT算法的基本觀點,從游戲內存中獲取實時的游戲數據,判斷馬里奧是否死忙、計算Fitness值、判斷馬里奧是否通關等,從而將這些作為神經網絡的輸入,最后輸出對馬里奧的操作,包括上下左右跳躍等操作,如下圖:
大多數該算法實現馬里奧的智能通關都依賴於模擬器,運用lua語言編寫相應腳本,獲取游戲數據並操作馬里奧。NeuroEvolution with MarI/O。實現效果圖如下:
基於Deep Reinforcement Learning的馬里奧AI實現
NEAT算法是相對提出較早的算法,在2013年大名鼎鼎的DeepMind提出了一種深度增強學習的算法,該算法主要結合了我們上面討論的CNN和Q-Learning兩種算法,DeepMind的研究人員將該算法應用在Atari游戲機中的多種小游戲中進行AI通關。
其基本算法核心便是我們之前介紹的CNN和增強學習的Q-Learning,游戲智能通關的基本流程如下圖:
利用CNN來識別游戲總馬里奧的狀態,並利用增強學習算法做出動作選擇,然后根據新的返回狀態和歷史狀態來計算reward函數從而反饋給Q函數進行迭代,不斷的訓練直到游戲能夠通關。研究人員在訓練了一個游戲后,將相同的參數用在別的游戲中發現也是適用的,說明該算法具有一定的普遍性。下圖反映了一個學習的過程
而同樣的方法,將DRL應用在馬里奧上,github上有一個開源的實現方式:aleju/mario-ai
其最終的實現效果圖如下:
我們發現在CNN識別過程中,每4幀圖像,才會進行一次CNN識別,這是識別速率的問題,圖中曲線反映了直接回報函數和簡介回報函數。
總結
綜上便是從最基本的神經網絡算法+增強學習,到將這些算法用在智能AI上的一些基本整理,長舒一口氣,整理了好久。。。關於智能AI的應用有很多,也跟好多小伙伴討論過,包括智能測試、新式游戲、游戲平衡性調整以及AI機器人的加入。這個領域除了枯燥的理論知識還能玩游戲,想想有點小激動。總結完畢,如有任何紕漏還請指出,我會盡快修改,謝謝^v^。
參考文獻:
- 漫談ANN(1):M-P模型
- 漫談ANN(2):BP神經網絡
- 卷積神經網絡
- 卷積神經網絡全面解析
- 重磅!神經網絡淺講:從神經元到深度學習
- R.Sutton et al. Reinforcement learning: An introduction , 1998
- 馬爾可夫性質
- 增強學習(二)----- 馬爾可夫決策過程MDP
- 增強學習(三)----- MDP的動態規划解法
- 增強學習(Reinforcement Learning and Control)
- wiki-Q-learning
- Q-Learning example
- Stanley K O, Miikkulainen R. Evolving neural networks through augmenting topologies[J]. Evolutionary computation, 2002, 10(2): 99-127.
- Wang Y, Schreiber B. Creating a Traffic Merging Behavior Using NeuroEvolution of Augmenting Topologies[J]. 2015.
- Cussat-Blanc S, Harrington K, Pollack J. Gene regulatory network evolution through augmenting topologies[J]. IEEE Transactions on Evolutionary Computation, 2015, 19(6): 823-837.
- Mnih V, Kavukcuoglu K, Silver D, et al. Playing atari with deep reinforcement learning[J]. arXiv preprint arXiv:1312.5602, 2013.