Python AI alanında neden bu kadar popüler bir dil?


47

Her şeyden önce, AI eğitimine yeni başlayan bir öğrenciyim ve bu, programlama dillerini karşılaştırmak için kanaat odaklı bir soru ya da soru değil. Bunun en iyi dil olduğunu söylemiyorum. Ancak gerçek, ünlü AI çerçevelerinin çoğunun Python için birincil desteğe sahip olmasıdır. Hatta çok dilli desteklenebilirler, örneğin Microsoft'tan Python, C ++ veya CNTK'yi destekleyen TensorFlow, C # ve C ++ 'u destekleyen ancak en çok kullanılan Python'dur (daha fazla belge, örnek, daha büyük topluluk, destek vb.). C # (Microsoft ve benim birincil programlama dilim tarafından geliştirilen) seçmiş olsanız bile, Python ortamını ayarlamanız gerekir.

Diğer forumlarda Python'un AI için tercih edildiğini okudum çünkü kod basitleştirilmiş ve temiz, hızlı prototipleme için iyi.

AI tematik (Ex_Machina) ile bir film izliyordum. Bazı sahnelerde, ana karakter ev otomasyonunun arayüzünü kırmaktadır. Tahmin et, hangi dil sahnede kaldı? Python.

Peki, asıl mesele nedir, Python ve AI arasındaki ilişki?


Sadece programlama dillerinin filmlerdeki temsilinin genellikle gerçek hayatla ilgili olmadığını unutmayın. İnsanları yatırmak için şifreli gobbledegook gibi görünen her şey genellikle iyidir ...
Oliver Mason

Eğer C #, ana programlama dilinizse
henon, 20

Yanıtlar:


32

Python, çok sayıda yerleşik kütüphaneyle birlikte gelir. Kütüphanelerin çoğu Yapay Zeka ve Makine Öğrenmesi içindir. Kütüphanelerden bazıları Tensorflow (yüksek seviye sinir ağı kütüphanesi), scikit-öğren (veri madenciliği, veri analizi ve makine öğrenmesi için), pylearn2 (scikit-öğrenmekten daha esnek) vb. biter.

Bazı kütüphaneleri burada bulabilirsiniz .

Python, OpenCV için kolay bir uygulamaya sahiptir. Python'u herkes için favori yapan şey güçlü ve kolay uygulanmasıdır.
Diğer diller için, öğrencilerin ve araştırmacıların bu dille ML veya AI'ye girmeden önce dili bilmeleri gerekir. Bu python ile durum böyle değil. Çok temel bilgiye sahip bir programcı bile pitonu kolayca idare edebilir. Bunun dışında, birisinin python kod yazarken ve hata ayıklamak için harcadığı zaman C, C ++ veya Java ile karşılaştırıldığında çok daha azdır. Bu tam olarak AI ve ML öğrencilerinin istediği şey. Sözdizimi hataları için kodun hata ayıklaması için zaman harcamak istemiyorlar, algoritmaları ve yapay zeka ile ilgili sezgilerle daha fazla zaman geçirmek istiyorlar .
Yalnızca kütüphaneler değil, öğreticiler, arayüzlerin kullanımı çevrimiçi olarak kolayca erişilebilir durumdadır . İnsanlar kendi kütüphanelerini oluşturur ve başkaları tarafından kullanılmak üzere GitHub'a veya başka bir yere yüklerler.

Tüm bu özellikler Python'u kendileri için uygun hale getirir.


10
"Sözdizimi hataları için kodun hata ayıklaması için zaman harcamak istemiyorlar" - Herhangi bir programcı bunu yapmak istiyor mu? Python her şey için en uygun dildir mi? İkna olmadım.
Frank Puffer

24

Pratik olarak en popüler ve yaygın olarak kullanılan derin öğrenme çerçevelerinin tümü yüzeyde Python'da ve başlık altında C / C ++ 'da uygulanmaktadır.

Bence asıl sebep, Python'un bilimsel ve araştırma topluluklarında yaygın bir şekilde kullanılmasının nedeni, Python gibi en az sözdizimi olan bir dilde hızlıca yeni fikirler ve kod prototipleriyle denemenin kolay olmasıdır.

Üstelik başka bir sebep olabilir. Görebildiğim gibi, AI'daki aşırı eğitimli çevrimiçi kursların çoğu Python'u zorluyor çünkü yeni başlayanlar için kolay. AI, programlama kursları satan yeni bir pazarlama sözcüğüdür. (AI'dan bahsetmek, HAL 3000'i kurmak isteyen çocuklara programlama kursları satabilir, ancak bir Hello Dünyası yazamaz ya da bir Excel grafiğine bir eğilim çizgisi bırakamaz. :)


4
“....... AI'daki aşırı eğitimli çevrimiçi kursların çoğu Python'u zorluyor çünkü yeni başlayanlar için kolay bir program. AI, programlama kursları satmak için yeni pazarlamanın sıcak sözcüğü ...” ---- İyi nokta . Daha fazla katılıyorum.
Emran Hussain

5

Python'un geliştirilmesinde standart bir kütüphanesi ve AI için birkaçı var. Sezgisel bir sözdizimine, temel kontrol akışına ve veri yapılarına sahiptir. Ayrıca standart derleyici dilleri olmadan, yorumlayıcı çalışma zamanını da destekler. Bu Python'u AI için prototip algoritmaları için özellikle faydalı kılar.


Python'un yorumlayıcı yeteneği hakkında güzel bir nokta. Esneklik ve geliştirme hızı derlenmiş dillerin daha büyük "beygir gücü" nden çokça tercih ediliyor gibi görünüyor.
DukeZhou

5

Analiz çalışmalarım için beni Python'a çeken şey, genel amaçlı bir dil olarak tasarlanan ve R'ye bir alana özgü dil olarak tasarlanan araçların "tam yığını" dır. Gerçek veri analizi, hikayenin sadece bir kısmıdır ve Python'un başından sonuna kadar tek bir dilde (her ne kadar C / Fortran sarmalayıcıların kullanılması) kullanılabilecek zengin araçları ve temiz, tam özellikli bir dili vardır.

Ön uçta, çalışmalarım genellikle veritabanları, çeşitli biçimlerde dosyalar veya web kazıma dahil olmak üzere çeşitli kaynaklardan veri almakla başlar. Bunun için Python desteği iyidir ve çoğu veritabanı veya ortak veri formatları, arayüz için kullanılabilen sağlam ve bakımlı bir kütüphaneye sahiptir. R, veri G / Ç için genel bir zenginlik paylaşıyor gibi gözükse de, FITS için R paketi aktif olarak geliştirilmiyor gibi görünüyor (2,5 yılda FITSio'nun serbest bırakılmaması?). Bir sonraki çalışma aşamasının çoğu tipik olarak verilerin düzenlenmesi ve birçok sistem düzeyinde etkileşimle boru hattı tabanlı işlem yapılması aşamasında gerçekleşir.

Arka tarafta, büyük veri kümelerini somut bir şekilde sunabilmeniz gerekir ve benim için bu genellikle web sayfaları oluşturmak anlamına gelir. İki proje için büyük Chandra anketi projelerinin sonuçlarını incelemek için önemli Django web uygulamaları yazdım. Bu, çok fazla kazıma (çok dalga boylu kataloglar) vb. İçeriyordu. Bunlar sadece veri setinde gezinmek ve kaynak katalog oluşturmada yardımcı olmak için dahili olarak kullanıldı, ancak genel projede çok değerliydi.

Analiz için astronomiye özgü işlevlere doğru ilerlerken, topluluğun Python'un tamamen arkasında olduğu açıktır. Bu, hem bireysel hem de kurumsal düzeyde mevcut paketlerin derinliği ve gelişim aktivitesi düzeyinde görülür ( http://www.astropython.org/resources ). Mevcut ve çalışmadaki bu altyapı seviyesi göz önüne alındığında, astronomi için en faydalı R istatistiksel araçlarının Python'a aktarılması yönündeki çabanın doğru olduğunu düşünüyorum. Bu, şiddetle bu makaleyi okumanızı ilgi tavsiye edilir rpy2.If aracılığıyla Python gelen çağrı R işlevlerine akım kapasitesini tamamlayıcı olacaktır, işte burada programlama dilleri karşılaştırarak bir sorudur https://diceus.com/what-technology- is-b ... nd-java-r / Ben yardımcı olur umarım. İyi Şanslar


3

Python zengin kütüphaneye sahiptir, aynı zamanda nesne yönelimli, programlaması kolaydır. Ayrıca ön dil olarak da kullanılabilir. Yapay zekada kullanılmasının nedeni budur. AI yerine, makine öğrenmede, yumuşak hesaplamada, NLP programlamasında ve web komut dosyası olarak veya Etik hack'te de kullanılır.


Bu harika bir cevap, çünkü Python, özellikle web komut dosyası için gerçekten bir numaralı programlama dilidir. İlk başta, dünyaya açıklayabileceğinizden korkuyordum, AutoIt'ın mükemmel bir betik dili olduğu için Aimbot yazımı için kullanılıyordu.
Manuel Rodriguez

2

Bunun nedeni, python'un şık bir sözdizimine sahip, modern bir betik nesneye yönelik programlama dili olmasıdır. Java ve C ++ gibi yapısal programlama dillerinin aksine, kodlama niteliği programcının hipotezini çok hızlı bir şekilde test etmesini sağlar. Ayrıca, AI alanında python kullanımını genişleten çok sayıda açık kaynaklı makine öğrenme kütüphanesi (scikit-learn ve Keras dahil) vardır.


2

Birlikte bilişsel sistemler geliştirmek için çok iyi bir seçenek haline getiren birçok faktörün bir karışımı.

  • Hızlı gelişme
  • Hızlı prototipleme
  • Neredeyse insan düzeyinde okunabilirliğe sahip dostça sözdizimi
  • Farklı standart kütüphane ve çoklu paradigma
  • C / C ++ gibi derlenmiş dillerde yazılmış performans arka uçları için ön uç olarak kullanılabilir.

Numpy ve diğerleri gibi varolan performanssal sayısal kütüphaneler, sisteminizin mimari yönlerine daha fazla odaklanmanızı sağlayan yoğun dökme işini zaten yapıyor.

Ayrıca, Python çevresinde çok çeşitli bir topluluk ve ekosistem vardır ve bu da farklı görevlere yönelik çeşitli araçlar sunar.


0

Aslında makine öğrenmesi için C'yi tercih ederim. Çünkü hayattaki gibi, bildiğimiz dünyada, asla bitmeyen "mantık geçitlerinden" (temelde bir madeni parayı çevirmek gibi bir şey) oluşur - 2 olası sonuç olacaktır - üçüncüsü saymamak: yandan inmek!). Bu aynı zamanda evren hiç bitmeyen gibi gözükse de, en küçük şeyden bile daha küçük olan şeyleri bulmayı asla bırakmayacağız, değil mi?

Yani ... C'yi programlarken bir bağlamda koymak için, bir araya getirilen küçük parçacıkları kodlayarak, her zaman daha küçük ve verimli "kod parçaları" olarak adlandırdığımız, "ne diyeceğimizi" kodlayan bellek kullanımını daha verimli bir şekilde kontrol edebilirim. hücrelerde "biyolojide (ölçülebilir bir işlevi var ve bazı önceden belirlenmiş özelliklere sahip).

Bu yüzden AI programlamada düşük RAM kullanımı, düşük CPU kullanımı vb. İçin optimizasyon yapmaktan hoşlanıyorum. Ben sadece C'de basit bir genetik algo ile ileriye dönük işler yaptım, fakat C ++ 'da yazdığım daha gelişmiş tekrarlayan sinir ağları (SADECE "std :: vector name"; https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 & debug: https://pastebin.com/kcGD8Fzf - gcc -o hata ayıklama debug.c cvector.c ile derleyin). Bu aslında optimize edilmiş sinir ağları oluştururken CPU kullanımı (ve genel çalışma zamanı) optimizasyonu arayışı içinde ALOT yardımcı oldu.

Umarım yardımcı olur.

EDIT: Bir anlamda, AlexPnt’in gördüklerinin tam tersini görüyorum, bu bir “benlik” dünyasında neyin mümkün olduğunu keşfetmeye gelince.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.