การเขียนโปรแกรมทางสถิติในการเรียนรู้ของเครื่อง: ความแตกต่างระหว่าง Pyro และ TFP
เผยแพร่แล้ว: 2021-01-29ในแมชชีนเลิร์นนิง การเขียนโปรแกรมเชิงสถิติหรือความน่าจะเป็นทำได้โดยใช้ภาษาโปรแกรม 2 ภาษาดังแสดงด้านล่าง แนะนำสั้น ๆ กล่าวง่ายๆ ว่าการเขียนโปรแกรมความน่าจะเป็นเป็นเครื่องมือสำหรับการสร้างแบบจำลองทางสถิติ โดยพื้นฐานแล้วหมายถึงการแก้ปัญหาโดยใช้ภาษาที่เราสามารถสร้างและออกแบบแบบจำลองทางสถิติเพื่อแก้ปัญหาได้
มันเกี่ยวกับการนำแนวคิดของสถิติไปใช้ภาษาโปรแกรมคอมพิวเตอร์ การใช้โมเดลความน่าจะเป็น เราสามารถอนุมานได้ว่าความเชื่อของเราเกี่ยวกับไฮเปอร์พารามิเตอร์ของโมเดลสามารถเปลี่ยนผลลัพธ์ได้อย่างไร
สารบัญ
ภาษาโปรแกรมความน่าจะเป็นที่มีชื่อเสียงของ
1. ไพโร
Pyro เป็นภาษาโปรแกรมความน่าจะเป็น (PPL) ที่เขียนด้วย Python และได้รับการสนับสนุนโดย Pytorch ในแบ็กเอนด์ ด้วย Pyro เราสามารถเข้าถึงการสร้างแบบจำลองความน่าจะเป็นเชิงลึก การสร้างแบบจำลองแบบเบย์ และรวมอัลกอริธึมการเรียนรู้เชิงลึกที่ทันสมัยที่ดีที่สุด สามารถติดตั้งได้ดังนี้
pip3 ติดตั้ง Pyro-ppl
หรือติดตั้งจากต้นทางโดยใช้คำสั่งต่อไปนี้:
โคลน git https://github.com/pyro-ppl/pyro.git

cd pyro
pip ติดตั้ง .[พิเศษ]
นำเข้า Pyro โดยใช้โค้ดง่ายๆ:
นำเข้า pyro
2. ความน่าจะเป็นของการไหลของเทนเซอร์ (TFP)
TFP คือไลบรารี Python ที่สร้างขึ้นบน TensorFlow ซึ่งทำให้เกิดการผสมผสานระหว่างโมเดลความน่าจะเป็นและโมเดลการเรียนรู้เชิงลึกบน GPU และ TPU สามารถใช้โดยทุกคนที่ต้องการรวมความรู้โดเมนเพื่อทำความเข้าใจและคาดการณ์ที่เกี่ยวข้อง ในการติดตั้ง TFP ให้พิมพ์คำสั่งต่อไปนี้ในคำสั่งของคุณหรือพร้อมท์อนาคอนดา
ติดตั้ง pip – อัพเกรดเทนเซอร์โฟลว์ความน่าจะเป็น
TFP สามารถใช้ในโค้ดโดยใช้บรรทัดคำสั่งต่อไปนี้:
นำเข้า tensorflow_probability เป็น tfp
เข้าร่วม หลักสูตรปัญญาประดิษฐ์ ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก – ปริญญาโท หลักสูตร Executive Post Graduate และหลักสูตรประกาศนียบัตรขั้นสูงใน ML & AI เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
ความแตกต่างระหว่าง Pyro และ TFP
1. เอกสารประกอบ
เอกสารประกอบสำหรับ Pyro และ TFP นั้นยอดเยี่ยมและอุดมสมบูรณ์ ในขณะที่คำอธิบายสำหรับ TFP น้อยกว่าจากโอกาสของโครงข่ายประสาทเทียม ใน pyro โมดูล pyro.nn นำเสนอการใช้งานโมดูลโครงข่ายประสาทเทียมที่มีประโยชน์ในบริบทของการเขียนโปรแกรมความน่าจะเป็นเชิงลึก ใน TFP tfp.layers แสดงถึงเลเยอร์โครงข่ายประสาทเทียมที่มีความไม่แน่นอนเหนือฟังก์ชันที่แสดง ซึ่งขยาย TensorFlow Layers
2. ภาษา
ผู้ใช้ทั้ง TFP และ Pyro เขียนเป็น python อย่างไรก็ตาม API ที่เกี่ยวข้องกับกรณีของ TFP นั้นละเอียดมาก ฉันหมายความว่าบางครั้งเราต้องเขียนโค้ดเพิ่มเติมเพื่อหาวิธีแก้ไข นั่นเป็นสิ่งที่ดีในบางครั้งเพราะเราสามารถควบคุมโปรแกรมทั้งหมดได้มากขึ้นและไม่ดีเมื่อพร้อมใช้งานในรูปแบบที่สั้นกว่าภายใน Pyro
3. Ramp-up Time
ด้วย Pyro การรันโค้ดจะเร็วขึ้นและมีประสิทธิภาพ และคุณไม่จำเป็นต้องมีแนวคิดใหม่ๆ ในการเรียนรู้ ในทางกลับกัน TFP ต้องการแนวคิด เช่น ตัวยึดตำแหน่ง การกำหนดขอบเขตตัวแปร และเซสชัน ดังนั้นจึงต้องใช้เวลาในการดำเนินการมากขึ้น
4. การปรับใช้
ทั้ง TFP และ Pyro สามารถติดตั้งบนฝั่งเซิร์ฟเวอร์ขนาดเล็กได้อย่างง่ายดาย สำหรับมือถือและไมโครคอมพิวเตอร์ หรือการปรับใช้แบบฝัง TensorFlow ทำงานได้อย่างมีประสิทธิภาพ ไม่เหมือนกับ Pytorch ต้องใช้ความพยายามน้อยกว่าในการปรับใช้ TensorFlow ใน Android และ IOS เมื่อเทียบกับ Pytorch
5. กราฟ
Tensorflow มีการแสดงภาพกราฟเชิงคำนวณที่ดีกว่า ซึ่งเป็นของพื้นเมืองเมื่อเปรียบเทียบกับไลบรารีอื่นๆ เช่น Torch และ Theano Edward สร้างขึ้นบน TensorFlow และเปิดใช้งานคุณสมบัติต่างๆ เช่น กราฟการคำนวณ การฝึกอบรมแบบกระจาย การรวม CPU/GPU การแยกความแตกต่างอัตโนมัติ และการแสดงภาพด้วย TensorBoard อย่างไรก็ตาม Pyro ไม่ได้จัดเตรียมฟังก์ชันการสาธิตหรือการแสดงภาพใดๆ
เอ็ดเวิร์ดแทรกแซง TensorBoard ที่มา: Edward
6. Markov Chain มอนติคาร์โล
TFP ใช้อัลกอริธึม Markov chain Monte Carlo (MCMC) จำนวนมาก (เช่น Metropolis, Gibbs, Hamiltonian) ซึ่งใช้สุ่มตัวอย่างการกระจายความน่าจะเป็นและอัลกอริธึม Value Iteration บางส่วนใน TensorFlow จนถึงปี 2018 Pyro ไม่ได้แสดง Markov chain Monte Carlo ได้รับการอัปเดตและรองรับ MCMC, HMC และ NUTS เต็มรูปแบบ

7. เครื่องมือเพิ่มประสิทธิภาพ
เช่นเดียวกับ TFP ที่ใช้ตัวเพิ่มประสิทธิภาพ TensorFlow หลายตัว รวมถึง Nelder-Mead, BFGS และ L-BFGS (สำหรับการพิจารณาปัญหาการเพิ่มประสิทธิภาพแบบไม่เชิงเส้นที่ไม่มีข้อจำกัด) Pyro ใช้งานเครื่องมือเพิ่มประสิทธิภาพที่มีอยู่ใน PyTorch โมดูล pyro.optim ให้การสนับสนุนสำหรับการเพิ่มประสิทธิภาพใน Pyro . อาจกล่าวได้ว่า PPL ทั้งสองขึ้นอยู่กับโมดูลพื้นฐาน (TensorFlow และ PyTorch)
แหล่งที่มา
8. นักขี่จักรยานยนต์
ใน TFP bijectors จะรวมการเปลี่ยนแปลงของตัวแปรสำหรับความหนาแน่นของความน่าจะเป็น เมื่อเราสร้างแผนที่จากพื้นที่หนึ่งไปยังอีกที่หนึ่ง เรายังมีอิทธิพลต่อแผนที่จากความหนาแน่นของความน่าจะเป็นบนพื้นที่เริ่มต้นไปจนถึงความหนาแน่นบนพื้นที่เป้าหมาย
แต่ในขณะที่เรากำลังทำแผนที่ไปยังพื้นที่อื่น เราจำเป็นต้องติดตามบัญชีการทำแผนที่เหล่านี้สำหรับพวกเขาในการคำนวณความหนาแน่นของความน่าจะเป็นในพื้นที่หลัง ดังนั้นจึงใช้ Bijectors สำหรับการทำแผนที่ที่ราบรื่น ใน pyro เอกสารประกอบไม่ได้พูดถึงอะไรเกี่ยวกับ bijectors ดังนั้นฉันคิดว่าพวกเขาไม่มี
9. อนุกรมเวลา
โมดูล pyro.contrib.timeseries ให้คอลเลกชันของแบบจำลองอนุกรมเวลาแบบเบย์ซึ่งมีประโยชน์สำหรับแอปพลิเคชันการคาดการณ์ ซึ่งสามารถทำได้โดยการใช้อ็อบเจ็กต์ Forecaster ที่มีอยู่ใน Pyro หลังจากที่เราให้ข้อมูลอินพุตกับโมเดลแล้ว เราก็แค่บอกโมเดลถึงวิธีการทำนายอย่างมีข้อมูล
ง่ายมาก แค่ข้อมูลและความน่าจะเป็น อย่างไรก็ตาม TFP ใช้ประโยชน์จากโมเดลอนุกรมเวลาของ Tensorflow เช่น CNN และ RNN ร่วมกับ Framework สำหรับโมเดลอนุกรมเวลาแบบโครงสร้าง Bayesian (tfp.sts) อนุกรมเวลาเชิงโครงสร้างแบบเบย์เป็นส่วนต่อประสานระดับสูงสำหรับการปรับรุ่นอนุกรมเวลาที่เหมาะสมซึ่งยังไม่ได้เปิดตัว
แหล่งที่มา
10. การกระจาย
เป็นคลาสพื้นฐานสำหรับการสร้างและจัดระเบียบคุณสมบัติ (เช่น ค่าเฉลี่ย ความแปรปรวน) ของตัวแปรสุ่ม (เช่น Bernoulli, Gaussian) ตัวอย่างหนึ่งอาจเป็นการแจกแจงแบบปกติ การแจกแจงส่วนใหญ่ใน Pyro เป็นตัวห่อหุ้มแบบบางรอบๆ การแจกแจงแบบ PyTorch สำหรับรายละเอียดเกี่ยวกับอินเทอร์เฟซการแจกจ่าย PyTorch คุณสามารถดู Torch.distributions.distribution.Distribution อย่างไรก็ตาม TFP มีโมดูล tfp.distribution
แหล่งที่มา
แหล่งที่มา
11. โมเดลเชิงเส้นทั่วไป (GLM)
ในสถิติ ตัวแบบเชิงเส้นทั่วไปเป็นลักษณะทั่วไปที่ยืดหยุ่นของการถดถอยเชิงเส้นธรรมดาที่ยอมให้ตัวแปรตอบสนองที่มีแบบจำลองการกระจายข้อผิดพลาดอื่นที่ไม่ใช่การแจกแจงแบบปกติ ใน TFP โมดูล tfp.glm มีอินเทอร์เฟซระดับสูงสำหรับแบบจำลองการถดถอยแบบผสมเอฟเฟกต์ที่เหมาะสม อย่างไรก็ตาม Pyro ไม่มีโมดูลดังกล่าวสำหรับ GLM
แหล่งที่มา
บทสรุป
การใช้ปัจจัยเหล่านี้ทำให้สรุปได้ว่า Pyro ไม่ได้แตกต่างจาก TFP มากนัก ทั้งคู่ใช้ภาษาการเขียนโปรแกรม Python Python APIs ได้รับการจัดทำเป็นเอกสารอย่างดี อย่างไรก็ตาม Pytorch มีเวลาเพิ่มขึ้นที่ดีและเร็วกว่า TensorFlow มาก การตัดสินใจเลือกเฟรมเวิร์กทั้งสองนี้จะขึ้นอยู่กับว่าคุณเข้าถึงวิธีการเรียนรู้ของแต่ละเฟรมได้อย่างไร การเลือกของคุณจะขึ้นอยู่กับข้อกำหนดขององค์กรของคุณด้วย

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับแมชชีนเลิร์นนิง โปรดดูที่ IIIT-B & upGrad's Executive PG Program in Machine Learning & AI ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 450 ชั่วโมง กรณีศึกษาและการมอบหมายมากกว่า 30 รายการ IIIT -B สถานะศิษย์เก่า 5+ โครงการหลักที่ปฏิบัติได้จริง & ความช่วยเหลืองานกับ บริษัท ชั้นนำ
อ้างอิง
เริ่มต้นใช้งาน – เอกสาร Pyro
โมดูล: tfp | ความน่าจะเป็นของเทนเซอร์โฟล
แมชชีนเลิร์นนิงเชื่อมโยงกับสถิติอย่างไรและในทางกลับกัน
สถิติใช้ในการสร้างแบบจำลองทางสถิติเพื่อแสดงข้อมูลและสรุปหรืออนุมานจากข้อมูลนั้น ในขณะที่แมชชีนเลิร์นนิงใช้ประโยชน์จากแบบจำลองทางสถิตินี้เพื่อทำความเข้าใจข้อมูลและคาดการณ์ได้อย่างแม่นยำ ดังนั้น สถิติจึงถูกใช้ในการสร้างแบบจำลองทางสถิติเพื่อช่วยให้การเรียนรู้ของเครื่องเป็นไปอย่างถูกต้องและง่ายดาย
ฉันจะรู้แมชชีนเลิร์นนิงโดยไม่มีความรู้เรื่องสถิติได้ไหม
สถิติและการเรียนรู้ของเครื่องเชื่อมต่อกัน หากคุณรู้สถิติ คุณสามารถแสดงข้อมูลในรูปแบบของแบบจำลองทางสถิติ จากนั้นวิเคราะห์และคาดการณ์ด้วยแมชชีนเลิร์นนิง ดังนั้น การรู้สถิติก่อนการเรียนรู้ด้วยเครื่องจะมีประโยชน์มาก ดังนั้น หากคุณเพียงแค่รู้พื้นฐานของสถิติ คุณก็พร้อมแล้ว คุณไม่จำเป็นต้องเป็นมืออาชีพด้านสถิติเพื่อที่จะทำได้ดีในการเรียนรู้ของเครื่อง
TensorFlow ง่ายต่อการเรียนรู้สำหรับผู้เริ่มต้นหรือไม่?
TensorFlow เป็นแพลตฟอร์มการเรียนรู้ของเครื่องโอเพนซอร์สที่ทำงานตั้งแต่ต้นจนจบ TensorFlow ทำให้การสร้างโมเดลแมชชีนเลิร์นนิงเป็นเรื่องง่ายสำหรับทั้งผู้เริ่มต้นและมืออาชีพ คุณจะต้องใช้เวลาระหว่างหกถึงสิบสองเดือนในการศึกษาและปรับปรุงความสามารถ TensorFlow ของคุณ หากคุณต้องการทำงานในการเรียนรู้ของเครื่อง อย่างไรก็ตาม หากคุณรู้พื้นฐานของภาษาโปรแกรมอย่าง R และ Python คุณก็จะไม่มีปัญหาอะไรมากนัก