首頁 > 科技

用「最好的語言」PHP,做一個機器學習資料集

2021-07-07 03:03:51

機器之心報道

編輯:陳萍

使用 PHP 為機器學習準備資料集。

機器學習是一門通過資料來教計算機解決問題的科學,而不是編寫序列演算法,讓指令逐個執行。

一般來說,資料準備是機器學習的首要任務,通常包括兩個子步驟:創建資料集和轉換資料。

如果想構建一個類似人類的 AI 象棋遊戲,首要問題就是創建一個數據庫,並且該資料庫需要儘可能多的包含象棋大師玩遊戲的資料。通常情況下,大多數人使用 Python 構建資料集,並且在一定程度上認為 Python 是資料科學的唯一程式語言。

但是,項目作者 Jordi Bassaganas 打破流行觀點(該觀點認為 Python 是世界上唯一用於資料科學的程式語言),不使用 Python,而是在構建資料中使用了 MySQL、PHP 和 Rubix ML,其中 Rubix ML 是一個高階機器學習庫,可構建使用 PHP 語言從資料中學習的程式。

項目介紹

該項目是一組命令列介面(Command-Line Interface,CLI)工具,可幫助管理 PGN 遊戲中的象棋資料庫,此外,該工具還可以進行資料準備、視覺化資料和使用 Rubix ML 訓練監督模型。

所謂的 PGN 就是「可移植式棋局記號法」(Portable Game Notation),是一種以 ASCII 文字檔案表示國際象棋棋局資料的標準設定。PGN 設計成使人們很容易進行閱讀和編寫,電腦程式很容易進行解析和產生。定義和傳播 PGN 的目的,是為了促進公開對局資料的共享交流,包括來自全世界的棋手 (不管有無組織)、出版人和電腦國際象棋研究的。

接下來真正的問題是:應該給計算機提供哪些示例以使機器學習變得更容易?

這個資料準備儲存庫主要任務是將數百萬個象棋遊戲載入到 SQL 資料庫中。作者從 PGN Mentor 中下載了 PGN 檔案,PGN Mentor 是一個用於國際象棋研究的軟體應用程式,同時還提供了一個包含數百萬個遊戲的檔案集合,並將這些檔案複製到 programarivm/chess-data/data/players 資料夾中。

其實使用 PHP 為機器學習準備資料集並沒有什麼簡單方法。但實現過程涉及到不同的技術,這是關於對處理問題的理解、收集和過濾資料的最好實踐過程

例如,當涉及國際象棋時,首先你需要過濾和驗證遊戲,這意味著要刪除那些語法上無效或包含錯誤的遊戲。cli/pgn-validate.php 命令查詢 PGN 檔案中錯誤,這條命令在將資訊載入到資料庫時會被廣泛使用。

示例展示

下面展示了使用該項目設定和運行 MySQL 國際象棋資料庫,第一步是創建如下所示的象棋資料庫:

$ php cli/db-create.php

然後,按照下面的描述,games 表將被植入有效資料。

$ time php cli/db-seed.php data/players

15 games did not pass the validation.

3234 games out of a total of 3249 are OK.

1353 games out of a total of 1353 are OK.

1900 games out of a total of 1900 are OK.

776 games out of a total of 776 are OK.

1 games did not pass the validation.

1660 games out of a total of 1661 are OK.

4 games did not pass the validation.

1124 games out of a total of 1124 are OK.

265 games out of a total of 265 are OK.

1 games did not pass the validation.

2099 games out of a total of 2100 are OK.

cli/db-seed.php 命令需要大約 40 分鐘才能載入大約 400,000 個遊戲。

mysql> select count(*) from games;

+----------+

| count(*) |

+----------+

| 402658 |

+----------+

1 row in set (0,23 sec)

值得一提的是,所有這些都是用 PHP 語言實現的!

建立好國際象棋資料庫後,就可以為機器學習演算法準備資料。在接下來的文章中,項目作者將詳細說明如何通過使用多層感知器分類器和該資料庫,進行國際象棋防守、戰術等的開發。


IT145.com E-mail:sddin#qq.com