- 一個(gè)關(guān)于算法的游戲
在開(kāi)始之前我想起了一個(gè)古老的windows自帶的游戲“掃雷”。只不過(guò)這個(gè)游戲與一個(gè)編程競(jìng)賽結(jié)合之后變成了一個(gè)更有趣的思維訓(xùn)練游戲。
游戲內(nèi)容是這樣的:
一個(gè)大正方形被劃分為64x64的小正方形,大正方形區(qū)域內(nèi)隨機(jī)的散布著64x3顆地雷和64x3塊石頭。參與游戲的者不是擁有上帝視角的人,而是一輛掃雷車。每輛掃雷車都從區(qū)域的右下角進(jìn)入雷區(qū)。
掃雷車擁有“探查”,清除,移動(dòng),轉(zhuǎn)向四個(gè)功能。
探查:對(duì)正前方的3個(gè)小方格繼續(xù)分析,通過(guò)探查可以確定探查區(qū)域內(nèi)的是地雷,石塊,還是空地。每次探查耗時(shí)3個(gè)單位時(shí)間.
移動(dòng):向正前方移動(dòng),每次移動(dòng)花費(fèi)1個(gè)單位時(shí)間。如果移動(dòng)進(jìn)入?yún)^(qū)域內(nèi)有石塊,則掃雷測(cè)會(huì)被損壞,需要10個(gè)單位時(shí)間進(jìn)行修理。如果移動(dòng)進(jìn)入的是未清楚的地雷區(qū)域則Game Over。
清除:清除正前方的小方塊區(qū)域,如果清除方塊內(nèi)是地雷,則將清除區(qū)域重置為空地。如果清除區(qū)域?yàn)槭瘔K則清除失敗,清除區(qū)域依然為石塊。對(duì)于空地清除方法則不做任何事。不光清除區(qū)域內(nèi)有什么,都花費(fèi)1個(gè)單位時(shí)間。
轉(zhuǎn)向:掃雷車在原地將車頭轉(zhuǎn)到上下左右四個(gè)方向中的一個(gè),每一步轉(zhuǎn)向都花費(fèi)1個(gè)單位時(shí)間。轉(zhuǎn)向必須按順序進(jìn)行。例如:掉頭這個(gè)動(dòng)作,必須先用一個(gè)單位時(shí)間轉(zhuǎn)到←或者→,然后再花費(fèi)1單位時(shí)間從左或者右將掃雷車的屁股和腦袋對(duì)調(diào)。
- 程序要怎么實(shí)現(xiàn)呢?
定義一個(gè)小方格的土地類,屬性為:size1x1, 位置x,y,x/y(1~64)
定義空地繼承土地類,自有屬性空。
定義石塊繼承土地類,自有屬性破壞,不可被清除。
定義地雷繼承土地類,自有屬性爆炸,爆炸屬性可被清除。
定義掃雷車,方法探查,清除,移動(dòng),轉(zhuǎn)向。
屬性狀態(tài):正常/待修理/損壞。位置:x,y;方向:前后左右
- 棋盤布置好了,現(xiàn)在由玩家拿著遙控器控制這輛掃雷車進(jìn)入雷區(qū)執(zhí)行掃雷任務(wù),最快將雷區(qū)內(nèi)的所有地雷清理干凈或者標(biāo)記出來(lái)的玩家獲勝。
- 第一階段
有“頭鐵”的玩家把掃雷車當(dāng)一級(jí)方程式,管你有沒(méi)有雷,沖鴨。其中運(yùn)氣最好的沖過(guò)了四分之一的地圖,最差出發(fā)既游戲結(jié)束。
有謹(jǐn)慎的玩家每塊前方區(qū)域都必探查,一步一挪。小蝸牛一呀一點(diǎn)點(diǎn)的挪,一蛄蛹一蛄蛹真勤奮……
最穩(wěn)健外加強(qiáng)迫癥外加運(yùn)氣極差的玩家在在所有區(qū)域都掃過(guò)一遍后完成了游戲,用時(shí)10086*10086個(gè)單位時(shí)間。但不是所有玩家中最慢完成游戲的,有的玩家花了超過(guò)探查所用的時(shí)間去猜測(cè)前方區(qū)域的空地內(nèi)是否有地雷了石塊。單細(xì)胞腦回路的玩家的操作基本是公式化的,雖然速度慢,但是安全可控,非常適合規(guī)范化之后代碼化。最后他的執(zhí)行過(guò)程編程后稱為第一版自動(dòng)掃雷車的控制程序。
- 第二階段
恰逢此時(shí)這時(shí)候游戲比賽加入和新得規(guī)則:每個(gè)玩家有三臺(tái)掃雷車但只能有一臺(tái)在雷區(qū)內(nèi)進(jìn)行掃雷,空閑的掃雷車可以用于更換當(dāng)前在雷區(qū)被摧毀或者被損壞的掃雷車,而且替換過(guò)程無(wú)時(shí)間損耗。損壞的掃雷車可以瞬間移動(dòng)至雷區(qū)外進(jìn)行修理,雷區(qū)外損壞掃雷車的修理可以與雷區(qū)內(nèi)的掃雷車作業(yè)同時(shí)進(jìn)行。當(dāng)沒(méi)有完好的掃雷車在雷區(qū)內(nèi)時(shí),則需等待至少一臺(tái)損壞掃雷車修理完后再進(jìn)行掃雷,修理時(shí)間記入游戲時(shí)間。如果三輛掃雷車都被炸毀則游戲結(jié)束。
為掃雷車添加自動(dòng)化功能,可以根據(jù)玩家預(yù)先設(shè)置的策略自動(dòng)掃雷。
這一規(guī)則改變勾動(dòng)了各位編程,算法大佬們的神經(jīng)。各位程序員們蠢蠢欲動(dòng)。只不過(guò)這些數(shù)學(xué),編程大佬們更感興趣的是修改掃雷車的自動(dòng)化程序。
新規(guī)則下的比賽結(jié)果在剛開(kāi)始的時(shí)候讓眾大佬們氣餒。他們冥思苦想出來(lái)的算法并沒(méi)有打敗那些 “幸運(yùn)的莽漢”。最直接的原因是地圖是隨機(jī)生成的,固定算法在某一張地圖上取得較好的成績(jī),但是在其他隨機(jī)生成的地圖上則一敗涂地。但是大佬們并不氣餒,不斷的修改算法的適配性,算法也越來(lái)越復(fù)雜。
漸漸的大佬們發(fā)現(xiàn)固定算法在隨機(jī)圖集上運(yùn)行結(jié)果的平均值無(wú)限接近原始“單細(xì)胞玩家“算法的效果。
沮喪開(kāi)始在大佬之間蔓延……
游戲也成為一種純粹的消磨時(shí)間的娛樂(lè)。
- 第三階段
一個(gè)應(yīng)用數(shù)學(xué)的導(dǎo)師將歷年掃雷游戲玩家們的算法和結(jié)果扔給一群學(xué)生,讓他們用來(lái)實(shí)踐統(tǒng)計(jì)學(xué)理論。其中一個(gè)學(xué)生在對(duì)算法結(jié)果進(jìn)行統(tǒng)計(jì)計(jì)算的時(shí)候?qū)λ惴óa(chǎn)生了興趣。他將大神們貢獻(xiàn)的海量算法進(jìn)行了提煉,將連續(xù)多次探查后的結(jié)果進(jìn)行統(tǒng)計(jì)后得出一個(gè)分布公式。例如:當(dāng)連續(xù)探查出兩顆地雷后第三次探查區(qū)域是地雷的概率為46%,當(dāng)兩次探查出三顆地雷后,第四次探查出是地雷的概率為12%。于是他以此為基礎(chǔ),將大神們的尋路算法進(jìn)行整合。例如:A尋路算法在密集雷區(qū)內(nèi)的掃雷效率較高,那么當(dāng)連續(xù)探查兩顆地雷時(shí)使用A尋路算法。B尋路算法對(duì)于松散雷區(qū)的掃雷效率較高,那么當(dāng)連續(xù)探查為空地時(shí)調(diào)用B算法。
到此掃雷游戲就從一個(gè)操作掃雷車的游戲變成了一個(gè)選擇算法的游戲。為了做到更廣泛的適應(yīng)性,在做了大量統(tǒng)計(jì)工作后,他為探查結(jié)果建立了一個(gè)復(fù)雜的計(jì)算公式,用以判斷何種情況下適配哪種算法。這個(gè)公式的輸出結(jié)果為當(dāng)前已知條件下,對(duì)每種算法的選擇權(quán)值。
于是一種對(duì)算法進(jìn)行計(jì)算的算法出現(xiàn)了,被稱為遺傳學(xué)算法。而且這位學(xué)生發(fā)現(xiàn),算法的種類越多,經(jīng)過(guò)公式復(fù)合計(jì)算后得出的綜合選擇方案效率越高。
最終遺傳學(xué)算法終結(jié)了掃雷游戲的算法比賽。
- 第四階段
遺傳學(xué)的出現(xiàn)讓人們意識(shí)到一種可能性,計(jì)算機(jī)程序具備了通過(guò)已知推導(dǎo)未知問(wèn)題答案的可能。
計(jì)算機(jī)程序具備了根據(jù)實(shí)際情況進(jìn)行動(dòng)態(tài)調(diào)整自身以適應(yīng)環(huán)境變化的能力。
人們開(kāi)始尋找將這種方法,思路應(yīng)用到更多領(lǐng)域的實(shí)踐。
笨的辦法總是最容易被最先想到的,不就是一個(gè)64x64的雷區(qū)嗎?窮舉法將所有可能的64x3的地雷和石頭的分布場(chǎng),在被探查出一定數(shù)量區(qū)域的結(jié)果后的特征值(地雷,石塊的分布情況)保存在一個(gè)巨大數(shù)組之中,然后將不同特征地形下不同尋路算法的權(quán)值與地形特征一同存入表格。
至此一個(gè)高效,快速的檢索,優(yōu)選系統(tǒng)就完成了。這個(gè)系統(tǒng)雖然還不具備通用性,但已經(jīng)在某些方面展現(xiàn)出了獨(dú)特的優(yōu)勢(shì)。
某個(gè)策略完備的優(yōu)選系統(tǒng)在一場(chǎng)棋類對(duì)抗比賽中打敗了此棋類對(duì)抗比賽的冠軍,從而轟動(dòng)一時(shí)。
更高效的數(shù)據(jù)庫(kù)檢索方法和硬件成為了制約計(jì)算機(jī)程序做出最優(yōu)判斷的瓶頸。同時(shí)人們發(fā)現(xiàn)似乎離“預(yù)測(cè)未來(lái)”和“適應(yīng)環(huán)境”以及“廣泛應(yīng)用”的目標(biāo)需要新的思路。
- 第五階段
第四階段需要大量的人工搜集素材,提取素材中的“特征”,計(jì)算并為素材添加權(quán)值。這哪里智能了?一點(diǎn)也不智能好不好。
在面對(duì)問(wèn)題的時(shí)候,一些計(jì)算機(jī)技術(shù)人員開(kāi)始思考人類是如何產(chǎn)生智能的,于是將目光投向了生物學(xué)家。
生物學(xué)(實(shí)際上是一個(gè)心理學(xué)家定義的)上對(duì)于神經(jīng)元的定義是一個(gè)多個(gè)輸入,單個(gè)輸出,內(nèi)含算法的計(jì)算單位。
每個(gè)神經(jīng)元可以是不同的算法,也可以是相同的算法,將某類型問(wèn)題的多種可能場(chǎng)景投入到不同的神經(jīng)元組成的網(wǎng)絡(luò)中進(jìn)行計(jì)算,不同的樣本會(huì)根據(jù)特征經(jīng)由必要的神經(jīng)元計(jì)算后輸出結(jié)果。而沒(méi)有必要像數(shù)據(jù)庫(kù)查詢那樣遍歷足夠的元素后才能得到想要的最優(yōu)結(jié)果。
而由神經(jīng)元聚集起來(lái)的系統(tǒng)則被稱為神經(jīng)網(wǎng)絡(luò)。這個(gè)網(wǎng)絡(luò)是多種算法聚集體的同時(shí)還擁有最優(yōu)化的效率。
高效,靈活的網(wǎng)絡(luò)有了。如何讓網(wǎng)絡(luò)實(shí)現(xiàn)某項(xiàng)功能呢?回到掃雷游戲,我們需要算法來(lái)填充神經(jīng)元,我們需要為每個(gè)神經(jīng)元制定特征標(biāo)簽。
可以很容易發(fā)現(xiàn),為一個(gè)神經(jīng)網(wǎng)絡(luò)進(jìn)行初始化是一個(gè)非常耗時(shí),費(fèi)力的工作。這個(gè)過(guò)程需要大量的樣本來(lái)填充神經(jīng)元,和對(duì)神經(jīng)元打標(biāo)簽。其過(guò)程就像交一個(gè)未成年的孩子學(xué)習(xí)一樣,提供基礎(chǔ)的理論,大量的練習(xí),讓孩子靈活應(yīng)用其中的規(guī)律用于未來(lái)的計(jì)算。
到此一門新的計(jì)算機(jī)應(yīng)用學(xué)科----機(jī)械學(xué)習(xí)就產(chǎn)生了。
機(jī)器學(xué)習(xí)的概念,基礎(chǔ)理論和技術(shù)一經(jīng)提出,就出現(xiàn)了兩種基本類型。
監(jiān)督式機(jī)器學(xué)習(xí)模型和非監(jiān)督式機(jī)器學(xué)習(xí)模型。
監(jiān)督式機(jī)器學(xué)習(xí)模型在回歸算法的加持之下,可以通過(guò)數(shù)據(jù)的相關(guān)性“預(yù)測(cè)”結(jié)果。
非監(jiān)督式機(jī)器學(xué)習(xí)模型中集中了多種功能迥異的算法和原始樣本分析工具,可以在大量樣本的加持下,從樣本中提取出多種“特征”。我們可以利用這些自動(dòng)識(shí)別出來(lái)的特征對(duì)樣本進(jìn)行分類。
當(dāng)監(jiān)督式機(jī)器學(xué)習(xí)與非監(jiān)督式機(jī)器學(xué)習(xí)模型逐步成熟的時(shí)候,財(cái)大氣粗的人開(kāi)始搭建更復(fù)雜的,將監(jiān)督式和非監(jiān)督式學(xué)習(xí)模型結(jié)合起來(lái),構(gòu)建多層神經(jīng)網(wǎng)絡(luò)系統(tǒng)。
一個(gè)容器,一個(gè)快速搭建神經(jīng)網(wǎng)絡(luò)的工具被好事的工程師們建立起來(lái)。其中封裝了具備基本算法的神經(jīng)元,向神經(jīng)網(wǎng)絡(luò)注入學(xué)習(xí)樣本的工具,將多層網(wǎng)絡(luò)中神經(jīng)元的輸入輸出連接起來(lái)的結(jié)構(gòu)。這些多事的工程師成這些為搭建機(jī)器學(xué)習(xí)模型的平臺(tái)。
經(jīng)過(guò)大量樣本完成了學(xué)習(xí)的多層神經(jīng)網(wǎng)絡(luò)系統(tǒng)可以做什么呢?
它可以提取文本/圖像中的特征,并對(duì)特征進(jìn)行自動(dòng)分類。根據(jù)分類特征通過(guò)網(wǎng)絡(luò)或者已有樣本/特征元素尋找與這些特征匹配度最高的結(jié)果,將這些結(jié)果二次組合/排序/轉(zhuǎn)化/編碼生成一個(gè)新的樣本。Transformer真是一種天才的取巧。
例如:回答人們的問(wèn)題。由文字生成圖像,視頻,音樂(lè)。
至此生成式大模型應(yīng)運(yùn)而生。這個(gè)模型根據(jù)功能設(shè)計(jì),經(jīng)過(guò)學(xué)習(xí)之后(訓(xùn)練),它可以聽(tīng)取你的需求(特征理解和語(yǔ)義分析),最后給出滿足你需求的答案(答案是否符合需求,取決于你的成長(zhǎng)學(xué)習(xí)環(huán)境與模型學(xué)習(xí)時(shí)使用的樣本數(shù)據(jù)有多相似)。它甚至可以在概率加持下給出模糊的答案和預(yù)測(cè)某種趨勢(shì),甚至創(chuàng)造性的給一些意外(當(dāng)然大多數(shù)情況是因?yàn)閭€(gè)體視角的局限看不到某些可能性)。
第六階段
我不知道機(jī)器學(xué)習(xí)將來(lái)的樣子,也不知道在人工智能獲取了自我訓(xùn)練和自我迭代的能力后能多快擁有人類的智力水平。他們是否會(huì)產(chǎn)生倫理的觀念,是否受到法律的約束。
對(duì)于我們普通人來(lái)說(shuō),柴米油鹽才是當(dāng)下最重要的問(wèn)題。
將來(lái)?關(guān)我什么事?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.