11---
22author : Titipata
33layout : post
4- title : " จาก Reinforcement Learning จนมาเป็น Deep Reinforcement Learning"
5- description : " ทำความรู้จักการเรียนรู้แบบเสริมกำลัง (reinforcement learning) ฉบับผู้เริ่มหัดเรียน แล้วไปไงมาไงถึงมาเป็น Deep Reinforcement Learning ได้ "
4+ title : " จาก Reinforcement Learning จนมาเป็น Deep Reinforcement Learning (ฉบับพกพา) "
5+ description : " ทำความรู้จักการเรียนรู้แบบเสริมกำลัง (reinforcement learning) ตั้งแต่เบื้องต้น จนมาเป็น Deep Reinforcement Learning ได้ในงานวิจัยปัจจุบัน "
66tags : [reinforcement, learning, q-learning, sarsa]
77image :
88 feature :
99comments : true
1010share : true
11+ image :
12+ feature : /post/rl/rl_to_drl.png
1113date : 2019-12-18 22:30:00
1214---
1315
@@ -34,7 +36,7 @@ Reinforcement learning เป็นวิธีการเรียนรู้
3436
3537- ถ้าเราเกิดเป็นน้องหมาและเราหิวพอดี เราอยากจะได้อาหาร สิ่งแรกที่เราทำนั่นก็คือหันไปดูว่ามีใครอยู่ใกล้ๆบ้างนะ โอ้! เจ้าของอยู่ใกล้ๆพอดีเลย เรายืนมือออกไป ร้องขออาหารกับเจ้าของ และหลังจากเราขอแล้วสิ่งที่เราได้กลับมาคืออาหารนั่นเอง
3638- การเล่น Blackjack สมมติเราเป็นผู้เล่นและอยากจะได้เงินมากที่สุดจากการเล่น สิ่งที่เราควรทำก็คือต้องพนันอย่างเหมาะสม ถ้าช่วงไหนที่ไพ่คะแนนต่ำๆออกไปเยอะ เราก็ควรจะแทงสูงขึ้นเป็นต้น (หรือเรียกว่าเทคนิคไฮ-โลนั่นเอง)
37- - การเล่น Counter Strike ถ้าเราเป็นผู้เล่น ก็ต้องสังเกตว่ามีศตรูอยู่ใกล้ๆหรือไม่ ถ้ามี
39+ - การเล่น Counter Strike ถ้าเราเป็นผู้เล่น ก็ต้องสังเกตว่ามีศตรูอยู่ใกล้ๆหรือไม่ ถ้ามีศตรูเราต้องหันไปทางศตรูและกดยิง
3840
3941ลองนึกถึงอีกกรณีที่เจ้าของน้องหมาบอกให้นั่งนิ่งๆ ถ้านั่งแล้วจะได้กินขนม แต่ถ้าน้องหมาเดินไปเดินมาก็จะอดกินนั่นเอง แต่ถ้าฝึกไปบ่อยๆ น้องหมาก็จะเข้าใจว่า อ๋อ ถ้าได้รับคำสั่งนี้จะต้องทำแบบนี้นี่เอง
4042
@@ -50,17 +52,16 @@ Reinforcement learning เป็นวิธีการเรียนรู้
5052
5153 <figcaption >
5254 <a title="Reinforcement Learning Workflow">
53- การเรียนรู้เริ้มต้นที่สำรวจว่าอยู่ที่ state ไหนแล้ว \\( S_0\\) ตัดสินใจทำบางอย่าง \\( A_0\\) และได้ผลลัพธ์กลับมา \\( R_1\\) เป็นแบบนี้ไปเรื่อยๆ
55+ การเรียนรู้เริ้มต้นที่สำรวจว่าอยู่ที่ state ไหนแล้ว S_0 ตัดสินใจทำบางอย่าง A_0 และได้ผลลัพธ์กลับมา R_1 เป็นแบบนี้ไปเรื่อยๆ
5456 </a>
5557 </figcaption >
5658</center ></figure >
5759
5860ในแผนผังนี้เราเริ่มต้นโดยการกำหนดผู้เรียนรู้ (agent) โดย agent สามารถสำรวจได้ว่าอยู่ที่ไหนของ environment (state) จากนั้น agent สามารปฎิสัมพันธ์กับสิ่งแวดล้อมโดยใช้การกระทำบางอย่าง (action) หลังจากที่ใช้ action ไปแล้ว agent ก็จะได้ reward กลับมา
5961
60- เราสมมติว่าเวลาในที่นี้เดินแบบไม่ต่อเนื่องคือเริ่มจาก \\ (t = 1, 2, 3, ...\\ ) นั่นเอง ในกรณีที่ถ้าเราเป็นน้องหมา สิ่งที่เราต้องทำอย่างแรกคือลองสังเกตว่า ในที่นี้เราจะเรียกว่า state (\\ (S\\ )) โดย \\ (S_0\\ ) หมายถึง state ของน้องหมา ณ เวลา \\ (t = 0\\ ) นั่นเอง โดยในเวลานี้โยดาจิ๋ว สามารถออกคำสั่งได้หนึ่งอย่าง (\\ (A_0\\ ))เช่น ร้องขอข้าว
61- ชี้นิ้ว ใช้พลังบีบคอ เป็นต้น หลังจากโยดาจิ๋วออกคำสั่งแล้ว ก็จะได้ผลลัพธ์กลับมา เช่นการได้ข้าวเป็นต้น (\\ R_1\\ ) และเวลาก็จะเลื่อนไปเป็น \\ (t = 1\\ ) เป็นแบบนี้ไปเรื่อยๆ
62+ เราสมมติว่าเวลาในที่นี้เดินแบบไม่ต่อเนื่องคือเริ่มจาก \\(t = 1, 2, 3, ...\\) นั่นเอง ในกรณีที่ถ้าเราเป็นน้องหมา สิ่งที่เราต้องทำอย่างแรกคือลองสังเกตว่า ในที่นี้เราจะเรียกว่า state (\\(S\\) โดย \\(S_0\\) หมายถึง state ของน้องหมา ณ เวลา \\(t = 0\\) นั่นเอง โดยในเวลานี้น้องหมาสามารถออกคำสั่งได้หนึ่งอย่าง (\\(A_0\\))เช่น ร้องขอข้าว นั่ง กลิ้ง เป็นต้น หลังจากน้องหมาออกคำสั่งไปเรียบร้อย ก็จะได้ผลลัพธ์กลับมา เช่นการได้ข้าวเป็นต้น \\(R_1\\) และเวลาก็จะเลื่อนไปเป็น \\(t = 1\\) เป็นแบบนี้ไปเรื่อยๆ
6263
63- เพราะฉะนั้น เราจะเขียนลำดับของการทำงานของโยดาจิ๋วจนตายได้ประมาณนี้
64+ เพราะฉะนั้น เราจะเขียนลำดับของการทำงานของน้องหมาจนกระทั่งน้องหมาแก่ตายได้ประมาณนี้
6465
6566$$ S_0 A_0 R_1 S_1 A_1 \ldots R_T S_T $$
6667
@@ -72,15 +73,17 @@ $$S_0 A_0 R_1 S_1 A_1 \ldots R_T S_T$$
7273
7374จะเห็นว่าการทำงานของแผนผังที่เราเล่าไปข้างต้น มีลำดับดังต่อไปนี้
7475
75- - (1) สังเกตว่าตัวเองอยู่ในสภาวะใด (state)
76- - (2) ออกคำสั่ง (action)
77- - (3) ได้ผลลัพธ์หรือคะแนน (reward)
76+ - สังเกตว่าตัวเองอยู่ในสภาวะใด (state)
77+ - ออกคำสั่ง (action)
78+ - ได้ผลลัพธ์หรือคะแนน (reward)
7879
7980เราเรียกโจทย์นี้อีกชื่อนึงว่า finite Markov Decision Process (MDP) ซึ่งเป็นโจทย์ของปัญหา reinforcement learning ที่เราต้องการจะแก้นี่เอง โดยสิ่งที่เราต้องการนั่นคือการที่ได้ผลลัพธ์ที่ดีที่สุดในตอนท้าย โดยการจะทำให้ได้ผลลัพธ์ที่ดีที่สุดเราสามารถทำได้โดยการหาชุดคำสั่ง (policy) ที่ดีที่สุดในแต่ละ state ที่เราอยู่
8081
81- เช่นในกรณีของน้องหมาสิ่งที่เราควรทำคือฟังคำสั่งของเจ้าของเพื่อให้ได้อาหารมากที่สุด หรือในกรณีของการเล่น Blackjack เราก็ต้องการได้เงินมากที่สุดก่อนที่จะหมดรอบของการแข่ง
82+ $$ \pi: S \rightarrow A $$
83+
84+ Policy \\ (\pi\\ ) สามารถเป็นชุดคำสั่งที่เราเขียนขึ้นเอง (deterministic) หรือใช้ความน่าจะเป็นก็ได้ (stochastic) โดยในกรณีของน้องหมาสิ่งที่เราควรทำคือฟังคำสั่งของเจ้าของเพื่อให้ได้อาหารมากที่สุด หรือในกรณีของการเล่น Blackjack เราก็ต้องการได้เงินมากที่สุดก่อนที่จะหมดรอบของการแข่ง (เลือกว่าจะหยิบไพ่เพิมหรือไม่หยิบ) เป็นต้น
8285
83- คำถามถัดไปคือ การหาชุดคำสั่งที่ดีที่สุด เราต้องทำยังไงนะ? ในหัวข้อข้างล่างเราจะมาพูดถึงการหาชุดคำสั่งที่ดีที่สุด (optimal policy) สำหรับ
86+ คำถามถัดไปคือ การหาชุดคำสั่งที่ดีที่สุด เราต้องทำยังไงนะ? ในหัวข้อต่อไปเราจะมาพูดถึงการหาชุดคำสั่งที่ดีที่สุด (optimal policy) โดยใช้วิธี Monte Carlo และ Temporal Difference (Sarsa, Q-learning) กัน
8487
8588# หาชุดคำสั่งที่ดีที่สุดโดยใช้วิธี Monte Carlo
8689
@@ -90,8 +93,7 @@ $$S_0 A_0 R_1 S_1 A_1 \ldots R_T S_T$$
9093ส่วนทิศทางการเดินก็ไปได้แค่ ซ้าย บน ขวาและล่างเท่านั้น โดยเราจะให้ agent เริ่มต้นจาก state 1 (ซ้ายล่าง) และพยายามไปให้ถึง state 4 (ขวาล่าง) เป้าหมายคือเราอยากจะหาชุดคำสั่งของแต่ละ state ที่ทำให้เราได้คะแนนมากที่สุดตอนถึงจุดสุดท้ายนั่นเอง จะเห็นว่าถ้าเรายิ่งเดินผิดมากเท่าไหร่ ก็จะยิ่งอยู่ใน Grid นานกว่าเดิมและคะแนนลดลงเรื่อยๆ
9194
9295<figure ><center >
93- <img width =" 300 " src =" /images/post/rl/example-grid.png " data-action =" zoom " />
94-
96+ <img width =" 600 " src =" /images/post/rl/example-grid.png " data-action =" zoom " />
9597 <figcaption >
9698 <a title="Grid World">
9799 Grid World Example
@@ -108,10 +110,10 @@ $$S_0 A_0 R_1 S_1 A_1 \ldots R_T S_T$$
108110อย่างที่กล่าวไปข้างต้น วิธีนี้เราใช้การจำลอง agent ขึ้นมา และให้ agent เดินไปจนถึงจุดสิ้นสุด และอัพเดท Q-table
109111
110112<figure ><center >
111- <img width =" 300 " src =" /images/post/rl/monte-carlo.png " data-action =" zoom " />
113+ <img width =" 600 " src =" /images/post/rl/monte-carlo.png " data-action =" zoom " />
112114 <figcaption >
113- <a title="Grid World ">
114- Grid World Example
115+ <a title="Monte Carlo Update ">
116+ การอัพเดท Q-table โดยใช้วิธี Monte Carlo และการเลือกชุดคำสั่งโดยใช้เทคนิค epsilon-Greedy
115117 </a>
116118 </figcaption >
117119</center ></figure >
@@ -145,7 +147,7 @@ $$Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha (R_{t+1} + \gamma Q(S_{t+1}, A_{t+
145147$$ Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha (R_{t+1} + \gamma \max_{a \in A} Q(S_{t+1}, a) - Q(S_t, A_t)) $$
146148
147149<figure ><center >
148- <img width =" 300 " src =" /images/post/rl/example-q-update.png " data-action =" zoom " />
150+ <img width =" 600 " src =" /images/post/rl/example-q-update.png " data-action =" zoom " />
149151
150152 <figcaption >
151153 <a title="Q-update SARSA">
@@ -171,7 +173,7 @@ $$Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha (R_{t+1} + \gamma \max_{a \in A} Q
171173ยังมีอีกหลายวิธีที่เราสามารถแทนตำแหน่งใน continuous space ด้วยตัวเลขที่น้อยกว่าพิกัดจริงๆ เช่น การวาดวงกลมหลายๆวงไปบนพื้นผิว แล้วแทนตำแหน่งด้วยวงกลมที่ agent อยู่ แต่ถึงอย่างไรเราก็ต้องกำหนดขนาดของวงกลม กำหนดระยะการซ้อนและอีกหลายปัจจัย ซึ่งต้องใช้ความรู้พื้นฐานถึงจะออกแบบได้ดี
172174
173175<figure ><center >
174- <img width =" 300 " src =" /images/post/rl/discretize-grid-world.png " data-action =" zoom " />
176+ <img width =" 600 " src =" /images/post/rl/discretize-grid-world.png " data-action =" zoom " />
175177
176178 <figcaption >
177179 <a title="Q-update SARSA">
@@ -226,4 +228,6 @@ prtin(len(env_infor.vector_observations)) # dimension of states = 37
226228
227229# สรุป
228230
229- ในบล็อกนี้เราได้เรียนรู้กับ reinforcement learning เราอธิบายตั้งแต่จากเริ่มต้นว่า
231+ ในบล็อกนี้เราได้เรียนรู้กับ reinforcement learning โดยยกตัวอย่างของ Grid world เข้ามาเพื่อทำความเข้าใจกับการหา Q-table โดยใช้วิธี Monte Carlo และ Temporal Difference โดยใน continuous space เราไม่สามารถใช้ Q-table ได้เนื่องจากคาวมเป็นไปได้ของ state มีไม่จำกัด แต่เราสามารถใช้การแบ่ง Continuous space ให้เป็นช่วงๆเพื่อประมาณ Q-table ได้ (discretization) หรือเราจะเลือกใช้ neural network มาประมาณฟังก์ชันระหว่าง state กับ action เพื่อหาชุดคำสั่งก็ได้ เป็นที่มาของ Deep Reinforcement Learning นั่นเอง
232+
233+ ในโพสต์นี้เรายังไม่กล่าวถึง Policy agent และ Multi-agent Learning โดยเราจะเขียนเพิ่มเติมในโพสต์หน้าๆฮะ รอติดตาม!
0 commit comments