ในยุคที่เทคโนโลยี ปัญญาประดิษฐ์ (AI) และ การเรียนรู้ของเครื่อง (Machine Learning - ML) กำลังเข้ามามีบทบาทสำคัญในหลากหลายด้านของชีวิตประจำวัน การเลือกใช้เครื่องมือที่เหมาะสมสำหรับการพัฒนา และปรับใช้โมเดลเหล่านี้ เป็นเรื่องที่นักพัฒนาไม่สามารถมองข้ามได้
TensorFlow โปรเจค โอเพ่นซอร์ส (Open-Source) ที่เป็น ไลบรารี (Library) จาก Google เป็นหนึ่งในเครื่องมือที่กำลังได้รับความนิยมอย่างมากในวงการพัฒนา AI นักพัฒนาสามารถใช้ TensorFlow เพื่อสร้าง และฝึกโมเดล การเรียนรู้เชิงลึก (Deep Learning - DL) รวมถึงประยุกต์ใช้ในการพัฒนางานด้านอื่น ๆ ได้ด้วย ไม่ว่าจะเป็น การจดจำภาพ (Image Recognition), การประมวลผลภาษาธรรมชาติ (NLP), และ การพยากรณ์แนวโน้ม (Predictive AI) เป็นต้น
โดยในบทความนี้ จะมาแนะนำคุณผู้อ่านให้รู้จักว่า TensorFlow คืออะไร ? ถ้าอยากรู้ เชิญมาอ่านกันได้เลยครับ
TensorFlow เป็นแพลตฟอร์ม และ เฟรมเวิร์ก (Framework) แบบโอเพนซอร์สสำหรับการพัฒนา Machine Learning ซึ่งประกอบด้วยไลบรารี และเครื่องมือต่าง ๆ ที่พัฒนาจากภาษา ไพทอน (Python) และภาษา จาวา (Java) โดยมันถูกออกแบบมาเพื่อการฝึกฝนโมเดล Machine Learning และ Deep Learning จากชุดข้อมูล
นอกจากนี้ TensorFlow ยังสนับสนุนการพัฒนาโมเดล Machine Learning แบบดั้งเดิมได้อีกด้วย เดิมที TensorFlow ถูกสร้างขึ้นมาโดยไม่ได้พิจารณาถึงการนำมาใช้กับ Deep Learning ในด้านการคำนวณทางตัวเลขในสเกลขนาดใหญ่ แต่จากการนำไปใช้ก็พบว่าผลลัพธ์เป็นที่น่าพึงพอใจต่อการพัฒนา Deep Learning ทาง Google จึงได้ตัดสินใจเผยแพร่มันออกมาแบบสาธารณะ
TensorFlow สนับสนุนการทำงานร่วมกับข้อมูลที่อยู่ในรูปแบบของ Tensors ตามชื่อของมันเลย ซึ่งเป็น Array แบบหลายมิติ ที่มีจำนวนมิติมากขึ้น มีประโยชน์มากสำหรับการจัดการกับข้อมูลขนาดใหญ่
ภาพจาก : https://tensorflownet.readthedocs.io/en/latest/Tensor.html
TensorFlow ใช้แนวคิดของกราฟการไหลของข้อมูลที่ประกอบด้วย "โหนด" (Node) และ "ขอบ" (Edge) เนื่องจากวิธีการดำเนินการเป็นตาราง และกราฟ การกระจายโค้ด TensorFlow ใน หน่วยประมวลผลกราฟิก (GPU) ของ การประมวลผลแบบคลัสเตอร์ (Cluster Computing) จึงง่ายขึ้นมาก
ถึงแม้ว่า TensorFlow จะสนับสนุนภาษาโปรแกรมอื่น ๆ ได้ด้วย แต่ทว่า Python และ ภาษา JavaScript (JS) ยังคงเป็นภาษาที่ได้รับความนิยมมากที่สุด นอกจากนี้ TensorFlow ยังรองรับภาษา ภาษา Swift, ภาษา C, ภาษา Go (Golang), ภาษา C# และ Java การใช้ Python อาจไม่จำเป็นสำหรับการทำงานกับ TensorFlow แต่ถ้าใช้เป็น Python ก็จะทำให้การทำงานกับ TensorFlow ง่ายมากขึ้น
นอกจาก TensorFlow แล้ว มันยังมี TensorFlow Lite อีกด้วย โดยเป็น แพลตฟอร์มที่มีขนาดเล็กกว่า เพื่อให้ใช้งานกับอุปกรณ์ การประมวลผลแบบเอดจ์ (Edge computing) หรือสมาร์ทโฟน เช่น iOS หรือ Android ก็สามารถนำไปใช้งานได้เช่นกัน
แน่นอนว่าการลดขนาดโครงสร้างให้เล็กลงมา ก็ต้องแลกกับประสิทธิภาพ และความแม่นยำบางอย่างที่ลดลง แต่ความแม่นยำก็ยังอยู่เกณฑ์ที่ยอมรับได้ แล้วก็ได้รับการชดเชยด้วยประสิทธิภาพ และความเร็วในการทำงานที่เพิ่มขึ้น
ภาพจาก : https://www.seeedstudio.com/blog/2022/05/08/everything-about-tensorflow-lite-and-start-deploying-your-machine-learning-model/
TensorFlow เป็นแพลตฟอร์มที่ต่อยอดการพัฒนามาจากเฟรมเวิร์ก "DistBelief" ที่เป็นโคลสซอร์ส (Closed-Source) ของ Google ซึ่งถูกใช้งานภายในบริษัทมาตั้งแต่ปี ค.ศ. 2012 (พ.ศ. 2555) ทำงานบน เครือข่ายประสาทเทียม (Neural Network) ขนาดใหญ่ และวิธีการทำงานแบบ Backpropagation โดยมันถูกใช้งานในการเรียนรู้ฟีเจอร์ที่ไม่มีการควบคุม (Unsupervised Feature Learning) และการประยุกต์ใช้ใน Deep Learning
อย่างไรก็ตาม TensorFlow มีความแตกต่างจาก DistBelief ในหลายด้าน เนื่องจาก TensorFlow ถูกออกแบบมาให้ทำงานแยกจากโครงสร้างพื้นฐานการคำนวณของ Google เพื่อให้โค้ดมีขนาดเล็กลง ใช้งานง่ายขึ้น มีความเป็นมิตรกับผู้ใช้งานภายนอก นอกจากนี้ มันยังเป็นสถาปัตยกรรม Machine Learning ที่เน้นการเรียนรู้เชิง Neural Netowork น้อยกว่า DistBelief
Google เผยแพร่ TensorFlow เป็นเทคโนโลยีโอเพนซอร์สภายใต้ใบอนุญาต Apache 2.0 ในปี ค.ศ. 2015 (พ.ศ. 2558) ตั้งแต่นั้นมา Framework นี้ ก็ได้รับการสนับสนุนจากผู้ใช้งานภายนอก Google เป็นจำนวนมาก โดยเครื่องมือ TensorFlow ได้ถูกเพิ่มเป็นส่วนเสริมสำหรับชุดพัฒนา Machine Learning ของ IBM และ Microsoft รวมไปถึงชุดการพัฒนา AI อื่น ๆ
ในต้นปี ค.ศ. 2017 (พ.ศ. 2550) TensorFlow ได้เปิดตัวเวอร์ชัน Release 1.0.0 ซึ่งในปีเดียวกันนี้ก็มีการปล่อยเวอร์ชันแยกออกมาอีก 4 เวอร์ชัน หนึ่งในนั้นมี TensorFlow Lite ที่ให้ความสำคัญกับการใช้งานบนสมาร์ทโฟน และการฝังในเครื่องจักร (Embedded Machine) โดยปล่อยออกมาเป็นเวอร์ชันพรีวิวสำหรับนักพัฒนา
ในเดือนตุลาคม ค.ศ. 2019 (พ.ศ. 2552) มีการเปิดตัว TensorFlow 2.0 ที่ได้รับการออกแบบใหม่ยกเครื่องหลายอย่าง เพื่อให้ใช้งานได้ง่ายขึ้น และมีประสิทธิภาพมากขึ้น ตามข้อเสนอแนะจากผู้ใช้งาน เพิ่ม ส่วนต่อประสานโปรแกรมประยุกต์ (API) ใหม่เข้ามา เพื่ออำนวยความสะดวกในการฝึกอบรมแบบกระจาย (Distributed Training) และด้วยการมาของ TensorFlow Lite มันช่วยให้สามารถนำโมเดลไปใช้งานในระบบที่หลากหลายมากขึ้น อย่างไรก็ตาม ผู้ใช้งานจะต้องปรับโค้ดที่พัฒนาสำหรับ TensorFlow รุ่นเก่า ๆ ด้วยหากต้องการใช้ความสามารถใหม่ที่มีใน TensorFlow 2.0
TensorFlow ช่วยให้นักพัฒนาสามารถออกแบบ "กราฟการไหลของข้อมูล (Dataflow Graph)" ซึ่งเป็นโครงสร้างที่กำหนดวิธีการไหลของข้อมูลผ่านกราฟ หรือชุดของโหนด (Node) การประมวลผล โดยแต่ละ Node ในกราฟจะแทนกระบวนการทางคณิตศาสตร์ และขอบแต่ละด้านระหว่างโหนดจะเรียกว่าเทนเซอร์ (Tensor) ซึ่งเป็น Array ข้อมูลแบบหลายชั้น
ภาพจาก : https://www.tensorflow.org/guide/intro_to_modules
TensorFlow สามารถทำงานบนอุปกรณ์เป้าหมายได้อย่างหลากหลาย เช่น คอมพิวเตอร์ส่วนบุคคล (PC), Cluster บน คลาวด์ (Cloud), สมาร์ท iOS และ Android, หน่วยประมวลผลกลาง (CPU) และ หน่วยประมวลผล (GPU) ด้วยการใช้คลาวด์ของ Google เราสามารถรัน TensorFlow บนฮาร์ดแวร์ TensorFlow Processing Unit (TPU) เฉพาะของ Google เพื่อการเร่งความเร็วเพิ่มเติมได้อีกด้วย
สถาปัตยกรรมของ TensorFlow มีขั้นตอนการทำงานหลัก ๆ คือ
ที่มันถูกเรียกว่า TensorFlow ก็เนื่องมาจากที่มันยอมรับ อินพุต (Input) ในรูปแบบของ Array หลายมิติ ซึ่งมักเรียกว่า Tensor และมันสามารถสร้างไดอะแกรมแบบแผนผังการไหล (Flowchart-Like) หรือเทคนิคที่เรียกว่า Graph Analytics โดยอินพุตจะเข้ามาที่ปลายด้านหนึ่ง ผ่านกระบวนการต่างๆ และออกที่ปลายด้านตรงข้ามเป็นเอาต์พุต TensorFlow ชื่อนี้จึงมาจากการที่เทนเซอร์ (Tensor) เข้าสู่ระบบ ไหล (Flow) ผ่านกระบวนการหลายขั้นตอน ก่อนที่ตอนสุดท้ายจะออกมาเป็นผลลัพธ์
โมเดลที่ผ่านการฝึกฝนแล้วอาจเสนอการคาดการณ์เป็นบริการโดยใช้ "REST" หรือ "gRPC APIs" ใน "Container Docker" และสำหรับสถานการณ์ที่ซับซ้อนมากขึ้น อาจมีการนำ "Kubernetes" มาใช้ได้
โดย TensorFlow จะใช้ส่วนประกอบดังต่อไปนี้ ในการบรรลุกระบวนการที่เรากล่าวในหัวข้อที่แล้ว
TensorFlow ใช้สถาปัตยกรรมที่อิงกับกราฟ โดยกราฟจะมีหน้าที่รวบรวม และอธิบายการคำนวณแบบอนุกรมทั้งหมดที่ทำในระหว่างการฝึก โมเดลกราฟมีประโยชน์หลายอย่าง โดยถูกออกแบบมาให้รองรับการทำงานร่วมกับ CPU หรือ GPU จำนวนมากพร้อมกัน แต่ก็ยังสามารถทำงานบนสมาร์ทโฟนได้ด้วย ตัวกราฟยังสามารถบันทึกผลการคำนวณเพื่อเก็บไว้ใช้งานภายหลังในอนาคตได้อีกด้วย
การคำนวณทั้งหมดในกราฟจะเสร็จสมบูรณ์โดยการเชื่อมโยง Tensor ซึ่งประกอบด้วย Node และ Edge โดย Node ทำหน้าที่เป็นตัวดำเนินการทางคณิตศาสตร์ และสร้างจุดสิ้นสุดของผลลัพธ์ Edge ระบุการเชื่อมต่อเข้า/ออกระหว่าง Node
ภาพจาก : https://www.aisangam.com/blog/low-level-introduction-of-tensorflow-simple-way-part-3-ai-sangam/
ชื่อ TensorFlow กำเนิดมาจากคำว่า Tensor ดังนั้นมันย่อมขาดสิ่งนี้ไปไม่ได้ การคำนวณทั้งหมดใน TensorFlow ใช้ Tensor เป็นหลัก โดย Tensor นั้นเป็น "n มิติ" ของ "เวคเตอร์ (Vector)" หรือ "เมทริกซ์ (Matric) "n มิติ" ที่แทนข้อมูลได้ทุกรูปแบบ แต่ละค่าใน Tensor มีข้อมูลชนิดเดียวกัน และข้อมูลที่รู้จักเป็นบางส่วน
Tensor สามารถสร้างจาก "ข้อมูลดิบ" หรือ "ผลของการคำนวณ" ก็ได้ การดำเนินการทั้งหมดใน TensorFlow เกิดขึ้นภายในกราฟ และมี Grid เป็นลำดับของการคำนวณที่เกิดขึ้น แต่ละการดำเนินการนี้จะเรียกว่า "Operation Node" ที่มีการเชื่อมต่อกัน
ภาพจาก : https://cv-tricks.com/artificial-intelligence/deep-learning/deep-learning-frameworks/tensorflow-tutorial/
อย่างที่เราเห็นกันว่า TensorFlow ยอมรับอินพุตในรูปแบบของ Tensor ซึ่งเป็น Array หรือ Matrice ที่อยู่ในรูปแบบ n มิติ อินพุตนี้จะผ่านขั้นตอนการประมวลผลหลายขั้นตอนก่อนที่จะกลายเป็นเอาต์พุต ตัวอย่างเช่น อินพุตที่เราได้รับอาจเป็นตัวเลขจำนวนมากที่บ่งบอกถึง "บิต (Bits) ของภาพ" และเอาต์พุต ที่เราได้รับอาจเป็นข้อความ เช่น "นี่คือสุนัข"
ภาพจาก : https://www.tensorflow.org/neural_structured_learning
TensorFlow มีเครื่องมือที่ช่วยให้นักพัฒนาสามารถมองเห็นสิ่งที่เกิดขึ้นในกราฟได้ เครื่องมือนี้เรียกว่า TensorBoard โดยมันหน้าเว็บที่ช่วยให้ผู้ใช้ตรวจสอบกราฟได้ จากการตรวจสอบพารามิเตอร์ และการเชื่อมต่อของ Node ในการใช้ TensorBoard นักพัฒนาต้องทำการติด "ป้าย" (Label) พารามิเตอร์ในกราฟที่ต้องการตรวจสอบ เช่น ค่า Loss จากนั้น จึงจะสามารถสั่งสรุปแต่ละรายการได้
ภาพจาก : https://edwardlib.org/tutorials/tensorboard
นอกจากนี้ ยังมีส่วนประกอบสำคัญอื่น ๆ ที่ช่วยให้ TensorFlow ทำงานได้ ประกอบไปด้วย
TensorFlow มักจะได้รับการจัดอันดับยกย่องให้เป็นหนึ่งในไลบรารี Python ที่ดีที่สุดสำหรับการพัฒนา TensorFlow ไม่ว่าจะคนทั่วไป, บริษัท หรือรัฐบาลทั่วโลก ก็นิยมพึ่งพาความสามารถของ TensorFlow เพื่อพัฒนานวัตกรรม AI
มันถือเป็นหนึ่งในเครื่องมือพื้นฐานที่ใช้ในการทดสอบ AI ก่อนที่จะนำผลิตภัณฑ์จริงเข้าสู่ท้องตลาด เนื่องจากมันใช้ทรัพยากรน้อย ลงทุนต่ำ ยิ่งเทคโนโลยี AI เป็นที่แพร่หลายในแอปพลิเคชันของผู้บริโภคมากยิ่งขึ้นเท่าไหร่ ? ความสำคัญของ TensorFlow ก็จะยังคงเติบโตต่อไปมากขึ้นเท่านั้น
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |