1
1
---
2
2
author : Titipata
3
3
layout : 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 ได้ในงานวิจัยปัจจุบัน "
6
6
tags : [reinforcement, learning, q-learning, sarsa]
7
7
image :
8
8
feature :
9
9
comments : true
10
10
share : true
11
+ image :
12
+ feature : /post/rl/rl_to_drl.png
11
13
date : 2019-12-18 22:30:00
12
14
---
13
15
@@ -34,7 +36,7 @@ Reinforcement learning เป็นวิธีการเรียนรู้
34
36
35
37
- ถ้าเราเกิดเป็นน้องหมาและเราหิวพอดี เราอยากจะได้อาหาร สิ่งแรกที่เราทำนั่นก็คือหันไปดูว่ามีใครอยู่ใกล้ๆบ้างนะ โอ้! เจ้าของอยู่ใกล้ๆพอดีเลย เรายืนมือออกไป ร้องขออาหารกับเจ้าของ และหลังจากเราขอแล้วสิ่งที่เราได้กลับมาคืออาหารนั่นเอง
36
38
- การเล่น Blackjack สมมติเราเป็นผู้เล่นและอยากจะได้เงินมากที่สุดจากการเล่น สิ่งที่เราควรทำก็คือต้องพนันอย่างเหมาะสม ถ้าช่วงไหนที่ไพ่คะแนนต่ำๆออกไปเยอะ เราก็ควรจะแทงสูงขึ้นเป็นต้น (หรือเรียกว่าเทคนิคไฮ-โลนั่นเอง)
37
- - การเล่น Counter Strike ถ้าเราเป็นผู้เล่น ก็ต้องสังเกตว่ามีศตรูอยู่ใกล้ๆหรือไม่ ถ้ามี
39
+ - การเล่น Counter Strike ถ้าเราเป็นผู้เล่น ก็ต้องสังเกตว่ามีศตรูอยู่ใกล้ๆหรือไม่ ถ้ามีศตรูเราต้องหันไปทางศตรูและกดยิง
38
40
39
41
ลองนึกถึงอีกกรณีที่เจ้าของน้องหมาบอกให้นั่งนิ่งๆ ถ้านั่งแล้วจะได้กินขนม แต่ถ้าน้องหมาเดินไปเดินมาก็จะอดกินนั่นเอง แต่ถ้าฝึกไปบ่อยๆ น้องหมาก็จะเข้าใจว่า อ๋อ ถ้าได้รับคำสั่งนี้จะต้องทำแบบนี้นี่เอง
40
42
@@ -50,17 +52,16 @@ Reinforcement learning เป็นวิธีการเรียนรู้
50
52
51
53
<figcaption >
52
54
<a title="Reinforcement Learning Workflow">
53
- การเรียนรู้เริ้มต้นที่สำรวจว่าอยู่ที่ state ไหนแล้ว \\( S_0\\) ตัดสินใจทำบางอย่าง \\( A_0\\) และได้ผลลัพธ์กลับมา \\( R_1\\) เป็นแบบนี้ไปเรื่อยๆ
55
+ การเรียนรู้เริ้มต้นที่สำรวจว่าอยู่ที่ state ไหนแล้ว S_0 ตัดสินใจทำบางอย่าง A_0 และได้ผลลัพธ์กลับมา R_1 เป็นแบบนี้ไปเรื่อยๆ
54
56
</a>
55
57
</figcaption >
56
58
</center ></figure >
57
59
58
60
ในแผนผังนี้เราเริ่มต้นโดยการกำหนดผู้เรียนรู้ (agent) โดย agent สามารถสำรวจได้ว่าอยู่ที่ไหนของ environment (state) จากนั้น agent สามารปฎิสัมพันธ์กับสิ่งแวดล้อมโดยใช้การกระทำบางอย่าง (action) หลังจากที่ใช้ action ไปแล้ว agent ก็จะได้ reward กลับมา
59
61
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\\) เป็นแบบนี้ไปเรื่อยๆ
62
63
63
- เพราะฉะนั้น เราจะเขียนลำดับของการทำงานของโยดาจิ๋วจนตายได้ประมาณนี้
64
+ เพราะฉะนั้น เราจะเขียนลำดับของการทำงานของน้องหมาจนกระทั่งน้องหมาแก่ตายได้ประมาณนี้
64
65
65
66
$$ S_0 A_0 R_1 S_1 A_1 \ldots R_T S_T $$
66
67
@@ -72,15 +73,17 @@ $$S_0 A_0 R_1 S_1 A_1 \ldots R_T S_T$$
72
73
73
74
จะเห็นว่าการทำงานของแผนผังที่เราเล่าไปข้างต้น มีลำดับดังต่อไปนี้
74
75
75
- - (1) สังเกตว่าตัวเองอยู่ในสภาวะใด (state)
76
- - (2) ออกคำสั่ง (action)
77
- - (3) ได้ผลลัพธ์หรือคะแนน (reward)
76
+ - สังเกตว่าตัวเองอยู่ในสภาวะใด (state)
77
+ - ออกคำสั่ง (action)
78
+ - ได้ผลลัพธ์หรือคะแนน (reward)
78
79
79
80
เราเรียกโจทย์นี้อีกชื่อนึงว่า finite Markov Decision Process (MDP) ซึ่งเป็นโจทย์ของปัญหา reinforcement learning ที่เราต้องการจะแก้นี่เอง โดยสิ่งที่เราต้องการนั่นคือการที่ได้ผลลัพธ์ที่ดีที่สุดในตอนท้าย โดยการจะทำให้ได้ผลลัพธ์ที่ดีที่สุดเราสามารถทำได้โดยการหาชุดคำสั่ง (policy) ที่ดีที่สุดในแต่ละ state ที่เราอยู่
80
81
81
- เช่นในกรณีของน้องหมาสิ่งที่เราควรทำคือฟังคำสั่งของเจ้าของเพื่อให้ได้อาหารมากที่สุด หรือในกรณีของการเล่น Blackjack เราก็ต้องการได้เงินมากที่สุดก่อนที่จะหมดรอบของการแข่ง
82
+ $$ \pi: S \rightarrow A $$
83
+
84
+ Policy \\ (\pi\\ ) สามารถเป็นชุดคำสั่งที่เราเขียนขึ้นเอง (deterministic) หรือใช้ความน่าจะเป็นก็ได้ (stochastic) โดยในกรณีของน้องหมาสิ่งที่เราควรทำคือฟังคำสั่งของเจ้าของเพื่อให้ได้อาหารมากที่สุด หรือในกรณีของการเล่น Blackjack เราก็ต้องการได้เงินมากที่สุดก่อนที่จะหมดรอบของการแข่ง (เลือกว่าจะหยิบไพ่เพิมหรือไม่หยิบ) เป็นต้น
82
85
83
- คำถามถัดไปคือ การหาชุดคำสั่งที่ดีที่สุด เราต้องทำยังไงนะ? ในหัวข้อข้างล่างเราจะมาพูดถึงการหาชุดคำสั่งที่ดีที่สุด (optimal policy) สำหรับ
86
+ คำถามถัดไปคือ การหาชุดคำสั่งที่ดีที่สุด เราต้องทำยังไงนะ? ในหัวข้อต่อไปเราจะมาพูดถึงการหาชุดคำสั่งที่ดีที่สุด (optimal policy) โดยใช้วิธี Monte Carlo และ Temporal Difference (Sarsa, Q-learning) กัน
84
87
85
88
# หาชุดคำสั่งที่ดีที่สุดโดยใช้วิธี Monte Carlo
86
89
@@ -90,8 +93,7 @@ $$S_0 A_0 R_1 S_1 A_1 \ldots R_T S_T$$
90
93
ส่วนทิศทางการเดินก็ไปได้แค่ ซ้าย บน ขวาและล่างเท่านั้น โดยเราจะให้ agent เริ่มต้นจาก state 1 (ซ้ายล่าง) และพยายามไปให้ถึง state 4 (ขวาล่าง) เป้าหมายคือเราอยากจะหาชุดคำสั่งของแต่ละ state ที่ทำให้เราได้คะแนนมากที่สุดตอนถึงจุดสุดท้ายนั่นเอง จะเห็นว่าถ้าเรายิ่งเดินผิดมากเท่าไหร่ ก็จะยิ่งอยู่ใน Grid นานกว่าเดิมและคะแนนลดลงเรื่อยๆ
91
94
92
95
<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 " />
95
97
<figcaption >
96
98
<a title="Grid World">
97
99
Grid World Example
@@ -108,10 +110,10 @@ $$S_0 A_0 R_1 S_1 A_1 \ldots R_T S_T$$
108
110
อย่างที่กล่าวไปข้างต้น วิธีนี้เราใช้การจำลอง agent ขึ้นมา และให้ agent เดินไปจนถึงจุดสิ้นสุด และอัพเดท Q-table
109
111
110
112
<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 " />
112
114
<figcaption >
113
- <a title="Grid World ">
114
- Grid World Example
115
+ <a title="Monte Carlo Update ">
116
+ การอัพเดท Q-table โดยใช้วิธี Monte Carlo และการเลือกชุดคำสั่งโดยใช้เทคนิค epsilon-Greedy
115
117
</a>
116
118
</figcaption >
117
119
</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+
145
147
$$ 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)) $$
146
148
147
149
<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 " />
149
151
150
152
<figcaption >
151
153
<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
171
173
ยังมีอีกหลายวิธีที่เราสามารถแทนตำแหน่งใน continuous space ด้วยตัวเลขที่น้อยกว่าพิกัดจริงๆ เช่น การวาดวงกลมหลายๆวงไปบนพื้นผิว แล้วแทนตำแหน่งด้วยวงกลมที่ agent อยู่ แต่ถึงอย่างไรเราก็ต้องกำหนดขนาดของวงกลม กำหนดระยะการซ้อนและอีกหลายปัจจัย ซึ่งต้องใช้ความรู้พื้นฐานถึงจะออกแบบได้ดี
172
174
173
175
<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 " />
175
177
176
178
<figcaption >
177
179
<a title="Q-update SARSA">
@@ -226,4 +228,6 @@ prtin(len(env_infor.vector_observations)) # dimension of states = 37
226
228
227
229
# สรุป
228
230
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