21 เม.ย. 2019 เวลา 09:16 • วิทยาศาสตร์ & เทคโนโลยี
Algorithm What? อัลกอริทึมคืออะไร? มาดูกันดีกว่า
ลูกสาววัยหนึ่งขวบของผมมักมีพัฒนาการใหม่ๆของตัวเองให้พ่อแม่ตื่นเต้นอยู่เสมอ
เมื่อวานภรรยาบอกว่าลูกสามารถ “เปิด-ปิด” สวิทช์ไฟได้แล้วนะ แน่นอนครับ ความอยากรู้ของผู้เป็นพ่อก็อุ้มลูกไปที่สวิทช์ไฟห้องนอน ผมบอกลูกสาวว่า “เปิดไฟให้พ่อหน่อย” เธอก็เอื้อมมือไปกดเปิด “เก่งงง....” ผมชมเธอพร้อมลูบหัว “งั้นปิดไฟให้หน่อยสิลูก” เธอโน้มตัวไปปิดอย่างรวดเร็ว
คงเคยได้ยินนะครับว่ามนุษย์เรียนรู้จากประสบการณ์ ยิ่งเห็น ยิ่งรู้ ยิ่งได้ลงมือทำ ก็ชำนาญมากขึ้นเรื่อยๆ ความผิดพลาดต่างๆก็น้อยลงไปด้วย
เด็กๆเรียนรู้ “ขั้นตอน” การทำสิ่งเหล่านี้จากข้อมูลที่สั่งสมไว้ในสมอง การเห็นพ่อแม่ปิด-เปิดไฟทุกครั้งเวลาเข้าออกห้อง การได้ลงมือทำตามคำสั่งง่ายๆสั้นๆ เขียนออกมาเป็นภาพง่ายๆคือ
เด็ก + ผลลัพธ์ที่เราต้องการ (เช่นอยากให้เปิดไฟ) = ขั้นตอนการทำ (Algorithms)
และการได้รับคำชมซึ่งเป็นการรับรองจากพ่อแม่ว่าส่ิงที่เขาทำนั้นถูกต้อง คือข้อมูลที่เขาเก็บเพิ่มเข้าไปเพื่อเอาไว้พัฒนาตัวเองต่อไปอีกในอนาคต
ถ้าใครได้อ่านตอนก่อนหน้านี้ของซีรี่ย์แล้วคงคิดว่านี้มัน “Machine Learning” ชัดๆ ใช่ครับ...มันเป็นแนวคิดเดียวกัน เมื่อมนุษย์เรียนรู้จากประสบการณ์และข้อมูลที่ได้รับ ทำไม AI จะทำไม่ได้
แต่ก่อนที่จะพูดต่อไปในเรื่อง Machine Learning ขอย้อนกลับมาอธิบายเกี่ยวกับสิ่งที่เรียกว่า Algorithm และพื้นฐานการทำงานของสิ่งที่เรียกว่า “Computer” ก่อนสักหน่อย
Algorithm = คำสั่ง หรือ ชุดของคำสั่ง เพื่อให้คอมพิวเตอร์นั้นสร้างผลลัพธ์ที่เราต้องการ
Computer ประกอบไปด้วยอุปกรณ์อิเล็กทรอนิกส์ชิ้นจิ๋วหลายล้านชิ้นที่เรียกว่า “Transistor” (ทรานซิสเตอร์) ที่ทำหน้าที่เป็นสวิทช์ปิดเปิด (0 หรือ 1) หลายล้านครั้งต่อวินาทีตาม Algorithms เพื่อออกมาเป็นผลลัพธ์ที่เราต้องการ เพราะฉะนั้น Algorithm ที่ง่ายที่สุดคือการ “ปิด-เปิด” สวิทช์แบบเดียวกับที่ลูกสาวของผมทำ
1 แทนค่า transistor เปิด
0 แทนค่า transistor ปิด
ง่ายไหมละครับ? มาลองแทนค่าสิ่งเหล่านี้ในโลกของความเป็นจริงดูบ้าง เช่นคุณไปกดเงินจากตู้เอทีเอมหนึ่งล้านบาท ถ้ามีเงินในบัญชีสถาณะของ transistor ตัวนั้นก็มีค่าเท่ากับ 1 ถ้าไม่มีก็คือ 0 (คงเห็นภาพนะครับว่าถ้าทำงานพลาดขึ้นมาจะเกิดความเสียหายมากขนาดไหน) หรืออย่างเรื่องเกี่ยวกับความเป็นความตายในข้อมูลทะเบียนราษฎร์ของคุณก็ใช้สถานะของ transistor นี้เหมือนกัน : 1 คือยังมีชีวิตอยู่ 0 คือคุณได้เสียชีวิตไปแล้ว
นอกจากพระเจ้าแล้วคนที่มีฤทธิ์อำนาจในการกำหนดชะตาชีวิตของใครสักคนด้วยปลายนิ้วคือพนักงานที่ใส่ข้อมูลในทะเบียนราษฎร์นี้แหละ เป็นเรื่องตลกร้ายที่แปลกพิลึก
Transistor หนึ่งตัวก็ทำได้เท่านี้ 1 หรือ 0 แต่พอมาเรียงต่อๆกัน โดยมีข้อแม้ต่างๆเข้ามาเกี่ยวข้องด้วย เช่น ถ้า Transistor ตัวแรกได้ผลลัพธ์คือ 1 Transistor ตัวต่อมาต้องให้ผลลัพธ์เท่ากับ 1 ด้วย
ตัวอย่างข้างบน ผลลัพธ์ของ Transistor ตัวที่สองขึ้นอยู่กับ Transistor ตัวแรก ซึ่งมันเป็นหลักเกณฑ์เดียวกันกับสิ่งเรารู้จักกันดีในชื่อของ "เหตุและผล" นั้นเอง ถ้าอย่างหนึ่งเกิดขึ้นอีกอย่างหนึ่งถึงจะตามมา เช่น ถ้าหิวก็กิน (if....then...) เป็นต้น
(นี้เป็น thesis “A Symbolic Analysis of Relay and Switching Circuits” ของ Claude Shannon บิดาของ Information Theory ระหว่างที่เขาอยู่ MIT ในปี 1973 เป็น thesis ที่สำคัญมากที่สุดชิ้นหนึ่งเลยทีเดียว สามารถอ่านเพิ่มเติมได้จากลิ้งค์ข้างล่างบทความ)
ถ้ามี Transistor 3 ตัวล่ะ A, B, และ C เรื่องเริ่มยุ่งขึ้นมาอีกนิดหน่อย
ถ้า (if) A และ (AND) B มีค่าเท่ากับ 1 เมื่อนั้น (then) C ถึงจะมีค่าเท่ากับ 1
ถ้า (if) A หรือ (OR) B มีค่าเท่ากับ 1 เมื่อนั้น (then) C ถึงจะมีค่าเท่ากับ 1
ถ้า (if) A มีค่าเท่ากับ 0 (NOT) เมื่อนั้น (then) C ถึงจะมีค่าเท่ากับ 1
คำสั่งทั้งหมดของคอมพิวเตอร์บนโลกใบนี้ ไม่ว่า algorithms ยุ่งยากแค่ไหนก็ขึ้นอยู่กับตัวดำเนินการ 3 ตัวที่เรียกว่า AND, OR, และ NOT (ชื่อเรียกอย่างเป็นทางการคือ ‘ตัวดำเนินการตรรกศาสตร์’ หรือ Logical Operator) แค่นี้แหละ
ยกตัวอย่างแบบนี้คงเห็นชัดกว่า
ผมจะออกไปกินข้าวนอกบ้านก็ต่อเมื่อ อากาศดี และ มีเงินมากกว่า 1000 บาทในกระเป๋า ซึ่งเงินในกระเป๋าจะมีมากขนาดนั้นก็ต่อเมื่อเงินเดือนออก หรือ ถูกหวย ตามภาพข้างล่างครับ

Computer Scientist มักได้ยินคำพูดที่ว่า
“ตราบใดที่เรายังเขียน Algorithm ในการแก้ไขปัญหาไม่ได้ แสดงว่าเรายังไม่เข้าใจปัญหามากพอ”
นี้คือแก่นของ Computer Science เลยทีเดียว การคิด Algorithms ที่ถูกต้องเพื่อหาผลลัพธ์ที่ต้องการเป็นงานที่ซับซ้อนและบ่อยครั้งเราเอาหัวโขกโต๊ะพยายามคิดยังไงก็คิดไม่ออก เพราะชุดคำสั่งที่ดีนั้นต้องชัดเจนไม่กำกวมเพื่อให้คอมพิวเตอร์เข้าใจว่าต้องทำยังไง ไม่อย่างงั้นบางครั้งเขียนโค้ดสร้างคำสั่งไปแล้วเสร็จเรียบร้อย ปัญหาเก่าหมดไปก็จริง ปัญหาใหม่กลับถูกสร้างขึ้นมาแทนอีกเพียบแบบนี้ก็ไม่จบสิ้นซะที
Error หรือ Bug เพียงนิดเดียวใน Algorithm สามารถสร้างความปั่นป่วนได้มากมาย คิดถึงข่าวไวรัสเรียกค่าไถ่ของ WannaCry ที่เกิดขึ้นเมื่อสัปดาห์ก่อน ความผิดพลาดของโปรแกรมเมอร์ในการเขียนโปรแกรมสร้างช่องโหว่ให้แฮกเกอร์สามารถเข้ามาควบคุมข้อมูลของคอมพิวเตอร์ได้ เหตุการณ์แบบนี้เกิดขึ้นตลอดเวลาและสร้างความเสียหายมูลค่ามหาศาล
ถ้าเราเปรียบโปรแกรมเมอร์เป็นผู้สร้างโปรแกรม ความซับซ้อนของปัญหาที่เราพยายามแก้ไขเป็นศัตรูตัวฉกาจ ดูเหมือนว่าเรากำลังรบในสงครามที่ไม่มีวันจบสิ้นและเรากำลังพ่ายแพ้อย่างช้าๆ เพราะนับวันยิ่งศัตรูคนนี้ดูแข็งแกร่งและยุ่งยากมากขึ้นเรื่อยๆ เราต้องมีวิธีจัดการแก้ไขปัญหาได้ดีกว่านี้ ต่อไปเราอาจจะไม่สามารถพึ่งพาความสามารถของมนุษย์เพียงอย่างเดียวได้อีกต่อไปแล้ว ถึงเวลาที่มนุษย์ต้องแต่สร้างอะไรบางอย่างเพื่อมาช่วยเราแก้ไขปัญหาที่อยู่ตรงหน้าได้ดีขึ้น (เหมือนในยุคอุตสาหกรรมที่เราสร้างเครื่องจักรขึ้นมาเพื่อแก้ปัญหาแรงงานคน) และนั้นเองเป็นที่มาของ AI (Artificial Intelligence) และ Machine Learning
คอมพิวเตอร์ที่สามารถสร้างชุดคำสั่งที่ซับซ้อน เพื่อให้คอมพิวเตอร์ตัวอื่นเข้าใจได้
โฆษณา