PAIA - 讓機器學玩遊戲
李國源
一張圖了解弱人工智慧(機器學習)
監督式學習�訓練資料需要做標記
迴歸�輸出數值
分類�輸出類別
增強式學習�提供遊戲記分規則
非監督式學習�訓練資料不需做標記
分群
對抗生成�(GAN)
機器學習二大階段
訓練階段
測試階段
機器學習數學模型�F(x)
機器學習數學模型�F(x)�(已訓練)
大量觀測資料 x
調整模型參數
x1
x2
xn
...
xtest
未觀測過之�測試資料 xtest
輸出測試結果:3
圖像來源網址�http://yann.lecun.com/exdb/mnist/
機器學習的三個層次(實作)
Level 1.會用AI相關的延伸工具(不寫文字式程式)
Level 2.會 Call python 函式做簡單的機器學習運用(使用已訓練模型)
Level 3.可收集資料並訓練 & 調整模型參數
案例實作: PAIA 打造自動玩遊戲的AI
下載 PAIA DeskTop (使用google關鍵字即可)�https://docs.paia-arena.com/zh-tw/paia-desktop
安裝paia desktop
PAIA 遊戲訓練與測試 流程
step1.maunal
step2.model_training
step3.model_playing
手動玩遊戲並記錄遊玩情資
使用step1產生之遊玩情資訓練AI模型
使用step2產生之AI模型自動玩遊戲
遊戲無法正常開啟怎麼辬
遊戲無法正常開啟怎麼辬
複製PAIA程序路徑
將PAIA資料夾排除在安全檢查之外
進入打磚塊遊戲
Step1.手動玩遊戲並記錄情資(建立與標記訓練資料)
收集完資料務必關閉遊戲視窗,以免持續收集錯誤資料
查看已建立之遊戲情資檔案
※Note:�feature檔存『遊戲狀態』�target檔存對應不同遊戲狀態『按下左鍵或右鍵』��玩家由目前的『遊戲狀態』(feature)�決定『輸入左鍵或右鍵』(target)�AI亦然
Step2 使用step1遊玩資料訓練AI模型
Step3 使用step2訓練好的AI模型玩遊戲
K最近鄰居演算法(KNN)
x
y
target: 按下右鍵 (1)
target: 按下左鍵 (2)
每個樣本的座標 (xi,yi) �可形成1個feature(特徵值)�每1個feature(特徵值) �都會對應1個target(目標值):
Q:若有一觀測樣本特徵值如圖(藍色方塊),當下可以預測下一步該按 『左鍵』 還是 『右鍵』?
K=?
K最近鄰居演算法(KNN)
target: 按下右鍵 (1)
target: 按下左鍵 (2)
4
2
2
KNN 參數選擇-權重:�※法I 權重=距離倒數 ⇒ 距離越近權重越的大
ex:右圖紅點的權重和為 ¼ + ½
綠點的權重和為 ½� ¼ + ½ > ½ � 故預測藍點對target類別為:
※法II 權重=平均 ⇒ 全部target權重都一樣
按下右鍵 (1)
Tips: 加入第三種類別 ⇒ 無動作
類別1:向右�類別2:向左�類別3:不動作
paia MLGame基本架構
paia MLGame基本架構 (python)
MLGame 框架運行方式
MLGame
附加 AI 指令�AI script (.py)
mlgame-遊戲本體
PAIA Desktop使用者介面(google blockly)�
.xml
python MLGame.py -i ml_play.py -f 120 arkanoid --difficulty NORMAL --level 2
Paia 重要檔案資料夾架構
Paia 重要檔案資料夾架構
所有arkanoid 的 AI Script 的.py檔都放在此資料夾
遊戲基本物理環境-參考github說明
40
500
200
y=400
遊戲基本物理環境-參考github說明
(0,0)
x
y
碰撞反彈之處理圖示
(100,390)
原本該為 (100+7,390+7)�但因碰撞發生,球被推回表面
(107,395)
(107+7,395-7)
frame=100
frame=101
frame=102
直接以物理方式遞迴求球之落點
使用人工智慧之迴歸模型求球之落點
如何上傳寫好的AI至paia網站上進行對戰?
給使用 python 解題之使用者的建議
建議安裝 thonny
搭配python版本:3.9
======必備套件=======
pygame==2.0.1 (遊戲建構套件)
scikit-learn==0.24.1 (機器學習套件)
pandas==1.4.1 (資料處理套件)
======選用套件======
box2d-py==2.3.8 (for 迷宮車)
pyinstaller==4.2 (製造exe檔)
matplotlib==3.3.4 (繪圖表套件)
pynput==1.7.6
加入「增強式學習」之概念
程式於每次失敗後,收集訓練資料,更新模型
隨著訓練資料的累積,自動玩遊戲的AI將越來越強
如果提早知道訓練出來的模型有沒有問題?
訓練階段
測試階段
機器學習數學模型�F(x)
機器學習數學模型�F(x)�(已訓練)
訓練資料集
調整模型參數
xtest
未觀測過之�測試資料 xtest
輸出測試結果:3
驗証資料集
驗証辨識效果
訓練資料之 K-交錯驗証(k-fold cross validation)
https://jason-chen-1992.weebly.com/home/-cross-validation
Q-Learning
https://colab.research.google.com/github/Hvass-Labs/TensorFlow-Tutorials/blob/master/16_Reinforcement_Learning.ipynb
用機器學習預估這一項
參考線上教學連結
※youtube頻道
※Python机器学习電子書
https://ljalphabeta.gitbooks.io/python-/content/
※台大開放式課程
※史丹佛開放式課程(中國機器學習之父 吳恩達)
https://www.coursera.org/learn/machine-learning
感謝聆聽
Q & A