各位好,想請教一個問題,有關於AI模型的訓練,並且內容是一個數學的棋類遊戲。
目前的需求如下:
最終希望能夠通過提供AI一個盤面的圖片(或15位數字表示),讓AI能夠判斷其是否為必勝組合,並且期望AI能夠推斷出其規律。
請教各位大神們,是否有推薦的AI圖像兼語言模型訓練工具,或是其他訓練的方式,可以達到上述需求?
本人第一次在技術問答區發文,若有未盡之處懇請見諒,也盼望能夠得到解答
2023/02/20 08:48 補充:
對於訓練的「邏輯」或「方式」這方面,個人有鑽研過。不過在尋找是否有可以「藉由該方法」進行訓練的工具,例如 Teachable Machine
可以訓練辨識圖像,想尋找類似於這樣的工具,但同時包含文字和圖像的理解。
個人對於Python和Node.js等程式語言也有一些了解,若有相關的套件可以進行相關的訓練亦可。
如果你的棋盤是固定環境,並且正下方拍照整個棋局,
你可以使用傳統影像處理把圖片的棋局量化成數據(15位數字)再餵給AI
那你就需要 強化學習 (Reinforcement learning)
以下是有發佈paper的所有RL 的model 你可以挑一個適合你現在的情況去訓練
https://paperswithcode.com/
不知道是不是你要的,參考看看
卷積神經網路(Convolutional Neural Networks, CNN)
https://brohrer.mcknote.com/zh-Hant/how_machine_learning_works/how_convolutional_neural_networks_work.html
決策樹(Decision Tree)
https://zh.wikipedia.org/zh-tw/%E5%86%B3%E7%AD%96%E6%A0%91
支持向量機(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
對於訓練的「邏輯」或「方式」這方面,個人有鑽研過。不過在尋找是否有可以「藉由該方法」進行訓練的工具,例如 Teachable Machine
可以訓練辨識圖像,想尋找類似於這樣的工具,但同時包含文字和圖像的理解。
同時也感謝您的建議
不知道為什麼前面好像沒有人繼續討論了,本人在此以我微薄的知識來盡力協助一下⋯⋯
有幾個問題想先釐清,
(以下有幾個詞我會用英文簡寫:
(1) DL = Deep learning 深度學習,就是使用類神經網路進行的機器學習
(2) CNN = Convolutional Neural Network 卷積神經網路,簡單說就是能夠運作在圖像類資料的深度學習模型
(3) RL = Reinforcement learning 強化學習,就是基於環境而行動,以取得最大化預期利益的學習方式。可以使用深度學習或一般機器學習演算法達成。
(4) SVM = Support Vector Machine 支撐向量機,說白了就是對向量的分類器,屬於傳統機器學習領域。有興趣網路上應該一大堆,實做的套件像是 sklearn 應該很容易找到)
對於以上三點要先確定,我覺得才好討論下一步需要的工具是什麼:
對於問題 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)
抱歉又多唸了幾句,還是期望能協助到您。
(該乖乖回去做碩論的實驗了⋯⋯ ?)