Mengapa Python bahasa populer di bidang AI?

48

Pertama-tama, saya seorang pemula yang mempelajari AI dan ini bukan pertanyaan yang berorientasi opini atau satu untuk membandingkan bahasa pemrograman. Saya tidak menyiratkan bahwa Python adalah bahasa terbaik. Tetapi kenyataannya adalah bahwa sebagian besar kerangka kerja AI yang terkenal memiliki dukungan utama untuk Python. Mereka bahkan dapat didukung multi bahasa, misalnya, TensorFlow yang mendukung Python, C ++ atau CNTK dari Microsoft yang mendukung C # dan C ++, tetapi yang paling banyak digunakan adalah Python (maksud saya lebih banyak dokumentasi, contoh, komunitas yang lebih besar, dukungan dll). Bahkan jika Anda memilih C # (dikembangkan oleh Microsoft dan bahasa pemrograman utama saya), Anda harus memiliki pengaturan Python.

Saya membaca di forum lain bahwa Python lebih disukai untuk AI karena kodenya disederhanakan dan lebih bersih, bagus untuk prototyping cepat.

Saya sedang menonton film dengan tema AI (Ex_Machina). Dalam beberapa adegan, karakter utama meretas antarmuka otomatisasi rumah. Tebak bahasa apa yang ada di tempat kejadian? Python.

Jadi apa masalahnya dengan Python?

Mengapa ada hubungan yang berkembang antara Python dan AI.

Douglas Ferreira
sumber
Hanya perlu diingat bahwa representasi bahasa pemrograman dalam film biasanya tidak terkait dengan kehidupan nyata! Apa pun yang tampak seperti gobbledegook samar untuk orang awam biasanya baik-baik saja ...
Oliver Mason
Jika C # adalah bahasa pemrograman utama Anda, Anda mungkin tertarik pada scisharpstack.org
henon

Jawaban:

33

Python hadir dengan sejumlah besar pustaka inbuilt. Banyak perpustakaan untuk Kecerdasan Buatan dan Pembelajaran Mesin. Beberapa perpustakaan adalah Tensorflow (yang merupakan perpustakaan jaringan saraf tingkat tinggi), scikit-belajar (untuk penambangan data, analisis data dan pembelajaran mesin), pylearn2 (lebih fleksibel daripada scikit-belajar), dll. Daftar terus berjalan dan tidak pernah berakhir.

Anda dapat menemukan beberapa perpustakaan di sini .

Python memiliki implementasi yang mudah untuk OpenCV. Apa yang menjadikan Python favorit bagi semua orang adalah penerapannya yang kuat dan mudah.
Untuk bahasa lain, siswa dan peneliti perlu mengenal bahasa sebelum masuk ke ML atau AI dengan bahasa itu. Ini tidak terjadi dengan python. Bahkan seorang programmer dengan pengetahuan yang sangat dasar dapat dengan mudah menangani python. Selain itu, waktu yang dihabiskan seseorang untuk menulis dan men-debug kode dengan python jauh lebih sedikit jika dibandingkan dengan C, C ++ atau Java. Inilah yang diinginkan oleh para siswa AI dan ML. Mereka tidak ingin menghabiskan waktu untuk debugging kode untuk kesalahan sintaksis, mereka ingin menghabiskan lebih banyak waktu pada algoritma dan heuristik yang terkait dengan AI dan ML .
Bukan hanya perpustakaan tetapi tutorial mereka, penanganan antarmuka mudah tersedia online . Orang-orang membangun perpustakaan mereka sendiri dan mengunggahnya di GitHub atau tempat lain untuk digunakan oleh orang lain.

Semua fitur ini membuat Python cocok untuk mereka.

Ugnes
sumber
11
"Mereka tidak ingin menghabiskan waktu debugging kode untuk kesalahan sintaks" - Apakah ada programmer yang mau melakukan ini? Apakah Python languge terbaik untuk semuanya? Saya tidak yakin.
Frank Puffer
Pengorbanan tak berujung di semua bidang ini: apa yang dimiliki python dalam kesederhanaan / dibangun di perpustakaan dapat hilang dalam hal-hal seperti kecepatan, penggunaan memori dll. Agak seperti kendaraan - mobil otomatis sederhana mudah dipelajari untuk dikendarai dan berkeliling kota tetapi tidak akan membuat Anda jauh dalam balapan vs mobil balap, pesawat atau kapal induk. Hanya dapat mencoba dan memilih alat terbaik untuk masalah ini.
Philip
24

Praktis semua kerangka kerja pembelajaran dalam yang paling populer dan banyak digunakan diimplementasikan dalam Python di permukaan dan C / C ++ di bawah tenda.

Saya pikir alasan utama adalah bahwa Python banyak digunakan dalam komunitas ilmiah dan penelitian, karena mudah untuk bereksperimen dengan ide-ide baru dan prototipe kode dengan cepat dalam bahasa dengan sintaks minimal seperti Python.

Apalagi mungkin ada alasan lain. Seperti yang bisa saya lihat, sebagian besar kursus online yang terlalu banyak membahas tentang AI mendorong Python karena mudah bagi programmer pemula. AI adalah kata pemasaran baru untuk menjual kursus pemrograman. (Menyebutkan AI dapat menjual kursus pemrograman untuk anak-anak yang ingin membangun HAL 3000, tetapi bahkan tidak dapat menulis Hello World atau menjatuhkan garis tren ke grafik Excel. :)

akopacsi
sumber
4
"....... sebagian besar kursus online berlebihan tentang AI mendorong Python karena itu mudah bagi programmer pemula. AI adalah kata pemasaran baru untuk menjual kursus pemrograman ..." ---- Poin bagus . Tidak bisa lebih setuju.
Emran Hussain
5

Python memiliki perpustakaan standar dalam pengembangan, dan beberapa untuk AI. Ini memiliki sintaks intuitif, aliran kontrol dasar, dan struktur data. Ini juga mendukung run-time interpretif, tanpa bahasa kompiler standar. Ini membuat Python sangat berguna untuk membuat prototipe algoritma untuk AI.

Epsilekt
sumber
Poin bagus tentang kemampuan interpretasi Python. Sepertinya fleksibilitas dan kecepatan pengembangan sangat disukai daripada "tenaga kuda" yang lebih besar dari bahasa yang dikompilasi.
DukeZhou
5

Apa yang menarik saya ke Python untuk pekerjaan analisis saya adalah "setumpuk" alat yang tersedia karena dirancang sebagai bahasa tujuan umum vs. R sebagai bahasa domain spesifik. Analisis data aktual hanya bagian dari cerita, dan Python memiliki alat yang kaya dan bahasa berfitur lengkap yang bersih untuk mendapatkan dari awal hingga akhir dalam satu bahasa (meskipun menggunakan pembungkus C / Fortran).

Di ujung depan, pekerjaan saya biasanya dimulai dengan mendapatkan data dari berbagai sumber, termasuk database, file dalam berbagai format, atau pengikisan web. Dukungan Python untuk ini bagus dan sebagian besar basis data atau format data umum memiliki pustaka yang solid dan terpelihara dengan baik untuk antarmuka. R tampaknya berbagi kekayaan umum untuk data I / O, meskipun untuk FITS paket R tampaknya tidak sedang dalam pengembangan aktif (tidak ada rilis FITSio dalam 2,5 tahun?). Banyak tahap pekerjaan berikutnya biasanya terjadi pada tahap pengorganisasian data dan melakukan pemrosesan berbasis pipa dengan banyak interaksi tingkat sistem.

Di bagian belakang, Anda harus dapat menyajikan kumpulan data besar dengan cara yang nyata, dan bagi saya, ini biasanya berarti menghasilkan halaman web. Untuk dua proyek saya menulis aplikasi web Django yang signifikan untuk memeriksa hasil proyek survei Chandra besar. Ini termasuk banyak pengikisan (katalog multiwavelength) dan sebagainya. Ini hanya digunakan secara internal untuk menavigasi set data dan membantu dalam pembuatan katalog sumber, tetapi mereka sangat berharga dalam keseluruhan proyek.

Pindah ke fungsionalitas khusus astronomi untuk analisis, tampaknya jelas bahwa komunitas ini kuat di belakang Python. Ini terlihat pada kedalaman paket yang tersedia dan tingkat kegiatan pengembangan, baik di tingkat individu maupun kelembagaan ( http://www.astropython.org/resources ). Mengingat tingkat infrastruktur yang tersedia dan dalam pekerjaan ini, saya pikir masuk akal untuk mengarahkan upaya untuk port alat statistik R yang paling berguna untuk astronomi ke Python. Ini akan melengkapi kemampuan saat ini untuk memanggil fungsi R dari Python melalui rpy2.Jika Anda tertarik, saya sangat menyarankan Anda membaca artikel ini, ini dia pertanyaan tentang membandingkan bahasa pemrograman https://diceus.com/what-technology- is-b ... nd-java-r / Saya harap ini membantu. Semoga Sukses

William Nickson
sumber
3

Python memiliki perpustakaan yang kaya, juga berorientasi objek, mudah diprogram. Itu dapat juga digunakan sebagai bahasa frontend. Itu sebabnya digunakan dalam kecerdasan buatan. Selain AI, ini juga digunakan dalam pembelajaran mesin, komputasi lunak, pemrograman NLP dan juga digunakan sebagai skrip web atau dalam peretasan Etis.

Rocx En Ruff
sumber
Ini jawaban yang bagus, karena Python memang bahasa pemrograman nomor satu terutama untuk skrip web. Pada awalnya, saya takut Anda bisa menjelaskan kepada dunia, bahwa AutoIt adalah bahasa scripting yang sempurna karena digunakan untuk penulisan Aimbot.
Manuel Rodriguez
2

Itu karena python adalah bahasa pemrograman berorientasi objek scripting modern yang memiliki gaya sintaksis. Berlawanan dengan bahasa pemrograman struktural seperti java dan C ++, sifat skripnya memungkinkan programmer untuk menguji hipotesisnya dengan sangat cepat. Selain itu, ada banyak perpustakaan pembelajaran mesin sumber terbuka (termasuk scikit-belajar dan Keras) yang memperluas penggunaan python di bidang AI.

pythinker
sumber
2

Ini adalah campuran dari banyak faktor yang bersama-sama menjadikannya pilihan yang sangat baik untuk mengembangkan sistem kognitif.

  • Pengembangan cepat
  • Pembuatan prototipe cepat
  • Sintaksinya ramah dengan tingkat keterbacaan yang hampir sama dengan manusia
  • Beragam perpustakaan standar dan multi-paradigma
  • Ini dapat digunakan sebagai frontend untuk performant backends yang ditulis dalam bahasa yang dikompilasi seperti C / C ++.

Pustaka numerik performan yang ada, seperti numpy dan lainnya sudah melakukan pekerjaan massal intensif untuk Anda yang memungkinkan Anda lebih fokus pada aspek arsitektur sistem Anda.

Selain itu, ada komunitas dan ekosistem yang sangat besar di sekitar Python, yang menghasilkan beragam perangkat yang tersedia yang berorientasi pada berbagai jenis tugas.

AlexPnt
sumber
0

Saya sebenarnya lebih suka C untuk pembelajaran mesin. Karena seperti dalam kehidupan, di dunia seperti yang kita kenal, terdiri dari "gerbang logika" yang tidak pernah berakhir (yang pada dasarnya seperti membalik koin - AKAN ada 2 hasil yang mungkin - tidak termasuk yang ketiga: mendarat di samping!). Yang juga berarti bahwa sementara alam semesta tampaknya tidak pernah berakhir, kita masih tidak pernah berhenti menemukan hal-hal yang bahkan lebih kecil daripada yang terkecil, kan?

Jadi ... Untuk memasukkannya ke dalam konteks ketika memprogram C, saya dapat mengontrol penggunaan memori secara lebih efisien dengan mengkode cuplikan yang lebih kecil yang digabungkan, untuk selalu membentuk "fragmen kode" yang lebih kecil & efisien, yang membentuk apa yang akan kita sebut " sel "dalam biologi (itu mendapat fungsi yang terukur, dan memiliki beberapa sifat yang telah ditetapkan sebelumnya).

Jadi, saya ingin mengoptimalkan untuk penggunaan RAM rendah, penggunaan CPU rendah dll saat pemrograman AI. Saya hanya melakukan feedforward dengan algo genetik dasar dalam C, tetapi jaringan saraf berulang yang lebih maju saya tulis dalam C ++ (HANYA karena kesederhanaan menggunakan "std :: vector name;", jadi saya menulis cvector.c saya sendiri: https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 & debug: https://pastebin.com/kcGD8Fzf - kompilasi dengan gcc -o debug debug.c cvector.c). Itu benar-benar membantu ALOT dalam upaya mengoptimalkan penggunaan CPU (dan runtime keseluruhan) ketika membuat jaringan saraf yang dioptimalkan.

Semoga ini bisa membantu.

EDIT: Jadi saya dalam satu hal benar-benar melihat kebalikan dari apa yang dilihat AlexPnt, ketika datang untuk mengeksplorasi apa yang mungkin dalam ranah "diri".

anonusr
sumber