Reinforcement Learning: สอน AI ด้วย Q-Learning กันดีกว่า

Nut Chukamphaeng
3 min readNov 15, 2018

--

สำหรับใครที่เข้ามาอ่านบทความนี้ แล้วสงสัยว่า Reinforcement Learning คืออะไร แนะนำให้ลองกลับไปอ่านบทความ มาทำความรู้จักกับ Reinforcement Learning แบบเบาๆกันเถอะก่อนได้นะครับ

วันนี้เราจะมาลองเขียนโปรแกรมอย่างง่ายให้ AI ของเราเล่นเกมส์กัน และอัลกอริทึมที่เราจะใช้กันก็คือ Q-Learning ซึ่งนำเอาสมการทางคณิตศาสตร์ที่เรียกว่า Bellman Equation มาช่วย

Q(s,a) = r + γ(max(Q(s’,a’))

พูดถึง Q-Learning อย่างง่ายๆ ก็คือการที่เรามีตารางที่คอยบอกว่า ถ้าเราอยู่ state (s) นี้ เราทำ action (a) นี้ แล้วเล่นอย่างดีที่สุดจนจบเกมส์ จะได้ reward (r) เท่าไหร่ โดยมีการ discount reward (γ)

Thanks to Thomas Simonini

Simple Q-learning algorithm Process

เนื่องจากเป็น simple q-learning ขอ implement ในรูปแบบที่ เรารู้จำนวน state และ action ทั้งหมด เพื่อให้ง่ายต่อการเรียนรู้

Step 1: Initialize Q-table

สำหรับขั้นแรก ก็คือการสร้าง ตารางที่มีขนาดเท่ากับ จำนวน n แถว ( n = จำนวน state ที่เป็นไปได้ ) และ m หลัก ( m = จำนวน action ที่เป็นไปได้ ) ซึ่งเราจะให้ค่าทั้งหมด เป็น 0

Step 2: Choose an action

ก่อนที่เราจะเลือกว่าจะทำ action อะไร สำหรับ state ต่างๆ นั้นก็จะทำให้เกิดคำถามว่า

  • เริ่มต้นเราเริ่มจากไม่รู้อะไรเลย เราจะรู้ได้ยังไงว่า เลือก action ไหนแล้วจะดี ?
  • แล้วถ้าเรารู้ว่า action ไหนได้ผลลัพธ์ดีในระดับนึงแล้ว เราคิดว่ามันดีที่สุดรึยังจาก state ตอนนี้ ?

ทำให้เกิดสิ่งที่จะมาช่วยเราก็คือ Epsilon greedy โดยหน้าที่ของมันก็คือการบอกว่า เราควรตัดสินใจเลือกระหว่าง การค้นหารูปแบบใหม่ (explore) หรือจะเลือกทำแบบที่คิดว่าดีอยู่แล้ว (exploit)

ส่วนมากเขามักจะให้ค่าของ epsilon อยู่ในช่วง 0–1 โดย 1 หมายถึง ให้ explore 100% และยิ่งมีค่าน้อยลงก็หมายถึง explore ให้น้อยลงนั่นเอง

ลองนึกกันดูว่าถ้าเราเล่นหมากรุก ก่อนที่เราจะรู้ว่ากลยุทธ์แบบไหนดี ล้วนเกิดจากการลองผิดลองถูกก่อน อะไรดีเราก็นำมาปรับใช้

Step 3–4: Perform action & Measure reward

หลังเราเลือกแล้วว่า state นี้ เราจะ action อะไร เราก็นำสิ่งที่เราเลือกไปใช้กับ environment ซึ่ง environment ก็จะบอกเราว่า หลังจากทำ action นี้ เราจะไปอยู่ที่ state ไหนต่อไป (s’) และเราได้ reward (r) มาเท่าไหร่หลังจากทำ action นั้น

Step 5: Update Q-Table

มาถึงพระเอกของเราแล้ว ก็คือการอัพเดทความรู้ให้ตัว ตารางของเรา ไม่ยากอย่างที่คิดครับ มีแค่สมการเดียวเลยก็คือ

แล้วก็จะวนทำขั้นตอนที่ 2–5 ไปเรื่อยๆ จนกว่าเราจะพอใจ ยิ่งมากก็ยิ่งดีนั่นเอง ~

Implement Q-Learning

ทฤษฎีกันมาพอสมควรแล้ว เรามาลองทำจริงกันเลยดีกว่า สำหรับเกมส์ที่เราจะนำมาเล่นกันก็คือ FrozenLake

เป็นเกมส์ง่ายๆที่จากรูปข้างบน จะเห็นว่า มีตัวอักษร 4 ตัวก็คือ S, F, H และ G เป้าหมายของเกมส์ คือการเดินจากจุด S ไปตามทางเดิน F เพื่อไปถึงเป้าหมายคือจุด G แต่ระหว่างทางจะมีอุปสรรค์ก็คือ H ที่หมายถึงตกหลุม เมื่อเราตกหลุมก็จะแพ้ โดยเราเลือกเดินได้ 4 ทิศ คือ บน-ล่าง-ซ้าย-ขวา

หลังจาก update q-table เสร็จแล้ว

ก็จบไปแล้วสำหรับ Algorithm สุด basic ก็หวังว่าจะเป็นประโยชน์กับคนที่กำลังสนใจไม่มากก็น้อย แล้วพบกันใหม่ในบทความต่อไปครับผม

สำหรับคนที่สนใจเป็นพิเศษ ก็ขอแนะนำหนังสือ Reinforcement Learning: An Introduction

--

--