เครื่องมือพัฒนาโปรแกรมด้านปัญญาประดิษฐ์กับภาษาไพทอน

ศ.ดร. ธนารักษ์ ธีระมั่นคง
ภาคีสมาชิก สำนักวิทยาศาสตร์ ราชบัณฑิตยสภา
สถาบันเทคโนโลยีนานาชาติ มหาวิทยาลัยธรรมศาสตร์

ปัจจุบันปัญญาประดิษฐ์มีการพัฒนาไปถึงระดับที่สามารถนำมาใช้งานได้จริงและถูกใช้กันแพร่หลายมาก ทั้งในวงการวิชาการด้านวิทยาศาสตร์ วิศวกรรม และเทคโนโลยี รวมไปถึง ด้านสังคมและด้านอุตสาหกรรม. เช่นเดียวกับการสร้างสิ่งของเครื่องใช้ต่างๆ ในชีวิตประจำวัน การพัฒนาระบบปัญญาประดิษฐ์ก็จำเป็นต้องมีเครื่องมืออุปกรณ์ที่ช่วยในการสร้างสรรค์สิ่งของเหล่านั้น. เครื่องมือเป็นสิ่งสำคัญทำให้ผู้สร้างสรรค์ผลงาน/ชิ้นงานสามารถทำผลงาน/ชิ้นงานออกมาได้อย่างสะดวก รวดเร็ว และแม่นยำ ไม่ผิดพลาดหรือผิดพลาดน้อย. ในการพัฒนาระบบหรือโปรแกรมปัญญาประดิษฐ์นั้น เราสามารถประยุกต์ใช้เครื่องมืออุปกรณ์ที่ใช้พัฒนาโปรแกรมหรือใช้สร้างระบบคอมพิวเตอร์ทั่วไปได้. อย่างไรก็ตาม ปัจจุบันหลักการและเทคนิคในระบบปัญญาประดิษฐ์เริ่มมีมาตรฐานที่ชัดเจนขึ้น ทำให้เกิดการพัฒนากล่องอุปกรณ์เครื่องมือในลักษณะของฟังก์ชัน (function) หรือ โมดูล (module). โดยบ่อยครั้งก็จะเก็บรวบรวมออกมาเป็นไลบรารี่ (Library) / โมดูล (Module) / แพคเกจ (Package) ที่เป็นชุดคำสั่งงานที่รวบรวมเป็นหมวดหมู่ไว้ ทำให้การพัฒนาโปรแกรมทำได้อย่างสะดวก รวดเร็วและแม่นยำ. ประเภทของอุปกรณ์ในการพัฒนาโปรแกรมหรือระบบคอมพิวเตอร์นั้น มีตั้งแต่ ภาษาโปรแกรมหรือภาษาเพื่อการโปรแกรม (อังกฤษ: programming language), แพลตฟอร์มหรือสิ่งแวดล้อมสำหรับการพัฒนา (development environment), ไปจนถึงไลบรารี่ (Library) ต่าง ๆ.

ในส่วนของภาษาโปรแกรมในการพัฒนาระบบปัญญาประดิษฐ์นั้น ภาษาที่ได้รับความนิยมมากที่สุด คือ ภาษาไพทอน (Python) ที่เป็นภาษาระดับสูงซึ่งสร้างโดยคีโด ฟัน โรสซึม (Guido van Rossum) โดยเริ่มในปีพ.ศ. 2553 ที่เน้นการเขียนง่าย รวดเร็ว มีแนวคิดการเขียนโปรแกรมเชิงวัตถุในตัวภาษา ง่ายต่อการบำรุงรักษาและแก้ไข และยังเป็นภาษาที่มาพร้อมกับไลบรารีมาตรฐานจำนวนมาก เช่น ไลบรารีสำหรับคณิตศาสตร์, ไลบรารีสำหรับการจัดการฐานข้อมูล, ไลบรารีสำหรับการจัดการไฟล์ตารางข้อมูล ไฟล์ข้อความ ไฟล์ภาพ ไฟล์เสียงและไฟล์มัลติมีเดีย, ไลบรารีสำหรับการแสดงผลกราฟหรือพล็อตกราฟข้อมูล, ไลบรารีสำหรับวิทยาการข้อมูล (data science) และการเรียนรู้ของเครื่อง (machine learning) เป็นต้น. จากจุดเด่นต่าง ๆ เหล่านี้ ทำให้เป็นที่นิยมในหมู่โปรแกรมเมอร์ วิศวกรซอฟต์แวร์และนักพัฒนาระบบคอมพิวเตอร์ นักวิเคราะห์ข้อมูล ในกลุ่มวิทยาการข้อมูล (data science) ปัญญาประดิษฐ์ (artificial intelligence) ระบบอินเทอร์เน็ตของสรรพสิ่ง (internet of things) และหุ่นยนต์ (robotics). นอกจากนี้ภาษาไพทอน ยังมีภาษาอาร์ (R) ที่เน้นประสิทธิภาพในการวิเคราะห์และจัดการข้อมูลเชิงสถิติ และการพล็อตกราฟข้อมูล, ภาษาลิสป์ (Lisp) ที่เป็นภาษาเก่าที่สุดถูกคิดค้นโดยจอห์น แมคคาร์ธี (John McCarthy) บิดาแห่งปัญญาประดิษฐ์และเหมาะสมต่อการพัฒนา AI ที่ต้องจัดการกับกฏ (rule) และการประมวลผลสัญลักษณ์ (symbolic processing), ภาษาโปรล็อก (Prolog) ที่เน้นการจับคู่รูปแบบ (Pattern Matching), โครงสร้างข้อมูลต้นไม้ (tree-based data structure), และการถอยกลับไปตามทางเดิม (Backtracking) และเป็นที่นิยมในวงการแพทย์และการสร้างระบบ AI อัจฉริยะตั้งแต่อดีต, ภาษาจาวา (Java) และภาษาซี (C/C++) ที่มีเครื่องมืออำนวยความสะดวกหลายอย่างในการพัฒนาระบบปัญญาประดิษฐ์ อาทิเช่น อัลกอริทึมการค้นหา (search algorithm), โครงข่ายประสาทเทียม (artificial neural network)  และ การเขียนโปรแกรมเชิงพันธุกรรม (genetic programming) โดยมีจุดเด่นที่การใช้งานง่าย, การหาจุดบกพร่อง (bug) ได้ง่าย, มีไลบรารี่/แพคเกจต่างๆมากมาย.

สำหรับแพลตฟอร์มหรือสิ่งแวดล้อมสำหรับการพัฒนาระบบนั้น ตั้งแต่อดีตได้มีการพัฒนาแพลตฟอร์มหรือสิ่งแวดล้อมสำหรับช่วยการโปรแกรมในภาษาแต่ละภาษา โดยแพลตฟอร์มหรือสิ่งแวดล้อมนี้จะช่วยทำให้การแก้ไขโปรแกรมสะดวกรวดเร็ว การแสดงผลออกหน้าจอทำได้ง่าย การนำโปรแกรมออกไปสู่การใช้งานได้ทันทีและเป็นมาตรฐาน และช่วยจัดการโครงสร้างซอฟต์แวร์หรือสิ่งแวดล้อมเชิงโครงสร้าง (structure-oriented environments) การจัดการค่าข้อมูลระบบ (configuration) บางครั้งรวมไปถึงการควบคุมเวอร์ชั่น (version control). หลังจากนี้ จะขอกล่าวเฉพาะส่วนของโปรแกรมไพทอนเพราะเป็นภาษาที่มีผู้ใช้ในการพัฒนาปัญญาประดิษฐ์อย่างแพร่มากที่สุดและเป็นภาษาที่ใช้งานง่ายที่สุดภาษาหนึ่ง. ภาษาไพทอนจะมีแพลตฟอร์มหรือสิ่งแวดล้อมมากมาย เช่น Google Colab, PyCharm, Spyder, PyDev, Idle, Wing, Eric, Rodeo, Thonny เป็นต้น และโปรแกรมแก้ไขซอร์สโค้ดหรือโค้ดอีดิเตอร์ (code editor) เช่น  Sublime Text, Atom, Vim, Visual Studio Code เป็นต้น. โดยแพลตฟอร์มหรือสิ่งแวดล้อมเหล่านี้ สามารถใช้งานได้ทั้งบนระบบปฏิบัติการวินโดว์  (Windows), ระบบปฏิบัติการลีนุกซ์ (Linux), ระบบปฏิบัติการแมคโอเอส (MAC OS), ระบบปฏิบัติการคิวต์ (Qt) เป็นต้น. นอกจากนี้ ยังมีเครื่องมือในการจัดการแพคเกจ (packages) เช่น Anaconda, ActivePython, CPython, Enthought Canopy, WinPython  เป็นต้น

สำหรับไลบรารี่/แพคเกจของไพทอนที่ใช้กันแพร่หลาย ได้แก่ Conda สำหรับการจัดการแพคเกจ, Jupyter สำหรับเว็บเพื่อจัดการเอกสารและโค้ดโปรแกรม, Numpy สำหรับการคำนวณตัวเลขเชิงวิทยาศาสตร์, Pandas สำหรับการจัดการและวิเคราะห์ข้อมูล, SciPy สำหรับการคำนวณฟังก์ชั่นทางคณิตศาสตร์ วิทยาศาสตร์ และวิศวกรรมศาสตร์, Scikit-Learn สำหรับการทำเหมืองข้อมูลและการเรียนรู้ของเครื่อง, Matplotlib สำหรับการแสดงผลข้อมูลเป็นกราฟเพื่อทำให้เข้าใจเห็นภาพรูปแบบการประจายตัวของข้อมูล, Seaborn สำหรับการแสดงผลข้อมูลขั้นสูง และวิชวลไลเซชั่นของรูปแบบที่อินเตอร์แอคทีฟ, Theano สำหรับการจัดการเมทริกซ์หรืออาร์เรย์หลายมิติได้รวดเร็ว, Pytorch สำหรับการประมวลผลภาพและการประมวลผลภาษา, Caffe สำหรับการเรียนรู้เชิงลึก, HoloViews สำหรับการวิเคราะห์ข้อมูลและวิชวลไลเซชั่นของรูปแบบชนิดไร้รอยต่อ, Keras สำหรับการเรียนรู้ด้วยโครงข่ายเส้นประสาทเทียม/การเรียนรู้เชิงลึก, TensorFlow สำหรับการเรียนรู้ของเครื่อง, Natural Language Toolkit (NLTK) สำหรับการประมวลผลภาษาธรรมชาติ, Dask สำหรับการประมวลผลแบบขนาน, Numba สำหรับเร่งความเร็วโค้ดในไพทอน, Panel สำหรับการสร้างเว็บแอพพลิเคชั่นที่อินเตอร์แอคทีฟและสร้างแดชบอร์ดหรือกระดานสรุปข้อมูลผู้บริหาร เป็นต้น เครื่องมือพัฒนาโปรแกรมเหล่านี้เป็นองค์ประกอบสำคัญที่ทำให้เกิดความก้าวหน้าในการสร้างระบบปัญญาประดิษฐ์ ให้แก่สังคมและอุตสาหกรรมในปัจจุบัน. ผู้เขียนจึงขอแนะนำให้เยาวชนและผู้ที่มีสนใจไปศึกษาและทดลองใช้ระบบต่างเหล่านี้ เพื่อนำไปต่อยอดความสามารถของตนเองให้เป็นแบบก้าวกระโดด

Academy of Science

สำนักวิทยาศาสตร์ ราชบัณฑิตยสภา

View all posts by Academy of Science →