Yapay zeka uygulayıcıları derin öğrenme için bir açık kaynak çerçevesini nasıl seçmelidirSert İnovasyon Açık Kursu

Editörün notu: Bu makalenin içeriği, Microsoft'un ABD merkezindeki makine öğrenimi bilimcisi Dr. Peng Hesen'in Leifeng.com Hard Innovation Open Class'taki paylaşımından alınmıştır ve Dr. Peng Hesen tarafından organize edilmiş ve yazılmıştır.

Tıpkı programlama dilleri gibi, derin öğrenme açık kaynak çerçevelerinin de kendi avantajları ve dezavantajları ve uygulanabilir senaryoları vardır, peki yapay zeka uygulayıcıları derin öğrenmeyi hedeflenen bir şekilde oynamak için bu platformları nasıl seçmeli?

Bu açık sınıf, art arda Google, Amazon ve Microsoft'ta çalışmış bir makine öğrenimi bilimcisi olan Dr. Peng Hesen'i herkese "MXNet yanıyor, AI uygulayıcıları derin öğrenme için açık kaynak çerçevesini nasıl seçmeli" hakkında bilgi vermeye davet etti. Dr. Peng Hesen, bu üç dev arasında derin öğrenmeyi yaygınlaştırma sürecine tanık oldu ve derinden katıldı.

Misafir tanıtımı

Hesen Peng, Emory Üniversitesi'nden İstatistik Doktorası. Şu anda Microsoft'un ABD merkezinde makine öğrenimi bilimcisi ve Microsoft'un Bing Reklam Departmanı uygulamasında kıdemli araştırmacıdır.Şu anki araştırma yönü, reklam ve öneri sistemlerinde doğal dil işleme ve makine öğrenimi uygulamasıdır. Ayrıca Dr. Peng Hesen, Amazon'daki en genç makine öğrenimi araştırmacısıydı ve daha önce Google Ekonometri Departmanında ve Çin Bilimler Akademisi'nde çalıştı.

Derin öğrenme çok popüler bir alandır.Artık piyasada çok sayıda mükemmel platform var.Sektöre girerken herkesin düşündüğüne inanıyorum, bu kadar çok platformu nasıl seçmeliyiz?

Genel değerlendirmelerde dikkate alınmayan şeyler olabilecek iki noktaya değineyim önce:

  • Biri, derin öğrenmenin çok ilginç ve çok önemli bir yan ürünü olan görüntü hesaplama ve sembolik türetmedir.

  • Diğeri, derin öğrenme sistemlerinin gelecekteki gelişimi ve kullanıcıların özgürlüğü ile doğrudan ilgili olan derin öğrenme çerçevesinin elle tutulur derinliğidir.

Bu noktaların her ikisi de hem yeni başlayanlar hem de uygulayıcılar için çok önemlidir ve bunları daha sonra ayrıntılı olarak anlatacağım.

Her şeyden önce, MXNet'i Amazon tarafından yakın zamanda onayladığı için tebrik etmek istiyorum.MXNet platformunun kendisi çok iyidir ve birçok mükemmel özelliğe sahiptir: çok düğümlü model eğitimi gibi, şu anda bildiğim en kapsamlı çoklu dil desteğidir. . Ayrıca MXNet'in performansının aşağıdaki tartışmada bahsedeceğimiz emsal platformlardan çok daha yüksek olabileceğine dair yorumlar da var. Şimdi asıl konuya gelelim, derin öğrenme için açık kaynak platformunu nasıl seçeceğiz ve referans standardı ne olmalı?

1. Derin öğrenme açık kaynak platformları için beş referans standardı

Bugün tartışılan platformlar (veya yazılımlar) şunları içerir: Caffe, Torch, MXNet, CNTK, Theano, TensorFlow, Keras.

Derin öğrenme platformu nasıl seçilir? Bu düşünceleri aşağıda özetliyorum. Kişiden kişiye ve projeden projeye değişir. Belki görüntü işleme, doğal dil işleme ya da kantitatif finans yapıyorsunuzdur.Farklı ihtiyaçlarınıza göre platform seçimi farklı olabilir.

Kriter 1: Mevcut programlama platformları ve becerileri ile entegrasyon kolaylığı

Akademik araştırma veya mühendislik geliştirme olsun, bir derin öğrenme projesi başlatmadan önce genellikle birçok geliştirme deneyimi ve kaynağı birikmiştir. Belki favori programlama diliniz zaten kurulmuştur veya verileriniz zaten belirli bir biçimde depolanmıştır veya modelin gereksinimleri (gecikme vb.) farklıdır. Kriter 1, bir derin öğrenme platformunu mevcut kaynaklarla entegre etmenin ne kadar kolay olduğunu değerlendirir. Burada aşağıdaki soruları cevaplayacağız:

  • Sadece bunun için yeni bir dil öğrenmeniz mi gerekiyor?

  • Mevcut programlama dilleriyle birleştirilebilir mi?

Kriter 2: İlgili makine öğrenimi ve veri işleme ekosistemleriyle entegrasyonun sıkılığı

Derin öğrenme araştırmamız her zaman çeşitli veri işleme, görselleştirme, istatistiksel çıkarım ve diğer yazılım paketlerinden ayrılamaz. Burada şu soruyu cevaplamamız gerekiyor:

  • Modellemeden önce uygun veri ön işleme araçları var mı? Elbette çoğu platform kendi görsel, metin ve diğer ön işleme araçlarıyla birlikte gelir.

  • Modellemeden sonra, görselleştirme, istatistiksel çıkarım, veri analizi gibi sonuçların analizi için uygun araçlar var mı?

Kriter 3: Bu platform aracılığıyla derin öğrenmenin yanı sıra başka neler yapabilirsiniz?

Yukarıda bahsedilen platformların çoğu, derin öğrenme araştırmaları ve uygulamaları için özel olarak geliştirilmiştir.Birçok platform, dağıtılmış bilgi işlem, GPU ve diğer mimariler için güçlü optimizasyonlara sahiptir.Bu platformlar/yazılımlar başka şeyler için kullanılabilir mi?

Örneğin, bazı derin öğrenme yazılımları ikinci dereceden optimizasyonu çözmek için kullanılabilir; bazı derin öğrenme platformları kolayca genişletilebilir ve pekiştirmeli öğrenme uygulamalarında kullanılabilir. Hangi platformlarda bu özellik var?

Bu sorun, günümüzün derin öğrenme platformlarının bir yönü olan görüntü hesaplama ve otomatik türetme ile ilgili olabilir.

Kriter 4: Veri hacmi, donanım gereksinimleri ve destek

Tabii ki, farklı uygulama senaryolarında derin öğrenme için veri miktarı farklıdır, bu da bizi dağıtılmış hesaplama ve çoklu GPU hesaplamayı düşünmeye yönlendirir. Örneğin, bilgisayarda görüntü işleme konusunda araştırma yapan kişilerin, yürütme için genellikle görüntü dosyalarını ve bilgi işlem görevlerini birden çok bilgisayar düğümüne bölmeleri gerekir.

Şu anda, her derin öğrenme platformu hızla gelişiyor ve dağıtılmış bilgi işlem gibi senaryolar için her platformun desteği de sürekli gelişiyor. Bugün bahsedilen şeylerden bazıları birkaç ay içinde artık geçerli olmayabilir.

Kriter 5: Derin öğrenme platformunun olgunluğu

Olgunluk daha sübjektif bir faktördür ve kişisel olarak düşündüğüm faktörler şunları içerir: topluluğun ne kadar aktif olduğu; geliştiricilerle iletişim kurmanın ne kadar kolay olduğu; uygulamanın mevcut momentumu.

5 referans standarttan bahsettikten sonra, her bir derin öğrenme platformunu değerlendirmek için yukarıdaki standartları kullanalım:

2. Derin Öğrenme Platformlarının Değerlendirilmesi

Karar 1: Mevcut programlama platformları ve becerileri ile entegrasyon kolaylığı

Kriter 1, bir derin öğrenme platformunu mevcut kaynaklarla entegre etmenin ne kadar kolay olduğunu değerlendirir. Burada şu soruyu cevaplayacağız: Bunun için özel olarak yeni bir dil öğrenmem gerekiyor mu? Mevcut programlama dilleriyle birleştirilebilir mi?

Bu sorunun kuru malları aşağıdaki tablodadır. Burada her bir derin öğrenme platformunun altında yatan dile ve kullanıcı diline göre özetliyoruz ve aşağıdaki tabloyu alabiliyoruz.

Bunların arasında Keras, alt katman olarak Theano ve TensorFlow aracılığıyla modellenmiştir.

Bu eğilimi görebiliriz:

  • Derin öğrenmenin altında yatan dil çoğunlukla yüksek işletim verimliliği sağlayabilen C++/C'dir.

  • İşletim dili genellikle gerçeğe yakındır.Python'un gelecekte derin öğrenme için işletim platformu dili olduğu sonucuna varabiliriz.Microsoft, CNTK 2.0'da Python için destek ekledi.

  • Tabii ki, ağı yapılandırabilen ve modeli betikler aracılığıyla eğitebilen birçok platform var.

Yapı açısından Python, derin öğrenme modellemesi için temel dil olarak belirlenebilir. En sevdiğiniz programlama dili Python ise, tebrikler, çoğu platform teknolojinizle sorunsuz bir şekilde çalışır. Java ise endişelenmeyin, birçok platformda Java desteği de vardır.Deeplearning4J ayrıca yerel bir Java derin öğrenme platformudur.

Kriter 2: İlgili makine öğrenimi ve veri işleme ekosistemleriyle entegrasyonun sıkılığı

Burada şimdi ana veri işleme araçlarından bahsetmek istiyoruz.Daha kapsamlı veri analiz araçları arasında R ve ilgili ekolojisi, Python ve ilgili ekolojisi ve daha az kategoride Julia ve ilgili ekolojisi bulunur.

Derin öğrenme modelleme gibi görevleri tamamladıktan sonra ekoloji ile entegrasyon da özellikle önemlidir.

Yukarıdakilerin Python, R ve Keras ekolojisi (TensorFlow, Theano) ile yakından entegre olduğunu görebiliriz, CNTK, MXNet, Caffe, vb. birçok avantaja sahiptir.

Aynı zamanda, Caffe, veri gözlemi için de büyük avantajlara sahip olan çok sayıda görüntü işleme paketine sahiptir.

Kriter 3: Bu platform aracılığıyla derin öğrenmenin yanı sıra başka neler yapabilirsiniz?

Aşağıdaki resim bu açık sınıfın özüdür:

Aslında derin öğrenme platformlarının yaratım ve tasarımdaki odak noktası farklıdır.Derin öğrenme platformlarını işlevlerine göre yukarıdaki altı bölüme ayırabiliriz:

CPU+GPU kontrolü, iletişim: Bu en düşük seviye, derin öğrenme hesaplamasının temel seviyesidir.

  • Bellek ve değişken yönetimi katmanı: Bu katman, vektörleri ve matrisleri tanımlamak gibi belirli tekli ara değişkenlerin tanımını içerir ve bellek alanı tahsis eder.

  • Temel işlem katmanı: Bu katman temel olarak toplama, çıkarma, çarpma ve bölme, sinüs, kosinüs fonksiyonları, maksimum ve minimum değerler gibi temel aritmetik işlemleri içerir.

  • Temel basit işlev:

sigmoid, ReLU vb. gibi çeşitli etkinleştirme işlevlerini içerir.

Ayrıca bir türetme modülü içerir

  • Yoğun Katman, Evrişim Katmanı (evrişim katmanı), LSTM ve diğer ortak modüller dahil olmak üzere sinir ağı temel modülleri.

  • Son katman, tüm sinir ağı modüllerinin entegrasyonu ve optimizasyonudur.

Birçok makine öğrenimi platformunun farklı işlevsel odakları vardır ve ben bunları dört kategoriye ayırdım:

1. İlk kategori esas olarak Caffe, Torch, MXNet, CNTK'dır. Derin öğrenme işlevsel platformu. Bu tür platformlar, geliştiricilerin günümüzde derin öğrenmedeki çoğu sorunu çözebilecek derin sinir ağı modellerini hızlı bir şekilde oluşturmalarına ve eğitmeye başlamalarına olanak tanıyan çok eksiksiz temel modüller sağlar. Ancak bu modüller, temeldeki bilgi işlem işlevlerini nadiren doğrudan kullanıcılara sunar.

2. İkinci kategori Keras'a dayanmaktadır. Derin öğrenme soyutlama platformu. Keras'ın kendisi, temeldeki işlemleri koordine etme yeteneğine sahip değildir. Keras, temel işlemleri gerçekleştirmek için TensorFlow veya Theano'ya güvenirken, Keras'ın kendisi, eğitim sırasında sinir ağı modülü soyutlaması ve süreç optimizasyonu sağlar. Kullanıcıların hızlı modellemenin keyfini çıkarmasını sağlar ve favori modüllerini ekleyerek çok uygun ikincil geliştirme yeteneklerine sahiptir.

3. Üçüncü kategori TensorFlow'dur. TensorFlow, kullanıcıların yalnızca temel verilere dokunmasına izin vermekle kalmayıp, aynı zamanda kullanıcıların modellemeyi çok hızlı bir şekilde uygulamasına olanak tanıyan hazır sinir ağı modüllerine sahip olan mevcut platformun güçlü yönlerinden yararlanır. TensorFlow çok iyi bir sınır ötesi platformdur.

4. Dördüncü kategori Theano'dur.Theano, temel işlemlere odaklanan derin öğrenme alanındaki en eski platform yazılımıdır.

Bu nedenle, yukarıdaki resme göre kendi ihtiyaçlarınıza göre platformu seçebilirsiniz:

  • Görev hedefi çok spesifikse ve yalnızca hızlı bir şekilde sonuç almanız gerekiyorsa, o zaman 1. tip bir platform sizin için uygundur.

  • Düşük seviyeli bir geliştirme yapmanız gerekiyorsa ve mevcut modüllerin rahatlığını kaybetmek istemiyorsanız, Tip 2 ve 3 platformları tam size göre.

  • İstatistik, hesaplamalı matematik vb. konularında bir geçmişiniz varsa ve mevcut araçlarla bazı hesaplama geliştirmeleri yapmak istiyorsanız, 3. ve 4. sınıflar tam size göre.

Burada derin öğrenmenin bazı yan ürünlerini tanıtıyorum, daha önemli işlevlerden biri sembolik türetmedir.

Grafik Hesaplama ve Sembolik Türetme: Derin Öğrenmenin Açık Kaynak Topluluğuna Büyük Katkısı

Sorularınız olabilir: Bir derin öğrenme modelini gayet iyi eğitebilirim, neden alt katmana dokunmam gerekiyor?

Burada ilk önce derin öğrenmenin bazı yan ürünlerini tanıtacağım.Daha önemli işlevlerden biri sembolik türetmedir. İngilizce'de sembolik türetme Sembolik Farklılaşmadır ve şu anda mevcut birçok ilgili literatür ve öğretici bulunmaktadır.

Sembolik farklılaşma ne anlama geliyor?

Geçmişte, makine öğrenmesi üzerine araştırma yaptığımızda türev gerekliyse, genellikle amaç fonksiyonunun türevini manuel olarak bulmak gerekliydi. Son zamanlarda, Theano gibi bazı derin öğrenme araçları, geliştiricilerin iş yükünü büyük ölçüde azaltan otomatik sembolik türetmeyi tanıttı.

Tabii ki, MatLab, Mathematica gibi ticari yazılımlar, sembolik hesaplama işlevine uzun yıllar önce sahipti, ancak ticari yazılımlarının sınırlamaları göz önüne alındığında, sembolik hesaplama, makine öğrenimi uygulamalarında yaygın olarak benimsenmedi.

Ağının karmaşıklığı nedeniyle, derin öğrenme, amaç fonksiyonunun çok karmaşık olduğu sorununu çözmek için sembolik türetme yöntemini benimsemelidir. İkinci dereceden optimizasyon gibi derin olmayan diğer öğrenme sorunları da bu derin öğrenme araçlarıyla çözülebilir.

Daha da iyisi, Theano sembolik türetme sonuçları, temel dil haline gelmek ve verimli bir şekilde çalışmak için doğrudan C programları aracılığıyla derlenebilir.

Burada bir Theano örneği veriyoruz:

> > > numpy'yi içe aktar

> > > ithal theano

> > > theano.tensor'u T olarak içe aktar

> > > theano import pp'den

> > > x = T.dscalar('x')

> > > y = x**2

> > > gy = T.grad(y, x)

> > > f = theano.function(, gy)

> > > f(4)

8

Yukarıda, sembolik türetme yöntemiyle y'nin x'e göre türevinin 4 noktasındaki değerini kolayca bulabiliriz.

Kriter 4: Veri hacmi, donanım gereksinimleri ve destek

Çoklu GPU desteği ve çoklu sunucu desteği için yukarıda bahsettiğimiz tüm platformlar görevin başında olduğunu iddia ediyor. Aynı zamanda, belirli bir platformun daha etkili olduğuna dair birçok literatür var. Burada belirli platformların seçimini hepinize bırakıyoruz ve aşağıdaki bilgileri sağlıyoruz:

Önce ne yapmak istediğinizi düşünün. Mevcut derin öğrenme uygulamasında, çok sunuculu eğitim modeline uygulanması gereken sahne genellikle sadece görüntü işlemedir.Doğal dil işleme ise, iş genellikle iyi yapılandırılmış bir sunucuda tamamlanabilir. Veri miktarı büyükse, veri ön işlemesi, tek bir makine tarafından işlenebilecek bir aralığa indirmek için genellikle hadoop gibi araçlar aracılığıyla gerçekleştirilebilir.

Ben daha geleneksel bir insanım ve çocukluğumdan beri çeşitli bilimsel hesaplama yazılımlarını atıp derliyorum. Ana akım literatür artık GPU kullanan tek bir makinenin bir CPU'dan düzinelerce kat daha verimli olabileceği sonucunu görüyor.

Ama aslında bazı problemler var.Linux ortamında, Numpy'yi derlerken, lineer fonksiyon paketini Intel MLK ile değiştirmek, genellikle benzer iyileştirmeler sağlayabilir.

Tabii ki, birçok değerlendirme artık farklı donanım ortamları ve ağ yapılandırmaları altında genellikle farklı sonuçlar alıyor.

Amazon bulut platformunda test edilse bile ağ ortamı, konfigürasyon ve diğer nedenlerle tamamen farklı sonuçlara neden olabilir. Bu nedenle, çeşitli değerlendirmeler için, deneyimlerime dayanarak verilen tavsiye şudur: Bir tuz tanesi ile alın ve kendinize dikkat edin. Daha önce bahsettiğimiz ana araç platformları, artık çoklu GPU ve çok düğümlü model eğitimi için değişen derecelerde desteklere sahipler ve hızla gelişiyorlar.İzleyicilerin ihtiyaçlarına göre tanımlamalarını öneririz.

Kriter 5: Derin öğrenme platformunun olgunluğu

Olgunluk yargıları genellikle özneldir ve sonuçlar çoğunlukla tartışmalıdır. Burada sadece verileri listeliyorum ve nasıl seçileceği herkesin takdirine kalmış.

Burada platformun aktivite seviyesini Github'daki daha popüler sayılara göre değerlendiriyoruz. Bu veriler bu öğleden sonra (2016-11-25) alındı. Her faktör için ilk üç platformu kalın harflerle işaretledik:

  • İlk faktör katkıda bulunanların sayısıdır.Burada katkıda bulunanların tanımı çok geniştir.Github konularında sorunları dile getirenler katkıda bulunanlar olarak sayılır, ancak yine de bir platformun popülaritesinin bir ölçüsü olarak kullanılabilirler. Python'un yerel platformları olduğu üç derin öğrenme platformu olan Keras, Theano ve TensorFlow'un en çok katkıda bulunan platformlar olduğunu görebiliriz.

  • İkinci faktör, bir platformun geliştirme etkinliğini ölçen Çekme İsteklerinin sayısıdır. Görüntü alanındaki benzersiz avantajlarından dolayı olabilecek en yüksek Pull Request'e Caffe'nin sahip olduğunu ve Keras ve Theano'nun da yine listede olduğunu görebiliyoruz.

Ek olarak, bu platformlar uygulama senaryolarına odaklanır:

  • Doğal dil işleme, elbette, CNTK ilk tavsiye edilendir.Microsoft MSR(A) uzun yıllardır doğal dil işlemeye büyük katkılarda bulunmuştur.CNTK'nın birçok geliştiricisi aynı zamanda dağıtılmış bilgi işlem konusunda uzmandır ve kullanılan yöntemler çok benzersizdir. .

  • Elbette çok geniş uygulama ve öğrenim için Keras/TensorFlow/Theano ekosistemi en iyi seçiminiz olabilir.

  • Bilgisayarda görüntü işleme için Caffe en iyi seçiminiz olabilir.

Derin öğrenme platformlarının geleceği hakkında:

  • Microsoft CNTK konusunda çok kararlı ve Python API iyidir.Daha fazla dikkat edebilirsiniz.

  • Bazı insanlar derin öğrenme modellerinin stratejik varlıklar olduğuna ve tekeli önlemek için yerli yazılımların kullanılması gerektiğine inanıyor. Böyle bir sorun için endişelenmenize gerek olduğunu düşünmüyorum.Öncelikle TensorFlow gibi yazılımlar açık kaynak kodludur ve kod incelemesi ile kalitesini kontrol edebilirsiniz. Ek olarak, eğitilen model HDF5 biçiminde kaydedilebilir ve platformlar arasında paylaşılabilir, bu nedenle Google tekeli olma olasılığı çok düşüktür.

  • Gelecekte bir gün, bilgisayar görüntüsü ile ilgili tüm sorunları temelde çok iyi çözebilecek bazı çok güçlü evrişim katmanlarını eğitmeniz çok muhtemeldir.Şu anda, yalnızca bu katmanları çağırmamız gerekiyor.Büyük ölçekli değil evrişimsel katman eğitimi gereklidir. Ayrıca bu evrişim katmanları donanımsallaştırılarak cep telefonu çipimizin küçük bir modülü haline gelebilir, böylece fotoğraflarımız çekildiğinde evrişim işlemi tamamlanmış olur.

Oyun Kontrolü: Movie 2 S-Class Ultimate Hercules Kombinasyonu King Kong ABD Versiyonu Yeniden Boyanmış Yeni Eserler
önceki
Google'daki tıbbi reklamlar nelerdir?
Sonraki
Hawkingin Oscar ödüllü performansıyla gözyaşlarını döktü. Hawking bazen "o benim" olduğunu hissettiğini söyledi.
Seviye-5 ve DMM ekibi yeni bir "Zırhlı Kız" çalışması başlatıyor
DJI çevrenin dışında, inanç hayranları şarj oluyor mu?
Dünyanın kullanmayı sevdiği, ücretsiz kabul ettiği ve asla kaybetmediği bir öğrenim eseri Quizlet iOS Android
Netflix, "Zombie Kingdom" un ön filmini devraldı, yaşayan insanlar çılgınca koşuyor ve zombiler son derece şiddetli.
Xiangxiang: Doğu banliyölerindeki 3.800 kilogram yoksul yaşlı insan, bir günde tükenen pirincin satılmasından endişe ediyor!
Model oyun kontrolü: Gunner, MT Hercules'ü yeniden boyar
Kuaibo iflas etti, Wang Xin yeniden doğdu
Bu 628 yuan anahat uygulaması beni neden etkiliyor? -OmniOutliner iOS macOS
Bu filmdeki oyuncular tarihin en pahalısıdır. Bazı insanlar onları izledikten sonra ağlar ve birkaç yıl daha yaşamak ister. Gişe rekoru kırdı
Seyirci bir şeyi fark etti, aslında "Quanyou" nun ana teması ölümlüler ölmeli
Model oyun kontrolü: G-sistemi 1:72 Kshatriya
To Top