How to build an Artificial Intelligence (from scratch)?

Pichatorn Sup (Bright)
Super AI Engineer
Published in
4 min readMar 31, 2021

อยากสร้าง AI ต้องเริ่มต้นอย่างไร ไม่มีพื้นฐานก็ทำได้!

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

จริงๆแล้ว AI คืออะไรกันแน่

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

อยากลงมือสร้าง AIด้วยตัวเอง ต้องเริ่มอย่างไร

บทความนี้จะขออธิบายตั้งแต่ต้น สำหรับผู้ที่ไม่มีพื้นฐานด้านการเขียนโปรแกรมมาก่อน โดยสิ่งที่ควรมีและทำความรู้จักก่อนที่จะเริ่มสร้าง AI มี 4 สิ่งด้วยกัน ดังนี้

  1. Knowledge ความรู้ ความเข้าใจพื้นฐาน เพื่อนำไปใช้ในการออกแบบระบบ และเขียนโปรแกรมได้อย่างถูกต้อง
  2. Hardware ประสิทธิภาพของเครื่องคอมพิวเตอร์ที่ใช้สำหรับการประมวลผล AI
  3. Software ตัวช่วยอำนวยความสะดวกในการเขียนโปรแกรม
  4. Project & Dataset โจทย์ที่ต้องการนำ AI มาแก้ไขหรือพัฒนา รวมไปถึง ชุดข้อมูลสำหรับการวิเคราะห์ผ่าน AI

Knowledge

ความรู้ความเข้าใจพื้นฐานเพื่อนำไปใช้ในการออกแบบระบบ ประกอบด้วยส่วนสำคัญ 2 ส่วน คือ

  • AI/ML/DL concept
  • Programming skill

AI/ML/DL concept

ก่อนที่จะสร้าง AI ได้ต้องเข้าใจความสัมพันธ์และข้อแตกต่างของ Artificial Intelligence, Machine learning และ Deep learning เสียก่อน

https://towardsdatascience.com/cousins-of-artificial-intelligence-dda4edc27b55
https://towardsdatascience.com/cousins-of-artificial-intelligence-dda4edc27b55

จากแผนภาพนี้ สามารถอธิบายความหมายและความเกี่ยวข้องกันของทั้ง 3 คำ ได้ว่า

Artificial Intelligence (AI) คือ ศาสตร์ที่ต้องการสร้างคอมพิวเตอร์ให้มีความฉลาด หรือสติปัญญาในลักษณะเดียวกับมนุษย์ ในส่วนของการรับข้อมูล (sense), เรียนรู้และตีความข้อมูลด้วยเหตุผล (reason), การตอบสนอ(act) และการปรับตัวเพื่อพัฒนา (adapt)

Machine learning (ML) คือ ส่วนการเรียนรู้ หรือเปรียบเสมือนสมองของ AI เป็นโมเดลที่เกิดจากการเรียนรู้ของปัญญาประดิษฐ์ ไม่ได้เกิดจากการเขียนของมนุษย์ แต่มนุษย์มีหน้าที่เขียน Algorithm หรือกระบวนการแก้ไขปัญหาให้ AI เรียนรู้จากข้อมูลเท่านั้น จากนั้น AI จะทำการประมวลผลและแสดงออกมาเป็นผลลัพธ์ โดยแต่ละ Algorithm เองก็เหมาะสมกับโจทย์หรือลักษณะข้อมูลที่ต่างกัน โดยจะมีกลุ่มของ Algorithm หลัก 3 แบบ ดังนี้

  1. Supervised Learning เครื่องเรียนรู้ด้วยข้อมูล คือ ใส่ข้อมูล (input) เข้าไปแล้วมีผลลัพธ์ (output) ออกมา
  2. Unsupervised Learning เครื่องเรียนรู้โดยไม่มีข้อมูล โดยที่เครื่องจะเรียนรู้และค้นพบรูปแบบด้วยตัวเอง
  3. Reinforcement Learning เครื่องเรียนรู้ด้วยการกระทำ เสมือนเด็กเพิ่งเกิดใหม่ ค่อยๆเรียนรู้ ตามการกระทำหรือสภาพแวดล้อมที่เจอ โดยจะมีการเรียนรู้เพื่อปรับปรุงและพัฒนาอย่างต่อเนื่อง

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

https://btimmermans.com/2017/12/11/machine-learning-overview/

Deep Learning (DL) คือ Algorithm หนึ่งของ ML โมเดลคณิตศาสตร์ที่พยายามจำลองหรือเลียนแบบสมองของมนุษย์ (Neural) โดยนำระบบโครงข่ายประสาท (Neural Network) มาซ้อนกันหลายชั้น (Multilayer) และทำการเรียนรู้ข้อมูลตัวอย่าง รองรับการประมวลผลข้อมูลจำนวนมหาศาล ยิ่งข้อมูลมากยิ่งแม่นยำ

Deep Learning จะประมวลข้อมูลดิบที่รับเข้ามาได้ทันที ไม่ต้องอาศัยความรู้เฉพาะทาง (Domain Knowledge) สำหรับคุณลักษณะในการจัดหมวดหมู่ข้อมูลบางประเภท ในการหาข้อมูลตัวอย่างที่จำเป็นในการตรวจจับรูปแบบ (Pattern)หรือจัดหมวดหมู่ข้อมูล (Classification) จากตัวอย่างการจำแนกภาพคน (Image Classification)ในที่นี่ Deep learning จำแนกเองว่าแต่ละ Hidden layer จะสื่อถึงสิ่งใดในภาพ

Deep Learning สำหรับการเรียนรู้จดจำใบหน้า

Programming skill

สิ่งที่สำคัญไม่แพ้กันหากต้องการสร้างงาน AI ด้วยตัวเองนั้น นอกจากการเข้าใจ concept หรือ algorithm แล้ว ต้องสามารถเขียนโปรแกรมเพื่อสื่อสารและสั่งการคอมพิวเตอร์ได้ โดยภาษาที่ใช้ในงาน AI เป็นส่วนใหญ่คือ ภาษา Python

เนื่องจากภาษา Python เป็นภาษาที่ง่าย ใช้งานฟรี มีชุมชนนักพัฒนาที่แข็งแกร่ง มีนักพัฒนาจำนวนมากต้องการแบ่งปันผลงานผ่านทาง library ที่สามารถนำมาใช้กับงานของเราได้ และรองรับการทำงานได้หลายแพลตฟอร์ม

ส่วนตัวแนะนำ คอร์สสอนเขียน Python ผ่านทาง Google Colab (อธิบายเพิ่มในหัวข้อ Hardware) เป็นคอร์สที่เข้าใจง่าย สำหรับคนที่ไม่เคยเขียนโปรแกรมมาก่อน พร้อมแบบฝึกหัดเล็กน้อย ที่สำคัญคือไม่เสียค่าใช้จ่าย ของคุณ Datarockie ตามลิงค์นี้ https://datarockie.teachable.com/p/python-for-non-programmer

Hardware

หากต้องการเขียนงาน Deep Learning ควรต้องใช้ GPU ซึ่งเป็นอุปกรณ์ที่มีประสิทธิภาพสูงในการประมวลผล โดยเฉพาะหากมีข้อมูลจำนวนมหาศาล หากใช้คอมพิวเตอร์ที่มี CPU ใช้เวลาหลายวันกว่าจะประมวลผลสำเร็จ แต่เมื่อใช้ GPU อาจใช้เวลาเพียงไม่กี่ชั่วโมงเท่านั้น ซึ่งการใช้งาน GPU มี 3 วิธีหลัก ดังนี้

  1. การเซ็ตอัพ server เป็นของตนเอง ด้วยการลงทุนอุปกรณ์ทุกอย่างรวมทั้ง GPU ซึ่งมีราคาค่อนข้างแพง (รวมทั้งหมดหลักแสนสำหรับเครื่องส่วนบุคคล หรือหลักล้านสำหรับบริษัทขนาดใหญ่) แต่ก็อาจจะคุ้มค่าในระยะยาวสำหรับคนหรือบริษัทที่ใช้งานหนักมาก
  2. การเช่า Virtual Machine จาก cloud server ผ่านผู้ให้บริการอย่าง Amazon, Microsoft หรือ Google ใน option นี้เราไม่จำเป็นต้องลงทุนอุปกรณ์เอง ใช้เพียง Browser หรือ SSH ในการ connect ไปทำงานบน server นั้นๆ ครับ Option นี้ปัจจุบันน่าสนใจมากขึ้นมาก เนื่องจากผู้ให้บริการเหล่านี้เริ่มคิดราคาที่ถูกลงมากขึ้นเรื่อยๆ เราสามารถหยุดเครื่องไว้ชั่วคราวและไม่ถูกคิดค่าใช้จ่ายเมื่อเราไม่ใช้งาน นอกจากนี้ยังมี Preemptible Mode บน Google GCP ที่ราคาถูกลงจากราคาปกติมากกว่าครึ่ง แต่ก็เสี่ยงต่อการถูกสั่งปิดจาก Google โดยไม่แจ้งล่วงหน้า

Software

ในที่นี้หมายถึง library นอกจาก library พื้นฐานที่ใช้ในงาน Data science อย่าง Numpy และ Pandas ที่ได้เรียนผ่านทางคอร์สของคุณ Datarockie แล้วในปัจจุบัน library สำหรับสร้างงานด้าน Deep learning มี 2 ค่ายยักษ์ใหญ่ ได้แก่ Tensorflow (พัฒนาโดย Google) และ PyTorch (พัฒนาโดย Facebook)

Tensorflow มีประสิทธิภาพสูง แต่ค่อนข้างซับซ้อนและต้องอาศัยเวลาในการเรียนรู้พอสมควร ในเวลาต่อมา Google ได้คิดพัฒนา platform ใหม่ที่เรียกว่า Keras เพื่อเอาไว้เรียกใช้งาน Tensorflow ในเบื้องหลัง ทำให้สามารถเขียนโปรแกรมง่ายขึ้น โดยไม่ต้องยุ่งกับ Tensorflow ด้วยตัวเอง แต่ยังคงข้อดีในส่วนที่สามารถปรับแต่ง algorithm ได้ค่อยข้างอิสระ

Pytorch นั้นก็เป็นอีกทางเลือกนึงที่ใช้พัฒนางาน AI โดยทางฝั่งของ Pytorch ถูกพัฒนาขึ้นโดย facebook เทียบกับ tensorflow แล้ว pytorch มีลักษณะที่ค่อนข้างสำเร็จรูป ใช้งานง่ายกว่ามาก จึงเหมาะสำหรับผู้ที่ฝึกหัดใหม่มากกว่า แต่ก็จะไม่ได้สำเร็จรูปเท่า keras ยังปรับแต่งอะไรได้อิสระกว่า

ปัจจุบันมี 2 ค่ายยักษ์ใหญ่ ได้แก่ Tensorflow (พัฒนาโดย Google) และ PyTorch (พัฒนาโดย Facebook)

เปรียบเทียบความต่างในแง่การใช้งานจากผู้ใช้งานจริง ผ่านทาง Workshop สร้างโมเดลที่จะทำนาย อุณหภูมิสูงสุด จาก อุณหภูมิต่ำสุด โดยวิธีคิดแบบ regression

https://medium.com/@cheng3374/%E0%B8%A7%E0%B8%B4%E0%B8%96%E0%B8%B5%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%84%E0%B8%94%E0%B9%89%E0%B8%A1%E0%B8%B2%E0%B8%82%E0%B8%AD%E0%B8%87-ai-%E0%B8%94%E0%B9%89%E0%B8%A7%E0%B8%A2-keras-tensorflow-and-pytorch-f995d9c6da1

Project & Dataset

ในสามหัวข้อที่ผ่านมาเราพูดถึงการเตรียมตัวความรู้รวมทั้ง tools ต่างๆ ที่มีอยู่แล้วในโลกสาธารณะ ในหัวข้อสุดท้ายนี้ถึงเวลาที่เราต้องกลับมาเตรียมตัวเองให้ชัดเจนว่าเราต้องการนำ AI หรือ Deep Learning ไปใช้งานด้านไหนกันแน่ เป้าหมายของเราอยู่ในขอบข่ายความสามารถของ AI หรือไม่ ทำได้ยากแค่ไหน และต้องเตรียมข้อมูลหรือทรัพยากรอะไรให้กับระบบ AI บ้าง

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

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

  • ระบบ AI ที่เกี่ยวกับ Business ต่างๆ (ทั้งนี้เพราะ Dataset ถือเป็นเคล็ดลับทางธุรกิจที่จะทำให้บริษัทหนึ่งประสบความสำเร็จมากกว่าที่อื่น) และ
  • ระบบ AI ที่เกี่ยวข้องกับ “ภาษาไทย” โดยตรง ซึ่งยังถือว่ามีชุดข้อมูลที่เผยแพร่แบบสาธารณะน้อยมาก และส่วนใหญ่เป็นความลับทางธุรกิจ

จากประสบการณ์ส่วนตัวนั้นพบว่าแหล่งข้อมูลสากลที่ดีที่สุด สามารถค้นหาและทดลองใช้งานได้อย่างง่ายดายที่ kaggle ซึ่งเราจะเล่ารายละเอียดในบทความถัดๆ ไป

ฺBonus สำหรับผู้ที่ต้องการศึกษาเพิ่มเติมผ่านทางการอ่าน paper หรืองานวิจัยที่ถูกตีพิมพ์ขึ้นในวารสารวิชาการทั้งในและต่างประเทศ สามารถทำความเข้าใจวิธีอ่านเพิ่มเติมได้จากบทความ How to Read Articles That Use Machine Learning

References

Liu Y, Chen PC, Krause J, Peng L. How to Read Articles That Use Machine Learning: Users’ Guides to the Medical Literature. JAMA. 2019;322(18):1806–1816. doi:10.1001/jama.2019.16489

--

--