ש למידה: כל מה שאתה צריך לדעת על למידת חיזוק



מאמר זה מספק ידע מפורט ומקיף על Q-Learning באמצעות אנלוגיה יפה של למידת חיזוק באמצעות קוד פייתון.

ו הם כמה תחומים הנמנים עם מילות המפתח המובילות בענף ומסיבה טובה. AI עתידה ליצור 2.3 מיליון משרות עד שנת 2020 בהתחשב במטרתה העיקרית היא לאפשר למכונות לחקות התנהגות אנושית. מוזר לא? לכן, היום אנו נדון ב- Q Learning, אבן הבניין של למידת חיזוק בסדר הבא:

מהי למידת חיזוק?

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





תחומי עניין מרכזיים:

  • סביבה
  • פעולה
  • פרס
  • מדינה

למידת חיזוק - למידה q



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

תהליך לימוד Q

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

אנלוגיה של מפעל רכב:



תאריך תאריך בדוגמת SQL

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

מדינות:

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

פעולות:

פעולות אינן אלא המהלכים שעשו הרובוטים למיקום כלשהו. קחו בחשבון, רובוט נמצא במיקום L2 והמיקומים הישירים אליו הוא יכול לנוע הם L5, L1 ו- L3. בואו נבין זאת טוב יותר אם נדמיין זאת:

תגמולים:

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

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

משוואת בלמן

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

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

V (s) = מקסימום (R (s, a) + & # 120632V (s '))

איפה:

  • s = מצב מסוים
  • a = פעולה
  • s '= מצב אליו הרובוט עובר מ- s
  • & # 120632 = גורם הנחה
  • R (s, a) = פונקציית תגמול שלוקחת מצב (ים) ופעולה (a) ומוציאה ערך תגמול
  • V (s) = ערך של להיות במצב מסוים

עכשיו לחסום שמתחת ליעד יהיה תגמול של 1, שהוא התגמול הגבוה ביותר, אבל מה עם הבלוק האחר? ובכן, כאן נכנס גורם ההנחה. בואו נניח גורם הנחה של 0.9 ונמלא את כל הבלוקים בזה אחר זה.

תהליך החלטה של ​​מרקוב

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

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

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

אז אנחנו הולכים להשתמש במשוואת בלמן המקורית שלנו ונבצע בה שינויים. מה שאנחנו לא יודעים הוא המדינה הבאה כלומר. s ’. מה שאנחנו יודעים זה כל האפשרויות של תפנית ונשנה את המשוואה.

V (s) = מקסימום (R (s, a) + & # 120632 V (s '))

הגדר ליקוי חמה עבור Java

V (s) = מקסימום (R (s, a) + & # 120632 & סיגמאזהP (s, a, s ’) לעומת'))

P (s, a, s ’): סבירות לעבור ממדינה ס ל זה עם פעולה ל

& סיגמאזהP (s, a, s ’) לעומת '): ציפיות אקראיות לרובוט

V (s) = מקסימום (R (s, a) + & # 120632 ((0.8V (חדרלְמַעלָה)) + (0.1 וולט (חדרמטה) + ....))

עכשיו, בואו נעבור ללימוד Q. Q-Learning מעלה רעיון להערכת איכות הפעולה הננקטת כדי לעבור למצב במקום לקבוע את הערך האפשרי של המדינה אליה היא עוברת.

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

Q (s, a) = (R (s, a) + & # 120632 & סיגמאזהP (s, a, s ’) לעומת'))

במשוואה זו המכמתה את איכות הפעולה, אנו יכולים להניח כי V (s) הוא המקסימום של כל הערכים האפשריים של Q (s, a). אז בואו נחליף את v (s ') בפונקציה של Q ().

Q (s, a) = (R (s, a) + & # 120632 & סיגמאזהP (s, a, s ’) מקסימום Q (s ', a'))

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

מדריכי שרת SQL למתחילים

TD (s, a) = (R (s, a) + & # 120632 & סיגמאזהP (s, a, s ’) מקסימום Q (s ', a')) - Q (s, a)

אנו מחשבים מחדש את Q (s, a) עם אותה נוסחה ומחסירים ממנו את Q (s, a) שהיו ידועים בעבר. אז המשוואה לעיל הופכת ל:

שt(s, a) = Qt-1(s, a) + α TDt(s, a)

שt(s, a) = ערך Q נוכחי

שt-1(s, a) = ערך Q קודם

שt(s, a) = Qt-1(s, a) + α (R (s, a) + & # 120632 מקסימום Q (s ', a')-שt-1(s, a))

ש הדגמת למידה: NumPy

אני הולך להשתמש NumPy כדי להדגים כיצד Q Learning פועל.

שלב 1: יבוא, פרמטרים, מדינות, פעולות ותגמולים

ייבא קהה כמו np gamma = 0.75 # גורם הנחה אלפא = 0.9 # שיעור למידה location_to_state = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} פעולות = [0,1,2,3,4,5,6,7,8] rewards = np.array ( [[0,1,0,0,0,0,0,0,0], [1,0,1,0,0,0,0,0,0], [0,1,0,0, 0,1,0,0,0], [0,0,0,0,0,0,1,0,0], [0,1,0,0,0,0,0,1,0] , [0,0,1,0,0,0,0,0,0], [0,0,0,1,0,0,0,1,0], [0,0,0,0, 1,0,1,0,1], [0,0,0,0,0,0,0,1,0]])

שלב 2: מיפוי מדדים למיקומים

state_to_location = dict ((state, location) for location, state in location_to_state.items ())

שלב 3: קבל מסלול אופטימלי באמצעות תהליך הלמידה Q

def get_optimal_route (מיקום התחלה, מיקום קצה): rewards_new = np.copy (rewards) ending_state = location_to_state [end_location] rewards_new [ending_state, ending_state] = 999 Q = np.array (np. zero ([9,9])) # Q- תהליך למידה עבור i בטווח (1000): # הרמת מצב אקראי current_state = np.random.randint (0,9) # Python אינו כולל את הגבול העליון playable_actions = [] # החזרות דרך מטריצת התגמול החדשה עבור j בטווח ( 9): אם rewards_new [current_state, j]> 0: playable_actions.append (j) # בחר פעולה אקראית שתוביל אותנו למצב הבא next_state = np.random.choice (playable_actions) # מחשוב זמני ההבדל TD = rewards_new [current_state , next_state] + gamma * Q [next_state, np.argmax (Q [next_state,])] - Q [current_state, next_state] # עדכון ערך ה- Q באמצעות משוואת בלמן Q [הנוכחי_מצב, הבא_מצב] + = אלפא * TD # אתחל את המסלול האופטימלי עם מסלול המיקום ההתחלתי = [מיקום התחלה] # אתחל את המיקום הבא עם מיקום ההתחלה הבא_מיקום = כוכב t_location # לא ידוע לנו על המספר המדויק של החזרות הדרושות כדי להגיע למיקום הסופי, מכיוון שלולאה תהיה בחירה טובה לאיתור בזמן (מיקום הבא! = מיקום סוף): # הבא את מצב ההתחלה start_state = location_to_state [start_location] # הבא את ערך ה- Q הגבוה ביותר הנוגע למצב ההתחלה next_state = np.argmax (Q [starting_state,]) # קיבלנו את האינדקס של המצב הבא. אבל אנחנו צריכים את האות המקבילה. next_location = state_to_location [next_state] route.append (next_location) # עדכן את מיקום ההתחלה עבור האיטרציה הבאה start_location = מסלול החזרה הבא

שלב 4: הדפיסו את המסלול

הדפס (get_optimal_route ('L1', 'L9'))

תְפוּקָה:

עם זה, אנו מגיעים לסוף למידת Q. אני מקווה שהכרת את העבודה של Q Learning יחד עם התלות השונות שיש כמו ההבדל הזמני, משוואת בלמן ועוד.

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