After introducing graphs and shortest path techniques like Dijkstra’s and Bellman-Ford’s algorithms, this article will introduce the following method: A* Search Algorithm.
Tag: python
#20 – Graph และ Shortest Path Algorithms
เทคนิคการหาเส้นทางที่สั้นที่สุด (Shortest Path Algorithms) เป็นวิธีการหาเส้นเชื่อมระหว่างโหนดเริ่มต้น และโหนดสิ้นสุดในกราฟที่ให้ผลรวมของค่าน้ำหนักของเส้น (Edge Weight) ที่ต่ำที่สุด
For English, please follow this article on Medium.
The English version of this blog related to the first part: Big-O notation, is available here.
เมื่อวันก่อนเข้าไปอ่านในหน้าเว็บ Medium ที่กล่าวถึง Data Structures & Algorithms (ย่อเป็น DSA) ที่จำเป็นสำหรับทาง Data Engineer ว่าต้องรู้เทคนิคไหนบ้าง แถมตอนเรียนในคอร์สจากเว็บ DataTH (รวมถึงที่อื่น) ก็มีกล่าวถึงไว้นิดหน่อยว่าจำเป็นต้องรู้เรื่องนี้ต่อยอดจากที่เรียนในคอร์ส
เราเลยสังเกตตอนที่เขียนโค้ดแล้วพบว่าโค้ดมันก็รันได้ แต่ประสิทธิภาพมันก็ไม่ได้ดีอะไรขนาดนั้น การมีความรู้ทางด้าน DSA ก็นำไปใช้ช่วยเขียนโค้ดให้ทำงานได้มีประสิทธิภาพมากกว่าเดิม โดยในบทความนี้ก็สรุป และแชร์เรื่องนี้ครับ
The English version is available in Medium.
ข้อมูลประเภท Unstructured Data เป็นข้อมูลที่ไม่มีโครงสร้างที่แน่นอนแบบที่ปรากฏในข้อมูลประเภท Structured Data และ Semi-Structured Data โดยตัวอย่างข้อมูลประเภทนี้ได้แก่ ไฟล์ รูปภาพ วิดีโอ และเสียง
Apple MLX เป็นไลบรารีสำหรับงานทางด้าน Machine Learning ที่พัฒนาโดยทีมงาน Apple Machine Learning Research ที่ออกแบบมาเพื่อ Apple Silicon (ชิปแบบ M2, M3) โดยเฉพาะ โดยไลบรารีนี้มีฟีเจอร์ที่เด่น ๆ ได้แก่
#11 – Linear Regression แบบเขียนมือ
Linear regression เป็นความสัมพันธ์แบบเชิงเส้นระหว่างค่าที่เราต้องการทำนาย กับตัวแปรที่เรานำมาใช้ในการคำนวณ เทคนิคนี้เป็นเทคนิคที่ใช้มานานแล้ว กับเป็นเทคนิคที่เป็นโมเดลทางคณิตศาสตร์ที่เข้าใจง่าย ร่วมกับใช้งานได้หลากหลาย ตั้งแต่การศึกษา ไปจนถึงธุรกิจต่าง ๆ
ปกติเวลาที่เทรนโมเดล AI ที่เป็น Deep Learning สิ่งหนึ่งที่โมเดลเหล่านี้ต้องการสำหรับการเทรนโมเดลคือข้อมูล Dataset สำหรับการฝึกที่มีข้อมูลเป็นจำนวนมาก อย่างไรก็ตามปัญหาหนึ่งคือไม่มี Dataset ที่มีจำนวนมากพอสำหรับการเทรน
วิธีทั่วไปที่ทำก็ออกไปเก็บข้อมูล และจัดทำ Ground Truth สำหรับการเทรนโมเดล AI เพิ่ม ซึ่งโอเค อย่างไรก็ดีมีอีกวิธีหนึ่งที่เราสามารถทำได้คือการสังเคราะห์ชุดข้อมูล Dataset ขึ้นมา (หรือเรียกว่าทำ Synthetic Dataset)
Object detection คือขั้นตอนการหาตำแหน่งวัตถุจากภาพโดย AI ตามที่กำหนดไว้ ได้แก่ คน รถยนต์ จักรยาน และอื่น ๆ โดยผลลัพธ์ที่ได้จากการใช้งานเทคนิคนี้จะแสดงผลในรูปแบบกรอบสี่เหลี่ยม Bounding box พร้อมกับจำแนก Class ของภาพที่จับได้ว่าเป็นอะไร
ปกติเมื่อเราเทรนโมเดลที่ต้องใช้ระยะเวลาหลายชั่วโมง ไปจนถึงหลายวันเสร็จเรียบร้อยแล้ว เราจะต้องนำโมเดลไปใช้งานบนเซิร์ฟเวอร์ หรืออุปกรณ์ฝังตัวขนาดเล็กเพื่อนำไปใช้งานจริง อย่างไรก็ตามโมเดลมันมีขนาดใหญ่ ต้องใช้พลังการประมวลผลมาก แล้วเราจะต้องใช้เทคนิคอะไรมาช่วยล่ะ?
คำตอบที่เหมาะสมกับปัญหานี้คือ Quantization
ก่อนหน้านี้เวลาจะติดตั้งระบบปฏิบัติการ Linux อย่าง Ubuntu ที่ผู้เขียนใช้อยู่ เราจำเป็นต้องติดตั้งแยกเป็น Partition อีกห้องหนึ่ง หรือติดตั้งทับ Windows ไปเลย แต่ไม่กี่ปีมานี้ ทางไมโครซอฟต์พัฒนาความสามารถหนึ่งที่ติดมากับระบบปฏิบัติการ Windows 10 และ 11 นั่นก็คือ Windows Subsystem for Linux (WSL)