การเขียนโปรแกรมทางสถิติในการเรียนรู้ของเครื่อง: ความแตกต่างระหว่าง 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 คุณก็จะไม่มีปัญหาอะไรมากนัก