| While True: Learn() | |
![]() | |
| 原名 | While True: Learn() |
| 類型 | 解謎遊戲 |
| 平台 | Windows macOS iOS Android Nintendo Switch PlayStation 4 Xbox One Xbox Series X/S |
| 開發 | Luden.io Nival International Limited |
| 音樂 | Broadcast of Variants |
| 引擎 | Unity |
| 模式 | 單人遊戲 |
| 發行時間 | 2019年1月17日 |
| 相關作品 | 《學習工廠》(Learning Factory) |
《While True: Learn()》是由賽普勒斯遊戲工作室 Luden.io 開發的解謎類遊戲,於 2019 年 1 月發行。
| “ | 你是一個寫神經網絡的機器學習專家,但是你家貓主子貌似比你要牛啊。所以現在你必須要解決各種難題來創建一款貓語翻譯器(誰知道你家主子還會幹什麼呢)!賺錢,給貓主子買皮膚,瞭解真正的機器學習的姿勢! | ” |
本作的劇情圍繞著自 20 世紀 40 年代以來,人工智慧與機器學習的發展歷程展開。遊戲中,玩家將扮演一個不小心發現自己的寵物貓的代碼竟然寫的比自己還要棒的程式設計師,並設法開發一款貓語翻譯器。
遊戲的所有可玩要素全部在任務樹(Task tree)上以不同的圖案表示。其中:
在遊戲中,各種機器學習算法(決策樹、隨機森林、卷積神經網絡等)全部都是以節點的形式出現。所有需要處理的數據也全部抽象為紅色、綠色和藍色的圓形、方形和三角形,共 9 種不同的物件[2]。
在每一個關卡中會有 1~5 個輸入流和 1~5 個輸出流,每個輸入流初始時會存放有一定數量的物件(資料)。遊戲目標是通過放置和連接各種節點,組成一個網絡來分類輸入流裡的資料,使得分類後的結果滿足輸出流的準確率和數量需求。在網絡的編輯界面,玩家有 3 個獨立的檔案,可用於構建 3 個獨立的解決方案(購買硬體升級後可以提升到 4 個)。
本要素僅在關卡模式出現。
遊戲內對於每一個關卡有金牌、銀牌和銅牌三種評級,相應的挑戰要素分別是時間限制和節點數限制,達成要求依次降低。如果玩家設計的網絡效率太低,達不到銅牌的要求,那麼最終會導致超時,從而關卡失敗Time Limit Exceeded。同時,每一個輸出流也會有準確率和數量需求。如果輸入流的資料全部處理完畢時,某個輸出流的準確率或者資料數量達不到需求,也會導致關卡失敗。
所有的機器學習算法全部會以小卡片的形式在面板中出現,遊戲中稱為節點(node)。每個節點的左側有一個綠色三角形表示輸入埠,右側會有一個或多個輸出埠,也是用綠色三角形標註。用滑鼠單擊埠並拖動即可拖出綠色的直線,連接不同節點的埠。右鍵單擊連線,可以將已有的連線刪除。構造網絡完畢後,點擊右上角的測試即可啟動測試。
遊戲中關於節點的許多機制也和現實中的機器學習和分佈式計算吻合。在節點兩側的小三角形旁邊會有一個黑色的容量條,表示節點的容量。啟動測試後,如果流入某個節點的資料量過大(資料流入的速度超過流出的速度),會導致節點出現擁塞,嚴重降低網絡效率,此時,埠的綠色三角形會變為紅色叉號。在真實的計算機科學領域,這是一個典型的生產者消費者模型。黑色容量條相當於緩衝區,緩衝區滿時,生產者若要繼續加入數據,就會阻塞,必須等待消費者取走緩衝區已有的數據。
特別的,前期的某些關卡如果輸入數據規模不大,則節點本身的緩衝區也可以當作垃圾桶來使用(但是這種做法在現實中顯然是不可取的,性質上相當於資源洩漏)。遊戲有一個成就叫做 stack overflow,需要玩家在能使用垃圾桶的情況下卻不使用垃圾桶通關。
下面介紹遊戲裡出現的節點。在真實的機器學習裡,這些節點裡的算法主要從 Python 的 sklearn 或 torch 模塊中調用,涉及到計算機視覺的部分也會使用 cv2(OpenCV)。
| 節點 | 遊戲內功能 | 遊戲內延遲(沒有升級的初始值) | 備註 | 在三次元的世界裡... | 對應 Python 中的... |
|---|---|---|---|---|---|
| 均衡器(balancer) | 將輸入流的數據等分為兩份,用來開展並行計算,避免單個節點陷入擁塞 | 0.05 秒 | 會引入伺服器成本,伺服器成本會從玩家遊玩後獲得的金幣中扣除。 | 對應於現實中的分佈式計算,許多參數規模較大的模型也會採用分佈式訓練。在真實的大數據與分佈式計算中,數據的傳輸、節點的通信與協調也會帶來一定的開銷,和遊戲的設定吻合。 | torch.nn.DataParallel
|
| 決策樹:顏色(decision tree: color) | 將輸入按照顏色分為兩類,如果兩個顏色不同,例如設置為紅色和藍色,則紅色數據(不考慮形狀)進入紅色分支,藍色數據進入藍色分支,綠色的隨機進入一個。 如果某一個分支設置為「任意」,則所有的資料都有概率進入任意分支。 如果兩個分支相同,則相當於一個沒有成本的均衡器。 |
0.30 秒 | / | 機器學習的基礎分類算法,樹的節點帶有判斷條件。對於一個新輸入的數據,會根據每個分支節點的判斷條件,順著往下直到走入葉子節點,也即預測的類別。 分支節點的判斷條件一般需要根據訓練數據進行訓練來確定。 |
sklearn.tree.DecisionTreeClassifier
|
| 決策樹:形狀(decision tree: shape) | 將輸入按照形狀分為兩類,如果兩個形狀不同,例如設置為三角形和正方形,則三角形數據(不考慮顏色)進入三角形分支,正方形數據進入正方形分支,圓形的隨機進入一個。 如果某一個分支設置為「任意」,則所有的資料都有概率進入任意分支。 如果兩個分支相同,則相當於一個沒有成本的均衡器。 |
1.00 秒 | / | 機器學習的基礎分類算法,樹的節點帶有判斷條件。對於一個新輸入的數據,會根據每個分支節點的判斷條件,順著往下直到走入葉子節點,也即預測的類別。 分支節點的判斷條件一般需要根據訓練數據進行訓練來確定。 |
sklearn.tree.DecisionTreeClassifier
|
| 垃圾桶 | 用於丟棄用不到的資料,避免節點陷入擁堵。 | / | 不論放置多少個垃圾桶,一律只視為 1 個節點。 | 在真實的數據科學領域一般稱為數據清洗,包括清理無用數據、對數據進行預處理等操作。 | / |
| 專家系統 | 分離出特定的一種顏色。 | 1.00 秒 | / | 可以看作是一類具有專門知識和經驗的計算機智能程序系統,這裡的知識一般是預設的。 | / |
| 尺度不變特徵變換 | 分離出特定的一種形狀。 | 1.25 秒 | / | 一種用於圖像處理和計算機視覺的經典算法,由David Lowe在1999年提出,並於2004年進行了詳細闡述。主要目的是檢測和描述圖像中的局部特徵點,利用其旋轉不變性、平移不變性實現圖像匹配、目標定位、目標識別等功能。 | cv2.SIFT_create
|
| 隨機森林 | 能夠同時根據顏色和形狀對輸入進行分離。 | 1.30 秒 | / | 由多棵決策樹組成,每一棵決策樹會分別從數據的不同方面進行分類。最終匯總每棵決策樹的結果,便能得到最可能的類別。 | sklearn.ensemble.RandomForestClassifier
|
| Mark-1 感知器 | 可將輸入按照顏色分為三類,是一個三分類的分類器。 | 1.30 秒 | 準確率不為 100%。初始時的錯誤率高達 75%,需要先進行訓練。訓練時,錯誤率會逐漸降低,直到 20% 封底。 | 由美國心理學家和計算機科學家弗蘭克·羅森布拉特(Frank Rosenblatt)在 1957 年於康奈爾航空實驗室開發的一種早期的人工神經網絡模型。模型計算能力有限,但是足已完成比較簡單的圖像分類任務(例如區分簡單的圖形形狀等)。 | sklearn.linear_model.Perception
|
| 顏色感知器 | 可將輸入按照顏色分為三類,是一個三分類的分類器。 | 0.25 秒 | 準確率不為 100%。初始時的錯誤率高達 75%,需要先進行訓練。訓練時,錯誤率會逐漸降低,直到 9% 封底。 | 對應於神經網絡的激活函數,會在網絡中引入非線性成分。常見的包括 ReLU 函數、Tanh 函數等。 | torch.nn.ReLUtorch.nn.Tanh等
|
| 形狀感知器 | 可將輸入按照形狀分為三類。 | 0.70 秒 | 準確率不為 100%。初始時的錯誤率高達 75%,需要先進行訓練。訓練時,錯誤率會逐漸降低,直到 9% 封底。 | 對應於神經網絡的激活函數,會在網絡中引入非線性成分。常見的包括 ReLU 函數、Tanh 函數等。 | torch.nn.ReLUtorch.nn.Tanh等
|
| 梯度下降 | 訓練某些模型時,需要將數據先經過「梯度下降」,然後再流入模型,否則錯誤率會越訓練越高,直到逼近 100%。 | 0.70 秒 | 一般只在訓練階段用預訓練模型,模型訓練完畢後,真實的測試階段不會出現在最終解決方案裡。 | 一種用於尋找函數極小值的優化算法,在機器學習和深度學習中廣泛應用,用於優化模型參數,避免模型陷入局部最優。 | / |
| 隨機梯度下降 | 訓練某些模型時,需要將數據先經過「隨機梯度下降」,然後再流入模型,否則錯誤率會越訓練越高,直到逼近 100%。 | 0.20 秒 | 一般只在訓練階段用預訓練模型,模型訓練完畢後,真實的測試階段不會出現在最終解決方案裡。 | 梯度下降的改進版本 | torch.optim.SGD
|
| ARMA | (待補充) | 0.70 秒 | (待補充) | 全稱是自回歸滑動平均模型,是一種用於研究時間序列的重要方法。股市波動、天氣變化、癌細胞擴散等觀測隨時間發生變化的數據皆屬於時間序列信息。 | statsmodels.tsa.arima.model.ARIMA
|
| 循環神經網絡 | (待補充) | (待補充) | (待補充) | 卷積神經網絡的一種變體,對具有序列特性的數據非常有效,擅長挖掘數據中的時序與語義信息。 廣泛用於語音識別、機器翻譯等領域。 |
torch.nn.RNN
|
(待補充)
在遊戲中玩家可以用過關賺來的錢購買硬體,硬體可用於提升節點的緩衝區容量、降低數據傳輸延時、降低伺服器成本,這些增益有助於玩家衝擊金牌。
| 硬體 | 價格 | 功能 | 原型 |
|---|---|---|---|
| 1MB 內存 | (待補充) | 接口隊列大小(緩衝區容量)增加 3 | / |
| 鈴鼓 | (待補充) | 數據傳輸速率增加 1%(傳輸延時的秒數減少 1%) | / |
| 奔騰 | (待補充) | 節點工作速度增加 1%,數據傳輸速度增加 1% | Intel 於 1992 年發布的 Pentium 系列處理器 |
| 家庭伺服器 | (待補充) | 伺服器成本減少 3% | / |
| 256MB 內存 現在隨便一個筆記本電腦都是 8GB 以上的內存了 |
(待補充) | 接口隊列大小增加 5 | / |
| G卡 250 | (待補充) | 節點工作速度增加 3% | Nvidia 於 2019 年發布的 MX250 顯卡 |
| 30GB 硬碟 現在固態硬碟的容量一般都是 1TB,2TB 的量級 |
(待補充) | 提供 1 個額外的自定義方案接口(增加一個解決方案檔案欄位) | / |
| 凱爾伺服器 | (待補充) | 伺服器成本減少 3% | / |
(待補充)
飾品包括貓皮膚、服裝、手辦、海報等物品。這些物品購買後不會直接對玩家過關、衝擊金牌有幫助,但是會改變遊戲界面的佈局。
(待補充)
| “ | 給別人打工感覺太容易?來點新目標並成為一家企業的 CTO 吧!殘酷的市場將大浪淘沙!腰纏萬貫或折戟沉沙,由你決定。 | ” |
在任務樹中完成「光明會起源」關卡後即可解鎖。玩家需要構建符合輸入輸出要求的網絡,並將其發布(部署)後開展業務。
| 初創公司 | 遊戲裡的電郵地址 | 原型 | 說明 |
|---|---|---|---|
| 必剩客 | pizzasmith@cat.meow | 必勝客 | 由法蘭克·卡尼和丹·卡尼於 1958 年建立的美國披薩店。 |
| 自動駕駛汽車 | Yber@cat.meow | 優步(Uber) | 成立於 2009 年的美國科技公司,主營業務包括電話轎車等。相當於中國的「滴滴出行」以及高德地圖的打車功能。 |
| 塔達利 | CoolHackers@cat.meow | 雅達利(Atari) | 成立於 1972 年的遊戲開發商,業務包括遊戲機、主機、電玩等。 |
| 跟蹤系統 | Legitmateruler@cat.meow | / | / |
| 阿馬遜 | Gamazon@cat.meow | 亞馬遜(Amazon) | 成立於 1994 年的美國電商平台。 |
| 血液中心 | bloodsuckers@cat.meow | / | / |
| 稀有物品 | holadelivery@cat.meow | HOLA配送服務 | 參考:https://qikan.cqvip.com/Qikan/Article/Detail?id=7100998090 |
| 進化者 | Evolver@cat.meow | / | / |
| 貓先生的學校 | catschool@cat.meow | / | / |
| 高科技汽車 | tmotors@cat.meow | / | / |
| 肥皂 | TylerDurken@cat.meow | 搏擊俱樂部 | 拍攝於 1999 年的懸疑電影,其中的一個主角就是一名肥皂商人。 |
強化學習是一種通過智能體(Agent)與環境交互,不斷嘗試與犯錯從而探索出最優策略的過程。本作的強化學習部分基於自動駕駛汽車展開,涉及到汽車的尋路、避障等要素。
(待補充)
本作的音樂在 Steam 中以 DLC 的形式發布。
(音源待補充)