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



ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
เขียนเมื่อ 2018/08/18 22:45
แก้ไขล่าสุด 2021/09/28 16:42
ไม่นานนี้จะได้ยินคนพูดถึง "การเรียนรู้ของเครื่อง" (机器学习, 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)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ

บทความแต่ละเดือน

2024年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2023年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2022年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2021年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2020年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

ค้นบทความเก่ากว่านั้น

ไทย

日本語

中文