Stockholm
17 Oct, Wednesday
10° C
TOP

เมื่อมนุษย์พยายามสอนคอมพิวเตอร์ให้แยกหมากับแมวออกจากกัน

ตั้งแต่มีข่าวว่าเจ้า AlphaGo ปัญญาประดิษฐ์ตัวเก่งของ Google ไล่เอาชนะเซียนหมากล้อมทั่วโลกเมื่อราวสองปีก่อน คำว่า Machine Learning ก็กลายเป็นคำที่พูดกันเยอะมากในหลายวงการ บางคนบอกว่ามันคือหายนะของมวลมนุษย์ ในขณะที่บางคนกลับบอกว่ามันคือกุญแจสำคัญสู่การพัฒนาไปอีกขั้นของโลกใบนี้ 

คำว่า Machine Learning แปลตรงตัวได้ว่าเครื่องจักรที่เรียนรู้ได้ ซึ่งฟังดูออกจะขัดหูชาวบ้านธรรมดาอย่างเราอยู่หน่อย ๆ เพราะเครื่องจักรที่เราคุ้นเคยนั้นจะทำงานตามคำสั่งเท่านั้น เครื่องจักรคิดอะไรเองไม่ได้ นับประสาอะไรกับเรียน ดังนั้นหากมีใครสักคนพยายามจะบอกว่าเรามีเครื่องจักรที่เรียนได้ คำถามที่ต้องเกิดตามมาทันทีคือ แล้วเครื่องจักรมันเรียนได้ยังไง ใครเป็นคนสอน และที่สำคัญ เค้าสอนเครื่องจักรกันยังไง

ปัญหาการแยกภาพหมากับแมวเป็นตัวอย่างคลาสสิกที่สุดที่ไว้ใช้อธิบายกระบวนการเรียนของเครื่องจักร โจทย์มีอยู่ว่า

เราต้องการให้คอมพิวเตอร์ดูรูปหมาหรือแมวสักตัว แล้วให้มันตอบว่าสัตว์ในรูปนั้นเป็นหมาหรือแมวกันแน่

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

เมื่อเราพยายามสอนคอมพิวเตอร์ให้แยกหมากับแมวออกจากกัน

เพื่อให้เข้าใจกระบวนการนี้มากขึ้น ลืมเรื่องรูปหมากับแมวไปก่อน มาพูดถึงการแยกอะไรที่ฟังแยกง่ายกว่านั้นอย่างเช่นเพศดีกว่า (เพศในที่นี้หมายถึงเพศตามสรีระเฉย ๆ นะ) โจทย์คราวนี้คือเราต้องการหาวิธีแยกเพศของใครสักคน โดยห้ามถามเพศเค้าตรง ๆ

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

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

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

ในทางคณิตศาสตร์ เราเรียกปัญหาแบบนี้ว่าปัญหาค่าสุดขีดหรือ minimization problem หรือปัญหาการหาค่าต่ำสุด พูดให้เป็นภาษาชาวบ้าน สิ่งที่เราต้องทำก็คือค่อย ๆ ลองขยับเกณฑ์ไปเรื่อย ๆ แล้วดูว่าตรงไหนที่ทำให้เกิดความผิดพลาดน้อยที่สุด ก็เอาตรงนั้นแหละเป็นเกณฑ์

จะเห็นว่ากระบวนการคิดแบบนี้ต่างไปคอมพิวเตอร์ในอดีตมาก ถ้าเป็นแต่ก่อนเราจะต้องบอกคอมพิวเตอร์ลงไปชัด ๆ เลยว่าเราจะใช้เกณฑ์ส่วนสูงเท่าไรในการแยกชายกับหญิง แต่คราวนี้ต่างออกไป เราใช้วิธีให้มันเรียนรู้จากข้อมูลที่ป้อนเข้าไป (เรียกว่า training data) แล้วปล่อยให้มันหาเกณฑ์ที่ดีที่สุดของมันเอง นี่คือกระบวนการเดียวกันกับการเรียนรู้ของมนุษย์ นั่นคือไม่เคยมีใครมาบอกเราตรง ๆ หรอกว่าผู้ชายส่วนใหญ่สูงแค่ไหน ผู้หญิงส่วนใหญ่สูงแค่ไหน เราแค่ใช้ประสบการณ์การเห็นคนมามากมายในชีวิต เพื่อหาเกณฑ์ที่(เราคิดว่า)ดีที่สุดในใจเพื่อเอาไว้ใช้แยกแยะ

มาถึงตรงนี้น่าจะมีคนส่ายหัวว่า บ้ารึเปล่า ใช้แค่ความสูง มันจะไปแยกเพศได้ยังไง ดูจากตัวอย่างที่ยกมาก็ได้ ขนาดได้เกณฑ์ที่ดีที่สุดแล้ว ก็ยังมีความผิดพลาดเกิดขึ้นตั้งเยอะ ก็เลยมีคนเสนอต่อว่า งั้นเราเอาอย่างอื่นมาพิจารณาเพิ่มอีกสิ อย่างเช่นน้ำหนักดีไหม


เมื่อเราเอาน้ำหนักมาพิจารณาด้วย คราวนี้แผนภาพ training data ของเราจะมาอยู่ใน 2 มิติแทน ก็เหมือนเดิม คือคอมพิวเตอร์ก็จะหาเกณฑ์ เพื่อแยกกลุ่มผู้ชายกับผู้หญิงออกจากกัน เพื่อความง่ายทางคณิตศาสตร์ เราขอให้ใช้แค่เส้นตรงสักเส้นมาตีแบ่งคนสองกลุ่มนี้ออกจากกันก็แล้วกัน

คอมพิวเตอร์จะใช้เทคนิคเดิมในการแบ่ง training data ออกเป็นสองพวก คือการหาเส้นตรงที่ทำให้มีจำนวนความผิดพลาดต่ำที่สุด โดยหวังว่าการที่เราพิจารณาทั้งส่วนสูงและน้ำหนักพร้อม ๆ กัน จะสามารถแยกเพศของคนแต่ละคนได้ดีกว่าการพิจารณาแค่ส่วนสูงเพียงอย่างเดียว จากรูปแรก จะเห็นว่ามีข้อมูลถึง 4 ตัวที่อยู่ผิดกลุ่ม เทียบกับในรูปที่สองจะมีเพียง 3 เท่านั้น ดังนั้นเส้นในรูปทางขวาจึงเป็นเกณฑ์แบ่งที่ดีกว่า

ด้วยแนวคิดนี้ เราสามารถเพิ่มความแม่นยำในการแยกแยะให้เครื่องจักรโดยเพิ่มข้อมูลด้านอื่น ๆ ที่น่าจะเกี่ยวข้องเข้าไปได้อีก อาจจะเป็นความยาวของเส้นผม ความชุ่มชื้นของผิวหนัง หรืออัตราการเต้นของหัวใจ เข้ามาพิจารณาด้วย การทำเช่นนี้จะไปเพิ่มมิติ (dimension) ของข้อมูล จากเดิมที่เราใช้แค่ส่วนสูง แผนภาพแสดงข้อมูลของเราก็จะอยู่แค่ใน 1 มิติ พอเราใช้ส่วนสูงและน้ำหนัก แผนภาพก็จะกลายเป็นใน 2 มิติแทน 5 ข้อมูล ก็ 5 มิติ ซึ่งเราหวังว่ายิ่งเราเพิ่มมิติของข้อมูลไปมากเท่าไร ความสามารถในการแยกแยะของเครื่องจักรก็น่าจะดีขึ้นตาม

 

Not Long But Geek: Math Alert!!! (ใจไม่แข็งพอขอให้ข้ามไปเลย)

เพื่อให้ฟังดูเป็นคณิตศาสตร์มากขึ้น สิ่งที่เราทำอยู่ตอนนี้เรียกว่า Linear Classification ใน \(n\) มิติ เราพยายามหา hyperplane สักอันเพื่อมาแบ่ง \(\mathbb{R}^n\) ออกเป็นสองส่วน

NL;BG – Not Long, But Geek

สมการ hyperplane ใน \(n\)  มิติเขียนในได้ในรูปทั่วไปคือ \(w_0+w^Tx=0\)  เมื่อ \(w_0\) เป็นค่าคงที่ และ \(w\) เป็นเวกเตอร์ใน \(\mathbb{R}^n\)

ให้ training data: \(x_1, x_2, … x_n\) (เป็นเวกเตอร์ใน \(\mathbb{R}^n\)) พร้อมกับฟังก์ชันบ่งบอกชนิด \(T: \{x_1, x_2, … x_n\}\rightarrow\{-1,1\}\)

นิยาม \(y(x)=\text{sign}(w_0+wx)\) คือฟังก์ชันที่ใช้แบ่ง \(\mathbb{R}^n\) เป็นสองส่วน นั่นคือกลุ่มที่อยู่เหนือ และใต้ hyperplane นั้นและนิยาม loss function ว่า 

\(L(x_i) = \begin{cases} 0 & ; \, y(x_i) = T(x_i) \\ 1 & ; \, \text{othewise} \end{cases}\)

ดังนั้น optimization problem ที่เครื่องจักรจะต้องแก้ก็คือต้องหา \(w_0\) และ \(w\) เพื่อมา minimize \(\sum L(x_i)\) นั่นเอง

กลับมาที่รูปหมากับแมว

พอเป็นรูปหมากับแมว สถานการณ์เปลี่ยนไปพอสมควรเลย เพราะคราวนี้ข้อมูลที่คอมพิวเตอร์ได้รับไม่ใช่ชุดของตัวเลขแบบเดียวกับกรณีส่วนสูงและน้ำหนัก แต่เป็นไฟล์รูปภาพ เพื่อจะใช้วิธีเดียวกับกรณีแยกเพศ เราต้องหาทางแปลงข้อมูลรูปภาพให้กลายเป็นชุดของตัวเลขก่อน แนวคิดคือ เรารู้ว่าสีแต่ละสีในคอมพิวเตอร์ถูกสร้างมาจากการผสมกันของแม่สี 3 สีคือแดง เขียว และน้ำเงินในอัตราส่วนต่าง ๆ (ที่เรียกว่าระบบสีแบบ RGB) และถ้าเราพิจารณาแต่ละ pixel ของรูปภาพแยกกัน เราจะได้ตัวเลข 3 ตัวนั่นก็คือความเข้มของสีแดง สีเขียว และสีน้ำเงินใน pixel นั้น ๆ ดังนั้นหากพิจารณารูปภาพที่มีความละเอียด 64×64 pixel เราก็จะแปลงภาพนั้นออกมาเป็นชุดตัวเลขทั้งหมด 64x64x3 = 12,288 ตัว ถ้าเทียบกับกรณีการแยกชายหญิง ก็คือเราพยายามจะแยกเพศใครสักคนจากลักษณะ 12,288 อย่างในตัวเขา

ในทางทฤษฎี เครื่องจักรจะเปลี่ยนรูปภาพที่เป็น training data แต่ละรูป ให้กลายเป็นชุดตัวเลข 12,288 ตัวที่ว่า วาดเป็นกราฟใน 12,288 มิติ แล้วหาเกณฑ์ที่ดีที่สุดเพื่อมาขีดแบ่งระหว่างหมากับแมว แบบเดียวกับที่เราทำกับโจทย์เรื่องเพศ และเมื่อเราใส่รูปที่อยากทดสอบเข้าไป มันก็จะเปลี่ยนรูปนั้นเป็นชุดตัวเลข 12,288 ตัวแบบที่ว่านี้ แล้วไปเทียบกับเกณฑ์ที่มันหามาได้ เพื่อพิจารณาว่ารูปที่ใส่เข้าไปเป็นหมาหรือแมวกันแน่

การพยายามแยกรูปหมากับแมวด้วยข้อมูล 12,288 ตัวนั้นฟังดูเหมือนจะดี แต่ในทางปฏิบัติ จำนวนมิติที่มากเกินไปทำให้เกิดการคำนวนที่มาก ซึ่งทำให้เครื่องจักรทำงานได้ช้าและสิ้นเปลือง นอกจากนั้นในความเป็นจริง การพยายามแยกหมากับแมวโดยพิจารณาภาพแยกทีละ pixel นั้นดูเป็นเรื่องผิดปกติอยู่หน่อย ๆ ลองนึกง่าย ๆ ก็ได้ว่าเวลามนุษย์อย่างเราแยกชนิดของสัตว์ในภาพ มีใครนั่งมองทีละ pixel ด้วยหรอ 

ตัวอย่างหนึ่งของทางแก้ปัญหานี้คือการใช้เทคนิคทาง image processing ที่เรียกว่า convolutional neural network ในการปรับค่าต่าง ๆ ในภาพเพื่อสกัดเอาแค่ส่วนสำคัญของภาพซึ่งคือรูปร่างของสัตว์ออกมา และทิ้งองค์ประกอบอย่างอื่นรอบ ๆ ออกไปก่อน หลังผ่านกระบวนการนี้ จำนวนตัวเลขที่ได้จากรูปภาพแต่ละภาพก็จะลดลง และนั่นแปลว่ามิติของข้อมูลที่เครื่องจักรจะต้องหาเกณฑ์แบ่งก็จะลดน้อยลงไปด้วย

แนวคิดเรื่องการแยกแยะข้อมูลจากภาพถูกนำไปใช้ในอะไรที่ใกล้ตัวเรามาก ๆ อย่าง ระบบตรวจจับหน้าและ tag อัตโนมัติของ Facebook โดยระบบใช้ภาพของใบหน้าที่เรา tag กันเองเป็น training data ชั้นดีให้ระบบมันเรียน จดจำ และแยกแยะได้ว่าใครเป็นใคร ไปจนถึงอะไรที่ดูจริงจังหน่อยอย่างโปรแกรมไฟล์รูปภาพที่ถ่ายมาจากหนังสือให้กลายเป็นข้อความ หรือระบบตรวจสอบและแยกแยะเซลล์ชนิดต่าง ๆ จากภาพถ่ายทางการแพทย์ ทำให้ในปัจจุบันเทคนิคต่าง ๆ ที่ใช้ถูกพัฒนากันอยู่อย่างต่อเนื่องในทุกด้าน ไม่ว่าจะเป็นกระบวนการดึงส่วนสำคัญจากภาพ วิธีจัดการกับภาพเคลื่อนไหว การหาเกณฑ์แบ่งที่ดีกว่าแค่เส้นตรง และอีกมากมาย

ยิ่งไปกว่านั้น จะเห็นว่าสิ่งที่สำคัญที่สุดในกระบวนการทั้งหมดนี้ คือ training data เพราะหากเราได้ training data ที่ไม่เยอะ และไม่หลากหลายตามความเป็นจริงมากพอ เกณฑ์ที่ถูกตั้งขึ้นมาก็อาจจะผิดเพี้ยนไป ในกรณีนี้คือเราต้องใช้รูปหมาและแมวจำนวนมหาศาลเพื่อสอนให้คอมพิวเตอร์เรียนรู้ จึงมีการประยุกต์เอาศาสตร์ที่กำลังถูกพูดถึงมากไม่แพ้กันอย่าง big data analysis เข้ามาเพิ่มประสิทธิภาพในการสร้างชุดข้อมูลเพื่อนำมาสอนคอมพิวเตอร์อีกด้วย

ทั้งหมดนี้นำไปสู่อะไร

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

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

คงไม่เป็นการเกินจริงหากจะพูดว่า Machine Learning เป็นศาสตร์ที่กำลังมาแรงที่สุดศาสตร์หนึ่งในตอนนี้ นักวิจัยมากมายทั่วทุกมุมโลกกำลังระดมสมองเพื่อพัฒนาเจ้าสิ่งนี้กันอยู่ในแง่มุมที่ต่างกันไป มันกำลังจะเปลี่ยนบทบาทของมนุษย์ต่อคอมพิวเตอร์ไปโดยสิ้นเชิง

จากเดิมที่เราเป็นผู้คิด ตัดสินใจ และสั่งการทุกขั้นตอน กลายมาเป็นผู้วางระบบกลไกการเรียนรู้ให้กับมัน แล้วปล่อยให้มันได้คิด สร้างสรรค์ และตัดสินใจ 

สุดท้ายไม่ว่ามันจะเป็นหายนะของมวลมนุษย์ หรือกุญแจสู่การพัฒนาไปอีกขั้นของโลก นี่คืออนาคตที่เราเลี่ยงไม่ได้ สิ่งเดียวที่เราพอจะทำได้ตอนนี้คือรู้จัก เข้าใจ และเตรียมตัวให้พร้อมที่สุด เพื่อรับมือกับการมาของมัน

แหล่งอ้างอิง:

นักคณิตศาสตร์ฝึกหัด ชอบพูด ชอบเขียน ชอบกินบุฟเฟ่ต์