φυβλαςのβλογ
บล็อกของ phyblas



ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
เขียนเมื่อ 2018/08/18 22:45
แก้ไขล่าสุด 2024/10/03 19:33
ไม่นานนี้จะได้ยินคนพูดถึง "การเรียนรู้ของเครื่อง" (机器学习, 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=น้ำหนักตัว แล้วเอาไปคูณกับค่าพารามิเตอร์น้ำหนัก wx และ wy แล้วบวกพารามิเตอร์ไบแอส 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



อ้างอิง
Python機械学習プログラミング https://www.amazon.co.jp/dp/B01HGIPIAK
データサイエンティスト養成読本 機械学習入門編 https://www.amazon.co.jp/dp/B0152OV4VW
Chainerで作る コンテンツ自動生成AIプログラミング入門 https://www.amazon.co.jp/dp/B07838RYX9
機械学習と深層学習 Pythonによるシミュレーション https://www.amazon.co.jp/dp/B07D38Z8F7
マンガでわかる人工知能 https://www.amazon.co.jp/dp/B07928MXWV
人工知能は人間を超えるか https://www.amazon.co.jp/dp/B00UAAK07S
ウィキペディア/機械学習 https://ja.wikipedia.org/wiki/機械学習
一から始める機械学習 https://qiita.com/taki_tflare/items/42a40119d3d8e622edd2
機械学習超入門 https://qiita.com/ishizakiiii/items/d422019b52d973e0e28d
人工知能、機械学習、ディープラーニングの違いとは https://blogs.nvidia.co.jp/2016/08/09/whats-difference-artificial-intelligence-machine-learning-deep-learning-ai


-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> ปัญญาประดิษฐ์

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

สารบัญ

รวมคำแปลวลีเด็ดจากญี่ปุ่น
มอดูลต่างๆ
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
การเรียนรู้ของเครื่อง
-- โครงข่าย
     ประสาทเทียม
ภาษา javascript
ภาษา mongol
ภาษาศาสตร์
maya
ความน่าจะเป็น
บันทึกในญี่ปุ่น
บันทึกในจีน
-- บันทึกในปักกิ่ง
-- บันทึกในฮ่องกง
-- บันทึกในมาเก๊า
บันทึกในไต้หวัน
บันทึกในยุโรปเหนือ
บันทึกในประเทศอื่นๆ
qiita
บทความอื่นๆ

บทความแบ่งตามหมวด



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  ค้นหาบทความ

  บทความแนะนำ

ตัวอักษรกรีกและเปรียบเทียบการใช้งานในภาษากรีกโบราณและกรีกสมัยใหม่
ที่มาของอักษรไทยและความเกี่ยวพันกับอักษรอื่นๆในตระกูลอักษรพราหมี
การสร้างแบบจำลองสามมิติเป็นไฟล์ .obj วิธีการอย่างง่ายที่ไม่ว่าใครก็ลองทำได้ทันที
รวมรายชื่อนักร้องเพลงกวางตุ้ง
ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
การใช้ unix shell เบื้องต้น ใน linux และ mac
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ

ไทย

日本語

中文