Google büyük ölçekli makine öğrenimi: model eğitimi, özellik mühendisliği ve algoritma seçimi (32PPT indirme)

1 Yeni Zhiyuan derlemesi

[Xinzhiyuan WeChat resmi hesabını girin, iletişim kutusuna "Google MLppt" yazın, 32 sayfa ppt indirebilirsiniz]

Google makine öğrenimi: pratik uygulama becerileri

Makine öğrenimi (ML) nedir?

Kavramsal olarak: Verilen (eğitim) veriler, bazı potansiyel kalıpları keşfedin ve bu modeli yeni verilere uygulayın.

Makine öğrenimi türleri: denetimli öğrenme; denetimsiz öğrenme; yarı denetimli öğrenme; ...

Denetimli öğrenme : Eğitim için kullanılan giriş verileri işaretlenmiştir.

  • Sınıflandırma (karar sınırlarını öğrenme).

  • Regresyon (sürekli değerleri tahmin etmeyi öğrenmek).

Denetimsiz öğrenme : Giriş verileri işaretlenmemiş, verilerdeki "gizli" yapıyı bulmaya çalışın.

  • Kümeleme

  • Aykırı / anormal fenomen tespiti

Örnek: Küme akış hizmeti kullanıcılarını gruplamak ve bu grupların popülerliğini ve bu gruplardaki belirli bir videoyu analiz etmek.

Makine öğrenimi kurumsal işletmelere nasıl yardımcı olur?

  • Katılımı ve geliri en üst düzeye çıkarabilen kişiselleştirilmiş hizmet (her kullanıcı için benzersiz ve özel bir deneyim sağlar)

  • Hataya açık veya zaman alan bazı görevleri otomatikleştirin (transkripsiyon, yazı tipi tanıma vb.)

  • Verileri analiz edin ve daha iyi karar verme planları önerin

  • ...

  • Küçük başla

  • Ölçek

Özellik mühendisliği nedir?

Kavramsal olarak, özellik mühendisliği, ham verileri (günlükler, ürün satın alma geçmişi veya çevrimiçi davranış, vb.) Eğitim ve tahminde öğrenme algoritmaları tarafından kullanılabilecek vektörlere dönüştürme sürecidir.

  • Alana oldukça özeldir.

  • Verilerden ne öğrenmeye çalıştığınıza bağlıdır.

  • Emek yoğun

Özellik Mühendisliği: Nasıl Yapılır?

Gelişmiş adımlar:

İstediğiniz bilgiye karar verin (Örneğin, kullanıcılara şarkıları dinlemeleri için önerilerde bulunacak bir model eğitmek istiyoruz).

Nasıl model olacağına karar ver (Birçok yol var!) Örneğin, bir kullanıcı ve şarkı verildiğinde bir sınıflandırma modeli oluşturun, model kullanıcının şarkıyla ilgilenip ilgilenmediğinin sonucunu döndürecektir. Ya da bir şarkı listemiz var, onu modele çalıştırın ve model kullanıcının beğenebileceğini düşündüğü şarkıları gösterecek.

Hangi verilere sahip olduğunuzu düşünün (Örneğin, kullanıcının şarkıları dinleme geçmişi ve kullanıcı profili bilgileri).

  • Alakalı olabilecek unsurları düşünün:

  • İlgili bilgileri temsil etmek için sayıları kullanın (bulunan özellikler):

Son eğitim verilerini hazırlayın

  • Belirli bir kullanıcının özellikleri u (u1, u2, u3 ... un)

  • Şarkının özellikleri s1 (s11, s12, s13, ..., s1k), s2 (s21, s22, ... s2k) ...

  • Kullanıcılar için eğitim örnekleri oluşturun, u (u, si) (1-dinleyen) ve (u, sj) (0-dinlemeyen)

Özellik normalleştirme

Özelliklerinizin farklı oranlarda olması muhtemeldir:

  • Kullanıcı yaşı: 0 ila 100

  • Kullanıcı geliri: 0'dan milyonlara

Bazı makine öğrenimi modelleri, bu kadar geniş bir özellik yelpazesini iyi bir şekilde işleyemeyebilir.

  • Düzenli hale getirme tutarsız özellikleri cezalandırır

  • Mesafe, en geniş menzile sahip özellik tarafından kontrol edilecektir.

  • Bazı optimizasyon algoritmaları daha hızlı birleşebilir (gradyan iniş)

çözüm : Özellikleri standartlaştırın, böylece özellik yelpazesi aşağı yukarı aynı olur

Model nasıl değerlendirilir?

En çok neyle ilgileniyorsunuz? "Yanlış pozitif yok" mu? Veya genel tahmin doğruluğu?

  • Endişenizi hesaplanabilir bir gösterge olarak ifade edin ve göstergenin doğrudan ilgilendiğiniz içerikle ilgili olduğundan emin olun.

  • Bu gösterge şu amaçlarla kullanılabilir: bir model seçmek; konuşlandırmadan önce modeli test etmek; modeli veya verileri iyileştirmek (örneğin, daha fazla özellik eklemek).

Model seçimi:

  • Basit bir modelle başlayın. Örneğin, doğrusal bir model deneyin.

dönüş : Doğrusal regresyon, rastgele orman

  • Birkaç farklı model deneyin

  • Veri setindeki modelin performansına göre bir model seçin

  • Farklı veri kümelerinde model seçiminden sonra nihai performans göstergelerinin değerlendirildiğinden emin olun (örneğin, modelleri seçmek için aynı veri kümesini kullanmayın)

Derin öğrenmeyi düşünün

  • Çok sayıda etiketli veriniz varsa

  • Özellikleri bulmakta güçlük çekiyorsanız veya özellikler arasındaki bağlantılar çok karmaşıksa (örneğin: nesne algılama)

  • Daha uzun eğitim / iyileştirme süresine tahammül edebilme

  • Derin öğrenme konusunda temel bir anlayışa sahipseniz: mimari seçim nedir? (Kaç katman? Tamamen bağlı veya eksik bağlı? Vb.); Aşırı uyum nasıl önlenir?

Hiperparametre ayarı (Hiperparametre ayarı)

Makine öğrenimi modelinin hiperparametreleri vardır: bunlar eğitim başlamadan önce sabitlenen ve eğitim sürecini ve karmaşıklığını etkileyen parametrelerdir.

Örneğin : Öğrenme oranı, düzenlilik sabiti vb.

  • Varsayılan değer yalnızca ortalama performans elde etmelerine izin verir;

  • En iyi makine öğrenimi modelini elde etmek için hiperparametrelerin ayarlanması gerekir

süreç : Ayar değeri, eğitim modeli, değerlendirme, (değerlendirmeye dayalı) arıtma değeri

yöntem : Grid; Algoritma destekli hiperparametre ayarı (Bayes, vb.)

Denetimli ML ardışık düzenleri

Boru hattının aşağıdakiler için ayarlanması gerekir:

  • Eğitim

  • tahmin

Bir araç / çerçeve seçmeden önce dikkat edilmesi gerekenler

  • Eğitim verileri nerede saklanır?

  • Nasıl eğitilir?

  • Model tahmin için nasıl kullanılabilir hale getirilir?

  • Çerçevenin izleme yeteneklerine sahip olmasını ister misiniz?

Bir ön analiz gereklidir, öyleyse bundan sonra ne yapılmalı?

  • Çok fazla veri ile antrenman yapmanız gerekip gerekmediğini doğrulayın

  • Cevabınız evet ise, lütfen tüm verilerle eğitimi düşünün

  • Diğer gereksinimleri göz önünde bulundurun:

-Yeni veriler mevcut olduğunda modeli güncelleyin veya duruma göre yeniden eğitin.

-Antrenman verileri hafızaya sığar mı?

- Bulutta eksiksiz bir ML bulut ardışık düzeni (DIY yöntemi) kurmak için herhangi bir kaynak var mı?

-Ya da "ML'yi bir hizmet olarak" mı kullanacaksınız?

Makine öğrenimi üretim araçları: pratik yöntemler

  • Eller

  • avantaj

  • Dezavantaj

Veri işleme çerçevesi:

  • Eşleme / Azaltma + Hadoop dağıtılmış depolama ve işleme sistemi

  • Büyük miktarda veriyi işlemek için M / R-a paradigması

  • Harita / Azaltma üzerinde Domuz, Kovan, Cascalog çerçevesi

  • Spark veri işleme ve eğitim tam yığın çözümü (tam yığın çözümü)

  • Google Cloud Dataflow

Makine öğrenimi araçları: Hizmet olarak makine öğrenimi

Hizmet olarak makine öğrenimi: önceden oluşturulmuş tam yığın çözümler (modelleri kolayca eğitmek ve dağıtmak için yığını kullanın)

  • Özellikleri

  • Diğer seçenekler

Google Bulut Hizmeti:

  • Bulut depolama

  • BigQuery

  • Cloud DataLab

  • Cloud DataFlow

  • TensorFlow

  • Google Cloud Makine Öğrenimi (alfa)

  • Önceden eğitilmiş modeller (görüntü tanıma, dil algılama ve çeviri, konuşma tanıma)

TensorFlow

  • Sinir ağı için özel olarak tasarlanmış, ancak diğer sinirsel olmayan ağ eğitimleriyle de uyumlu açık kaynak hesaplama motoru

  • Yapmanız gereken hesaplamaları bir veri akış grafiği olarak ifade edin (düğümler, kenarlar ve tensörler dahil)

  • Çok esnek: sinir ağları oluşturmak için önceden tanımlanmış, yaygın olarak kullanılan bileşenleri kullanın; belirli bilgi işlem ihtiyaçlarına göre kendi haritalarınızı yazabilirsiniz

  • CPU ve GPU üzerinde çalışabilir, masaüstü, sunucu ve mobil platformlarda çalışabilir

  • Python ve C ++ ile etkileşimli iPython eğitimlerini kullanın

  • Geliştirici topluluğu çok aktif

Google Cloud Makine Öğrenimi (alfa)

  • Büyük ölçekli makine öğrenimi en iyi bulutta çalışır, bu nedenle daha hızlı geliştirmek ve çalıştırmak daha kolaydır.

  • Google Cloud Makine Öğreniminin derin öğrenme çerçevesi, Gmail, Google Fotoğraflar ve diğer ürünleri desteklemek için de kullanılır.

  • İşlem gerektirmeyen altyapıyı yönetmek kolay

  • Her boyuttaki veri kümesinin modellerini eğitebilir

  • TensorFlow yerel derin öğrenme algoritmasını kullanın

  • Etkileşimli Datalab model geliştirme ve tasarım eğitimi

  • Google Cloud Platform ürünleriyle entegre birçok farklı veri türü için uygundur

Önceden eğitilmiş model

  • Modeliniz aşağıdaki tiplere aitse, önceden eğitilmiş bir model kullanmayı düşünebilir, onu kullanma sayısına göre ücretlendirme yapabilirsiniz. Tüm bu modellerin oluşturulması oldukça zordur ve derin araştırma ve programlama temeli gerektirir. Bu tür çalışmalar, daha emin bir şekilde yapmak için hala uzmanlara bırakılmıştır.

  • Görüntü Tanımlama

  • Dil algılama ve çeviri

  • Konuşma tanıma

Derin öğrenme çerçevesi nasıl seçilir

Yukarıda Google'ın makine öğreniminin pratik becerilerini söyledikten sonra, Google'ın derin öğrenimini temsil eden açık kaynak çerçevesi olan TensorFlow hakkında da konuşuldu. Şimdi, giderek daha fazla açık kaynak derin öğrenme çerçevesi var TensorFlow'a ek olarak, şu anda mevcut seçenekler Theano + Lasagne / Keras, Torch, PyTorch, Mxnet / minpy, Chainer, Neon, CNTK, Caffe ve dynet.

Her çerçevenin kendi avantajları vardır ve hangi çerçevenin seçileceğini tartmayı giderek zorlaştırır. Daha önce Soumith'in convnet-benchmarkları (https://github.com/soumith/convnet-benchmarks) çerçeveler arasında çok iyi kriterlerdi, ancak uzun süredir güncellenmemişti.

Bu amaçla, Reddit kullanıcısı m_ke kısa süre önce Reddit makine öğrenimi bölümünde bir tartışma başlattı: 2017'de yaygın olarak kullanılan açık kaynak derin öğrenme çerçevelerinin durumu ne olacak?

m_ke ayrıca bu tartışmaya bir açıklama ekledi:

1. Şu anda hangi çerçeveyi kullanıyorsunuz?

2. Çerçeveyi (CV / NLP / RL) hangi görevler için kullanıyorsunuz?

3. Çerçeve hakkında hoşunuza giden nedir?

4. Çerçeveyi değiştirmeyi düşünüyor musunuz?

5. Şu anda karşılaştığınız en büyük darboğaz nedir: bellek, bilgi işlem veya veri?

Bu sorunlar bazı ilginç tartışmalara neden oldu. Aşağıda bir alıntı:

Kullanıcı sbt_:

Bu soru, emacs ve vim arasında seçim yapmak gibidir. Mevcut çerçeveler performans açısından çok da farklı değil ve hiç kimse diğerlerinden daha iyi diyebileceğiniz kadar iyi değil.

Bu kitaplıklar / çerçeveler arasındaki farkı bilmek istiyorsanız, tipik kullanım durumları (donanım ve model mimarisi) üzerinde kendi kıyaslama karşılaştırmanızı yapabilirsiniz. Tercihim hala Theano olabilir, ancak TensorFlow'un görevlerim için eşit derecede iyi performans gösterdiğini buldum - Theano'yu yalnızca ona daha aşina olduğum için seçtim. Ayrıca iki veya üç gün önce PyTorch'a baktım ve çok iyi görünüyordu.

Kullanıcı feedtheaimbot:

Araştırma için kişisel olarak Lasagne ve Theano kullanıyorum. Tamamen işlevsel ve iyi tasarlanmış. Araştırma alanlarım arasında RL, CV, Bayesci çıkarım, Memnets vb. Yer alıyor. Çok standart olmayan bazı fikirleri uygulamaya çalışsam bile, tüm bu görevler için iyi performans gösteriyor.

Tek şikayetim Theano'nun derleme süresinin uzun ve sıkıcı olması. Bu, en azından olasılık kontrolü için, device = cpu gibi bazı işaretler eklenerek kısmen çözülebilir.

Pytorch ve minPy ile de çok ilgileniyorum, özellikle de numpy'nin çok iyi olduğunu ve yineleme hızımı artırmaya yardımcı olduğunu düşünüyorum.

Kullanıcı miketout:

Benim için Ubuntu'ya kurması ve kullanması en kolay Neon'dur. Ben bir modelim ve hem programlama hem de matematik yeni başlayanlar. Yakında kendi oluşturabilir kabımı ve daha gelişmiş modelleri yazdım. Örnekte bazı hatalarla karşılaştım, bazılarını düzelttim ve belirli noktalarda bazı çekme talepleri gönderebilirim. Neon, en son araştırma uygulamalarının bazılarını kapsayan çok iyi örneklere sahiptir. Neon'u denemeden önce Theano, Tensoflow ve Keras / Tensorflow'u kurdum ama pek kullanmadım. Keras'ın ayarlardan bağımsız olarak kullanım kolaylığı açısından Neon'a benzediğini düşünüyorum.

Büyük ölçekli dağıtılmış eğitim için bir şeyler yazmayı düşünmeye başladığımda, kendi çözümümü oluşturmadan önce tekrar kontrol ettim ve mxnet'i kurmaya başladım. Mxnet, tam olarak istediğim ZMQ'ya dayalı dağıtılmış eğitimi ve dağıtılmış KV depolamasını destekliyor. İlk bakışta direkt olarak Neon gibi kullanılabilir. Ancak Windows ve Ubuntu 16.04'te mxnet kurmak sadece bir kabus, sadece yerel makine için CUDA desteğinden vazgeçebilirim. Amazon'da önceden yüklenmiş bazı örnekler var.

Deneyimlerime göre Neon, kurulumu en kolay olanıdır, modeli kurmanın zorluğu açısından Keras'a benzer olabilir ve görüntü işleme, DL ve dağıtılmış eğitim gerektirmeyen diğer görevler dahil olmak üzere çeşitli görevlere tamamen uyarlanmıştır. Şimdilik en iyi performansı Neon'da görüyoruz.

Kullanıcı yoğun:

Torch ve Neon ile karşılaştırıldığında, Tensorflow en yavaş olanıdır. Neon çok çekici olmasa da, Chainer ve Lasagne gibi. Caffe ve Neon, her ikisi de görüntü görevlerinde hızlıdır, ancak bunlar gerçekten genel amaçlı çerçeveler değildir. Kalma gücü açısından Theano, Torch / PyTorch, MxNet, TensorFlow / Keras ve CNTK büyümeye devam etmelidir.

Derin öğrenme çerçevesinin temel yapısı: beş temel unsur

Birçok kişi nasıl çerçeve seçileceği sorusuyla karşılaşacak ve bu çerçevelerin temel yapısını anlamak daha iyi seçimler yapmanıza yardımcı olacaktır.

Yaygın olarak kullanılan çerçeveler arasında Theano, TensorFlow, Torch ve Keras bulunur. ETH Zürih'teki Bilgisayar Bilimi Bölümü'nde yüksek lisans öğrencisi ve Theano'ya katkıda bulunan Gokula Krishnan Santhanam, geçtiğimiz günlerde bu çerçevelerin temel bileşenlerini ayrıntılı olarak analiz etmek için bir makale yazdı.

İlk olarak, bir derin öğrenme çerçevesi aşağıdaki beş temel bileşeni içerir:

  • Bir Tensör Nesnesi

  • Tensör nesnesinde çeşitli işlemler (Tensor Nesnesi Üzerinde İşlemler)

  • Bir Hesaplama Grafiği ve Optimizasyonlar

  • Otomatik farklılaştırma araçları

  • BLAS, cuDNN uzantı bileşenleri (BLAS / cuBLAS ve cuDNN uzantıları)

  • Geliştiricilere mümkün olan en basit arayüzü sağlamak için, çoğu derin öğrenme çerçevesi genellikle ortak kavramları soyutlar.Bu, birçok kullanıcının yukarıdaki beş temel bileşeni algılamamasının önemli bir nedeni olabilir.

    Aşağıda bu beş bileşene tek tek göz atalım.

    1. Tensör Nesnesi

    Tensörler tarafından temsil edilen nesneler, derin öğrenme çerçevesinin temel bileşenleridir, çünkü sonraki tüm işlemler ve optimizasyon algoritmaları tensörlere dayanır. Geometrik cebirde tanımlanan tensör, vektörlerin ve matrislerin genelleştirilmesine dayanır.Daha basit bir anlayışla, skalerleri sıfır dereceli tensörler ve vektörleri birinci dereceden tensörler olarak kabul edebiliriz, dolayısıyla matris ikinci dereceden bir tensördür.

    Örneğin, herhangi bir RGB renkli resim, üçüncü dereceden bir tensör olarak temsil edilebilir ve üç boyut, resmin yüksekliği, genişliği ve renk verileridir. Aşağıdaki resim RGB'nin üç ana rengiyle temsil ediliyorsa, kırmızı, yeşil ve mavi olmak üzere üç gri tonlamalı resme bölünebilir (aşağıdaki resmin ortasındaki üç farklı gelişmeye bakın) ve ardından bu resmi tensör olarak ifade edebilir, ki bu en Aşağıdaki tablo.

    Şekilde yalnızca ilk 5 satır ve 320 veri sütunu gösterilmektedir Her kare bir pikseli temsil eder ve içindeki veriler renktir. Şekilde gösterildiği gibi kırmızı, yeşil ve mavinin kullanıldığı varsayıldığında, ilk 5 satırdaki verilerin tümü beyazdır.

    Bu tanımı genişleterek, birden fazla görüntü içeren bir veri kümesini temsil etmek için dördüncü dereceden bir tensör de kullanabiliriz Dört boyut şunlardır: veri kümesindeki görüntünün sayısı, görüntü yüksekliği, genişliği ve renk verileri.

    Her türlü veriyi bir tensör temsiline soyutlamak ve daha sonra işlem için sinir ağı modelini girmek çok gerekli ve verimli bir stratejidir.Bu, farklı veri türlerini birleştirebilir ve bunları standart bir şekilde ifade edebilir. Ek olarak, veri işleme tamamlandığında tensörü istediğiniz diğer formatlara da dönüştürebilirsiniz.

    2. Hesaplama

    Sonraki, tensör nesnesinin matematiksel çalışması ve işlenmesidir.

    Bir sinir ağını, belirli bir hedefe ulaşmak için giriş tensörü üzerinde bir dizi işlem gerçekleştirme süreci olarak düşünebiliriz. Bu işlemler, basit matris çarpımının yanı sıra, evrişim, havuzlama ve LSTM gibi biraz daha karmaşık işlemleri içerir. Ayrıca, her çerçeve tarafından desteklenen tensör işlemleri genellikle farklıdır.Ayrıntılar için resmi belgelerini kontrol edebilirsiniz (aşağıdakiler NumPy, Theano ve TensorFlow için belgelerdir).

    • NumPy:

    • Theano:

    • TensorFlow: https://www.tensorflow.org/api_docs/python/math_ops/

    Tensör işlemlerinin çoğunun işlevlerden ziyade sınıflara (ve soyut sınıflara) dayandığı belirtilmelidir (bu, çoğu derin öğrenme çerçevesinin nesne yönelimli programlama dillerinde uygulandığına atfedilebilir. nın-nin). Bir yandan, bu gerçekleştirme fikri, geliştiricilerin organizasyon ve yönetimi kolaylaştırmak için çeşitli benzer işlemleri bir araya getirmelerine izin verir. Öte yandan, tüm kodun yeniden kullanılabilirliğini, genişletilebilirliğini ve harici arayüzünü de garanti eder. Genel olarak, tüm çerçeve daha esnektir ve genişletilmesi kolaydır, bu da gelecekteki gelişmelere yer bırakır.

    3. Hesaplama grafiği ve optimizasyon

    Tensörler ve tensörlere dayalı çeşitli işlemler ile sonraki adım, çeşitli işlemleri entegre etmek ve istenen sonuçları çıkarmaktır.

    Ancak ne yazık ki, işlemlerin türleri ve sayıları arttıkça, birden çok işlemin paralel mi yoksa sırayla mı yürütülmesi gerektiği, çeşitli temel cihazların nasıl koordine edileceği ve çeşitli işlemlerin nasıl önleneceği gibi çeşitli beklenmedik sorunlar ortaya çıkabilir. Yedekli işlem türleri vb. Bu sorunlar, tüm derin öğrenme ağının işletim verimliliğini azaltabilir veya gereksiz hatalar ortaya çıkarabilir ve bu sorunu çözmek için hesaplama grafiği oluşturulur.

    Çeşitli Ops örneklerine bağlantıların yanı sıra hangi işlemin çıkarılması gerektiği ile ek bilgiler arasındaki ilişkiyi içerir. Farklı çerçeveler farklı şekillerde uygulanmaktadır.

    Hesaplama grafiğini ön ve arka uçlar arasında bir ara tablo olarak kullanmak, iyi bir etkileşim sağlayabilir.Geliştiriciler, Tensor nesnelerini veri yapıları olarak ve işlevler / yöntemler olarak işlem türleri olarak kullanabilir ve belirli veri yapılarını tanımlamak için belirli işlem türlerini uygulayabilir. MATLAB'a benzer güçlü bir modelleme dili geliştirilmiştir.

    Normal şartlar altında geliştiricilerin, model yapımı için ara temsil için elde edilen hesaplama grafiğini doğrudan kullanmayacağı unutulmamalıdır, çünkü böyle bir hesaplama grafiği genellikle çok sayıda yedek çözüm hedefi içerir ve paylaşılan değişkenleri çıkarmaz, bu nedenle genellikle Hesaplama grafiği bağımlılık azaltma, sembol füzyonu ve hafıza paylaşımı gibi yöntemlerle optimize edilecektir.

    Şu anda, her çerçevenin farklı uygulama mekanizmaları vardır ve hesaplama grafiklerine odaklanır. Örneğin, Theano ve MXNet, örtük işleme yoluyla derleme sırasında ifadelerden hesaplama grafiklerine geçiş yapar. Caffe daha basittir, bir Graph nesnesi oluşturabilir ve ardından çağrıyı Graph.Operator'a (xxx) benzer bir şekilde görüntüleyebilirsiniz.

    Hesaplama grafiklerinin tanıtılması nedeniyle, geliştiriciler tüm sinir ağının dahili yapısının bir makro görünümüne sahip olabilirler, tıpkı derleyicinin kayıtların tüm kod perspektifinden nasıl tahsis edileceğini belirleyebilmesi gibi, hesaplama grafikleri de kod çalışırken GPU belleğini makro belirleyebilir. Dağıtık bir ortamda farklı alt cihazlar arasında dağıtım ve işbirliği yolu. Ayrıca, hata ayıklamayı modellemek için hesaplama grafikleri uygulayan ve belirli bir işlem türünün metin açıklamalarını gerçek zamanlı olarak çıkarabilen birçok derin öğrenme çerçevesi de vardır.

    4. Otomatik farklılaştırma aracı

    Hesaplamalı bir grafiğe sahip olmanın diğer bir avantajı, öğrenme aşamasındaki hesaplama gradyanının modüler, basit ve net ve hesaplanması kolay hale gelmesidir. Bu, fonksiyonların türevlerini sistematik bir şekilde hesaplamanıza izin veren zincir kuralları sayesindedir. Gördüğümüz gibi, sinir ağları, daha kapsamlı işlevler üreten basit doğrusal olmayan kombinasyonlar olarak düşünülebilir. Bu işlevler arasındaki ayrım, basitçe grafiği çıktıdan girdiye döndürmektir. Sembolik farklılaşma veya otomatik farklılaştırma, hesaplama grafiğindeki gradyanı hesaplayabilen prosedürel bir yöntemdir.

    Sembolik farklılaşma, türevin analitik olarak hesaplanması anlamına gelir. Örneğin, renk geçişinin ne olduğunun bir temsilini elde edebilirsiniz. Sembolik farklılaştırmayı kullanmak için, yalnızca Değeri türeve yerleştirmeniz ve onu doğrudan kullanmanız gerekir. Ne yazık ki, ReLU (Doğrultulmuş Doğrusal Birimler) gibi bazı doğrusal olmayanlar bazı noktalarda ayırt edilemez. Bu nedenle, gradyanı yinelemeli bir şekilde hesaplıyoruz. İkinci yöntem evrensel olarak kullanılabildiğinden, hesaplamalı grafik araç takımı ( gibi çoğu hesaplamalı grafik paketi otomatik farklılaştırma uygular.

    Kendi gradyan hesaplama modülünüzü başlatmak genellikle iyi bir fikir değildir, çünkü bunu araç setiyle sağlamak açıkça daha kolay ve daha hızlıdır. Bu nedenle, kendi hesaplamalı grafik araç setine ve otomatik farklılaştırma modülüne sahip olun veya harici paketler kullanın.

    Her düğümdeki türevin yalnızca komşu düğümlerine göre hesaplanması gerektiğinden, gradyan hesaplama yöntemi sınıfa eklenebilir ve farklılaştırma modülü tarafından çağrılabilir.

    5. BLAS / cuBLAS ve cuDNN uzantısı

    Yukarıdaki tüm bileşenleri kullanarak, tamamen işlevsel bir derin öğrenme çerçevesine sahip olabilirsiniz. Verileri girdi olarak alıp tensörlere dönüştürebilecek, bunlar üzerinde verimli bir şekilde işlem yapabilecek, gradyanları hesaplayıp test veri setinin sonuçlarını öğrenebilecek ve geri döndürebilecek. Bununla birlikte, sorun şu ki, onu yüksek seviyeli bir dilde (Java / Python / Lua) uygulama olasılığınız yüksek olduğundan, alabileceğiniz hızlanmanın bir sınırı vardır. Bunun nedeni, yüksek seviyeli bir dildeki en basit işlemin bile, düşük seviyeli bir dilde yapıldığından daha fazla zaman (CPU döngüleri) almasıdır.

    Bu durumlarda iki farklı yaklaşım benimseyebiliriz.

    İlki, derleyiciden başka bir benzetmedir. Derleme işleminin son adımı, Assembly'de üretilen özel donanım kodudur. Benzer şekilde, yüksek seviyeli bir dilde yazılmış bir grafiği çalıştırmak yerine, ağ için karşılık gelen kod C'de üretilir ve derlenir ve yürütülür. Kodu her Ops'de saklanır ve derleme aşamasında birleştirilebilir. Düşük seviyeden yüksek seviyeli koda veri iletimini sağlamak için sarmalayıcılar (pyCUDA ve Cython gibi) aracılığıyla.

    İkinci yöntem, arka ucu uygulamak için C ++ gibi düşük seviyeli bir dil kullanmaktır; bu, düşük seviyeli yüksek seviyeli dil etkileşimi iç çerçevesinin önceki yöntemden farklı olduğu ve her seferinde derlememize gerek olmadığı için daha hızlı olabileceği anlamına gelir. Tüm rakam. Bunun yerine, derlenen yöntemi uygun parametrelerle çağırabiliriz.

    Optimal olmayan davranışların bir başka kaynağı, düşük seviyeli dillerin yavaş uygulanmasından gelir. Verimli kod yazmak çok zordur ve bu yöntemlerle uygulanan kitaplıkları daha iyi optimize ettik. BLAS veya temel doğrusal cebir alt yordamları, orijinal olarak Fortran'da yazılmış, optimize edilmiş matris işlemlerinin bir koleksiyonudur. Bunlar, çok hızlı matris (tensör) işlemleri yapmak için kullanılabilir ve önemli hız artışları sağlayabilir. Intel MKL, ATLAS gibi birçok başka yazılım paketi de benzer işlevleri yerine getirir. Tercihinize göre seçim yapabilirsiniz.

    BLAS paketleri genellikle optimize edilmiştir ve öncül, talimatların CPU üzerinde çalışacak olmasıdır. Derin öğrenmede durum böyle değildir ve BLAS, GPU tarafından sağlanan paralellikten tam olarak yararlanamayabilir. Bu sorunu çözmek için NVIDIA, artık CUDA araç setinde bulunan GPU için optimize edilmiş cuBLAS'ı piyasaya sürdü. Son olarak, cuDNN, cuBLAS'ın özellik setine dayanan bir kitaplıktır ve Winograd evrişimi ve RNN gibi optimize edilmiş sinir ağına özel işlemler sağlar.

    Bu nedenle, bu yazılım paketlerini kullanarak, çerçevede önemli bir hızlanma sağlanabilir. DL'de hızlanma çok önemlidir, bu nedenle sinir ağını eğitmek dört gün yerine yalnızca dört saat sürer. Hızla değişen yapay zeka girişimlerinde lider olup olamayacağınız veya başkalarına yetişip yetişemeyeceğinizin anahtarı hızdır.

    sonuç olarak

    Artık farklı çerçeveler arasındaki benzer özellikleri anladığınıza göre, derin öğrenme çerçevesini daha iyi anlayabilir ve kullanabilirsiniz. Yalnızca derin öğrenme çerçevelerini kullanmayı öğrenmekle değil, aynı zamanda yaygın olarak kullanılan çeşitli çerçevelerin iç yapısını ve ortak özelliklerini anlamakla ilgileniyorsunuz, aynı zamanda derin çerçeveler oluşturmanıza da yardımcı oluyorsunuz.

    İyi bir mühendis / araştırmacı sadece hangi aracı kullanacağını bilmemeli, aynı zamanda bu aracın neden en iyi seçim olduğunu da bilmelidir.

    Derin öğrenme çerçevesinin temel öğeleri şu adresten derlenmiştir: https://medium.com/@gokul_uf/the-anatomy-of-deep-learning-frameworks-46e2a7af5e47#.x8ilbhdqv

    [Xinzhiyuan'ın resmi hesabını girin, dokümanı indirmek için iletişim kutusuna "Google MLppt" yazın]

    [AI Unicorn'u Arıyor] Xinzhiyuan, 10 büyük başkentle güçlerini birleştirdi

    2017 Girişimcilik Yarışması'nı başlatın

    AI Girişimcilik Yarışması, Xinzhiyuan ve 10 ana akım AI girişim sermayesi kuruluşundan oluşur: Blue Run Ventures, Sequoia Capital China Fund, Hillhouse Smart Artificial Intelligence Fund, Blue Lake Capital, Blue Elephant Capital, IDG Capital, Gaorong Capital, CITIC Jiantou Securities, Mingshi Capital ve Songhe Yuanwang Fund tarafından ortaklaşa başlatılan, Xinzhiyuan sponsorluğunda, Pekin Zhongguancun Bilim Parkı Yönetim Komitesi ve Zhongguancun Bilim Parkı Haidian Park Yönetim Komitesi tarafından desteklenen, AI teknoloji liderleri ve yatırım liderlerinin bir araya gelmesidir. Büyük olay. Xinzhiyuan, risk sermayesi kaynaklarıyla geleceğin iddialı AI tek boynuzlu atlarına bağlanmak için güçlü bir fırsat sunuyor ve en iyi risk sermayesi TS sizi bekliyor.

    Orijinal metni okumak ve çevrimiçi başvuru formunu doldurmak için makalenin altına tıklayın. Seçime katılmak için kayıt formu gereklidir.

    Daha fazla bilgiye sahipseniz (BP, vb.), Xzy100@aiera.com.cn adresine gönderebilirsiniz.Lütfen e-postanın konusuna şirket adını belirtin. Herhangi bir sorunuz varsa, posta kutusuna bir mektup da gönderebilirsiniz.

    Pazarlama ustası "acı nokta pazarlama yöntemi": yalnızca küçük veriler kullanıcıların gerçek ihtiyaçlarını yansıtabilir
    önceki
    Messinin performansını hareketli resimlerle izlemek gerçekten keyifli!
    Sonraki
    Düğünün hemen ardından, içinde 100.000'den fazla kırmızı zarf bulunan LV çanta, gözden kayboldu! Polis bir gecede saldırdı ...
    BMW + Segway Robot = Lumon Park Robotu Geliştirici Planı Küresel İşe Alım
    Okyanusun pek çok efsanesini duyduktan sonra, bu sırlar bilinmeli!
    Bunu kontrol et! Dünyanın en büyük dört otomobil çarpışma testi kurumundan hangisi daha güvenilir verilere sahiptir?
    Başlangıç şirketi teknoloji kursu: nasıl daha hızlı ve daha yararlı olunur? Tanınmış teknoloji IP Chen Hao
    Lamba numarası Post -00 Asker, Gelecekleri dört gözle beklemeye değer
    Tatilin şafağı burada! Valizinizi hazırladınız mı ~
    20 kilometre, 16 saat, 15 madde, acemiler ne yapıyor?
    Yerel zorbaların referansı için! En yüksek amortisman oranına sahip dört lüks marka, sonuncusu üç yılda yarı yarıya azaldı
    Wu Xiaobo: Önce önemli şeyleri mi yapın yoksa eğlence daha mı önemli?
    ABD doları, dünyadaki birçok ülke tarafından hayır demesini istedi, ancak Çin parası ABD borç temel kampında.
    Hinton Google Brain'in en son araştırması: 137 milyar parametreli süper büyük ölçekli sinir ağı
    To Top