- 深度強(qiáng)化學(xué)習(xí)算法與實(shí)踐:基于PyTorch的實(shí)現(xiàn)
- 張校捷編著
- 3212字
- 2022-05-06 17:08:27
1.1.1 人工智能的歷史
要講述強(qiáng)化學(xué)習(xí)的歷史,首先需要談一下人工智能的歷史,因?yàn)閺谋话l(fā)明開始,強(qiáng)化學(xué)習(xí)就一直被認(rèn)為是實(shí)現(xiàn)人工智能的一種重要算法。從計(jì)算機(jī)誕生以來,人類就對(duì)人工智能(Artificial I ntelligence, AI)領(lǐng)域的研究抱有濃厚的興趣。在人們通常的觀念中,人工智能常常被用于描述使用計(jì)算機(jī)來模擬人類的認(rèn)知(如對(duì)話、學(xué)習(xí)、解決問題等),并且使計(jì)算機(jī)能夠在外觀上表現(xiàn)出一定的智能行為(比如能和人類進(jìn)行交互,或者解決數(shù)學(xué)題等)。為了實(shí)現(xiàn)使用計(jì)算機(jī)來表現(xiàn)出一定智能的目標(biāo),接下來需要考慮的就是如何設(shè)計(jì)實(shí)用的算法讓計(jì)算機(jī)表現(xiàn)出智能的行為。
人們對(duì)于底層算法的設(shè)計(jì)思想也經(jīng)歷了好幾個(gè)階段的變化。在計(jì)算機(jī)誕生的最初階段(20世紀(jì)六七十年代),因?yàn)橛?jì)算機(jī)的運(yùn)算能力有限,人們最先考慮到的是如何設(shè)計(jì)一定的數(shù)據(jù)結(jié)構(gòu)和對(duì)應(yīng)的算法,讓人們能夠用數(shù)據(jù)結(jié)構(gòu)來描述知識(shí),并且能夠在需要的時(shí)候從數(shù)據(jù)結(jié)構(gòu)中提取相應(yīng)的知識(shí)。在這一階段,出現(xiàn)了LISP語言,該語言使用鏈表作為數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)特定領(lǐng)域的知識(shí)(這也是LISP語言的名稱來源,LISt Processing Language,即鏈表處理語言),并且使用這些知識(shí)來解決問題(如進(jìn)行簡單的自然語言處理)。同時(shí),在這一階段,也出現(xiàn)了最簡單的神經(jīng)網(wǎng)絡(luò)的雛形——感知機(jī)(Perceptron),能夠解決簡單的分類模型。當(dāng)然,在這一階段,受限于有限的計(jì)算能力,人們的研究主要集中在如何使用這些人工智能算法進(jìn)行簡單的邏輯推理和簡單的分類。同時(shí),人們對(duì)于這方面研究的熱情以及對(duì)其未來抱有的希望很大。因此,在這一階段,大量的資源被投入到了人工智能的研究中。然而物極必反,當(dāng)人們發(fā)現(xiàn)這些層出不窮的算法能夠解決的問題十分有限的時(shí)候,人工智能的研究在20世紀(jì)70年代到20世紀(jì)80年代遭遇了“嚴(yán)冬”。當(dāng)時(shí)有科學(xué)家指出,人工智能在解決簡單問題的時(shí)候往往是有效的,但是隨著待解決問題規(guī)模的擴(kuò)大(比如問題的輸入和限制條件的增加),當(dāng)時(shí)的人工智能算法(以及計(jì)算能力)并不能適應(yīng)問題規(guī)模的爆炸性增長(即所謂的“組合性爆炸”問題),所以當(dāng)時(shí)人工智能算法應(yīng)用的局限性非常大。隨著當(dāng)時(shí)人工智能算法的種種局限性被指出來,同時(shí)很多人工智能算法也有很好的替代算法,人工智能的研究陷入了“嚴(yán)冬”。在這個(gè)時(shí)期,原來各國政府投入的資金也被逐漸收回,同時(shí)新的人工智能相關(guān)的研究很難獲得資助。
上述情況一直持續(xù)到20世紀(jì)80年代初。在這個(gè)時(shí)間點(diǎn),人們的興趣逐漸轉(zhuǎn)移到一類人工智能的系統(tǒng),即所謂的“專家系統(tǒng)”(Expert System)上。通過結(jié)合人類在特定領(lǐng)域的知識(shí),以及一定的邏輯推理,計(jì)算機(jī)開始能夠回答專業(yè)領(lǐng)域的一些問題,即表現(xiàn)出一定的人工智能的特性。這些系統(tǒng)一般設(shè)計(jì)的領(lǐng)域都比較特定,而且對(duì)應(yīng)的查詢知識(shí)的邏輯也比較簡單,易于在計(jì)算機(jī)上實(shí)現(xiàn),因此得到了蓬勃的發(fā)展。在這段時(shí)間里,涌現(xiàn)了很多專家系統(tǒng),包括一些智能的訂單處理系統(tǒng)和計(jì)算機(jī)代數(shù)的專家系統(tǒng),在各自領(lǐng)域得到了廣泛應(yīng)用,而且取得了相當(dāng)好的成果。專家系統(tǒng)在解決實(shí)際問題方面的成功表現(xiàn)讓人們認(rèn)識(shí)到了知識(shí)的表示和基于知識(shí)的推理這兩方面算法的重要性,因?yàn)閷<蚁到y(tǒng)的成功同時(shí)依賴于這兩個(gè)方面。同時(shí),專家系統(tǒng)也打破了人們對(duì)于人工智能的初始認(rèn)識(shí)。一開始,人們認(rèn)為人工智能需要有廣泛性,能夠通過一個(gè)單一的算法解決所有領(lǐng)域的問題。但事實(shí)證明,這樣的想法在實(shí)踐上并不可能,反而像專家系統(tǒng)這樣的算法在狹窄的知識(shí)領(lǐng)域能夠取得成功。除了專家系統(tǒng),人們?cè)?010年后廣泛使用的深度學(xué)習(xí)理論的基礎(chǔ)——人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks, ANN)也在這段時(shí)間中取得了重大進(jìn)步。其中一個(gè)重要的算法就是現(xiàn)階段用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的反向傳播(Backpropagation, BP)算法。通過讓梯度在神經(jīng)網(wǎng)絡(luò)中進(jìn)行反向傳播,得到所有神經(jīng)元權(quán)重的梯度,并且用基于梯度的優(yōu)化算法對(duì)神經(jīng)元權(quán)重進(jìn)行優(yōu)化。反向傳播算法的出現(xiàn)為多層感知機(jī)(MultiLayer Perceptron, MLP)的發(fā)展鋪平了道路,也為神經(jīng)網(wǎng)絡(luò)(包括現(xiàn)在的深度學(xué)習(xí))的廣泛應(yīng)用打下了基礎(chǔ)。在這段時(shí)間,基于神經(jīng)網(wǎng)絡(luò)的人工智能算法也開始逐漸被應(yīng)用于光學(xué)文字識(shí)別(Optical Character Recognition, OCR)和語音識(shí)別(Acoustic Speech Recognition, ASR)領(lǐng)域上。當(dāng)然,人工智能領(lǐng)域在這段時(shí)間的發(fā)展不僅得益于新的算法開發(fā),其實(shí)另一個(gè)重要的原因是計(jì)算機(jī)硬件性能的極速增加。超大規(guī)模集成電路的應(yīng)用使得計(jì)算機(jī)的計(jì)算能力得到了飛躍性的提高,這也讓很多以前在想象中才能運(yùn)行的算法逐漸成為現(xiàn)實(shí)。結(jié)合現(xiàn)階段(如深度強(qiáng)化學(xué)習(xí)領(lǐng)域),我們會(huì)發(fā)現(xiàn),計(jì)算機(jī)算力對(duì)于很多人工智能算法的實(shí)現(xiàn)起著至關(guān)重要的作用。
在接下來的一段時(shí)期,人工智能領(lǐng)域經(jīng)歷了一次衰退的低谷。隨著桌面計(jì)算機(jī)的出現(xiàn),以及計(jì)算機(jī)硬件的運(yùn)算速度的飛速提高,導(dǎo)致新型的通用計(jì)算機(jī)逐漸占據(jù)了原來專用的人工智能硬件(如前述的專家系統(tǒng)采用的計(jì)算機(jī)硬件)市場,進(jìn)一步導(dǎo)致對(duì)應(yīng)硬件上運(yùn)行的軟件算法逐漸變得無人問津。同時(shí)專家系統(tǒng)昂貴的維護(hù)費(fèi)用也使得對(duì)應(yīng)的算法逐漸衰落,因?yàn)閷<蚁到y(tǒng)的設(shè)計(jì)需要考慮到許多現(xiàn)實(shí)的問題,比如各種邊界條件,以及輸入的前置條件等。這些現(xiàn)實(shí)問題同時(shí)也使得專家系統(tǒng)往往只能局限在某一領(lǐng)域發(fā)揮作用,無法推廣到更廣義的通用人工智能領(lǐng)域上。同時(shí),在這段時(shí)期,雖然計(jì)算機(jī)硬件的運(yùn)算速度已經(jīng)有了長足的進(jìn)步,但是受限于神經(jīng)網(wǎng)絡(luò)需要消耗大量的計(jì)算資源來進(jìn)行訓(xùn)練,神經(jīng)網(wǎng)絡(luò)也沒像目前(2010—2020年)一樣容易大規(guī)模地快速訓(xùn)練和部署。因此,還處在非常初級(jí)的階段,并沒有引起很多人的興趣。這些共同的原因讓人工智能的發(fā)展進(jìn)入了第二次低谷。
從20世紀(jì)90年代中后期開始,隨著計(jì)算機(jī)技術(shù)的發(fā)展,以及硬件計(jì)算能力的大幅提高,人工智能迎來了第三波快速發(fā)展。從這段時(shí)間開始,計(jì)算機(jī)的硬件已經(jīng)能夠支持大規(guī)模的計(jì)算(尤其是搜索和剪枝算法)。人們也據(jù)此發(fā)展了一系列新的算法來解決各種現(xiàn)實(shí)中的問題。在這段時(shí)間最有名的事件莫過于1996年深藍(lán)超級(jí)計(jì)算機(jī)在國際象棋上擊敗了國際象棋大師卡斯帕羅夫。通過使用Alpha-Beta剪枝算法,深藍(lán)能夠平均對(duì)某一個(gè)局勢(shì)搜索6~8步,而且能夠每秒鐘估計(jì)1億次棋盤的局面,基本上已經(jīng)能和國際象棋大師的水平旗鼓相當(dāng)。這樣的計(jì)算量以當(dāng)時(shí)的水平來說,需要同時(shí)使用最優(yōu)秀的算法,并且運(yùn)行在最快的超級(jí)計(jì)算機(jī)上。可以說,深藍(lán)的成功同時(shí)結(jié)合了當(dāng)時(shí)人工智能領(lǐng)域在硬件和軟件上最先進(jìn)的水平。基于決策樹和剪枝算法的價(jià)值在于,通過把人工智能算法抽象為智能體在某一環(huán)境下的決策過程,在一定程度上向著通用人工智能的目標(biāo)邁出了重要的一步。在這段時(shí)間內(nèi),融合了心理學(xué),最優(yōu)控制理論等學(xué)科的強(qiáng)化學(xué)習(xí)也逐漸產(chǎn)生了自身的雛形,開始產(chǎn)生一些基礎(chǔ)的算法,比如時(shí)間差分學(xué)習(xí)(Temporal-Difference, TD)算法。當(dāng)然,在這段時(shí)間里,人們也逐漸開始對(duì)神經(jīng)網(wǎng)絡(luò)有了一定的研究,神經(jīng)網(wǎng)絡(luò)也逐漸開始在工業(yè)界得到一定的應(yīng)用。
到了21世紀(jì),計(jì)算機(jī)的算力得到了更加長足的進(jìn)步。2011年可以認(rèn)為是深度學(xué)習(xí)的元年,從這一年開始,人們將傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)進(jìn)行了一定的算法和網(wǎng)絡(luò)連接上的改造,成為現(xiàn)在所說的“深度學(xué)習(xí)”。深度學(xué)習(xí)在很多領(lǐng)域超越了之前廣泛應(yīng)用于工業(yè)界的機(jī)器學(xué)習(xí)算法,尤其是在計(jì)算機(jī)視覺和自然語言處理領(lǐng)域。同時(shí),由于大數(shù)據(jù)概念的出現(xiàn),深度學(xué)習(xí)算法更加如虎添翼,顛覆了很多領(lǐng)域。從強(qiáng)化學(xué)習(xí)的角度來說,深度學(xué)習(xí)模型的出現(xiàn)也改變了強(qiáng)化學(xué)習(xí)的生態(tài)。很多之前用機(jī)器學(xué)習(xí)完成的任務(wù)(比如策略函數(shù)、值函數(shù)、Q函數(shù)等)可以直接使用深度神經(jīng)網(wǎng)絡(luò)來近似。同時(shí),深度學(xué)習(xí)也讓強(qiáng)化學(xué)習(xí)可以直接以圖像、視頻等數(shù)據(jù)作為輸入,從而避免了使用傳統(tǒng)機(jī)器學(xué)習(xí)模型常見的特征工程,可以說大大提高了強(qiáng)化學(xué)習(xí)算法的通用性。深度學(xué)習(xí)的出現(xiàn)也使得原來的一些搜索算法的效率有了很大提升,例如,蒙特卡洛樹搜索算法(Monte Carlo Tree Search, MCTS),結(jié)合深度學(xué)習(xí)網(wǎng)絡(luò)對(duì)策略和值函數(shù)的預(yù)測,大大增強(qiáng)了樹的搜索深度和寬度,能夠被用于各種棋類項(xiàng)目中,其中最著名的例子就是近年來非常熱門的AlphaGo和AlphaGoZero算法,結(jié)合現(xiàn)階段的硬件發(fā)展(使用大量的GPU和TPU來進(jìn)行訓(xùn)練),在圍棋項(xiàng)目上做到了擊敗人類的大師級(jí)別的選手。本書在初步介紹經(jīng)典強(qiáng)化學(xué)習(xí)算法的同時(shí),著重介紹的是結(jié)合深度學(xué)習(xí)的強(qiáng)化學(xué)習(xí)算法,即深度強(qiáng)化學(xué)習(xí)算法,并且會(huì)在后續(xù)章節(jié)逐步介紹深度強(qiáng)化學(xué)習(xí)在不同領(lǐng)域中的作用。
- Django開發(fā)從入門到實(shí)踐
- HTML5+CSS3網(wǎng)頁設(shè)計(jì)
- Mastering ServiceNow(Second Edition)
- Hands-On Full Stack Development with Go
- 深度學(xué)習(xí):Java語言實(shí)現(xiàn)
- D3.js By Example
- Learning jQuery(Fourth Edition)
- C#程序設(shè)計(jì)(項(xiàng)目教學(xué)版)
- Raspberry Pi Robotic Blueprints
- Clojure for Java Developers
- Learning VMware vSphere
- Java程序設(shè)計(jì)實(shí)用教程(第2版)
- 算法訓(xùn)練營:海量圖解+競賽刷題(入門篇)
- Web程序設(shè)計(jì)與架構(gòu)
- PHP程序設(shè)計(jì)經(jīng)典300例