สิ่งจำเป็นที่สาย Machine Learning ต้องรู้10 September 2020Programing

สิ่งจำเป็นที่สาย Machine Learning ต้องรู้

ทุกวันนี้ใครๆ ต่างก็พูดถึง Machine Learning(ML), Deep Learning(DL) และ Artificial Intelligence(AI) ให้ได้ยินกันอยู่บ่อยๆ ทำให้มีหลายคนหันมาสนใจและเริ่มเรียนรู้เกี่ยวกับเรื่องเหล่านี้กันมากขึ้น แต่ไม่รู้ว่าจะเริ่มต้นศึกษาตรงไหน จะต้องใช้เครื่องมืออะไรบ้าง บทความของเราช่วยคุณได้ 

ในบทความนี้เราจะมาแนะนำเครื่องมือที่คุณต้องรู้สำหรับการทำ ML, DL และ AI ด้วยภาษา Python

ภาษาที่ใช้ในการพัฒนา(Programming Language)

ภาษาในที่นี้ไม่ใช่ภาษาที่ใช้พูดกันระหว่างมนุษย์กับมนุษย์ แต่เป็นภาษที่มนุษย์ใช้สื่อสารกับคอมพิวเตอร์เพื่อพูดคุยสื่อสารไปในรูปแบบเดียวกัน นั่นคือภาษา Python ที่ตอนนี้เป็นที่นิยมใช้กันมากในการทำ Machine Learning(ML) 

Python: เป็นภาษาที่นิยมมากที่สุดสำหรับการทำ Machine Learning, Deep Learning และ Data Science ในตอนนี้ เพราะเข้าใจง่าย, มี library มากมายให้ใช้ และมี Community ขนาดใหญ่ เวอร์ชันที่แนะนำคือเวอร์ชัน 3.6.9 ซึ่งทำงานได้ดีกับไลบรารีส่วนใหญ่ในภาษา python และทำงานร่วมกับ Django 2.1 ซึ่งเป็น Framework สำหรับทำเว็บแอปพลิเคชันด้วยภาษา Python ได้เป็นอย่างดี

เครื่องมือที่ช่วยในการพัฒนา(IDEs)

Python IDEs for Machine Learning
เครื่องมือที่ช่วยในการพัฒนางาน Machine Learning(ML), Deep Learning(DL) และ Artificial Intelligence(AI)
  1. PyCharm: เป็นเครื่องมือที่นิยมมากตัวหนึ่งสำหรับผู้ที่เขียนภาษา python โดยแบ่งออกเป็น 2 Edition คือ Community Edition และ Professional Edition โดย professional Edition นั้นจะเสียเงินเพื่อเพิ่มเครื่องมือต่างๆเข้าไป จุดเด่นของ Pycharm คือ มาพร้อมกับ Django IDE และเป็นตัว debug ของ JavaScript, Python และ Django สามารถเข้าไปดาวน์โหลดได้ที่
    https://www.jetbrains.com/pycharm/download/#section=windows
  2. Pytorch: เป็น Deep Learning Library จาก Facebook ซึ่งพัฒนาอยู่บนภาษา Python(เมื่อก่อนอยู่บนภาษา Lua) จุดเด่นอยู่ที่การทำ Dynamic Computation และระบบการหาอนุพันธ์แบบ Automatic Differentiation ปัจจุบันรองรับระบบปฏิบัติการ Windows แล้ว(เมื่อก่อนรองรับระบบปฏิบัติการ Linux และ macOS เท่านั้น) ลองไปศึกษา Pytorch ได้ที่ https://pytorch.org/get-started/locally/
  3. Jupyter: สำหรับเครื่องมือตัวนี้ต้องบอกเลยว่าไม่ได้เป็นเครื่องมือสำหรับทำ Data Science หรือ Machine Learning โดยตรง แต่ประโยชน์ของ Jupyter นั้นเหมาะที่จะใช้เป็นเครื่องมือในการทดลองสิ่งใหม่ๆ โดยเครื่องมือหนึ่งจาก Jupyter ที่จะแนะนำก็คือ Jupyter Notebook เนื่องจากความสามารถเขียน code, execute code และแสดงผลลัพธ์ของแต่ละส่วนของโค้ดแยกกันได้อย่างอิสระ ซึ่งทั้งหมดนี้ทำได้ผ่านเว็บเบราเซอร์ และยังสามารถเซฟผลลัพธ์ต่างๆเก็บไว้ได้อีกด้วย เข้าไปทดลองเล่นในเว็บของ Jupyter กันได้ที่ https://jupyter.org/try
  4. Google Colab: คือ Jupyter notebook ที่ดัดแปลงให้รันอยู่บนคราวด์ และไม่จำเป็นต้องติดตั้งโปรแกรมใดๆ ก่อนใช้งาน ทุกคนสามารถใช้งานได้ฟรี และยังมี GPU, TPU ให้ใช้ฟรีครั้งละ 12 ชั่วโมง เพียงแค่มีบัญชีของ Google ก็สามารถเข้าใช้งานได้เลย และที่สะดวกมากขึ้นคือเราสามารถจัดเก็บโค้ดที่เราเขียนไว้ใน Google Dive ของเราเองได้อีกด้วย สามารถทดลองใช้งานได้ ที่นี่ https://colab.research.google.com/

Libraries

Machine Learning libraries with python
libraries ที่ใช้สำหรับ Machine Learning(ML), Deep learning(DL) และ Artificial Intelligence(AI)
  • NumPy: เป็น essential library ของ Python ที่มีฟังก์ชันเกี่ยวกับคณิตศาสตร์และการคำนวณต่างๆ มาให้ใช้งานมากมาย โดยทั่วไปจะเกี่ยวกับการจัดการข้อมูล Array ขนาดใหญ่และเมทริกซ์ขนาดใหญ่ สามารถทำงานได้ใกล้เคียง Commercial Software อย่าง MatLab ได้เลย สามารถศึกษาได้ ที่นี่ https://numpy.org/doc/stable/
  • Matplotlib: เราใช้ library นี้ สำหรับการแสดงผลในรูปแบบ visualization เช่น ฟังก์ชั่นพล็อตแผนภูมิแท่ง ฯลฯ งานด้าน Computer Vision ที่พัฒนาด้วยภาษา Python นิยมใช้กันมาก ตัวอย่างเช่น หากเราต้องการพล็อตความถี่ของสีระหว่างภาพ 2 ภาพ เพื่อทำการเปรียบเทียบว่าภาพไหนมีความสว่างของภาพมากกว่ากัน สามารถศึกษาได้ ที่นี่ https://matplotlib.org/contents.html
  • Pandas: เป็น library ในการวิเคราะห์และจัดการข้อมูลที่เร็ว, มีประสิทธิภาพ, มีความยืดหยุ่น และง่ายในการใช้งาน ที่สามารถนำเข้าข้อมูลไฟล์นามสกุล CSV, TSV หรือจาก SQL database นำไปสร้างเป็น Python Object ที่มีลักษณะเป็น row และ column ที่เรียกว่า data frames ทำให้สามารถใช้งานข้อมูลเหล่านั้นได้ง่าย และนำไปใช้งานต่อได้อย่างหลากหลาย เรียกได้ว่าเหมาะสำหรับการทำ Data Science มากๆ สามารถศึกษาได้ ที่นี่ https://pandas.pydata.org/docs/getting_started/index.html
  • SciPy: เป็นไลบรารีของ Python ที่มีฟังก์ชันเกี่ยวกับการคำนวณทางคณิตศาสตร์ วิทยาศาสตร์ และวิศวกรรมศาสตร์ที่ถูกขยาย(essential library) เพิ่มเติมมาจาก NumPy อีกทีหนึ่ง แพ็กเกจหลักที่ใช้งานบ่อยสุดประกอบไปด้วยโมดูลสำหรับ optimization, linearalgebra, integration, FFT, signal และ image processing สามารถศึกษาได้ ที่นี่ https://www.scipy.org/
  • Scikit-learn: เป็น library ในการทำ Machine Learning ที่ควรศึกษาเอาไว้ เนื่องจากมีความง่ายและมีประสิทธิภาพในการทำ Predictive Data Analysis เช่น Support Vector Machines(SVMs), Random Forests, Gradient Boosting, K-means และ DBSCAN เราจะใช้อัลกอริทึมเหล่านี้เมื่อเราสร้างและฝึกโมเดลสำหรับทำ Machine Learning ลองโหลดมา ติดตั้ง และ ศึกษา กันได้ที่ https://scikit-learn.org/stable/install.html
  • OpenCV: นี่เป็นอีกหนึ่งไลบรารีในการทำ Computer Vision และ Image Processing ที่ดีที่สุดตัวหนึ่งเลยทีเดียว ซึ่งมีอัลกอริทึมมากกว่า 2500 อัลกอริทึมให้เลือกใช้งาน เช่น detect and recognize faces, identify objects, classify human actions in videos, track camera movements, track moving objects, extract 3D models of objects และอีกมากมาย สามารถเข้าไปอ่านรายละเอียดและหาข้อมูลเพิ่มเติมได้ที่ https://opencv.org/

OpenCV ไม่เพียงแต่พัฒนาด้วยภาษา Python เพียงอย่างเดียวแต่สามารถใช้ภาษา C++, Java และ MATLAB ในการพัฒนาได้เหมือนกัน พร้อมรองรับระบบปฎิบัติการที่หลากหลายทั้งบน PC และ Mobile อีกทั้งยังสามารถเขียนโค้ดใช้งาน CUDA เพื่อเพิ่มประสิทธิภาพในการประมวลผลได้อีกด้วย

  • Keras: เป็น Deep Learning Library ที่ได้รับความนิยมอย่างรวดเร็ว เนื่องจากใช้งานง่าย แต่มีประสิทธิภาพสูงในการรันโมเดล เนื่องจาก back-end ของ Keras มีทั้ง Tensorflow และ Theano ซึ่งจัดเป็น Deep Learning Library ที่มีสมรรถนะสูงทั้งคู่ สำหรับมือใหม่ที่เพิ่งเริ่มต้นใช้ Keras แนะนำให้ใช้บน Theano ก่อนเพื่อความง่าย และสามารถศึกษาเพิ่มเติมได้ที่ https://keras.io/getting_started/
  • TensorFlow: เป็น library สำหรับสร้าง Machine Learning Models แบบ Open Source จาก Google สามารถใช้งานได้ดีกับภาษา Python แต่ก็ใช้งานร่วมกับภาษาอื่นๆ เช่น C, Java หรือ Go ได้เช่นกัน และยังมี Community ขนาดใหญ่ ทำให้สามารถค้นหาข้อมูล หรือสอบถามเวลาเจอปัญหาได้ง่าย ซึ่ง TensorFlow มีไกด์แนะนำสำหรับ ผู้เริ่มต้น และ ผู้เชี่ยวชาญ ให้สามารถไปศักษากันได้ที่ https://www.tensorflow.org/tutorials/quickstart/beginner


และนี่ก็คือสิ่งจำเป็นที่ผู้เขียนรวบรวมมาจากประสบการณ์ใช้งานจริงตั้งแต่สมัยตอนเรียน จนกระทั่งทำงานจริงทางสายงานนี้ แต่สำหรับ dev ในสาย ML, DL และ AI น่าจะคุ้นเคยกันดีอยู่แล้ว ส่วนคนที่เพิ่งเริ่มต้น อ่านแล้วอาจจะงง ก็ไม่เป็นไรค่ะ ครั้งหน้าผู้เขียนจะมาอธิบายว่า “Machine Learning(ML)” มันคืออะไร และเอาไปใช้งานกับอะไรได้บ้าง อย่าลืมติดตามกันด้วยนะคะ ถ้าท่านใดมีข้อเสนอแนะ หรือคำถามใดๆ สามารถ Comment มาคุยกันได้นะคะ หรืออยากจะแชร์ประสบการณ์ หรือผลงานก็ทักกันเข้ามาได้เลยค่ะ

ก่อนหน้า
ถัดไป