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