Skip to content

Commit 0e063fe

Browse files
committed
Update post, heading photos
1 parent 9f4a3c5 commit 0e063fe

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

_posts/2019-12-18-reinforcement-learning.md

+24-20
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
---
22
author: Titipata
33
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 ได้ในงานวิจัยปัจจุบัน"
66
tags: [reinforcement, learning, q-learning, sarsa]
77
image:
88
feature:
99
comments: true
1010
share: true
11+
image:
12+
feature: /post/rl/rl_to_drl.png
1113
date: 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 โดยเราจะเขียนเพิ่มเติมในโพสต์หน้าๆฮะ รอติดตาม!

images/post/rl/rl_to_drl.png

189 KB
Loading

0 commit comments

Comments
 (0)