99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀從\"深藍\"到 AlphaGo丨AI 在游戲領域的升級打怪之路
從\"深藍\"到 AlphaGo丨AI 在游戲領域的升級打怪之路
2017-11-22
收藏

從"深藍"到 AlphaGo丨AI 在游戲領域的升級打怪之路

可以說,AI的發(fā)展進化史就是AI在游戲領域的升級史。

SciShow是Youtube上熱門的科普向脫口秀節(jié)目。它的內(nèi)容包羅萬象,無論什么問題在這里都會得到風趣又詳盡的解答。在本次節(jié)目中,介紹了AI 是如何在游戲領域通過不斷的升級發(fā)展,一步步碾壓人類的。

CDA字幕組對該視頻進行了漢化,附有中文字幕的視頻如下:

AI 在游戲領域的發(fā)展進化史

針對不方便打開視頻的小伙伴,CDA字幕組也貼心的整理了文字版本,如下:

機器贏了。機器如今幾乎能夠打敗人類發(fā)明的所有游戲。這都歸功于一些我們通過AI實現(xiàn)的技術。

人工智能丨AI

AI最簡單定義是: 為解決問題而設計的計算機程序。

大多數(shù)程序,包括你此刻看視頻用到的,都是不能解決問題的。相反,這些程序執(zhí)行程序員編寫的指令。它們不會自己得出完成任務的方案。而AI會嘗試自己得出解決方案。AI越聰明,越能解決更復雜的問題。

自從計算機編程出現(xiàn)以來,我們就開始教AI玩游戲。比如跳棋和國際象棋,還有中國的棋盤游戲——圍棋。原因是游戲能很好地衡量AI到底有多聰明。玩游戲并取勝,需要解決問題的能力。解決問題的能力正是衡量智能的標準。因為無論對觀眾還是計算機程序而言,當中對問題的定義都很明確,沒有模棱兩可的結果。AI要么能夠玩跳棋,要么不能。

游戲是開發(fā)新型AI的絕佳實驗室環(huán)境,這就是為什么AI的發(fā)展歷史也是AI玩游戲的歷史。

跳棋丨Checkers

AI在游戲第一次打敗人類對手是一個跳棋程序。

于1950年代,由美國計算機科學家Arthur Samuel開發(fā),在IBM 704計算機上運行。

這臺機器通過錄入磁盤進行編程。跳棋游戲很簡單,但IBM 704是個很簡單的機器。它不能通過試錯法得出所有可能的棋步,從而得出最佳的移動方式,至少無法在合理的時間內(nèi)完成。除非采用暴力算法,當中需要大量的數(shù)字計算。

計算機算出一個棋步后可能出現(xiàn)的各種棋局,然后選擇取勝概率最好的棋步。這個方法盡管不夠創(chuàng)新,但切實可行。之后我們再回到這個話題。

問題是,暴力算法需要大量的計算資源,從而對數(shù)字進行計算,然而在1950年代沒有那些資源。因此,最初AI玩游戲主要靠的是啟發(fā)法(heuristics)。從此之后所有的AI用到了啟發(fā)法。

啟發(fā)法是經(jīng)驗法則(rule of thumb),盡管不是一直都正確,但是大多時候是正確的。在計算機科學中,啟發(fā)法是一種算法。通過選擇并不是最好,但足夠解決問題的方案,以此來限制蠻力搜索。

一旦跳棋算法發(fā)現(xiàn)能夠吃掉對手棋子的棋步,然后就停止了,就按這個棋步走。這種簡單的啟發(fā)法足以攻克跳棋。

撲克牌丨Poker

接下來,AI面對的是撲克牌游戲。

1970年代,計算機科學家Donald Waterman編寫能夠玩抽牌撲克游戲的程序。該游戲給玩家5張牌,可以最多換3張牌。

當中他開發(fā)了所謂的"生產(chǎn)系統(tǒng)"(production system)。如今AI當中都包含這一技術。

生產(chǎn)系統(tǒng)使用預先編好的規(guī)則來對符號進行分類,比如撲克牌的符號。Watermen開發(fā)的系統(tǒng)根據(jù)手上已有的牌,對牌的價值大小進行分類。比如一張梅花4,就其本身而言無足掛齒,但如果你手上還有一張方片4和一張黑桃4,那么這張梅花4的價值就會大幅提升。系統(tǒng)將評估這手牌的好壞,以及選擇出手還是棄牌。通過把這手牌的價值,與預先編程的所謂好牌和壞牌進行比較。

啟發(fā)法與生產(chǎn)系統(tǒng)。

前者要依靠經(jīng)驗法則;后者則根據(jù)復雜的規(guī)則比較系統(tǒng)。這兩者的結合,讓AI玩簡單的棋類游戲變得輕而易舉。

但是國際象棋不是簡單的棋類游戲,而是更復雜的棋類游戲,要想取勝則需要運用一些成熟技術。

沉思 丨Deep Thought

1980年代,第一批國際象棋機在卡內(nèi)基梅隆大學誕生。

這些早期的機器中,最成功的是"沉思"(Deep Thought)。每秒能計算70萬個棋步。

1988年,Deep Thought試圖擊敗一名國際象棋高手。但那并不是一般的象棋高手,這位棋圣在八 九十年代甚至如今,一直是世界上最頂尖的國際象棋高手。他就是加里·卡斯帕羅夫。

開始Deep Thought根本不是卡斯帕羅夫的對手,打敗卡斯帕羅夫需要更快更強大的機器。對Deep Thought進行升級,包括以下改進:

第一、需要更多的內(nèi)存和多處理器,即計算能力。Deep Thought的后代產(chǎn)品"深藍"(Deep Blue)應運而生,它是更強大的機器。

第二、更好的軟件。當處理數(shù)以百萬計互相對比的搜索結果時,速度慢是個大問題。為此,深藍被設計為適合并行處理。另外,系統(tǒng)還要考慮衡量一些更微妙的棋位。換句話說,采用了更優(yōu)的啟發(fā)法。

深藍丨 Deep Blue

第一代深藍的搜索速度約為每秒5千萬到1億個棋位。與Garry 卡斯帕羅夫?qū)?zhàn)時,它以2:4慘敗給對手。每秒計算1億個棋位,仍不足以擊敗人類的國際圍棋冠軍。

為此,深藍團隊在系統(tǒng)中增加了一倍的芯片,同時改進了軟件,使每個芯片效率提升了25%。1997年與卡斯帕羅夫再次對戰(zhàn)時,其運算速度達到了每秒3億棋位,從而大獲全勝。

深藍的勝利是計算機程序中的偉大壯舉。當深藍擊敗卡斯帕羅夫時,它是當時世界上最復雜的AI。但總體還是靠暴力算法來實現(xiàn)的。對己方或?qū)Ψ降拿總€可能的棋步進行暴力搜索,然后選出獲勝概率最大的棋步。如果無法戰(zhàn)勝對方,程序員升級程序從而計算更多的數(shù)字,但這種方法對圍棋就不適用了。

圍棋丨Go

我們之前的節(jié)目說過,谷歌的AlphaGo在2016年3月,擊敗了世界圍棋冠軍李世石。但是讓我們探究一下,為什么AI攻克圍棋是艱巨的任務。

如果你生活在西方國家,你可能對圍棋不熟悉。圍棋是一個中國的棋類游戲,數(shù)千年來其規(guī)則從未改變。有時被描述為"東方版國際象棋”,但是圍棋要比國際象棋復雜得多,尤其對計算機而言。

首先,圍棋棋盤比國際象棋要大。

圍棋棋盤為19×19的網(wǎng)格,國際象棋棋盤為8×8。但這實際低估了圍棋的復雜性,因為圍棋的棋子不是放在網(wǎng)格中,而是放在四個角上。也就是說每個網(wǎng)格代表四種可能的位置,即與周圍網(wǎng)格的交叉點??偠灾?,圍棋中的棋步組合比宇宙中原子數(shù)量還多。

其次,圍棋中每個棋子都同等重要。

這與國際象棋不同,比如國際象棋中,后就比兵要重要。這種關系是可以通過編程讓AI理解的,比如輸入生產(chǎn)系統(tǒng)。但是圍棋棋子的價值取決于,各個棋子在棋盤位置的相互關系。

圍棋的目標是用在對弈過程中,以雙方棋子所圍"地"的大小決定勝負,所以每次棋步都是很主觀的。甚至高水平的棋手有時也很難解釋,他們是如何判斷每個棋步和好壞。

計算機不擅長的領域就是主觀性,以及計算萬億次的位置。因此深藍的暴力算法對于圍棋是完全不可取的。

阿爾法狗丨AlphaGo

AlphaGo并不是采用暴力算法的系統(tǒng),而是使用深度神經(jīng)網(wǎng)絡。面部識別也是利用的該技術。并不是對一個個棋子的位置進行計算,而是通過尋找棋盤中的模式。

如同面部識別系統(tǒng)會搜尋眼睛、鼻子、嘴等圖像。AlphaGo尋找提供強大或薄弱戰(zhàn)術的棋子模式。但它要如何明確什么會帶來有力或不利的局面呢? 我們提過每個特定位置的價值是主觀的,不是么?

那么你需要了解深度神經(jīng)網(wǎng)絡的運行原理。

深度神經(jīng)網(wǎng)絡由不同機器系統(tǒng)的層構成,這稱為神經(jīng)元。這些神經(jīng)元全都堆疊在一起、并行運行。從而神經(jīng)網(wǎng)絡能夠?qū)ν粋€問題,從多個不同角度、同時進行分析。

每個層根據(jù)不同標準評判同一圖像,其中一層將看到圍棋棋盤的圖像,選出當中所有合理的棋步;下一層將找到棋盤中還未被控制的區(qū)域;再下面一層會追蹤,自從一位棋手在任何區(qū)域落子,已經(jīng)過了多久時間。從而告訴系統(tǒng),哪片區(qū)域目前處于爭奪狀態(tài),哪片區(qū)域暫時安全、可以先忽視。接下來的一層,會把白字黑字的模式與內(nèi)部數(shù)據(jù)庫進行比較,看目前棋局是否類似之前看到過的。諸如此類。

AlphaGo的神經(jīng)元共用48層,每一層都用不同的方式分析棋局,并且這些層相互傳遞信息。因此如果某層發(fā)現(xiàn)很有利的棋步,那么其他層就會關注棋局的這個部分。一旦所有層都認同,某個棋步符合它們判斷好棋的標準,AlphaGo就會落子。通過這種方式使用深度神經(jīng)網(wǎng)絡,系統(tǒng)就能模仿人類的直覺和創(chuàng)造力。

最終,AlphaGo以4:1擊敗李世石,李世石相當于圍棋領域的卡斯帕羅夫。但AlphaGo只會變得越來越聰明。

AI的下一個挑戰(zhàn)丨 What’s next

在游戲領域 AI幾乎沒有尚未攻克的挑戰(zhàn)了,圍棋是人類設計的最復雜的棋類游戲。但我還想看AI挑戰(zhàn)魔鎮(zhèn)驚魂(Arkham Horror:一款難度頗高的桌游)。

總之,我們設計了AlphaGo和深藍。這些程序都是人類智力和好奇心的表現(xiàn)。

如果我們開發(fā)的AI能夠在最復雜的游戲中擊敗該領域的人類頂尖高手,那么誰知道我們還能做出什么呢?

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }