ทำไม Python เป็นภาษายอดนิยมในฟิลด์ AI


47

ก่อนอื่นฉันเป็นมือใหม่ที่เรียน AI และนี่ไม่ใช่คำถามเชิงความคิดเห็นหรือคำถามเพื่อเปรียบเทียบภาษาการเขียนโปรแกรม ฉันไม่ได้พูดว่านั่นเป็นภาษาที่ดีที่สุด แต่ความจริงก็คือกรอบ AI ที่มีชื่อเสียงส่วนใหญ่มีการสนับสนุนหลักสำหรับ Python พวกเขาสามารถรองรับหลายภาษาเช่น TensorFlow ที่รองรับ Python, C ++ หรือ CNTK จาก Microsoft ที่สนับสนุน C # และ C ++ แต่ที่ใช้มากที่สุดคือ Python (ฉันหมายถึงเอกสารเพิ่มเติมตัวอย่างชุมชนที่ใหญ่กว่าการสนับสนุน ฯลฯ ) แม้ว่าคุณจะเลือก C # (พัฒนาโดย Microsoft และภาษาการเขียนโปรแกรมหลักของฉัน) คุณต้องมีการตั้งค่าสภาพแวดล้อม Python

ฉันอ่านในฟอรั่มอื่น ๆ ว่า Python เหมาะสำหรับ AI เพราะรหัสนั้นง่ายและสะอาดขึ้นเหมาะสำหรับการสร้างต้นแบบอย่างรวดเร็ว

ฉันกำลังดูภาพยนตร์ที่มีเนื้อหา AI (Ex_Machina) ในบางฉากตัวละครหลักจะแฮ็กอินเทอร์เฟซของระบบอัตโนมัติในบ้าน เดาภาษาใดในฉากนี้? หลาม

ดังนั้นเรื่องใหญ่ความสัมพันธ์ระหว่าง Python และ AI คืออะไร?


เพียงจำไว้ว่าการเป็นตัวแทนของภาษาการเขียนโปรแกรมในภาพยนตร์มักไม่เกี่ยวข้องกับชีวิตจริง! อะไรก็ตามที่ดูเหมือน cryptic gobbledegook ไปยัง lay people โดยปกติแล้วจะดี ...
Oliver Mason

ถ้า C # เป็นภาษาโปรแกรมหลักของคุณคุณอาจสนใจscisharpstack.org
henon

คำตอบ:


32

Python มาพร้อมกับไลบรารี inbuilt จำนวนมาก ห้องสมุดหลายแห่งมีไว้สำหรับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง ห้องสมุดบางแห่ง ได้แก่ Tensorflow (ซึ่งเป็นห้องสมุดเครือข่ายประสาทระดับสูง), scikit-learn (สำหรับการขุดข้อมูล, การวิเคราะห์ข้อมูลและการเรียนรู้ของเครื่อง), pylearn2 (ยืดหยุ่นมากกว่า scikit-Learn) เป็นต้นรายการจะไม่หยุดยั้ง ปลาย

คุณสามารถค้นหาห้องสมุดบางที่นี่

Python ใช้งานง่ายสำหรับ OpenCV สิ่งที่ทำให้ Python เป็นที่ชื่นชอบสำหรับทุกคนคือการใช้งานที่มีประสิทธิภาพและง่ายดาย
สำหรับภาษาอื่น ๆ นักเรียนและนักวิจัยจำเป็นต้องรู้จักภาษาก่อนที่จะเข้าสู่ ML หรือ AI ด้วยภาษานั้น นี่ไม่ใช่กรณีที่มีงูหลาม. แม้แต่โปรแกรมเมอร์ที่มีความรู้พื้นฐานสามารถจัดการกับงูหลามได้อย่างง่ายดาย นอกเหนือจากนั้นเวลาที่มีคนใช้ในการเขียนและการดีบักโค้ดใน python นั้นมีค่าน้อยกว่าเมื่อเปรียบเทียบกับ C, C ++ หรือ Java นี่คือสิ่งที่นักเรียน AI และ ML ต้องการ พวกเขาไม่ต้องการที่จะใช้เวลาในการแก้จุดบกพร่องรหัสสำหรับข้อผิดพลาดทางไวยากรณ์ที่พวกเขาต้องการที่จะใช้เวลามากขึ้นในขั้นตอนวิธีการและการวิเคราะห์พฤติกรรมที่เกี่ยวข้องกับ AI และ ML
ไม่ได้เป็นเพียงห้องสมุด แต่บทเรียนของพวกเขา, การจัดการของอินเตอร์เฟซที่มีอยู่ได้อย่างง่ายดายออนไลน์ ผู้คนสร้างห้องสมุดของตนเองและอัปโหลดไว้ที่ GitHub หรือที่อื่น ๆ เพื่อให้ผู้อื่นใช้

คุณสมบัติทั้งหมดเหล่านี้ทำให้ Python เหมาะสมสำหรับพวกเขา


10
"พวกเขาไม่ต้องการใช้เวลาในการดีบักรหัสเพื่อหาข้อผิดพลาดทางไวยากรณ์" - โปรแกรมเมอร์คนใดที่ต้องการทำสิ่งนี้? Python ดีที่สุดสำหรับทุกสิ่งหรือเปล่า ฉันไม่มั่นใจ
Frank Puffer

24

กรอบการเรียนรู้ลึกที่เป็นที่นิยมและใช้กันอย่างแพร่หลายเกือบทั้งหมดได้รับการติดตั้งใน Python บนพื้นผิวและ C / C ++ ภายใต้ประทุน

ฉันคิดว่าเหตุผลหลักคือ Python ใช้กันอย่างแพร่หลายในชุมชนวิทยาศาสตร์และการวิจัยเพราะมันง่ายต่อการทดสอบความคิดใหม่และต้นแบบรหัสอย่างรวดเร็วในภาษาที่มีไวยากรณ์น้อยเช่น Python

ยิ่งไปกว่านั้นอาจมีสาเหตุอื่น อย่างที่ฉันเห็นหลักสูตรออนไลน์ที่เร่งรีบส่วนใหญ่ใน AI กำลังผลักดัน Python เพราะมันง่ายสำหรับโปรแกรมเมอร์มือใหม่ AI เป็นคำศัพท์ทางการตลาดใหม่ที่กำลังขายหลักสูตรการเขียนโปรแกรม (การกล่าวถึง AI สามารถขายหลักสูตรการเขียนโปรแกรมให้กับเด็กที่ต้องการสร้าง HAL 3000 แต่ไม่สามารถแม้แต่เขียน Hello World หรือวางเทรนด์ไลน์ลงบนกราฟ Excel :)


4
"....... หลักสูตรออนไลน์ส่วนใหญ่ที่เกี่ยวกับ AI กำลังผลักดัน Python เพราะมันง่ายสำหรับโปรแกรมเมอร์มือใหม่ AI เป็นคำศัพท์ทางการตลาดใหม่ในการขายหลักสูตรการเขียนโปรแกรม ... " ---- ข้อดี . ไม่เห็นด้วยมาก
Emran Hussain

5

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


จุดดีเกี่ยวกับความสามารถในการตีความของงูหลาม ดูเหมือนว่าความยืดหยุ่นและความเร็วในการพัฒนาจะได้รับการสนับสนุนอย่างมากจาก "แรงม้า" ของภาษาที่รวบรวม
DukeZhou

5

สิ่งที่ดึงดูดให้ฉันสู่ Python สำหรับงานวิเคราะห์ของฉันคือเครื่องมือ "เต็มสแต็ค" ที่มีให้โดยอาศัยการออกแบบเป็นภาษาที่ใช้งานทั่วไปเทียบกับ R เป็นภาษาเฉพาะของโดเมน การวิเคราะห์ข้อมูลจริงเป็นเพียงส่วนหนึ่งของเรื่องราวและ Python มีเครื่องมือที่หลากหลายและภาษาที่มีคุณลักษณะครบถ้วนที่จะได้รับตั้งแต่ต้นจนจบในภาษาเดียว (ใช้ C / Fortran wrapper แม้จะมี)

ส่วนหน้างานของฉันเริ่มจากการรับข้อมูลจากแหล่งต่าง ๆ รวมถึงฐานข้อมูลไฟล์ในรูปแบบต่าง ๆ หรือการคัดลอกเว็บ การสนับสนุนของ Python นั้นดีและฐานข้อมูลส่วนใหญ่หรือรูปแบบข้อมูลทั่วไปมีไลบรารีที่แข็งแกร่งและได้รับการดูแลเป็นอย่างดีสำหรับอินเตอร์เฟส R ดูเหมือนจะแบ่งปันความร่ำรวยทั่วไปสำหรับข้อมูล I / O แต่สำหรับแพ็คเกจ FITS ดูเหมือนว่าจะไม่อยู่ภายใต้การพัฒนาที่ใช้งานอยู่ (ไม่มีการวางจำหน่าย FITSio ใน 2.5 ปีหรือไม่) โดยทั่วไปแล้วขั้นตอนต่อไปของงานจำนวนมากจะเกิดขึ้นในขั้นตอนของการจัดระเบียบข้อมูลและทำการประมวลผลแบบไปป์ไลน์ด้วยการโต้ตอบระดับระบบจำนวนมาก

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

เมื่อย้ายไปที่ฟังก์ชันเฉพาะทางดาราศาสตร์เพื่อการวิเคราะห์ดูเหมือนว่าชุมชนนั้นอยู่เบื้องหลัง Python สิ่งนี้เห็นได้ในเชิงลึกของแพ็คเกจที่มีอยู่และระดับของกิจกรรมการพัฒนาทั้งในระดับบุคคลและระดับสถาบัน ( http://www.astropython.org/resources ) ด้วยโครงสร้างพื้นฐานระดับนี้ที่พร้อมใช้งานและในการทำงานฉันคิดว่ามันสมเหตุสมผลที่จะนำเครื่องมือทางสถิติ R ที่มีประโยชน์ที่สุดสำหรับดาราศาสตร์ไปยัง Python นี่จะเป็นการเสริมความสามารถในปัจจุบันในการเรียกใช้ฟังก์ชัน R จาก Python ผ่าน rpy2 หากคุณสนใจฉันขอแนะนำให้คุณอ่านบทความนี้ที่นี่เป็นคำถามของการเปรียบเทียบภาษาการเขียนโปรแกรมhttps://diceus.com/what-technology- is-b ... nd-java-r / ฉันหวังว่าจะช่วยได้ขอให้โชคดี


3

Python มีไลบรารีที่หลากหลายและยังเป็นเชิงวัตถุและง่ายต่อการโปรแกรม มันยังสามารถใช้เป็นภาษาส่วนหน้า นั่นเป็นเหตุผลที่มันถูกใช้ในปัญญาประดิษฐ์ แทนที่จะใช้ AI ก็ยังใช้ในการเรียนรู้ของเครื่องการคำนวณแบบนุ่มนวลการเขียนโปรแกรม NLP และยังใช้เป็นการเขียนสคริปต์บนเว็บหรือในการแฮ็กตามหลักจริยธรรม


มันเป็นคำตอบที่ยอดเยี่ยมเพราะ Python เป็นภาษาการเขียนโปรแกรมอันดับหนึ่งโดยเฉพาะสำหรับการเขียนสคริปต์บนเว็บ ตอนแรกฉันกลัวว่าคุณจะอธิบายให้โลกรู้ได้ว่า AutoIt เป็นภาษาสคริปต์ที่สมบูรณ์แบบเพราะใช้สำหรับการเขียน Aimbot
Manuel Rodriguez

2

นั่นเป็นเพราะไพ ธ อนเป็นภาษาการเขียนโปรแกรมเชิงวัตถุที่มีรูปแบบทันสมัย ตรงกันข้ามกับภาษาการเขียนโปรแกรมโครงสร้างเช่น java และ C ++ ลักษณะการเขียนสคริปต์ทำให้โปรแกรมเมอร์สามารถทดสอบสมมติฐานของเขา / เธอได้อย่างรวดเร็ว นอกจากนี้ยังมีห้องสมุดการเรียนรู้โอเพนซอร์ซจำนวนมาก (รวมถึง scikit-learning และ Keras) ที่ขยายการใช้งานของ python ในฟิลด์ AI


2

มันเป็นการผสมผสานของหลาย ๆ ปัจจัยที่ทำให้มันเป็นตัวเลือกที่ดีในการพัฒนาระบบความรู้

  • การพัฒนาอย่างรวดเร็ว
  • การสร้างต้นแบบอย่างรวดเร็ว
  • ไวยากรณ์ที่เป็นมิตรกับการอ่านระดับมนุษย์เกือบ
  • ห้องสมุดมาตรฐานที่หลากหลายและกระบวนทัศน์ที่หลากหลาย
  • มันสามารถใช้เป็นส่วนหน้าสำหรับแบ็กเอนด์นักแสดงที่เขียนในภาษาที่รวบรวมเช่น C / C ++

ห้องสมุดตัวเลขที่มีอยู่เช่น numpy และอื่น ๆ ทำงานเป็นกลุ่มอย่างเข้มข้นสำหรับคุณซึ่งช่วยให้คุณมุ่งเน้นไปที่สถาปัตยกรรมของระบบของคุณมากขึ้น

นอกจากนี้ยังมีชุมชนและระบบนิเวศขนาดใหญ่รอบ ๆ ไพ ธ อนซึ่งส่งผลให้มีเครื่องมือที่หลากหลายที่มุ่งเน้นการทำงานที่แตกต่าง


0

ฉันชอบ C มากสำหรับการเรียนรู้ของเครื่อง เพราะเหมือนในชีวิตในโลกที่เรารู้จักประกอบด้วย "ประตูตรรกะ" ที่ไม่มีที่สิ้นสุด (ซึ่งโดยทั่วไปแล้วเหมือนกับการพลิกเหรียญ - จะมี 2 ผลลัพธ์ที่เป็นไปได้ - ไม่นับที่สาม: การลงจอดที่ด้านข้าง!) ซึ่งหมายความว่าในขณะที่จักรวาลดูเหมือนไม่มีที่สิ้นสุดเราก็ยังไม่หยุดที่จะค้นหาสิ่งเหล่านั้นที่เล็กกว่าสิ่งที่เล็กที่สุดใช่ไหม?

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

ดังนั้นฉันต้องการปรับให้เหมาะสมสำหรับการใช้งาน RAM ต่ำ, การใช้งาน CPU ต่ำ ฯลฯ เมื่อเขียนโปรแกรม AI ฉันทำ feedforward โดยใช้พันธุกรรมขั้นพื้นฐานใน C เท่านั้น แต่เครือข่ายประสาทขั้นสูงที่ฉันเขียนใน C ++ (เนื่องจากความง่ายในการใช้ "std :: vector name;" ดังนั้นฉันจึงเขียน cvector.c ของฉันเอง: https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 & ดีบัก: https://pastebin.com/kcGD8Fzf - คอมไพล์ด้วย gcc -o debug.c cvector.c) ที่จริงช่วย ALOT ในการแสวงหาการเพิ่มประสิทธิภาพการใช้งาน CPU (และรันไทม์โดยรวม) เมื่อสร้างเครือข่ายประสาทเทียมที่ดีที่สุด

หวังว่ามันจะช่วย

แก้ไข: ดังนั้นฉันจึงมีความรู้สึกหนึ่งที่เห็นตรงกันข้ามกับสิ่งที่ AlexPnt เห็นเมื่อมันมาถึงการสำรวจสิ่งที่เป็นไปได้ภายในขอบเขตของ "ตัวตน"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.