iT邦幫忙

0

適合訓練數學棋類遊戲的AI模型訓練方式與工具

OTP 2023-02-20 07:59:371413 瀏覽
  • 分享至 

  • xImage

各位好,想請教一個問題,有關於AI模型的訓練,並且內容是一個數學的棋類遊戲。

目前的需求如下:

  1. 有一個數學幾何棋類遊戲,規則已知,也可以詳細的敘述
    棋局為取子的遊戲,規則非常容易理解,也可以清楚的敘述給AI。
  2. 已知近百種的必勝與必敗盤面,期望訓練AI模型判斷
    已有通過實驗得知的過百種必勝或必敗盤面,可以通過15位數來表達,亦可以透過圖像來提供AI進行訓練。

最終希望能夠通過提供AI一個盤面的圖片(或15位數字表示),讓AI能夠判斷其是否為必勝組合,並且期望AI能夠推斷出其規律。

請教各位大神們,是否有推薦的AI圖像兼語言模型訓練工具,或是其他訓練的方式,可以達到上述需求?
本人第一次在技術問答區發文,若有未盡之處懇請見諒,也盼望能夠得到解答


2023/02/20 08:48 補充:
對於訓練的「邏輯」或「方式」這方面,個人有鑽研過。不過在尋找是否有可以「藉由該方法」進行訓練的工具,例如 Teachable Machine
可以訓練辨識圖像,想尋找類似於這樣的工具,但同時包含文字和圖像的理解。
個人對於Python和Node.js等程式語言也有一些了解,若有相關的套件可以進行相關的訓練亦可。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
alanotmt
iT邦新手 4 級 ‧ 2023-02-20 11:44:48
最佳解答

如果你的棋盤是固定環境,並且正下方拍照整個棋局,
你可以使用傳統影像處理把圖片的棋局量化成數據(15位數字)再餵給AI
那你就需要 強化學習 (Reinforcement learning)
以下是有發佈paper的所有RL 的model 你可以挑一個適合你現在的情況去訓練
https://paperswithcode.com/

OTP iT邦新手 5 級 ‧ 2023-02-21 19:40:53 檢舉

感謝您的解答,雖然找不出哪個才是自己需要的QQ

1
JamesDoge
iT邦高手 1 級 ‧ 2023-02-20 08:40:43

不知道是不是你要的,參考看看

  1. 卷積神經網路(Convolutional Neural Networks, CNN)
    https://brohrer.mcknote.com/zh-Hant/how_machine_learning_works/how_convolutional_neural_networks_work.html

  2. 決策樹(Decision Tree)
    https://zh.wikipedia.org/zh-tw/%E5%86%B3%E7%AD%96%E6%A0%91

  3. 支持向量機(Support Vector Machine, SVM)
    https://zh.wikipedia.org/zh-tw/%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA

OTP iT邦新手 5 級 ‧ 2023-02-20 08:47:14 檢舉

對於訓練的「邏輯」或「方式」這方面,個人有鑽研過。不過在尋找是否有可以「藉由該方法」進行訓練的工具,例如 Teachable Machine
可以訓練辨識圖像,想尋找類似於這樣的工具,但同時包含文字和圖像的理解。

OTP iT邦新手 5 級 ‧ 2023-02-20 08:47:27 檢舉

同時也感謝您的建議

1
jeffeux
iT邦新手 4 級 ‧ 2023-02-28 02:17:48

不知道為什麼前面好像沒有人繼續討論了,本人在此以我微薄的知識來盡力協助一下⋯⋯
有幾個問題想先釐清,
(以下有幾個詞我會用英文簡寫:
(1) DL = Deep learning 深度學習,就是使用類神經網路進行的機器學習
(2) CNN = Convolutional Neural Network 卷積神經網路,簡單說就是能夠運作在圖像類資料的深度學習模型
(3) RL = Reinforcement learning 強化學習,就是基於環境而行動,以取得最大化預期利益的學習方式。可以使用深度學習或一般機器學習演算法達成。
(4) SVM = Support Vector Machine 支撐向量機,說白了就是對向量的分類器,屬於傳統機器學習領域。有興趣網路上應該一大堆,實做的套件像是 sklearn 應該很容易找到)

  1. 是已經有文字敘述規則,但還沒有程式,希望把文字用 AI (DL 語言模型) 轉換成程式嗎?
  2. 「近百種的必勝與必敗盤面」且「可以通過 15 位數來表達」,請問這件事是已經有程式(如圖像處理程式(演算法 AI)或影像辨識 AI (CNN DL 模型))可以進行「輸入圖像輸出這個 15 位數」了,亦或者是這件事是需要在這次需求下一併被完成的呢?亦或是所有可能的「圖片 vs 15 位數」對應都已經有了?
  3. AI 能採取的是「給予策略」並「將一種盤面變成另一種盤面」還是「任意選擇一個盤面當成下一個策略」呢?因為感覺所有可能的盤面在這類遊戲不可能是可以互相轉換的。

對於以上三點要先確定,我覺得才好討論下一步需要的工具是什麼:
對於問題 1,現在的語言模型可能只有 ChatGPT 能夠直接生成,能把語言文字直接變成演算法或可執行的程式目前不多;而且對於前者我認為 ChatGPT 生出來的也不一定是對的還是得透過人手檢查,後者個人知道的可能只有實驗室同學做的 https://arxiv.org/abs/2301.12950 這種比較接近。
對於問題 2,如果已經有「圖片 --> 15 位數」的對應那就直接查表(例如某一張圍棋的盤面假設要用 361 個 0/1 來代表,而這串數字已經被存成檔名,那可以直接用比對 pixel 查表);否則就需要靠一個 CNN 來進行編碼,或者更簡單的——假設是圍棋盤面直接看 361 個圖像的 pixel 是接近 0 或 255 來得到這張盤面連 CNN 都不需要。

最難的是問題 3,我不確定問題 1 的規則是否被寫好,即便是被寫好了或有辦法用語言模型來執行,我們仍然知道所有可能的盤面不會是能在一步之內馬上轉換的

例如 左上角一顆黑棋其他全空(假定編碼 200000000000000) 與 左上角一顆白棋其他全空 (假定編碼 100000000000000)不可能是可以互相轉換的盤面),那 AI 能做的很可能就不是很直白的在現在盤面是 100000000000000 的時候給出 「讓盤面變成 200000000000000」 這個策略,而是「在右上角下一個黑子」使盤面變成「左上一顆白右上一顆黑(假定編碼 100000000000002)」,或者起碼要有個小 AI 去篩選說「因為盤面是 100000000000000 了,所以 200000000000000 和某些盤面是不可能的,只有 100000000000002 和另外某些盤面可能,而 AI 應該要怎樣選擇。
達成以上條件可以使用 RL 來處理(Policy Gradient 或 Q-learning)也可以直接給定規則(尤其當問題 1 已經是程式時)用決策樹(decision tree)寫規則來處理。至於小 AI 也許可以用圖像分類(CNN DL AI) 或 SVM 都可以

因此在整個問題的架構下,使用 Python 或 Node.js 等可能不是最關鍵的核心問題,而是您現在有的材料、架構是什麼,並允許用什麼樣的方式解決問題。Python 當然可以直接用 TensorFlow 或 PyTorch 或甚至上面的 Teachable Machine 來處理(背後還是 Tf / PyTorch); Node.js 也可以搭配 TensorFlow.js 等架構來處理。問題比較是「問題陳述(problem formulation)」需要更清楚。

以上純粹個人淺見,希望對您有所幫助。

————————————————————————————————————

再補充一下,
我知道現在有像是 CLIP 等同時可以吃圖像和文字的 DL 模型
但這和您這次的要求應該還差得有些遠
更不要說 DL 第一個條件就是需要有大量的訓練資料(否則容易 overfit 過度擬合,跑出來的完全不能用),第二個條件就是要有跑得動的機器
而且 CLIP 等模型跑出來的圖片也可能是任何東西,能不能要求它只跑出盤面真的很難說
至於 ChatGPT 的問題則是它應該是不太能吃圖片的(即便您可以使用各種方法去編碼,但 ChatGPT 能不能馬上理解也很難說,就想像 您要花多少言語和力氣在一個人只看得到您寫的字的情況 理解您在說什麼),ChatGPT 最強的應該是語言處理而不是邏輯推理本身。
(當然您或其他人還是可以嘗試這麼做,在下也很願意學習如何調教 ChatGPT)

抱歉又多唸了幾句,還是期望能協助到您。
(該乖乖回去做碩論的實驗了⋯⋯ ?)

我要發表回答

立即登入回答