@@ -166,9 +166,14 @@ $$Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha (R_{t+1} + \gamma \max_{a \in A} Q
166
166
167
167
จากตัวอย่างข้างบน ผู้อ่านอาจจะคิดว่า โห แล้วในชีวิตจริงมันไม่เหมือนตัวอย่างของ Grid world นี่นา ถ้าเรานึกถึงภาพของหุ่นยนต์ทำความสะอาดในบ้าน เราสามารถมีชุดตัวอย่างของ state มากกว่าแค่ใน Grid world `(ซ้ายล่าง, ซ้ายบน, ขวาล่าง, ขวาบน)` แต่เป็นตำแหน่งที่หุ่นยนต์ทำความสะอาดในห้อง หน้าตาอาจจะเป็น `(0.1 เมตร, 0.3 เมตร)`, `(0.2 เมตร, 0.5 เมตร)` จากจุดเริ่มต้นแทน ซึ่งตำแหน่งเหล่านี้อาจจะมีค่าเท่าไหร่ก็ได้ มีคู่ของตำแหน่งให้เลือกไม่สิ้นสุด
168
168
169
- จริงๆแล้ววิธีที่ง่ายที่สุดที่ทำให้เราสามารถใช้เทคนิคที่เพิ่งคุยกันไปมาใช้ก็คือการแบ่ง continuous state space เป็นช่วงๆหรือการ discretization นั่นเอง เราสามารถแบ่งช่องยิ่งเล็กก็จะยิ่งประมาณ continuous space ได้ดีขึ้น แต่ข้อเสียก็คือว่าขนาดของ Q-table ที่เราต้องสร้างก็จะใหญ่ขึ้นไปอีก และเมื่อ Q-table มีขนาดใหญ่มากๆ ก็อาจจะอัพเดทได้ไม่ทั่วถึงนั่นเอง
169
+ เราสามารถแก้ปัญหาใน Continuous Space ได้สองวิธีหลักๆดังนี้
170
170
171
- ยังมีอีกหลายวิธีที่เราสามารถแทนตำแหน่งใน continuous space ด้วยตัวเลขที่น้อยกว่าพิกัดจริงๆ เช่น การวาดวงกลมหลายๆวงไปบนพื้นผิว แล้วแทนตำแหน่งด้วยวงกลมที่ agent อยู่ แต่ถึงอย่างไรเราก็ต้องกำหนดขนาดของวงกลม กำหนดระยะการซ้อนและอีกหลายปัจจัย ซึ่งต้องใช้ความรู้พื้นฐานถึงจะออกแบบได้ดี
171
+ - Discretization หรือการแบ่ง continuous state space ให้เป็นช่วงๆ
172
+ - Function Approximation หรือใช้ฟังก์ชันประมาณ state value \\ (\hat(v)(s) \\ ) และ action value \\ (\hat(q)(s, a)\\ ) โดยตรง
173
+
174
+ วิธีที่ง่ายที่สุดที่ทำให้เราสามารถใช้เทคนิคที่เพิ่งคุยกันไปมาใช้ก็คือการแบ่ง continuous state space เป็นช่วงๆหรือการ discretization นั่นเอง เราสามารถแบ่งช่องยิ่งเล็กก็จะยิ่งประมาณ continuous space ได้ดีขึ้น แต่ข้อเสียก็คือว่าขนาดของ Q-table ที่เราต้องสร้างก็จะใหญ่ขึ้นไปอีก และเมื่อ Q-table มีขนาดใหญ่มากๆ ก็อาจจะอัพเดทได้ไม่ทั่วถึงนั่นเอง
175
+
176
+ ยังมีอีกหลายวิธีที่เราสามารถแทนตำแหน่งใน continuous space ด้วยมิติที่มีขนาดน้อยกว่าพิกัดจริงๆ เช่น การวาดวงกลมหลายๆวงไปบนพื้นผิว แล้วแทนตำแหน่งด้วยวงกลมที่ agent อยู่ แต่ถึงอย่างไรเราก็ต้องกำหนดขนาดของวงกลม กำหนดระยะการซ้อนและอีกหลายปัจจัย ซึ่งต้องใช้ความรู้พื้นฐานถึงจะออกแบบได้ดี
172
177
173
178
<figure ><center >
174
179
<img width =" 600 " src =" /images/post/rl/discretize-grid-world.png " data-action =" zoom " />
@@ -180,6 +185,10 @@ $$Q(S_t, A_t) \leftarrow Q(S_t, A_t) + \alpha (R_{t+1} + \gamma \max_{a \in A} Q
180
185
</figcaption >
181
186
</center ></figure >
182
187
188
+ อีกวิธีนึงที่เราสามารถทำได้คือการประมาณฟังก์ชัน state value \\ (\hat{v}(s) \\ ) และ action value \\ (\hat{q}(s, a)\\ ) นั่นเอง ในกรณีนี้ก็ไม่ต้องใช้การแบ่ง continuous space เป็นช่วงๆแบบเดิม จะเห็นว่าสิ่งที่เราต้องใส่เพิ่มขึ้นมาขึ้นพารามิเตอร์ \\ (W \\ ) ที่ใช้สำหรับ map ฟังก์ชันจาก \\ (s\\ ) ไปเป็น \\ (v\\ ) และ \\ ((s, a)\\ ) ไปเป็น \\ (q\\ )
189
+
190
+ ในกรณีที่เราเขียนฟังก์ชันเส้นตรง: \\ ( \hat{v}(s, W) = X(s)^T W_ {v} \\ ) และ \\ ( \hat{q}(s, a, W) = X(s, a)^T W_ {q} \\ ) หรือถ้าเป็นฟังก์ชันไม่เชิงเส้น (nonlinear) ก็จะได้หน้าตาประมาณนี้: \\ ( \hat{v}(s, W) = f_v(X(s)^T W_ {v}) \\ ) และ \\ ( \hat{q(s, a, W)} = f_q(X(s)^T W_ {q}) \\ ) ซึ่งฟังก์ชัน \\ (f(.)\\ ) ในที่นี้เราอาจจะเลือกใช้ Neural Network มาช่วยในการประมาณฟังก์ชันไม่เชิงเส้นที่เรามีนี่เอง ตัวอย่วงของการใช้ Neural Network มาประมาณฟังก์ชันได้แก่ Deep Q-Network หรือ DQN ที่จะพูดในหัวข้อถัดไป
191
+
183
192
## Deep Q-Network (DQN)
184
193
185
194
แน่นอนว่าการแบ่ง state space เป็นช่วง (discretization) สามารถประยุกต์มาใช้แก้ปัญหาที่มีขนาดใหญ่ประมาณนึงได้ แต่เมื่อขนาดของ state เริ่มเป็นไปได้หลายรูปแบบและใหญ่มากขึ้น การใช้เทคนิคการแบ่งช่วงอาจจะทำได้ไม่ง่ายนัก ด้วยประเด็นนี้นี่เองที่ Deep Neural Network จึงถูกนำมาใช้นั่นเอง ข้อดีของ Deep Neural Network คือมันสามารถประมาณฟังก์ชั่นสำหรับ state ได้ในความซับซ้อนที่สูงการฟังก์ชันทั่วไป ซึ่งทำให้เราสามารถประมาณฟังก์ชั่นจาก state ที่มีหลายมิติไปยัง action ได้โดยไม่ต้องใช้การคำนวณหา Q-table เลย
0 commit comments