TensorFlow คืออะไร? อธิบายไลบรารีการเรียนรู้ของเครื่อง

การเรียนรู้ของเครื่องเป็นระเบียบวินัยที่ซับซ้อน แต่การนำโมเดลแมชชีนเลิร์นนิงไปใช้นั้นเป็นเรื่องที่น่ากลัวและยากกว่าที่เคยเป็นมามากเนื่องจากเฟรมเวิร์กการเรียนรู้ของเครื่องเช่น TensorFlow ของ Google ที่ช่วยให้กระบวนการรับข้อมูลง่ายขึ้นแบบจำลองการฝึกอบรมการให้บริการการคาดการณ์และการปรับแต่งผลลัพธ์ในอนาคต

TensorFlow สร้างโดยทีม Google Brain เป็นไลบรารีโอเพ่นซอร์สสำหรับการคำนวณเชิงตัวเลขและการเรียนรู้ของเครื่องขนาดใหญ่ TensorFlow รวบรวมโมเดลและอัลกอริทึมของการเรียนรู้ของเครื่องและการเรียนรู้เชิงลึก (aka neural network) เข้าด้วยกันและทำให้เป็นประโยชน์โดยใช้อุปมาทั่วไป ใช้ Python เพื่อจัดเตรียม API ส่วนหน้าที่สะดวกสำหรับการสร้างแอปพลิเคชันด้วยเฟรมเวิร์กในขณะที่เรียกใช้แอปพลิเคชันเหล่านั้นใน C ++ ประสิทธิภาพสูง

TensorFlow สามารถฝึกและเรียกใช้เครือข่ายประสาทเทียมเชิงลึกสำหรับการจำแนกตัวเลขที่เขียนด้วยลายมือการจดจำรูปภาพการฝังคำเครือข่ายประสาทที่เกิดซ้ำโมเดลลำดับต่อลำดับสำหรับการแปลด้วยเครื่องการประมวลผลภาษาธรรมชาติและการจำลองตาม PDE (สมการเชิงอนุพันธ์ย่อย) เหนือสิ่งอื่นใด TensorFlow รองรับการคาดการณ์การผลิตตามขนาดโดยใช้แบบจำลองเดียวกับที่ใช้ในการฝึกอบรม

TensorFlow ทำงานอย่างไร

TensorFlow ช่วยให้นักพัฒนาสามารถสร้างกราฟกระแสข้อมูล -โครงสร้างที่อธิบายว่าข้อมูลเคลื่อนที่ผ่านกราฟหรือชุดของโหนดการประมวลผลอย่างไร โหนดในกราฟแต่ละการดำเนินการทางคณิตศาสตร์และการเชื่อมต่อแต่ละหรือขอบระหว่างโหนดเป็นอาร์เรย์ข้อมูลหลายมิติหรือเมตริกซ์

TensorFlow ให้ข้อมูลทั้งหมดนี้สำหรับโปรแกรมเมอร์โดยใช้ภาษา Python Python นั้นง่ายต่อการเรียนรู้และใช้งานได้และมีวิธีที่สะดวกในการแสดงว่า Abstractions ระดับสูงสามารถรวมเข้าด้วยกันได้อย่างไร โหนดและเทนเซอร์ใน TensorFlow เป็นวัตถุ Python และแอปพลิเคชัน TensorFlow เป็นแอปพลิเคชัน Python

อย่างไรก็ตามการคำนวณทางคณิตศาสตร์จริงจะไม่ดำเนินการใน Python ไลบรารีของการแปลงที่พร้อมใช้งานผ่าน TensorFlow ถูกเขียนเป็นไบนารี C ++ ประสิทธิภาพสูง Python เพียงแค่กำหนดทิศทางการรับส่งข้อมูลระหว่างชิ้นส่วนและจัดเตรียม abstractions การเขียนโปรแกรมระดับสูงเพื่อเชื่อมโยงเข้าด้วยกัน

แอปพลิเคชัน TensorFlow สามารถทำงานบนเป้าหมายส่วนใหญ่ที่สะดวก: เครื่องภายในคลัสเตอร์ในระบบคลาวด์อุปกรณ์ iOS และ Android ซีพียูหรือ GPU หากคุณใช้ระบบคลาวด์ของ Google เองคุณสามารถเรียกใช้ TensorFlow บนซิลิกอน TensorFlow Processing Unit (TPU) ที่กำหนดเองของ Google เพื่อเร่งความเร็วเพิ่มเติม แบบจำลองผลลัพธ์ที่สร้างโดย TensorFlow สามารถนำไปใช้กับอุปกรณ์ส่วนใหญ่ที่จะใช้ในการคาดการณ์

TensorFlow 2.0 ซึ่งเปิดตัวในเดือนตุลาคม 2019 ได้ปรับปรุงเฟรมเวิร์กในหลาย ๆ รูปแบบตามความคิดเห็นของผู้ใช้เพื่อให้ทำงานได้ง่ายขึ้น (เช่นโดยใช้ Keras API ที่ค่อนข้างเรียบง่ายสำหรับการฝึกโมเดล) และมีประสิทธิภาพมากขึ้น การฝึกอบรมแบบกระจายนั้นรันได้ง่ายขึ้นด้วย API ใหม่และการรองรับ TensorFlow Lite ทำให้สามารถปรับใช้โมเดลบนแพลตฟอร์มที่หลากหลายมากขึ้น อย่างไรก็ตามโค้ดที่เขียนขึ้นสำหรับ TensorFlow เวอร์ชันก่อนหน้าจะต้องเขียนใหม่ - บางครั้งเพียงเล็กน้อยบางครั้งก็สำคัญมากเพื่อใช้ประโยชน์สูงสุดจากคุณสมบัติใหม่ของ TensorFlow 2.0

ประโยชน์ของ TensorFlow

ประโยชน์ที่ใหญ่ที่สุดประการเดียวที่ TensorFlow มอบให้สำหรับการพัฒนาแมชชีนเลิร์นนิงคือนามธรรมแทนที่จะจัดการกับรายละเอียดที่สำคัญของการใช้อัลกอริทึมหรือการหาวิธีที่เหมาะสมในการผูกเอาท์พุทของฟังก์ชันหนึ่งไปยังอินพุตของอีกฟังก์ชันหนึ่งนักพัฒนาสามารถมุ่งเน้นไปที่ตรรกะโดยรวมของแอปพลิเคชัน TensorFlow ดูแลรายละเอียดเบื้องหลัง

TensorFlow นำเสนอสิ่งอำนวยความสะดวกเพิ่มเติมสำหรับนักพัฒนาที่ต้องการแก้จุดบกพร่องและได้รับการวิปัสสนาในแอป TensorFlow โหมดการดำเนินการที่กระตือรือร้นช่วยให้คุณประเมินและปรับเปลี่ยนการทำงานของกราฟแต่ละรายการแยกกันและโปร่งใสแทนที่จะสร้างกราฟทั้งหมดเป็นวัตถุทึบแสงเดียวและประเมินทั้งหมดพร้อมกัน ชุดการแสดงภาพ TensorBoard ช่วยให้คุณตรวจสอบและกำหนดรายละเอียดวิธีการทำงานของกราฟโดยใช้แดชบอร์ดแบบโต้ตอบบนเว็บ

TensorFlow ยังได้รับประโยชน์มากมายจากการสนับสนุนชุดโฆษณา A-list ใน Google Google ไม่เพียง แต่กระตุ้นการพัฒนาอย่างรวดเร็วเบื้องหลังโครงการเท่านั้น แต่ยังได้สร้างข้อเสนอที่สำคัญมากมายเกี่ยวกับ TensorFlow ซึ่งทำให้ง่ายต่อการปรับใช้และใช้งานง่ายขึ้น: ซิลิกอน TPU ที่กล่าวถึงข้างต้นเพื่อประสิทธิภาพที่รวดเร็วในระบบคลาวด์ของ Google ศูนย์กลางออนไลน์สำหรับการแบ่งปันโมเดลที่สร้างขึ้นด้วยเฟรมเวิร์ก ในเบราว์เซอร์และรูปแบบที่เหมาะกับอุปกรณ์เคลื่อนที่ของกรอบ และอื่น ๆ อีกมากมาย

ข้อแม้ประการหนึ่ง: รายละเอียดบางประการของการใช้งาน TensorFlow ทำให้ยากที่จะได้รับผลการฝึกอบรมแบบจำลองที่กำหนดโดยสิ้นเชิงสำหรับงานฝึกอบรมบางงาน บางครั้งโมเดลที่ได้รับการฝึกฝนในระบบหนึ่งจะแตกต่างกันเล็กน้อยจากโมเดลที่ฝึกกับอีกระบบหนึ่งแม้ว่าจะถูกป้อนข้อมูลเดียวกันก็ตาม เหตุผลในการดำเนินการนี้ค่อนข้างลื่นเช่นวิธีการสุ่มตัวเลขและสถานที่หรือพฤติกรรมบางอย่างที่ไม่ได้กำหนดเมื่อใช้ GPU) กล่าวได้ว่าเป็นไปได้ที่จะแก้ไขปัญหาเหล่านั้นและทีมงานของ TensorFlow กำลังพิจารณาการควบคุมเพิ่มเติมเพื่อส่งผลต่อปัจจัยกำหนดในขั้นตอนการทำงาน

วิดีโอที่เกี่ยวข้อง: การเรียนรู้ของเครื่องและ AI ถอดรหัส

ผ่านกระแสความนิยมเกี่ยวกับแมชชีนเลิร์นนิงและปัญญาประดิษฐ์แผงของเราจะพูดถึงคำจำกัดความและผลกระทบของเทคโนโลยี

TensorFlow กับการแข่งขัน

TensorFlow แข่งขันกับกรอบการเรียนรู้ของเครื่องอื่น ๆ PyTorch, CNTK และ MXNet เป็นสามเฟรมเวิร์กหลักที่ตอบสนองความต้องการเดียวกันจำนวนมาก ด้านล่างนี้ฉันได้สังเกตว่าพวกเขาโดดเด่นตรงไหนและเทียบกับ TensorFlow ได้

  • PyTorchนอกเหนือจากการสร้างด้วย Python และยังมีความคล้ายคลึงกันอื่น ๆ อีกมากมายกับ TensorFlow: ส่วนประกอบที่เร่งด้วยฮาร์ดแวร์ภายใต้ประทุนรูปแบบการพัฒนาที่มีการโต้ตอบสูงซึ่งช่วยให้สามารถออกแบบได้ตามต้องการและส่วนประกอบที่มีประโยชน์มากมายที่รวมอยู่แล้ว โดยทั่วไปแล้ว PyTorch เป็นตัวเลือกที่ดีกว่าสำหรับการพัฒนาโครงการอย่างรวดเร็วที่ต้องพร้อมใช้งานในเวลาอันสั้น แต่ TensorFlow ชนะโครงการขนาดใหญ่และขั้นตอนการทำงานที่ซับซ้อนมากขึ้น

  • CNTKซึ่งเป็น Microsoft Cognitive Toolkit เช่น TensorFlow ใช้โครงสร้างกราฟเพื่ออธิบายกระแสข้อมูล แต่เน้นส่วนใหญ่ในการสร้างเครือข่ายประสาทเทียมในการเรียนรู้เชิงลึก CNTK จัดการงานเครือข่ายประสาทเทียมได้เร็วขึ้นและมีชุด API ที่กว้างขึ้น (Python, C ++, C #, Java) แต่ CNTK ยังไม่สามารถเรียนรู้หรือปรับใช้งานได้ง่ายเหมือน TensorFlow

  • Apache MXNetซึ่งนำมาใช้โดย Amazon เป็นเฟรมเวิร์กการเรียนรู้เชิงลึกชั้นนำบน AWS สามารถปรับขนาดได้เกือบจะเป็นเชิงเส้นใน GPU หลายเครื่องและหลายเครื่อง นอกจากนี้ยังรองรับ API ภาษาที่หลากหลายไม่ว่าจะเป็น Python, C ++, Scala, R, JavaScript, Julia, Perl, Go แม้ว่า API ดั้งเดิมจะไม่น่าใช้งานเท่ากับ TensorFlow ก็ตาม