AlphaGo for Dummies

AlphaGo

ข่าวที่ดังและเรียกความสนใจในวงการหุ่นยนต์และปัญญาประดิษฐ์ในช่วงนี้ คงหนีไม่พ้นการแข่งขันเล่นเกมหมากล้อม (Go) ระหว่างแชมป์โลก Lee Sedol จากเกาหลี กับระบบปัญญาประดิษฐ์ของ Google’s DeepMind ที่ชื่อ AlphaGo ซึ่งนอกจากจะลุ้นกันหัวใจเต้นแบบหมากต่อหมากแล้ว AlphaGo ยังแสดงให้เห็นถึงศักยภาพของปัญญาประดิษฐ์ในยุคที่ Deep learning กำลังเฟื่องฟู และความเป็นไปได้ที่เราจะได้เห็นปัญญาประดิษฐ์ที่เข้าใกล้ความฉลาดของมนุษย์เข้าไปทุกที วันนี้ผู้แต่งจึงถือโอกาสชำแหละงานเขียนที่เพิ่งออกตีพิมพ์บนวารสารระดับโลกอย่าง Nature ของ DeepMind (Mastering the game of Go with deep neural networks and tree search1) ที่อธิบายการทำงานของ AlphaGo ไว้แบบที่เรียกว่าเกือบจะเอาไปเขียนโปรแกรมตามได้ทันที

ก่อนจะไปต่อ ลองพิจารณาก่อนว่า มนุษย์เราเราเล่นเกมกระดานอย่างไร แน่นอนว่าคงหนีไม่พ้น 1. การคิดล่วงหน้าไปหลาย ๆ ตา ยิ่งเรามีความสามารถมองล่วงหน้ามากเท่าไหร่ เรายิ่งได้เปรียบคู่ต่อสู้มากเท่านั้น กับ 2. ประสบการณ์ที่สั่งสมมาจากการเล่นโดยลองผิดลองถูกหลาย ๆ ตา ซึ่งสามารถทำให้เรารู้ได้ทันทีว่าควรเดินอย่างไรโดยไม่ต้องคิด สองวิธีนี้คือพื้นฐานของความเฉลียวฉลาดใดใดซึ่งไม่จำกัดอยู่บนความเป็นมนุษย์ และสองวิธีนี้นี่แหละที่คนเขียนปัญญาประดิษฐ์ตั้งแต่อดีตถึงปัจจุบัน จับยัดลงไปทำงานในคอมพิวเตอร์ในรูปแบบของภาษาโปรแกรม แต่ทว่าทุกอย่างมันไม่ง่ายอย่างที่เห็นเสมอไป

ถ้าให้เราเปรียบเทียบจำนวนวิธีการเล่นที่เป็นไปได้ของหมากรุก (Chess) กับหมากล้อม คงเหมือนกับการเทียบขนาดของทะเลสาบกับมหาสมุทรเลยก็ว่าได้  โดยขนาดของเกมหมากล้อมที่ใหญ่ ๆ เช่น 19×19 มีจำนวนการเดินที่เป็นไปได้ถึง 250150 ซึ่งจำนวนนี้มากกว่าจำนวนอะตอมในจักรวาลที่ประเมินได้โดยมนุษย์ (ประมาณ 1082 ) หากเราต้องการจะเขียนโปรแกรมเพื่อเล่นเกมหมากล้อมแบบตรงไปตรงมา แน่นอนว่าเลขจำนวนนี้คือจำนวนคำสั่งขั้นต่ำที่ CPU ในคอมพิวเตอร์ที่รันโปรแกรมนี้จะต้องทำงาน ถ้าให้ CPU ที่เร็วที่สุดในปัจจุบันทำงานด้วยความเร็ว 1010 คำสั่งต่อวินาที ผู้เขียนรับประกันได้ว่างานใดใดในโลกที่ทำในปัจจุบันและจำเป็นจะต้องทำในอนาคตจะเสร็จก่อนที่โปรแกรมนี้จะทำงานเสร็จเสมอ

แต่โชคและโอกาสนั้นเข้าข้างผู้ที่มีปัญญา การเขียนโปรแกรมเล่นหมากล้อมเราไม่จำเป็นต้องพิจารณาทุก “สถานะ” ที่เป็นไปได้ของเกม เช่นเดียวกับเกมกระดานแบบอื่น ๆ หมากล้อมมีคุณสมบัติของตารางที่สมมาตร (symmetry) กันมากมาย ถ้าให้ยกตัวอย่างที่สามารถอธิบายได้อย่างรวดเร็ว เช่นกระดานสี่เหลี่ยมจตุรัสของหมากล้อมนั้นสามารถหมุนได้สี่ด้าน เกมที่อ้างอิงด้านหนึ่ง ๆ เป็นหัวกระดานนั้นไม่ต่างกับเกมที่อ้างอิงจากด้านอื่น นี่คือหนึ่งในคุณสมบัติอีกมากมายที่เราสามารถใช้ประโยชน์ได้ แต่เนื่องด้วยความฉลาดของมนุษย์ที่ถูกจำกัดด้วยประสิทธิภาพอันย่ำแย่ของสมอง2 เราไม่สามารถมองเห็นและจดจำ symmetry เหล่านี้ได้หมด นี่คือที่มาของการใช้ศาสตร์การเรียนรู้ของเครื่อง (machine learning) ในการแก้ปัญหาปัญญาประดิษฐ์

Symmetry ของกระดานหมากล้อม ไม่ว่าจะหมุนด้านไหนขึ้นก็เหมือนกัน (ในความเป็นจริงคงไม่มีใครเล่นแบบนี้)
Symmetry ของกระดานหมากล้อมขนาด 13×13 ไม่ว่าจะหมุนด้านไหนขึ้นก็เหมือนกัน (ในความเป็นจริงคงไม่มีใครเดินหมากแบบนี้)

บทความนี้เราจะอธิบายหนึ่งในวิธีการของ machine learning ที่เรียกว่า reinforcement learning (RL)3 ที่เปเปอร์ของ DeepMind ใช้ในการออกแบบ AlphaGo และเชื่อมโยงกับการใช้ deep learning (ที่หลายคนเข้าใจผิดว่ามันคือตัวหลักตัวเดียวที่ทำให้ AlphaGo ฉลาดได้ระดับปรมาจารย์) โดยความรู้พื้นฐานที่ใช้เพื่อทำความเข้าใจได้แก่ probability และ linear algebra (นี่คือสาเหตุที่ว่าทำไมเราควรจะตั้งใจเรียน matrix, probability ตอนมัธยมและปริญญาตรี)

สิ่งที่โปรแกรมหมากล้อมใด ๆ ต้องการจะรู้เพื่อที่จะเดินหมากในแต่ละตานั้นมีเพียงแค่อย่างเดียว นั่นคือ ในสถานะการวางหมากบนตารางในตาใดตาหนึ่ง (state) โปรแกรมควรจะ “เดิน” (action) อย่างไร “ให้ดี”

คำว่า “เดินอย่างไร” คนในวงการ RL เขาใช้คำว่า policy ซึ่งส่วนใหญ่แทนด้วย probability P(action | state) – ความน่าจะเป็นที่จะเลือกการวางหมากตัวถัดไปรูปแบบหนึ่ง (action)  เมื่อทราบสถานะหมากปัจจุบันของตาราง (state)

ส่วนคำว่า “ให้ดี” เขาวัดกันด้วยการให้ value ที่ถูกให้กับแต่ละ state ซึ่ง value นี่ไม่ได้บอกแค่ว่าสถานะปัจจุบันดีแค่ไหนแต่รวมไปถึงว่าจากสถานะนั้นเรามีโอกาสชนะเท่าไหร่ ซึ่งแน่นอน ค่านี้ย่อมขึ้นกับ policy ที่เราเลือกที่จะใช้ด้วย

ทีนี้ เราจะเห็นได้ว่านี่คือปัญหาไก่กับไข่ policy ที่ดีก็คือเลือก action ที่ให้ value ดี ส่วนการจะประเมิน value ให้ได้ดีนั้นก็ขึ้นกับ policy ที่เราเลือกใช้ นี่คือปัญหาหลักที่ reinforcement learning พยายามจะแก้

figtmp18

หลักการพื้นฐานที่ใช้แก้คือให้โปรแกรมจำลองการเดินหมากเล่นไปจนจบเกมแล้วเอาผลที่ได้ “แพร่ย้อนกลับ” (back propagate) ไปเพิ่ม value ของแต่ละ state ที่เราเดินผ่าน (ถ้าเดินแล้วชนะก็แสดงว่าการเดินแบบนั้นดี ให้คะแนนเยอะ) วิธีการจำลองการเดินก็มีมากมายแต่หลัก ๆ ที่บทความนี้อยากจะนำเสนอมีอยู่สามวิธี:

  1. จำลองเดินแบบทั่วถึงโดยใช้ dynamic programming และ Bellman equation แบบนี้จำเป็นจะต้องลองจำลองการวางหมากที่เป็นไปได้ ณ สถานะใด ๆ วิธีนี้ไม่เหมาะกับขนาดของเกมหมากล้อม
  2. เลือก policy แล้วจำลองเดินแบบสุ่มจนจบเกมและทำการปรับปรุง value ของแต่ละ state ถึงแม้วิธีนี้จะไม่ได้พิจารณาทุก ๆ ทางเลือก แต่ laws of large numbers กล่าวไว้ว่า ถ้าจำนวนตาที่เดินมีมากพอ ค่าเฉลี่ยของ value ที่ได้จะเข้าใกล้ค่าเฉลี่ยที่แท้จริง
  3. จำลองเดินแบบสุ่มแค่หนึ่งก้าวแล้วทำการแพร่กลับเพื่อปรับปรุงค่า value ณ ขณะนั้นทันที หรือที่เรียกกันว่า temporal difference learning

วิธีเหล่านี้ได้ถูกนำไปใช้อย่างแพร่หลาย ถ้าให้ยกตัวอย่างงานระดับคลาสสิกที่ใช้ RL ก็คงจะเป็นการฝึกให้หุ่นยนต์เลี้ยงแท่งไม้ยาว ๆ ให้อยู่ในแนวตั้งได้โดยไม่ล้มไปทางใดทางหนึ่ง

เหมือนว่าด้วยหลักการเหล่านี้ เราจะสามารถเขียน AI ระดับ AlphaGo ได้แล้ว แล้วอะไรที่ทำให้เราต้องพึ่ง deep learning?

ปรากฏว่า AI เล่นเกมหมากล้อมที่ใช้ reinforcement learning แค่ทำให้โปรแกรมฉลาดระดับมือสมัครเล่นเท่านั้น เนื่องจากขนาดเกมที่ใหญ่มากกกกก ทำให้แม้แต่การระบบการจำลองการเดินที่บอกมาก็ยังไม่สามารถทำให้ทั่วถึงได้ด้วยความเร็วของคอมพิวเตอร์ในปัจจุบัน (เป็นที่มาว่าทำไมผู้เขียนถึงเชื่อว่า quantum computing ถึงน่าจะเป็นที่สนใจอย่างถล่มทลายในอนาคตอย่างแน่นอน)

แม้ว่าจะโกงด้วยการให้โปรแกรมเริ่มต้นการเรียนรู้จาก policy ที่เรียนรู้มาจากเซียน (human expert) อีกทีแล้วก็ตาม (ซึ่ง policy เหล่านี้ได้มาจากการปรับตัวประเมิน value ให้มีความใกล้เคียงกับที่ human experts จะให้คะแนนแต่ละ state จริง ๆ) ก็ทำได้แค่ให้ AI เก่งขึ้นจากระดับมือสมัครเล่นธรรมดาเป็นมือสมัครเล่นที่แกร่งขึ้น

ก่อนจะไปถึง deep learning ขอเท้าความกลับมาระบบการประเมินของ reinforcement learning แบบที่ค่อนข้างจะแพร่หลายในปัจจุบัน

เนื่องจาก state space ที่ใหญ่ของเกมหมากล้อมและเช่นเดียวกับอีกหลาย ๆ เกม นักวิทยาศาสตร์ผู้เขียน AI เขาจะไม่เก็บ value ของแต่ละ state ไว้แบบทื่อ ๆ เพราะนอกจากจะต้องเสียพื้นที่ RAM เป็นจำนวนมากแล้ว ยังต้องใช้เวลานานในการอ่านค่า value กลับมา การเก็บแบบง่าย ๆ ที่นิยมกันคือการประเมิน value แบบเชิงเส้นจาก state (linear model) แปลเป็นภาษาคนทั่วไปก็คือ value ได้มาจากการผลรวมของการถ่วงน้ำหนักแต่ละค่าของ state ธรรมดา

a_t = \sum_i w^i_t.s^i_t

ข้อดีของ linear model นอกจากจะคำนวน value ได้เร็ว คือมันสามารถถูกวิเคราะห์ และปรับปรุงได้ง่าย (ตรงนี้ผู้เขียนขอใช้คำว่า differentiable ในภาษา calculus) ส่วนข้อเสียของมันคือมันไม่ซับซ้อนพอที่จะให้ value ที่ถูกได้เสมอไป ต้องบอกว่าส่วนมากผลที่ออกมาแทบจะเรียกได้ว่ามั่วเลยทีเดียว

นักวิจัยที่ฉลาดขึ้นมาอีกหน่อยก็รู้ทันทีว่า ทำไมเราไม่แทน linear model ด้วย model อื่นที่ดีขึ้น เช่น feed-forward neural network ล่ะ นั่นคือสิ่งที่นักวิจัย reinforcement learning ทำกันในช่วงทศวรรษที่ผ่านมา ซึ่งก็ทำให้ได้ผลดีขึ้นระดับหนึ่ง ไม่ว่าจะเป็นการควบคุมเฮลิคอปเตอร์วิทยุบังคับให้บินกลับหัวได้ที่โด่งดังของ Stanford (http://heli.stanford.edu/) หรือส่วนหนึ่งของเหล่ารถยนต์อัจฉริยะที่ไม่ต้องใช้คนขับของมหาวิทยาลัยดังดังในสหรัฐฯ ต่างก็ใช้วิธีนี้

เผอิญในปี ค.ศ. 2006 ได้มีการปฏิวัติวงการ pure neural network ด้วยการที่ deep learning “กลับมา” ดังอีกรอบหลังจากที่เคยล้มเหลวไปเมื่อสิบยี่สิบปีก่อน จุดเปลี่ยนสำคัญมีอยู่สองจุดได้แก่ 1. คอมพิวเตอร์ที่เร็วขึ้น (ซึ่งหนึ่งในเหตุผลที่เคยล้มเหลวไปก็เพราะคอมพิวเตอร์มันช้าเกินกว่าที่จะใช้ปรับปรุง neural network ขนาดใหญ่ได้) และ 2. นักวิทยาศาสตร์คอมพิวเตอร์สองคน Teh และ Hinton ได้พิสูจน์ว่า เราสามารถ “ค่อย ๆ” ให้  neural network ปรับปรุงโครงสร้างมันไปทีละชั้นได้4

ทำไมการปรับปรุงทีละชั้นถึงดี?

ถ้าคุณอดทนอ่านถึงจุดนี้ เราจะขอคลี่คลายสิ่งที่คุณน่าจะสงสัยว่า ทำไมวิธีการเดินหมากแบบ temporal difference ถึงเป็นที่นิยมทั้ง ๆ ที่มันแพร่กลับแค่หนึ่ง state นั่นก็เพราะว่า “ความแม่นยำ” ของการแพร่กลับแค่ state เดียว มันสูงกว่าการแพร่กลับหลาย ๆ state มาก ๆ และยิ่งการแพร่กลับน้อย ๆ แม่นยำเท่าใด การปรับปรุง neural network ทีละจำนวนชั้นน้อย ๆ ก็แม่นยำในทำนองเดียวกัน (เหมือนกับการสร้างพีระมิด ถ้าเรามีฐานดี ก็ไม่ต้องกลัวว่ายอดจะถล่ม) เช่นกัน ถ้า neural network ชั้นแรกมีความ “แม่น” ชั้นอื่น ๆ ที่ใช้ข้อมูลจากอันแรกก็จะแม่นตามด้วยความเร็วในการปรับปรุงของคอมพิวเตอร์ในปัจจุบัน และถ้า neural network ใช้เป็นตัวประเมิน value ได้ฉันใด deep learning ก็ใช้ได้ฉันนั้น นี่คือที่มาของการใช้ deep learning ใน AlphaGo และปัญหา reinforcement learning อื่น ๆ

RLNN

กลับมาที่ AlphaGo นอกจากมันจะใช้ deep learning เพื่อประเมิน value แล้ว ทีมพัฒนาที่ DeepMind ยังมีการใช้เทคนิคอื่น ๆ ที่ช่วยทำให้หา policy ที่ดีได้เร็วขึ้นอีก เช่น

  1. ใช้ policy ที่ differentiable ได้ ทำให้ปรับปรุงได้โดยตรง
  2. ใช้ policy ที่ได้มาจากการเรียนรู้ จากการวางหมากของ human experts (ซึ่งในตัวงานเขียน เรียกว่า SL policy)
  3. ใช้ policy ที่แม่นยำน้อยแต่สามารถเลือกการเดินหมากได้เร็วเพื่อเสริมการเดินแบบสุ่ม (rollout policy)

จากที่เราว่าไว้ว่า policy คือตัวแทนของการเลือก action จาก state เราสามารถใช้ neural network เพื่อทำหน้าที่นี้ได้ด้วยการให้ input ของ network คือ state และ action คือ output และเนื่องจาก policy เองคือ neural network ซึ่ง differentiate ได้ เราสามารถจึงปรับปรุงมันได้โดยตรง และเพราะว่า AlphaGo เลือกที่จะใช้ neural network เป็น policy วิธีการปรับปรุงค่าเริ่มต้นของ network ที่ดีและง่ายที่สุดคือการเอาค่า input (สถานะของเกม) และ output (action ที่เดิน) มาจากการเล่นของ human experts นี่คือข้อที่ 1 และ 2

พอมี policy ที่ดีอยู่ในมือ เราก็สามารถใช้การเดินแบบสุ่มเพื่อปรับปรุง value ของแต่ละ state และ policy ต่อไป อธิบายกันด้วยประโยคง่าย ๆ คือ action ไหนที่ทำให้ไปสู่ state ที่ดีกว่าเดิม เราจะพยายามปรับปรุง policy network ให้มีโอกาส output action นั้นมากขึ้นลดหลั่นกันไปตาม value

สุดท้ายคือข้อ 3 เนื่องจากการเดินแบบสุ่มจำเป็นต้องใช้ปริมาณการเดินจำนวนหนึ่งจึงจะได้ค่าเฉลี่ยที่ใกล้เคียงความเป็นจริง การเลือก policy เร็ว ๆ จึงเป็นหลักสำคัญในการให้ AI เรียนรู้บนคอมพิวเตอร์ ด้วยการนี้เอง AlphaGo จึงยอมเสียสละความแม่นยำบางส่วนเพื่อแลกมาด้วยความเร็วในการเรียนรู้ เนื่องจากการเดินทุกครั้งมีการพัฒนา policy จึงไม่สำคัญว่าคุณจะเลือก policy ที่ดีที่สุด ตราบใดที่ทุก policy มีโอกาสถูกพัฒนาเหมือนกัน AlphaGo จึงเลือกความเร็วแล้วพัฒนามันทุกๆ policy แทนที่จะหมกมุ่นอยู่กับบางอันที่คิดว่าดี

นอกจากวิธีหลักนี้ วิธีรองที่มีความสำคัญไม่น้อยไปกว่ากันคือการป้องกันปรากฏการณ์ overfitting

จริง ๆ แล้ว overfitting เป็นปัญหาหลักสำหรับคนใช้ neural network ที่ทำให้การเรียนรู้ไม่ได้ผลดีเท่าที่ควร ส่วนมากเกิดจากตัวอย่างที่เอาไปปรับปรุงนั้นน้อยไป หรือตัวอย่างไม่มีความหลากหลายเพียงพอเทียบกับขนาดของ network ที่เลือกใช้

ลองคิดดูง่าย ๆ ถ้าคุณมีตัวแปร 30 ตัว แต่คุณมีแค่ 20 สมการ คุณจะหาค่าให้แต่ละตัวแปรได้อย่างไร?

ถ้าคนเรียนคณิตศาสตร์มาจะตอบทันทีว่า (……ไม่ได้ …… ซะที่ไหนกัน)  ได้! แต่จำนวนคำตอบจะเป็นอนันต์ ถ้าเราแทนตัวแปรเหล่านี้กลับลงไปใน neural network เพื่อทำนาย output ของค่า input อื่นที่ไม่ได้ถูกกำหนดอยู่ในสมการแต่แรก คุณจะพบว่า neural network จะให้ output ที่มีค่าหลากหลายมาก ซึ่งความหลากหลายนี่เองทำให้เกิดความคลาดเคลื่อน overfitting

ในงานพิมพ์ฉบับนี้ก็มีการใช้วิธีง่าย ๆ เพื่อลด overftting เช่น การสุ่มสถานะของหมากกระดานบ่อย ๆ ไม่ใช้สถานะเดิม ๆ ซ้ำไปซ้ำมา หรือแทนที่จะเก็บ policy เดียว ก็ใช้วิธีเก็บหลาย ๆ policy แล้วมาเฉลี่ยกัน (เพราะ policy แต่ละตัวนั้นเรียนรู้มาจากตัวอย่างการเดินหมากที่ความหลากหลายแตกต่างกัน) ซึ่งวิธีเหล่านี้ถึงแม้จะไม่ค่อยเท่ในมุมมองของนักคณิตศาสตร์ แต่ก็ขาดไม่ได้หากต้องการให้ AI มีประสิทธิภาพ

พอเราได้ policy กับตัวประเมิน value ที่ดีแล้ว เราจะใช้สองอย่างนี้ในการเดินหมากอย่างไร? ถ้าแบบพื้น ๆ ก็คือการเลือก action ที่ให้ค่าประเมิน value ดีที่สุด หากเพียงแค่นั้น AlphaGo คงยังไม่สามารถชนะนักเล่นหมากล้อมตัวฉกาจได้

จริง ๆ แล้วต้องบอกว่า AlphaGo เชื่อผลที่เรียนรู้มาแค่ “ส่วนนึง” ที่เหลือก็ไม่ได้ต่างอะไรกับวิธีที่ Deep Blue เอาชนะเทพหมากรุกอย่าง Kasparov มาแล้ว นั่นคือการคิดล่วงหน้าไปหลาย ๆ ตา แต่ที่ต่างกันคราวนี้คือ AlphaGo ไม่จำเป็นต้องมองล่วงหน้าทุก state ที่เป็นไปได้ แต่เลือกที่จะเชื่อ policy ที่เรียนมาบ้าง และขณะที่เล่นไปก็ทำการปรับปรุง policy เหล่านี้ไปด้วยพร้อม ๆ กันจากการสุ่มมองล่วงหน้าบาง state

วิธีการปรับปรุง policy ที่ AlphaGo ใช้คือ Q-Learning ศาสตร์แขนงย่อยใน reinforcement learning พูดกันง่าย ๆ คือแทนที่จะให้ value เฉพาะ state ก็ให้ value กับทีละคู่ของ state-action มันไปเลย ซึ่งในวงการเขาเรียกค่านี้ว่า Q value และในขณะที่เดินหมาก policy จะเลือก action จากค่า Q นี้โดยตรง ซึ่งมีข้อดีทั้งในเชิงทฤษฏี (สมการที่ใช้ปรับปรุงค่า Q นั้นหาได้ง่ายกว่า value ธรรมดา) และปฏิบัติ

AlphaGo เลือกที่จะใช้ Q value ที่เป็นผลถ่วงน้ำหนักของค่า value ที่เรียนรู้มา กับค่าประเมิน value ที่ได้จากการมองไปข้างหน้าเร็ว ๆ ด้วย rollout policy เพราะว่าค่า value ที่ถูกเรียนรู้มานั้นนั้นอาจจะไม่ได้แม่นเป๊ะเนื่องจากปัจจัยหลายๆอย่างตอนเรียนรู้ (เช่น overfitting) ส่วนค่าที่ได้จากการมองไปข้างหน้าเร็ว ๆ ก็มีโอกาสที่จะคลาดเคลื่อนจากการที่ใช้ rollout policy ที่แม่นยำน้อยกว่า แต่ถึงกระนั้นก็ยังมีโอกาสที่จะแม่นกว่าค่าที่เรียนรู้มาเพราะว่าเริ่มต้นจาก state ที่กำลังเล่นอยู่จริง ๆ ซึ่งก็เป็นการเดิมพันที่คุ้มค่าดังจะเห็นได้จากผลการแข่งขันของ AlphaGo กับ Lee อาทิตย์ที่ผ่านมา

go_state

นี่คือข้อมูลที่มีและไม่มีอยู่ในเปเปอร์ที่ตีพิมพ์ ผู้เขียนเชื่อว่า DeepMind คงได้มีการใช้อัลกอริทึมบางอย่างที่ไม่ได้อธิบายอยู่อีกเป็นจำนวนมากเพื่อให้ AlphaGo ใช้งานได้จริง (สามารถไปแกะดูได้ใน source code ที่ DeepMind แจกไว้ (ขอแก้ไขครับ อันนี้ผู้เขียนพลาดไปเห็นของ replica ใน GitHub แล้วเข้าใจว่าเป็นของ DeepMind เอง ที่จริงแล้ว DeepMind ไม่ได้ opensource ไว้ครับ)) และส่วนที่เหลือที่ต้องอาศัยความเป็นบริษัทใหญ่เข้าสู้ ด้วยจำนวน CPU และ GPU ที่สามารถทำให้ซอยบ้านไฟดับได้ ถึงแม้เราอาจจะไม่มีทรัพยากรพอจะสร้าง AlphaGo ของตัวเอง แต่หลักการ deep reinforcement learning ยังสามารถเอาไปใช้อะไรได้กับหลาย ๆ อย่างที่ต้องการให้มีการเรียนรู้ในขณะที่ทำงานไปด้วย ผู้เขียนหวังว่าผู้อ่านจะได้รับสาระและความรู้จาก AlphaGo ไม่มากก็น้อย

อ้างอิง:

  1. Silver, D., Huang, A., Maddison, C. J., Guez, A., Sifre, L., van den Driessche, G., … & Dieleman, S. (2016). Mastering the game of Go with deep neural networks and tree search. Nature, 529(7587), 484-489.
  2. Jarrett, C. (2014). Great myths of the brain. John Wiley & Sons.
  3. Sutton, R. S., & Barto, A. G. (1998). Introduction to reinforcement learning(Vol. 135). Cambridge: MIT Press.
  4. Hinton, G. E., Osindero, S., & Teh, Y. W. (2006). A fast learning algorithm for deep belief nets. Neural computation, 18(7), 1527-1554.
LINE it!
The following two tabs change content below.

p.virie

Chatavut Viriyasuthee, a programmer by vocation and a roboticist, cognitive scientist by avocation. Ever since his mind was young, he has been interested in all forms of automation that show the sign of inherent intelligence. He hopes that one day humanity will be able to unravel all the secrets of the universe with helps from our creations.

Latest posts by p.virie (see all)