ไม่นานนี้จะได้ยินคนพูดถึง
"การเรียนรู้ของเครื่อง" (机器学习, machine learning, ML) และ
"ปัญญาประดิษฐ์" (人工智能, artificial intelegent, AI) ๒ คำนี้กันบ่อยๆ เนื่องจากเป็นศาสตร์ที่อาจเป็นกำลังขับเคลื่อนไปสู่อนาคตก็ว่าได้
ในบทความนี้จะมาทำความเข้าใจว่าการเรียนรู้ของเครื่องและปัญญาประดิษฐ์คืออะไร มีความสำคัญอย่างไร และหากอยากสร้างมันขึ้นควรเริ่มต้นยังไง
ปัญญาประดิษฐ์คืออะไร ความหมายของปัญญาประดิษฐ์นั้นแต่ละที่อาจมีอธิบายต่างกันไป ยากที่จะจำกัดความแน่ชัด อาจขึ้นอยู่กับว่ามองแง่ไหน
ตัวอย่างคำนิยามสั้นๆของปัญญาประดิษฐ์ที่กล่าวโดยอาจารย์ผู้เชี่ยวชาญแต่ละคน
นากาจิมะ ฮิเดยุกิ (中島 秀之) มหาวิทยาลัยอนาคตฮาโกดาเตะ:
"สิ่งบางอย่างที่สร้างขึ้นมาโดยมนุษย์และมีสติปัญญาเป็นของตัวเอง หรือตัวสาขาวิชาที่พยายามจะสร้างสิ่งนั้นขึ้นมาเพื่อที่จะวิจัยเกี่ยวกับเรื่องของสติปัญญา"
อิโซงุจิ ริอิจิโรว (溝口 理一郎) สถาบันวิทยาศาสตร์และเทคโนโลยีก้าวหน้าโฮกุริกุ:
"สิ่ง (หรือระบบ) ที่มีการทำงานอย่างชาญฉลาด ซึ่งสร้างขึ้นมาโดยมนุษย์"
นางาโอะ มาโกโตะ (長尾 真) มหาวิทยาลัยเกียวโต:
"ระบบที่พยายามจำลองการทำงานในสมองของมนุษย์ให้ได้มากที่สุด"
โฮริ โควอิจิ (掘 浩一) มหาวิทยาลัยโตเกียว:
"โลกแห่งสติปัญญาแห่งใหม่ที่สร้างขึ้นโดยมนุษย์"
มัตสึบาระ ฮิโตชิ (松原 仁) มหาวิทยาลัยอนาคตฮาโกดาเตะ:
"สติปัญญาที่สร้างขึ้นโดยมนุษย์และทำอะไรได้เหมือนมนุษย์จนแยกไม่ออก"
ยามางุจิ ทากาฮิระ (山口 高平) มหาวิทยาลัยเคย์โอ:
"ระบบเชิงโครงสร้างที่มีไว้เลียนแบบ สนับสนุน และก้าวข้ามสิ่งที่มนุษย์ทำอย่างชาญฉลาด"
อาซาดะ มิโนรุ (浅田 稔) มหาวิทยาลัยโอซากะ:
"คำจำกัดความของสติปัญญานั้นไม่ได้ชัดเจน ดังนั้นจึงไม่อาจจำกัดความความหมายของปัญญาประดิษฐ์ได้อย่างแน่ชัด"
[ที่มา จากหนังสือ "ปัญญาประดิษฐ์จะก้าวข้ามมนุษย์หรือไม่" (人工知能は人間を超えるか) โดย มัตสึโอะ ยุตากะ (松尾 豊)]
จะเห็นว่าคำนิยามแตกต่างกันไป การจะสรุปให้แน่ชัดจึงทำได้ยาก มีรายละเอียดมากมาย
ในที่นี้จะขอสรุปความหมายของปัญญาประดิษฐ์ดังนี้
ปัญญาประดิษฐ์ก็คือสิ่งที่มนุษย์สร้างขึ้นมาเพื่อให้สามารถคิดและทำอะไรบางอย่างเองแทนมนุษย์ได้โดยไม่ต้องมีมนุษย์มาสั่งงาน
ตัวอย่างที่ง่ายที่สุดคือ ปัญญาประดิษฐ์สำหรับวิเคราะห์ข้อมูล คือเรามีข้อมูลอยู่ชุดนึง ป้อนเข้าไปให้ปัญญาประดิษฐ์ ให้มันทำการวิเคราะห์คำนวณอะไรต่างๆ สุดท้ายก็บอกผลลัพธ์ออกมา
ตัวอย่างเช่น ให้โปรแกรมทำนายว่าฝนจะตกหรือเปล่า โดยป้อนข้อมูล อุณหภูมิ, ความชื้น, แรงลม, ฯลฯ
หรือให้โปรแกรมวิเคราะห์ว่านี่เป็นสัตว์ชนิดไหนโดยป้อนรูปภาพสัตว์เข้าไป
ข้อมูลป้อนเข้าจะเป็นอะไรก็ได้ที่คิดว่ามีผลต่อผลลัพธ์
นอกจากวิเคราะห์ข้อมูลแล้ว ก็ยังมีตัวอย่างอื่นอีก เช่น เวลาเล่นเกมต่อสู้ ปกติจะต้องมีคู่ต่อสู้ที่ควบคุมด้วยคอม คอมที่ว่านั่นก็คือปัญญาประดิษฐ์ชนิดหนึ่ง
กรณีแบบนี้ ปัญญาประดิษฐ์จะรับข้อมูลเป็นสถานการณ์รูปเกมในขณะนั้น แล้ววิเคราะห์ว่าควรจะตอบรับกับสถานการณ์นี้อย่างไร
เพียงแต่ถ้าศัตรูแค่เคลื่อนที่ไปเรื่อยๆแบบสุ่ม ผู้เล่นจะทำออกท่าอะไรมาก็ทำการตอบโต้แบบสุ่ม แบบนั้นก็ไม่อาจเรียกว่าเป็นปัญญาประดิษฐ์ได้ เกมในยุคแรกๆหลายเกมเป็นเช่นนั้น แต่นับวันก็ยิ่งพัฒนาขึ้นเรื่อยๆ
การเรียนรู้ของเครื่องคือเทคนิคที่ใช้สร้างปัญญาประดิษฐ์ ปัญญาประดิษฐ์แบบดั้งเดิมนั้นสร้างขึ้นจากการที่นักเขียนโปรแกรมเป็นคนกำหนดเงื่อนไขทุกอย่างให้ ว่าถ้าเจอแบบนี้ต้องทำยังไง ได้ข้อมูลแบบนี้มาต้องแปลงเป็นอะไร
เช่น โปรแกรมสำหรับวิเคราะห์ข้อมูล อาจต้องกำหนดว่าให้เอาตัวแปรนี้มาบวกตัวนั้นแล้วคูณตัวโน้นหารตัวนู้น ถ้าค่ามากกว่าเท่านี้ก็ให้ทำอย่างงี้ต่อ ถ้าน้อยกว่าทำอย่างงั้น บลาๆๆ
หรือเช่นถ้าสร้างบอตเล่นเกม เราก็อาจเขียนโปรแกรมให้ตัวละครเดินไปตามเส้นทางที่กำหนดเรื่อยๆ เจอมอนสเตอร์ก็ให้ดูเลเวลแล้วคำนวณดูว่าน่าจะสู้ไหวมั้ย ถ้าสู้ไหวก็เข้าตี ไม่ไหวก็เดินหนี ตอนต่อสู้ก็ดูว่าถ้ามอนสเตอร์ใช้ท่านี้ให้ตอบโต้ด้วยท่านี้ ถ้า HP ใกล้หมดก็ใช้ยาเติมเลือด เป็นต้น
การเขียนอะไรแบบนี้ต้องอาศัยประสบการณ์ของคนเขียนเอง ซึ่งรู้อยู่แล้วว่าในสถานการณ์แบบไหนต้องทำยังไง จึงจะก่อให้เกิดผลลัพธ์ที่ดีที่สุด
ปัญญาประดิษฐ์แบบนั้นก็ได้แต่ทำตามที่ถูกคนโปรแกรมมาอย่างดีแล้วเท่านั้น ไม่สามารถทำอะไรที่พลิกแพลงออกนอกกรอบได้ เพราะมันไม่ได้ถูกสร้างขึ้นมาให้เกิดการ "เรียนรู้" ที่จะต่อยอดสร้างระบบความคิดอะไรขึ้นมาเองได้
แต่คงจะดีกว่านั้น ถ้าเราสามารถสร้างปัญญาประดิษฐ์ที่สามารถเรียนรู้ได้เองว่าจะต้องทำอะไร มนุษย์ไม่ต้องป้อนโปรแกรมกำหนดเงื่อนไขอะไรให้เลย
เช่น ป้อนข้อมูลรูปภาพไปเยอะๆ แล้วบอกให้ปัญญาประดิษฐ์รู้ด้วยว่านี่เป็นรูปอะไร
ปัญญาประดิษฐ์ก็จะนำข้อมูลนั้นไปเรียนรู้ แล้วหลังจากนั้นถ้าเราลองให้มันดูรูปภาพสักรูปโดยไม่บอกว่าเป็นอะไร มันก็จะสามารถทายได้ว่านี่เป็นรูปอะไรได้
หรืออย่างสร้างบอตเล่นเกม เวลาสู้กับมอนสเตอร์ก็อาจเริ่มจากให้เคลื่อนไหวมั่วๆ ใช้ท่ามั่วๆไปก่อน แล้วดูว่าสุดท้ายชนะหรือเปล่า ถ้าชนะก็จะเรียนรู้ว่าการเคลื่อนไหวแบบนี้ให้ผลดี การใช้ท่านี้จังหวะนี้จะเป็นผลดี ถ้าแพ้ก็จะรู้ว่าไม่ควรทำแบบนี้ ให้มันสู้ซ้ำๆไปเรื่อยๆ ในที่สุดมันก็จะเก่งขึ้นเรื่อยๆ รู้ว่าควรจะเคลื่อนที่แบบไหนในจังหวะไหน โดยที่เราไม่ต้องไปกำหนดให้เองเลย
ทั้งหมดนี้คอมเรียนรู้เอาเองโดยอาศัยแค่ข้อมูลในการเรียนรู้เท่านั้น
เทคนิคที่ทำแบบนั้นก็คือสิ่งที่เรียกว่า "การเรียนรู้ของเครื่อง"
ดังนั้น "การเรียนรู้ของเครื่อง" และ "ปัญญาประดิษฐ์" มีความเกี่ยวพันกันในลักษณะนี้ บางคนอาจมองปนว่าเป็นเรื่องเดียวกัน แต่กล่าวให้ถูกต้องจริงๆคือการเรียนรู้ของเครื่องเป็นเพียงสาขาย่อยหนึ่งของปัญญาประดิษฐ์
กล่าวคือ ปัญญาประดิษฐ์ไม่จำเป็นต้องใช้การเรียนรู้ของเครื่องเสมอไป แต่การเรียนรู้ของเครื่องเป็นวิธีที่ดีที่สุดในการจะสร้างปัญญาประดิษฐ์
ปัญญาประดิษฐ์ที่ไม่ใช้การเรียนรู้ของเครื่องก็คือการที่เราต้องสร้างตรรกะวิธีการคำนวณภายในเองทั้งหมด ซึ่งมีข้อเสียดังที่กล่าวไปแล้ว ปัจจุบันนี้จึงเป็นกระแสรอง
ปัญญาประดิษฐ์คือสิ่งที่พยายามทำให้ดูมีสติปัญญาเหมือนมนุษย์ แต่มนุษย์กว่าจะทำสิ่งต่างๆได้ต้องผ่านการเรียนรู้มามากมาย ส่วนใหญ่ไม่ได้ทำมาได้ตั้งแต่เกิด ดังนั้นการเรียนรู้จึงเป็นสิ่งสำคัญในการสร้างปัญญาประดิษฐ์
ตัวอย่างสิ่งที่ใช้ปัญญาประดิษฐ์ที่ใช้เทคนิคการเรียนรู้ของเครื่อง การเรียนรู้ของเครื่องสามารถนำมาใช้ในการทำสิ่งต่างๆเหล่านี้
- วิเคราะห์ข้อมูลในด้านต่างๆ เช่นด้านวิทยาศาสตร์ ด้านเศรษฐศาสตร์
- บอตเล่นเกมต่างๆ
- เสิร์ชเอนจิน มีการบันทึกข้อมูลของคนที่เคยค้นมาก่อน เพื่อให้ได้ผลลัพธ์การค้นที่ดีที่สุด
- ตามเว็บขายของจะมี AI คอยเสนอสินค้าใหม่ให้ลูกค้าโดยดูจากประวัติของที่เคยซื้อมา
- โปรแกรมแปลงเสียงพูดเป็นข้อความ
- โปรแกรมแปลภาษา ใช้การประมวลภาษาธรรมชาติ
- วิเคราะห์ตรวจหาโรค
- ระบบขับรถอัตโนมัติ
- วิเคราะห์รูปภาพ เช่น ตรวจจับหาใบหน้า หรือข้อความภายในรูป
- สร้างหุ่นยนต์เพื่อทำหน้าที่ต่างๆ
- สร้างสรรค์ผลงานใหม่ เช่น ภาพวาด เพลง นิยาย โดยเรียนรู้จากตัวอย่างผลงานของมนุษย์
- ฯลฯ
การเรียนรู้คืออะไร ก่อนจะเข้าใจว่าเครื่องสามารถเรียนรู้ได้อย่างไร ต้องเริ่มจากทำความเข้าใจก่อนว่า การเรียนรู้คืออะไร?
หากเทียบกับการเรียนรู้ของมนุษย์อาจจะทำให้เห็นภาพได้ชัดขึ้น สำหรับคนแล้วชีวิตประจำวันต้องสัมผัสกับสิ่งแวดล้อมรอบตัว แล้วเราก็เรียนรู้สิ่งต่างๆจากตรงนั้นเอง
อันดับแรกในการเรียนรู้ก็คือ การรับข้อมูลเข้ามาแล้วจดจำไว้ เช่น เด็กมองเห็นตัวเลข 0 ถึง 9 โดยมีคนบอกว่าตัวไหนคือเลขอะไร แล้วก็พยายามจำ
แน่นอนว่าการจดจำก็เป็นส่วนหนึ่งของการเรียนรู้ แต่ว่าไม่ใช่แค่นั้น นอกจากนั้นแล้วต้องเข้าใจว่าจะเอาข้อมูลที่จำได้นั้นไปสร้างให้เป็นองค์ความรู้โดยทั่วไปอย่างไร เพราะสิ่งที่เราจะต้องเจอนั้นอาจไม่ใช่สิ่งที่เหมือนเดิมพอดี
ตัวเลขตัวนึงมีรูปแบบการเขียนที่ไม่แน่นอนในระดับนึง ต่อให้คนเดียวกันเขียนก็ไม่เคยเหมือนกันเป๊ะ ความแปรปรวนในรูปแบบมีได้ไม่จำกัด ไม่มีทางที่เราจะเคยเห็นหมดทุกรูปแบบ
ดังนั้นจึงสำคัญว่าจะจับหลักยังไงว่าอะไรเป็นสิ่งสำคัญที่จะกำหนดว่านี่คือตัวเลขนั้น นั่นคือต้องมีความสามารถในการวิเคราะห์หาลักษณะเฉพาะที่สำคัญ
มนุษย์มีความสามารถนี้อยู่แล้ว ดังนั้นเด็กๆมองตัวอย่างตัวเลขแค่จำนวนหนึ่งก็สามารถแยกแยะออกแล้ว
เครื่องสามารถเรียนรู้ได้อย่างไร เราได้พูดถึงไปแล้วว่าการเรียนรู้คืออะไร และถ้าเครื่องสามารถเรียนรู้ได้ก็คงจะดี แต่ว่าทำยังไงให้เครื่องสามารถเรียนรู้อะไรๆได้?
เทคนิคการเรียนรู้ของเครื่องมีอยู่หลากหลาย แต่ละวิธีก็มีรูปแบบวิธีการเรียนรู้ต่างกันออกไป แต่โดยรวมแล้วอาจแบ่งเป็นสองแบบคือ
-
นอนพาราเมทริก (nonparametric) หรือแบบไม่ใช้พารามิเตอร์
-
พาราเมทริก (parametric) หรือแบบใช้พารามิเตอร์
วิธีการเรียนแบบนอนพาราเมทริกก็คือ การให้เครื่องจำข้อมูลต่างๆให้เยอะๆ แล้วเอาข้อมูลที่มีอยู่มาใช้วิเคราะห์คำนวณอะไรบางอย่างเพื่อทำนายผลสิ่งที่ต้องการ
ตัวอย่างวิธีการแบบนอนพาราเมทริกที่เข้าใจง่ายที่สุดคือ
วิธีการเพื่อนบ้านใกล้สุด k ตัว (K-近邻算法, k-nearest neighbor, มักย่อเป็น KNN) หลักการคือรวบรวมข้อมูลไว้ให้มากที่สุดแล้วทำนายข้อมูลโดยอาศัยความใกล้เคียงกับข้อมูลที่เคยจำเอาไว้
ตัวอย่างเช่นต้องการจะแยกเพศของสัตว์ชนิดหนึ่งจากการดูแค่น้ำหนักตัวและส่วนสูง เราอาจรวบรวมข้อมูลของตัวที่รู้เพศอยู่แล้ว แล้วทำเป็นแผนภาพ ขีดเส้นแบ่งเขตโดยดูว่าถ้าน้ำหนักส่วนสูงเท่านี้มีเพศไหนอยู่ใกล้ๆมากกว่าก็ควรจะเป็นเพศนั้น
ภาพแสดงการกระจายของจุดข้อมูลที่รู้อยู่แล้ว จุดสีแดงคือเพศเมีย จุดสีม่วงคือเพศผู้ เส้นแบ่งเขตคือผลการแบ่งที่ได้จากวิธีการเพื่อนบ้านใกล้สุด k ตัว จะเห็นว่าบริเวณไหนที่มีสีอะไรอยู่ใกล้เยอะกว่าก็จะเป็นพื้นที่ของสีนั้น
(รายละเอียดของวิธีนี้
https://phyblas.hinaboshi.com/20171028)
ดูแล้วเหมือนกับว่าแค่จำข้อมูลไปเรื่อยๆเยอะๆ แล้วนำมาใช้เมื่อถึงเวลา ไม่ได้ทำอะไรที่สมกับเป็นการเรียนรู้จริงๆ แต่ถึงอย่างนั้นการจำก็เป็นส่วนหนึ่งในการเรียนรู้
ข้อเสียของวิธีการแบบนี้ก็คือ หากมีข้อมูลจำนวนมากอาจใช้เวลาในการวิเคราะห์นานมาก เพราะต้องเทียบกับข้อมูลทั้งหมดที่มีมาก่อน
ส่วนเทคนิคแบบพาราเมทริกคือการนำข้อมูลที่ได้มาประมวลผลเพื่อเปลี่ยนเป็นพารามิเตอร์บางอย่าง จากนั้นเวลาใช้งานก็แค่เอาพารามิเตอร์นั้นมาคำนวณ ไม่ต้องอาศัยข้อมูลเดิมแล้ว ข้อมูลนั้นอาจจะทิ้งไปได้เลย
ขอแค่พารามิเตอร์ถูกปรับจนเหมาะสมดีแล้วก็สามารถทำนายผลที่ต้องการได้อย่างแม่นยำ
มนุษย์เองก็ไม่ได้จำข้อมูลทั้งหมดที่เรียน แต่เอาข้อมูลที่ได้มาแปลงเป็นสิ่งที่เรียกว่าองค์ความรู้โดยทั่วไป
ตัวอย่างเทคนิคแบบพาราเมทริกอย่างง่ายสุดก็คือ
เพอร์เซปตรอน (感知器, perceptron) เป็นเทคนิคที่ได้หลักการมาจากการพยายามเลียนแบบเซลล์ประสาทในสมองมนุษย์
มีหลักการง่ายๆคือประกอบไปด้วยโครงร่างที่เรียกว่าเซลล์ประสาทภายในจะเก็บค่าพารามิเตอร์ไว้ เวลาวิเคราะห์ข้อมูลอะไรบางอย่างจะนำค่าข้อมูลขาเข้ามาคูณกับค่าพารามิเตอร์แล้วดูว่าค่าเกินจากที่กำหนดค่านึงหรือไม่
อย่างปัญหาเรื่องแบ่งเพศของสัตว์จากน้ำหนักส่วนสูงถ้าใช้เพอร์เซปตรอนจะคำนวณในลักษณะนี้
คือรับค่า x=ส่วนสูง, y=น้ำหนักตัว แล้วเอาไปคูณกับค่าพารามิเตอร์น้ำหนัก w
x และ w
y แล้วบวกพารามิเตอร์ไบแอส b แล้วดูว่ามากกว่า 0 หรือไม่ ถ้ามากกว่าก็ทายว่าเป็นเพศเมีย ถ้าน้อยกว่าก็ทายว่าเป็นเพศผู้
ถ้าเขียนเป็นรูปก็จะได้เส้นแบ่งเป็นเส้นตรงแบ่งบริเวณที่ -0.85x+13.63y-39.10 = 0 ในนี้รูปดาวคือตำแหน่งของ ๓ จุดที่เป็นตัวอย่าง
ค่าพารามิเตอร์น้ำหนักและไบแอสนี้เป็นสิ่งที่ต้องได้มาจากการเรียนรู้ เพอร์เซปตรอนมีวิธีในการเรียนรู้จากข้อมูลที่ป้อนเข้าไปเพื่อรู้ว่าพารามิเตอร์ค่าไหนที่จะทำให้ทำนายได้แม่นที่สุด
โดยเมื่อเริ่มต้นพารามิเตอร์อาจมาจากการสุ่ม แต่ว่าเมื่อได้รับข้อมูลแล้วเรียนรู้ไปพารามิเตอร์ก็จะค่อยๆเปลี่ยนไป จนทำให้สามารถทำการจำแนกกลุ่มข้อมูลได้ถูกต้อง
ดังนั้นความหมายของการเรียนรู้ในที่นี้ก็คือการปรับพารามิเตอร์เพื่อให้สามารถให้คำตอบได้ดีที่สุด
ก็เหมือนกับสมองมนุษย์ เวลาที่เจออะไรใหม่ๆเข้ามาก็จะปรับระบบความคิดในสมองไปเรื่อยๆ ไม่ได้คิดสิ่งเดิมในแบบเดิมตลอดไป แสดงว่าพารามิเตอร์อะไรบางอย่างในสมองเราต้องเปลี่ยนแปลงไป
เทคนิคการเรียนรู้ของเครื่องแบบพาราเมทริกมีหลากหลายรูปแบบมาก แต่ละแบบก็มีพารามิเตอร์ในแบบของตัวเองต่างกันไป
ที่น่าพูดถึงมากที่สุดและจะหยิบยกมาพูดถึงเป็นพิเศษคือเทคนิคที่เรียกว่า
การเรียนรู้เชิงลึก (深度学习, deep learning) การเรียนรู้เชิงลึก ~~ĐẾỆP LỄẦRNỈNG~~!! สมัยนี้เมื่อพูดถึงเรื่องการเรียนรู้ของเครื่อง สิ่งที่คนมักจะนึกถึงกันมากก็คือการเรียนรู้เชิงลึก หรือ deep learning นั่นเอง
การเรียนรู้เชิงลึกเป็นในการเรียนรู้ของเครื่องซึ่งสร้างผลงานโดดเด่นมากที่สุดในปัจจุบัน ถูกนำมาใช้อย่างกว้างขวาง
เทคนิคนี้มีพื้นฐานมาจากเพอร์เซปตรอน โดยนำเซลล์ประสาทหลายๆเซลล์มาเรียงต่อๆกันเป็นชั้นๆจำนวนมากมาย กลายเป็นโครงข่ายขึ้นมา เรียกว่า
โครงข่ายประสาทเทียม (人工神经网络, artificial neural network) หากเพอร์เซปตรอนเป็นการเลียนแบบเซลล์ประสาทเซลล์นึง โครงข่ายประสาทเทียมก็คือการเลียนแบบสมองมนุษย์ซึ่งประกอบด้วยเซลล์ประสาทจำนวนมากมาย
เซลล์กลุ่มแรกจะรับข้อมูลขาเข้ามา แล้วข้อมูลก็จะผ่านการคำนวณในแต่ละเซลล์แล้วไหลสู่เซลล์ในชั้นต่อไป แล้วคำนวณแล้วส่งต่อไปเรื่อยๆ จนถึงชั้นสุดท้ายเป็นชั้นขาออก แล้วก็จะให้คำตอบเป็นผลลัพธ์ที่เราต้องการ
การที่มีหลายเซลล์ แต่ละเซลล์ก็ทำหน้าที่วิเคราะห์ข้อมูลในด้านต่างๆแตกต่างกันไปจึงทำให้สามารถคิดอะไรซับซ้อนได้
รายละเอียดมากกว่านี้เกี่ยวกับการเรียนรู้เชิงลึกมีมากมาย อ่านเพิ่มเติมได้ที่
https://phyblas.hinaboshi.com/saraban/khrong_khai_prasat_thiam ประวัติศาสตร์โดยย่อ ผลสำเร็จของการเรียนรู้เชิงลึกในทศวรรษ 2010 โดยเฉพาะผลงานของ alpha go เมื่อปี 2016-2017 ที่เล่นโกะเอาชนะนักเล่นโกะมืออาชีพอย่างอี เซดล (이세돌) และ เคอเจี๋ย (柯洁) นั้นเป็นเหตุการณ์ที่ทำให้คนสนใจเรื่องปัญญาประดิษฐ์กันมาก ถือเป็นตัวก่อให้เกิดความเปลี่ยนแปลงครั้งใหญ่
แต่นี่ไม่ใช่ครั้งแรกของกระแสความสนใจที่เกิดขึ้นในสาขานี้ ก่อนหน้านี้ก็เกิดกระแสเกี่ยวกับปัญญาประดิษฐ์อยู่เป็นช่วงๆแล้วก็เงียบหายไป
โดยรวมแล้วอาจแบ่งเป็น ๓ ช่วง คือ ยุคของปัญญาประดิษฐ์, การเรียนรู้ของเครื่อง และการเรียนรู้เชิงลึก
ขอบเขตเวลาในแผนผังนี้ไม่ได้แสดงถึงเวลาที่สิ่งนั้นกำเนิดขึ้น แต่แสดงถึงเวลาที่เริ่มสร้างผลงานเด่นชัดขึ้นมา
ประวัติของปัญญาประดิษฐ์ไล่ย้อนไปได้ถึงทศวรรษ 1940 พร้อมกับการกำเนิดขึ้นของคอมพิวเตอร์
แต่ที่เริ่มเกิดการวิจัยอย่างกว้างขวางจริงจังเป็นครั้งแรกก็คือทศวรรษที่ 1950 โดยในปี 1956 เกิดการประชุมปัญญาประดิษฐ์ครั้งแรกที่วิทยาลัยดาร์ตมัธ (Dartmouth College) คำว่า "ปัญญาประดิษฐ์" (ในภาษาอังกฤษ) ก็ถูกใช้ครั้งแรกที่นั่น ถูกตั้งขึ้นเป็นสาขาวิชาแขนงหนึ่งอย่างเป็นทางการ
ในช่วงนั้นมีงานวิจัยเกี่ยวกับปัญญาประดิษฐ์เกิดขึ้นมากมาย ซึ่งแตกเป็นสองสายคือสายที่ใช้การเรียนรู้ของเครื่อง กับสายที่ไม่ใช้การเรียนรู้ คือผู้เขียนโปรแกรมเป็นคนกำหนดตรรกะการทำงานให้ทั้งหมด
เทคนิคการเรียนรู้ของเครื่องขั้นพื้นฐานอย่างเพอร์เซปตรอนก็กำเนิดขึ้นในช่วงนั้น
อย่างไรก็ตาม ในระยะแรกปัญญาประดิษฐ์สายที่ไม่ใช้การเรียนรู้ของเครื่องดูจะสร้างผลงานได้ดีกว่า มีการสร้างบอตเล่นหมากรุกหรือเกมต่างๆขึ้น บอตที่สามารถคุยกับมนุษย์ได้ก็เริ่มถูกสร้างขึ้นด้วย
แต่เนื่องจากศักยภาพของคอมพิวเตอร์ในขณะนั้นจำกัดทำให้ยังไปได้ไม่ไกล บอตหมากรุกเองก็ไปได้แค่ระดับมือสมัครเล่นเท่านั้น สุดท้ายข่าวความก้าวหน้าด้านปัญญาประดิษฐ์ก็เงียบหายไป
จนผ่านมาถึงทศวรรษ 1980 เทคนิคการเรียนรู้ของเครื่องได้กำเนิดขึ้นมามากมายและเริ่มสร้างผลงานขึ้นมา รวมถึงเทคนิค
การแพร่ย้อนกลับ (反向传播, backpropagation) ซึ่งเป็นรากฐานที่สำคัญของการเรียนรู้เชิงลึก ปัญญาประดิษฐ์ในยุคนั้นจึงเริ่มโน้มไปในทางที่อาศัยเทคนิคการเรียนรู้ของเครื่อง
แต่สุดท้ายก็ไปได้ไม่ไกลอย่างที่คิดเนื่องจากเทคนิคการเรียนรู้ของเครื่องต้องอาศัยข้อมูลจำนวนมากจึงจะได้ผลดี แต่สมัยนั้นยังไม่มีอินเทอร์เน็ต การรวบรวมข้อมูลจึงไม่ง่าย อีกทั้งคอมพิวเตอร์ก็ไม่อาจจุข้อมูลได้มาก ทั้ง CPU และฮาร์ดดิสก์สมัยนั้นมีขนาดใหญ่กว่าสมัยนี้มาก แต่กลับทำงานสู้แม้แต่สมาร์ตโฟนสมัยนี้ไม่ได้เลย งานวิจัยเรื่องปัญญาประดิษฐ์จึงซบเซาลงอีกครั้ง
ต้องรอจนถึงศตวรรษที่ 21 โดยเฉพาะเมื่อถึงทศวรรษ 2010 คอมพิวเตอร์จึงมีประสิทธิภาพมากพอ อินเทอร์เน็ตก็ใช้อย่างกว้างขวาง มีข้อมูลให้เรียนรู้มากมาย ในที่สุดเทคนิคการเรียนรู้ของเครื่องจึงสามารถนำมาใช้งานได้อย่างเต็มที่ จึงเกิดกระแสความนิยมขึ้นมาอีกครั้ง คราวนี้การเรียนรู้เชิงลึกได้สร้างผลสำเร็จจำนวนมากอย่างที่ไม่เคยมีมาก่อน และมีแนวโน้มที่จะเปิดโลกไปสู่ยุคใหม่
การเรียนรู้ของเครื่องอาจทำให้ปัญญาประดิษฐ์ก้าวข้ามมนุษย์ ปัญญาประดิษฐ์เป็นสิ่งที่พยายามสร้างขึ้นมาเพื่อเลียนแบบสติปัญญาของมนุษย์ อย่างไรก็ตามก็เป็นสิ่งที่สร้างขึ้นมาจากคอมพิวเตอร์ จึงมีทั้งข้อได้เปรียบและข้อเสียเปรียบ
ในยุคแรกนั้นการพยายามทำให้ปัญญาประดิษฐ์คิดวิเคราะห์อะไรซับซ้อนนั้นล้มเหลว เพราะความสามารถในการคำนวณและเก็บข้อมูลของคอมพิวเตอร์นั้นล้วนด้อยกว่าสมองมนุษย์ อย่างไรก็ตามเวลาผ่านไปความสามารถของคอมพิวเตอร์ก็ไล่ขึ้นมาเรื่อยๆ
ปัจจุบันแม้ว่าความสามารถในการคำนวณของคอมพิวเตอร์จะยังสู้มนุษย์ไม่ได้ แต่เทคนิคการเรียนรู้ของเครื่อง โดยเฉพาะการเรียนรู้เชิงลึก ก็ได้ทำให้ปัญญาประดิษฐ์ที่ถูกฝึกให้เรียนรู้เพื่อทำงานเฉพาะทางนั้นสามารถทำสิ่งนั้นๆได้เหนือกว่ามนุษย์จริงๆ
เช่น โปรแกรมเล่นโกะหรือเกมต่างๆ ไม่เพียงแค่ alpha go แต่ปัจจุบันมีโปรแกรมที่สร้างจากปัญญาประดิษฐ์หลายตัวที่ก้าวข้ามมนุษย์ไปแล้ว
หรืออย่างโปรแกรมขับรถอัตโนมัติ ปัจจุบันก็ขับได้ดีกว่ามนุษย์แล้ว มีความปลอดภัยสูง ใช้งานได้จริง
และคอมพิวเตอร์สามารถนำภาพและเสียงมาสกัดเป็นข้อมูลตัวเลขอย่างแม่นยำและวิเคราะห์ได้โดยละเอียด เพียงแต่ว่าขาดความสามารถที่จะนำค่าเหล่านี้ไปวิเคราะห์หาลักษณะเฉพาะที่สำคัญ จึงไม่สามารถวิเคราะห์ภาพหรือเสียงได้ดี เช่นแยกแยะว่าภาพนี้เป็นสัตว์ชนิดไหน เสียงนี้เป็นเสียงอะไร
แต่การมาของเทคนิคการเรียนรู้เชิงลึกทำให้ปัญญาประดิษฐ์สามารถเรียนรู้ที่จะหาลักษณะเฉพาะที่สำคัญในการแยกแยะภาพหรือเสียงได้ จึงทำให้มีความสามารถเหนือกว่ามนุษย์ในด้านการแยกแยะภาพหรือเสียงไปแล้วในที่สุด
ในทางการแพทย์ได้มีการใช้ปัญญาประดิษฐ์วิเคราะห์โรคโดยดูฟิลม์เอ็กซ์เรย์ หรือฟังเสียงคลื่นหัวใจ มีความแม่นยำมาก
ปัญญาประดิษฐ์ต้องการข้อมูลจำนวนมากกว่าที่มนุษย์ต้องการในการเรียนรู้สิ่งต่างๆ นี่เป็นข้อเสียเปรียบ แต่ข้อได้เปรียบคือสามารถอ่านข้อมูลต่างๆได้เร็วกว่ามาก ดังนั้นขอแค่มีข้อมูลจำนวนมหาศาลอยู่พร้อมมันก็จะเรียนรู้ได้ดีกว่ามนุษย์ ในยุคปัจจุบันที่ข้อมูลสามารถหาได้ง่ายจากอินเทอร์เน็ตจึงยิ่งทำให้ปัญญาประดิษฐ์ได้เปรียบ
และคอมพิวเตอร์สามารถจำข้อมูลทั้งหมดที่ป้อนเข้าไปได้ และเก็บข้อมูลได้ไม่เลอะเลือน อีกทั้งไม่มีเรื่องของความรู้สึกมาเกี่ยวข้อง ไม่มีการเจ็บป่วย ทำงานได้ไม่เหน็ดเหนื่อย จึงยิ่งทำให้ปัญญาประดิษฐ์เหนือกว่ามนุษย์ในการทำงานด้านต่างๆจริงๆ
แต่ถึงอย่างนั้นก็เรียกได้ว่าเหนือกว่าในการทำแค่งานนั้นๆที่ถูกฝึกมาเท่านั้น ปัญญาประดิษฐ์ที่ถูกสร้างให้เล่นโกะโดยเฉพาะไม่อาจนำไปใช้ขับรถได้
ดังนั้นในแง่ของการทำงานเฉพาะทางปัญญาประดิษฐ์ก้าวข้ามมนุษย์ไปจริงๆ แต่ถึงอย่างนั้นก็ยังคงไม่สามารถคิดและทำอะไรต่างๆพร้อมกันซับซ้อนได้อย่างที่มนุษย์ทำ
แต่ถึงอย่างนั้น ในอนาคตจะเป็นอย่างไรนั้นก็ยากที่จะคาดเดา
ชนิดของเทคนิคการเรียนรู้ของเครื่อง เทคนิคการเรียนรู้ของเครื่องอาจแบ่งตามลักษณะของข้อมูลที่ใช้เรียนรู้ได้เป็น
- การเรียนรู้แบบมีผู้สอน (监督式学习, supervised learning)
- การเรียนรู้แบบไม่มีผู้สอน (非监督式学习, unsupervised learning)
รายละเอียดเกี่ยวกับการแบ่งเป็น ๒ ชนิดนี้ได้เขียนถึงไว้ในอีกบทความแล้ว >>
https://phyblas.hinaboshi.com/20171215 ดังนั้นเพื่อความเข้าใจมากขึ้นอาจแว้บไปอ่านบทความนั้นก่อนค่อยมาอ่านตรงนี้ต่อก็ได้
แต่นอกจากนี้แล้ว บางครั้งวิธีการเหล่านี้ยังถูกแยกย่อยออกมาจากกลุ่มการเรียนรู้แบบมีผู้สอน
- การเรียนรู้แบบเสริมกำลัง (强化学习, reinforcement learning)
- การเรียนรู้แบบกึ่งมีผู้สอน (半监督学习, semi supervised Learning)
- การเรียนรู้เชิงรุก (主动学习, active learning)
- ทรานดักชัน (转导, transduction)
นอกจากนี้ยังสามารถแบ่งชนิดตามประเภทของข้อมูลขาออกได้เป็น
- การวิเคราะห์การถดถอย (回归, regression)
- การจำแนกประเภทข้อมูล (分类, classification)
- การแบ่งกระจุกข้อมูล (聚类, clustering)
- การลดขนาดของมิติ (降维, dimensionality reduction)
การสร้างแบบจำลองการเรียนรู้ของเครื่อง การทำงานด้วยโปรแกรมที่อาศัยเทคนิคการเรียนรู้ของเครื่องจะทำโดยการเขียนโปรแกรมสร้างโครงร่างที่เรียกว่า "แบบจำลอง" ขึ้นมา ซึ่งเป็นตัวที่เราจะป้อนข้อมูลให้ทำการเรียนรู้ พอเรียนรู้เสร็จก็นำมาใช้งานตามที่ต้องการ
อาจมีขั้นตอนประมาณนี้
-- ๑. กำหนดให้แน่ว่าจะต้องทำอะไร ก่อนอื่นต้องรู้ว่าเราต้องการหาคำตอบอะไร ควรใช้เทคนิคไหน ควรใช้ข้อมูลแบบไหน
-- ๒. รวบรวมข้อมูล ค้นหารวบรวมข้อมูลที่จำเป็นสำหรับนำมาใช้ในการเรียนรู้ของเครื่อง
สมัยนี้คนนิยมหาข้อมูลทางอินเทอร์เน็ต อาจใช้วิธีการครอว์ลิง (ตัวอย่างเช่น
https://phyblas.hinaboshi.com/20180329)
-- ๓. จัดระเบียบข้อมูลให้อยู่ในสภาพพร้อมใช้ ข้อมูลที่ได้มาอาจยังไม่ได้อยู่ในรูปที่นำมาใช้ป้อนให้แบบจำลองของเราได้ในทันที ต้องจัดระเบียบก่อน
เช่น ทำให้เป็นมาตรฐาน (รายละเอียด
https://phyblas.hinaboshi.com/20161124)
หรือคัดเลือกลักษณะเฉพาะ ลดมิติข้อมูล (รายละเอียด
https://phyblas.hinaboshi.com/20171211)
ข้อมูลที่ได้มาโดยทั่วไปจะต้องแบ่งเป็นสองส่วน คือส่วนใหญ่ใช้สำหรับฝึก อีกส่วนใช้สำหรับตรวจสอบ
-- ๔. สร้างแบบจำลองแล้วให้ทำการเรียนรู้ สร้างแบบจำลองสำหรับเรียนรู้ให้เรียบร้อย แล้วนำข้อมูลที่เตรียมไว้สำหรับฝึกมาป้อนให้ทำการเรียนรู้
-- ๕. นำมาทำนายข้อมูลสำหรับตรวจสอบ แล้วประเมินความแม่นของผลที่ได้ แบบจำลองที่ผ่านการฝึกมาแล้วต้องนำมาตรวจสอบเพื่อดูว่าสามารถนำมาใช้งานกับข้อมูลที่ไม่ได้ถูกใช้ฝึกด้วยหรือไม่ เป็นการทดสอบว่ามีความเป็นทั่วไปพอหรือไม่
รายละเอียดเกี่ยวกับเรื่องนี้
https://phyblas.hinaboshi.com/20170924 -- ๖. นำแบบจำลองที่เรียนรู้และตรวจสอบเรียบร้อยมาใช้งานจริง เมื่อแบบจำลองผ่านการเรียนรู้และตรวจสอบมาอย่างดีแล้วก็สามารถนำมาใช้งานจริงได้
พื้นฐานที่ควรรู้เพื่อจะเขียนโปรแกรมการเรียนรู้ของเครื่อง ก่อนอื่นเนื่องจากเบื้องหลังของปัญญาประดิษฐ์คือการคำนวณ คณิตศาสตร์จึงเป็นสิ่งที่ไม่อาจหลีกเลี่ยงได้
เทคนิคการเรียนรู้ของเครื่องมีหลากหลาย คณิตศาสตร์ที่ต้องใช้ก็จะต่างกันไป โดยรวมแล้วก็จะมี
- พีชคณิตเชิงเส้น
- แคลคูลัส
- เวกเตอร์
- เมทริกซ์
- เทนเซอร์
- สถิติและความน่าจะเป็น โดยเฉพาะสถิติแบบเบส์
- ฯลฯ
ภาษาโปรแกรมที่นิยมใช้ในงานนี้มีมากมาย ได้แก่
- python
- C
- matlab
- R
- julia
- ฯลฯ
แต่ในจำนวนนั้นเทียบกันแล้ว python ได้รับความนิยมกว่าภาษาอื่นมาก เพราะประกอบไปด้วยไลบรารีมากมายที่ถูกสร้างเพื่องานนี้โดยเฉพาะ จนเรียกได้ว่าถ้าจะทำด้านนี้ยังไงก็ต้องรู้ python ไว้
สำหรับคนที่สนใจอยากศึกษาการเรียนรู้ของเครื่อง และวิธีการเขียนด้วย python สามารถอ่านเนื้อหาเพิ่มเติมต่างๆได้ภายในบล็อกนี้
https://phyblas.hinaboshi.com/saraban/kanrianrukhongkhrueang อ้างอิง