ไลบรารี Deep Learning ตัวแรกของคุณทำหน้าที่ได้มากกว่าแค่การทำให้โมเดลทำงานได้ แต่มันช่วยหล่อหลอมวิธีที่คุณคิดเกี่ยวกับ gradients, layers และ data flow หากคุณเลือกผิด คุณอาจต้องเสียเวลาหลายสัปดาห์ไปกับการต่อสู้กับ boilerplate แทนที่จะได้เรียนรู้วิธีที่ neural networks ทำงานจริงๆ แต่ถ้าคุณเลือกถูก แนวคิดต่างๆ จะเริ่มเข้าใจได้ง่ายขึ้นเพราะโค้ดจะไม่เป็นอุปสรรคต่อการเรียนรู้ของคุณ
มือใหม่ส่วนใหญ่มักจะจำกัดตัวเลือกไว้ที่ 3 ไลบรารี ได้แก่ Keras, PyTorch และ TensorFlow นอกจากนี้ยังมี JAX แต่คุณควรข้ามมันไปก่อนจนกว่าคุณจะรู้ว่า Jacobian คืออะไร
ความหมายที่แท้จริงของคำว่า "เป็นมิตรกับมือใหม่"
ไลบรารีไม่ได้เป็นมิตรเพียงเพราะมีเอกสารประกอบ (documentation) หนาเตอะ แต่มันจะเป็นมิตรก็ต่อเมื่อโค้ดอ่านแล้วเข้าใจง่ายเหมือนคณิตศาสตร์ที่คุณเห็นในบทเรียน และเมื่อข้อความแจ้งเตือนข้อผิดพลาด (error message) ชี้ไปยังจุดที่คุณทำผิด แทนที่จะพ่น stack trace จาก C++ backend ออกมา คุณต้องการที่จะคิดเรื่อง learning rates และ activation functions ไม่ใช่มานั่งแก้ปัญหาเรื่อง tensor shape mismatches ที่ฝังลึกอยู่ภายในโครงสร้างภายในของ framework
Keras: เริ่มต้นที่นี่เพื่อเห็นผลลัพธ์
Keras ถูกสร้างขึ้นบนแนวคิดที่เรียบง่าย นั่นคือคุณควรจะสามารถเปลี่ยนจากไอเดียไปสู่โมเดลที่ฝึกฝนแล้วได้ในเวลาเท่ากับการดื่มกาแฟหนึ่งแก้ว มันช่วยห่อหุ้มความซับซ้อนของ backpropagation และ graph optimization ไว้ภายใต้ API ที่สะอาดตา ดังนั้นตัวจำแนกภาพ (image classifier) ที่ทำงานได้อย่างสมบูรณ์จึงมักจะใช้โค้ด Python เพียงแค่ประมาณสิบกว่าบรรทัดเท่านั้น
คุณกำหนดโมเดลโดยการวาง layers ซ้อนกันภายในออบเจกต์ Sequential เรียกใช้ model.compile() เพื่อกำหนด optimizer และ loss function จากนั้นเรียก model.fit() เพื่อทำการฝึกฝน ไวยากรณ์ (syntax) ของมันให้ความรู้สึกเหมือนการทำตามรายการตรวจสอบ (checklist) รูปแบบ input? เรียบร้อย. Dense layer? เรียบร้อย. Training loop? จัดการให้แล้ว สิ่งนี้ช่วยให้คุณได้ทดลองกับสิ่งที่สำคัญจริงๆ ตั้งแต่ช่วงแรกๆ เช่น การเพิ่มอีก layer จะช่วยไหม? ควรเปลี่ยนจาก ReLU เป็น sigmoid หรือไม่? จะเกิดอะไรขึ้นเมื่อคุณเปลี่ยน batch size?
หากเป้าหมายของคุณคือการเรียนรู้ว่า layers และ optimizers ทำหน้าที่อะไรโดยไม่ต้องจมกองไฟล์ตั้งค่า (configuration files) Keras จะช่วยลดอุปสรรคเหล่านั้น คุณสามารถรัน convolutional network บนรูปภาพจริงได้ภายในหนึ่งชั่วโมงหลังจากติดตั้งแพ็กเกจ และเนื่องจากโดยค่าเริ่มต้น Keras ทำงานอยู่บน TensorFlow คุณจึงสามารถเข้าถึง data pipelines ระดับโปรดักชันได้โดยไม่ต้องออกจาก high-level API
ข้อแลกเปลี่ยนจะปรากฏขึ้นเมื่อคุณก้าวออกนอกเส้นทางที่ปูไว้ หากคุณจำเป็นต้องเขียน custom loss function ที่ขึ้นอยู่กับ intermediate activations หรือหากคุณต้องการปรับเปลี่ยน backward pass ระหว่างการฝึกฝน Keras อาจทำให้รู้สึกถูกจำกัด แม้ว่ามันจะมีช่องทางให้หลบเลี่ยง (escape hatches) แต่การใช้งานมักหมายถึงการต้องลงไปเขียนโค้ดในระดับ framework ดิบๆ สำหรับตรรกะการวิจัยแบบกำหนดเอง (custom research logic) กำแพงนี้มีอยู่จริง
PyTorch: เรียนรู้จากการเห็นไส้ใน
PyTorch ปฏิบัติต่อ neural network เสมือนเป็นโปรแกรม Python ทั่วไป คุณกำหนดโมเดลโดยการสร้าง subclass จาก torch.nn.Module ส่วน forward pass ก็เป็นเพียงเมธอด Python ที่อธิบายว่า input กลายเป็น output ได้อย่างไร คุณเรียก loss.backward() แล้ว PyTorch จะคำนวณ gradients ให้ทันที
สิ่งนี้เกิดขึ้นเพราะ PyTorch สร้าง computation graph แบบไดนามิก ในขณะที่บาง framework บังคับให้คุณต้องกำหนดโครงสร้างโมเดลทั้งหมดไว้ล่วงหน้าก่อนที่จะมีข้อมูลใดๆ เข้ามาสัมผัส แต่ PyTorch จะรอจนกว่าคุณจะส่ง batch ผ่านเครือข่ายจริงๆ หากขนาดของ input เปลี่ยนไปในแต่ละ batch หรือหากคุณต้องการพิมพ์ค่า tensor ออกมาดูระหว่างทางใน forward pass เพื่อ debug ปัญหาเรื่อง shape mismatch ตัว framework ก็จะไม่บ่นอะไร คุณสามารถใช้ debugger มาตรฐานได้ คุณสามารถใส่คำสั่ง print() ลงไปในโมเดลของคุณได้เลย ความเรียบง่ายนี้สำคัญมากเมื่อทุกมิติของ tensor ดูเหมือนเป็นปริศนา เพราะมันทำให้การ debug รู้สึกเหมือนการเขียนโปรแกรมปกติ
หากคุณต้องการเข้าใจว่าการฝึกฝนทำงานอย่างไรจริงๆ—ทั้งการที่ forward pass สร้างการทำนาย, การที่ backward pass กระจายค่าความผิดพลาด (error), และการที่ optimizer อัปเดตน้ำหนัก (weights)—PyTorch จะบังคับให้คุณต้องมองลึกลงไปใต้ฝากระโปรง ความโปร่งใสนี้เองที่ทำให้มันเป็นผู้นำในด้านการวิจัยในปัจจุบัน และปรากฏอยู่ในประกาศรับสมัครงานด้าน AI ใหม่ๆ ส่วนใหญ่ เมื่อคุณอ่านงานวิจัยใน arXiv มีโอกาสสูงมากที่โค้ดต้นฉบับ (official implementation) จะเขียนด้วย PyTorch
TensorFlow: คิดถึงเรื่องสถานที่ที่โมเดลจะถูกนำไปใช้งาน
ชื่อเสียงของ TensorFlow เคยถูกมองว่ามีความเยิ่นเย้อและเรียนรู้ได้ยาก แต่สิ่งเหล่านั้นส่วนใหญ่ได้เปลี่ยนไปเมื่อ Keras กลายเป็น high-level API อย่างเป็นทางการ ในเวอร์ชันปัจจุบัน เมื่อคุณ import Keras โดยปกติแล้วคุณกำลังรันอยู่บน TensorFlow ไม่ว่าคุณจะสังเกตเห็นหรือไม่ก็ตาม แต่ TensorFlow ยังคงมีความสำคัญในฐานะตัวเลือกที่แยกออกมา เนื่องจากสิ่งที่เกิดขึ้นหลังจากที่โมเดลได้รับการฝึกฝนแล้ว
ระบบนิเวศนี้ถูกสร้างขึ้นมาเพื่อการนำไปใช้งานจริง TensorFlow Lite บีบอัดโมเดลเพื่อให้สามารถทำงานบนโทรศัพท์มือถือ ไมโครคอนโทรลเลอร์ และเซนเซอร์อุตสาหกรรมที่มีข้อจำกัดด้านหน่วยความจำอย่างเข้มงวด TensorFlow.js ทำการประมวลผล (inference) โดยตรงภายในเบราว์เซอร์โดยไม่ต้องส่งข้อมูลไปยังเซิร์ฟเวอร์ TensorFlow Serving จัดการเรื่องการจัดการเวอร์ชันของโมเดล (model versioning) และการทำนายแบบกลุ่ม (batch predictions) ในสภาพแวดล้อมการใช้งานจริงขนาดใหญ่
เลือก TensorFlow เมื่อโปรเจกต์ของคุณมีข้อจำกัดทางกายภาพที่...
