ערוץ חדשות

איש קשר רשמי

     

איך לאמן בוט פוקר עם לוגים של היסטוריות ידיים

העניין עם בוטי פוקר הוא כזה: הם לא מתעניינים בסיפורי ה-Bad Beat שלך. הם אפילו לא אוהבים את ה-Beat עצמו. מה שמעניין אותם הוא הלוג. יומן הטקסט הפשוט, עם חותמת זמן, מיקום בשולחן, עומק סטאק, תקציב, דולרים וסנטים – כל פירוט של מה שבאמת התרחש.

אתה יודע, הקבצים שרוב השחקנים שומרים רק כדי לבדוק שוב אם היה כדאי להם לשלם קול גבולי בריבר. ביליתי לילות שלמים בהתבוננות בהם, עד שהידיים התערבבו זו בזו, ועד ש-"UTG מעלה ל-$3" הפסיק להיראות כמו פעולה והתחיל להיראות כמו סדק במטריקס.

באיזשהו מקום בתוך כל זה, בוט פוקר לומד. כאן מתחיל תהליך האימון עם היסטוריות ידיים – הפיכת לוגים גולמיים וכאוטיים ליסודות של הידע האסטרטגי של ה-AI.

ניקוי ופריסת לוגים של היסטוריות ידיים

לוגים של היסטוריות ידיים הם מבולגנים. PokerStars, GGPoker, WSOP – לכל אחד יש את השגעונות שלו. לפעמים הבליינדים מופיעים בראש הדף, לפעמים קבורים שלוש שורות בפנים, לפעמים בפורמט שנראה משנת 2004 (כי הוא באמת משם).

המשימה הראשונה היא לנקות אותם. ליישר את גדלי הסטאקים ליחידות Big Blinds. לאחד את פורמט הפעולות. לקודד את הקלפים לווקטורים בינאריים קריאי-מכונה. בוט לא “רואה” אס-פיקה – הוא רואה 1 במיקום ה-12 של מערך של 52 ביטים. רומנטי, אני יודע.

poker bot hand history training encoding cards into bit position for machine learning

ככל שאתה מפרק ומעבד טוב יותר את המידע, כך פחות “זבל” נכנס לראש של הבוט. הקדשתי אפילו שלושה ימים לתיקון שגיאת Parsing שגרמה לחצי מה-Small Blinds להיראות כמו רייזים פנטומיים. הבוט היה מקפל זוג מלכים פרה-פלופ. מביך? בהחלט. חינוכי? אפילו יותר.

הפיכת לוגי היסטוריות ידיים לנתוני אימון לבוט פוקר

הקסם הוא כזה: בוט פוקר לא צריך נאום מוטיבציה אסטרטגי כדי להצטיין. הוא צריך זוגות מצב-פעולה מובנים.

אנחנו מפרקים כל יד לפי נקודות החלטה: גודל הקופה, מיקום, עומק הסטאק, טקסטורת הלוח, הימורים קודמים. מוסיפים פרמטרים מלאכותיים כמו יחס קופה, יחס קופה נסתר (Implied Odds), SPR, Fold Equity. והמילים המרכזיות: פולד, קול, רייז, עם סוגי הימורים.

אם זה למידת Supervised, הבוט פשוט מחקה. חיקוי התנהגותי. אלפי, מיליוני החלטות משחקנים חזקים. זה כמו ללמד תוכי לדבר, רק שהתוכי הזה לפעמים עושה 3-Bet קל מה-Cutoff. השלב הזה הוא חלק קריטי באימון בוט פוקר עם היסטוריות ידיים, שבו פעולות מובנות שנחצבו מהלוגים הופכות למודלים החלטתיים ניתנים להרצה.

אם זה Reinforcement Learning, היסטוריות ידיים הן יותר כמו מראה. הן לא הדלק העיקרי (משחק עצמי מניב נתונים מגוונים יותר), אבל הן יכולות לעזור לכוונן התנהגות מול מצבים אמיתיים.

שימוש ב-CFR ולמידה עמוקה באימון בוט פוקר

Counterfactual Regret Minimization (CFR) עדיין שולט. הבוט מקבל החלטות כאילו הוא מחשב בכל נקודת החלטה את החרטה על אי-ביצוע כל פעולה אפשרית, ואז לאט לאט מתאים את עצמו. עשה את זה מיליארד פעמים – ויש לך משחק Game Theory Optimal (GTO).

poker bot hand history training using CFR algorithm regret minimization

אחר כך מגיע תור ה-Deep Reinforcement Learning להתמודד עם החלקים המורכבים יותר. DeepStack טיפל במשחק העתידי עם רשת עצבית, Pluribus הסתכל קצת קדימה כדי להסתגל לכאוס של משחקי שישה שחקנים. המספרים הטובים ביותר ב-AI לפוקר מופיעים בבוט היברידי – GTO בליבה, ומשחק מנצל בקצוות.

היסטוריות הידיים כאן? הן כלי הכיול. הן מראות מה שחקנים אמיתיים עושים בפועל, כדי שהבוט יוכל לשחק שמרני כשכסף אמיתי על השולחן.

טעויות, באגים והגורם האנושי

אימון בוט הוא לא רק עניין של מספרים. זה גם דיבאג מתמטי.

כבר היו לי בוטים שקיפלו זוג אסים כי קלף חסר ערך שגוי סומן בוקטור הפיצ’רים. היו לי בוטים שניסו לבצע בלוף-שב בלימיט הולדם כי מנרמל גודל ההימור היה שבור.

כל טעות ב-Parsing ובפיתוח הפיצ’רים מצטברת. האלגוריתמים של ה-AI לפוקר לא חכמים יותר מהנתונים שאתה מזין להם. Garbage in, Garbage AI out.

וזה העניין: היסטוריות ידיים לא מדויקות. הן נושאות את ההטיות של השחקנים שיצרו אותן: קיפולים מוגזמים, בלופים חסרים, קווים משונים. אם אתה מאמן עליהן בעיניים עצומות, הבוט שלך לומד את הייחודיות האלה. לפעמים זה טוב (כוח מנצל נגד קבוצה מסוימת), לפעמים זו מלכודת.

בדיקה והערכה של בוט פוקר לאחר האימון

לאחר שהאימון מסתיים, יש לך מודל. אבל לא בוט מוגמר.

אתה רוצה ממשק שמעביר למודלים מצבי משחק חיים מהשולחן; לוגיקת הימור שיודעת להתמודד טוב עם מצבים לא נוחים מחוץ לסט האימון; שיהיו מצבי fallback כך שכאשר הביטחון של המודל נמוך, הוא תמיד יוכל לחזור לאסטרטגיה בטוחה יותר.

התוצאה היא לא רק חישוב מתמטי. זו תוכנה. פרויקט AI לפוקר שאפשר לבדוק, להעריך, ואולי אפילו לשחק מולו.

בעולם המחקר, עושים AIVAT להפחתת שונות כדי לאמוד את ה-Winrate של הבוט. אם זה בדיקה פרטית, פשוט מריצים אותו ל-100,000 ידיים ומקווים שהגרף עולה.

ואז אתה צופה בו משחק

poker bot hand history training analyzing check raise strategy and fold frequency

כאן זה מתחיל להיות כיף.

אתה צופה בבוט עושה משהו מוזר – צ’ק-רייז על פלופ יבש עם זוג שלישי. אתה בודק את הלוג. הוא מנצל נטייה שהוא גילה עמוק איפשהו במאגר הנתונים: סוג היריב הזה מקפל יותר מדי לאגרסיה בפוטים מרובי משתתפים.

אתה רואה אותו משחק לאט עם זוג אסים בדרך שמעולם לא לימדת אותו. אתה רואה אותו עושה קול הירואי במצב שאתה היית מקפל בו. לפעמים זה מבריק. לפעמים זה מתרסק.

וזה העניין. בוט שאומן עם היסטוריות ידיים לומד אינטואיטיבית כל החלטה והחלטה בקבצים הללו. זו מהות האימון של בוט פוקר עם היסטוריות ידיים – התאמת אסטרטגיות מאלפי ידיים מתועדות לפעולות מעשיות בשולחן. הדפוסים של אלפי שחקנים, מוחלקים, משוקללים, מומרצים להסתברויות.

זה לא מושלם. אבל גם אנחנו לא.