Derin öğrenmeye giriş. Konuşma sistemleri ve makine öğrenimi

  • 16.07.2019

Ve kısmen bu kılavuz, makine öğrenimi ile ilgilenen ancak nereden başlayacağını bilmeyen herkes içindir. Makalelerin içeriği geniş bir kitleye yönelik olarak tasarlanmıştır ve oldukça yüzeysel olacaktır. Ama kimsenin umurunda mı? Makine öğrenimiyle ne kadar çok insan ilgilenirse o kadar iyi.

Derin öğrenme ile nesne tanıma

Bu ünlü xkcd çizgi romanını zaten görmüş olabilirsiniz. Şaka şu ki, 3 yaşındaki herhangi bir çocuk bir kuşun fotoğrafını tanıyabilir, ancak bunu yapmak için bir bilgisayar elde etmek 50 yıldan fazla en iyi bilgisayar bilimcisini aldı.Son birkaç yılda, nihayet nesne tanıma için iyi bir yaklaşım bulduk. kullanarak derin evrişimli sinir ağları. Kulağa William Gibson'ın fantastik romanından uydurulmuş bir sürü söz gibi geliyor ama onları tek tek ele aldığımızda her şey netlik kazanacak.Hadi yapalım - kuşları tanıyan bir program yazalım!

Basit başlayalım

Kuş resimlerini nasıl tanıyacağımızı öğrenmeden önce, çok daha basit bir şeyi nasıl tanıyacağımızı öğrenelim - el yazısı "8" rakamı.

Makaleden derin öğrenmenin ne olduğunu öğreneceksiniz. Ayrıca makale, bu alanda uzmanlaşmak için kullanabileceğiniz birçok kaynak içermektedir.

Modern dünyada, sağlık hizmetlerinden üretime, derin öğrenme her yerde bulunur. Şirketler, konuşma ve nesne tanıma, makine çevirisi gibi karmaşık sorunları çözmek için bu teknolojiye yöneliyor.

Bu yılki en etkileyici başarılardan biri AlphaGo'nun dünyanın en iyi Go oyuncusunu yenmesiydi. Go'ya ek olarak, makineler diğer oyunlarda insanlardan daha iyi performans gösterdi: dama, satranç, ters çevirme ve tehlike.

Bir masa oyununda kazanmak, gerçek sorunları çözmek için uygulanamaz gibi görünebilir, ancak durum hiç de öyle değil. Go, yapay zeka tarafından yenilmez olacak şekilde tasarlandı. Bunu yapmak için, bu oyun için önemli bir şeyi öğrenmesi gerekecekti - insan sezgisi. Şimdi, bu gelişme sayesinde, daha önce bir bilgisayarın erişemeyeceği birçok sorunu çözmek mümkün.

Açıkçası, derin öğrenme hala mükemmel olmaktan uzak, ancak ticari olarak faydalı olmaya şimdiden çok yakın. Örneğin, bu kendi kendine giden arabalar. Google, Tesla ve Uber gibi tanınmış şirketler şimdiden otonom arabaları şehrin sokaklarına taşımaya çalışıyor.

Ford, 2021 yılına kadar insansız araçların payında önemli bir artış öngörüyor. ABD hükümeti ayrıca onlar için bir dizi güvenlik kuralı geliştirmeyi başardı.

Derin öğrenme nedir?

Bu soruyu cevaplamak için makine öğrenimi, sinir ağları ve yapay zeka ile nasıl etkileşime girdiğini anlamanız gerekiyor. Bunu yapmak için, eşmerkezli daireler kullanarak görselleştirme yöntemini kullanıyoruz:

Dış çember genel olarak yapay zekadır (örneğin bilgisayarlar). Biraz daha ileri - makine öğrenimi ve oldukça merkezde - derin öğrenme ve yapay sinir ağları.

Kabaca söylemek gerekirse, derin öğrenme yapay sinir ağları için daha uygun bir isimdir. Bu ifadedeki "derin", sinir ağının genellikle çok yüzeysel olabilen karmaşıklık (derinlik) derecesini ifade eder.

İlk sinir ağının yaratıcıları, serebral korteksin yapısından ilham aldı. Ağın temel katmanı olan algılayıcı, esasen biyolojik nöronun matematiksel karşılığıdır. Ve beyinde olduğu gibi, birbirleriyle kesişen algılayıcılar sinir ağında görünebilir.

Sinir ağının ilk katmanına giriş katmanı denir. Bu katmanın her bir düğümü bazı bilgileri girdi olarak alır ve diğer katmanlardaki sonraki düğümlere iletir. Çoğu zaman, bir katmanın düğümleri arasında bağlantı yoktur ve zincirin son düğümü, sinir ağının sonucunu görüntüler.

Ortadaki düğümler, çıktı ve girdi düğümleri gibi dış dünyayla bağlantıları olmadığı için gizli olarak adlandırılır. Yalnızca önceki katmanlar etkinleştirilirse çağrılır.

Derin öğrenme, temel olarak, kalıpları kullanarak karmaşık sorunları (konuşma tanıma gibi) çözmek için birçok katman kullanan bir sinir ağı eğitim tekniğidir. 1980'lerde, çoğu sinir ağı, yüksek maliyet ve sınırlı veri yetenekleri nedeniyle tek katmanlıydı.

Makine öğrenimini yapay zeka çalışmasının bir uzantısı veya bir çeşidi olarak düşünürsek, derin öğrenme böyle bir dalın özel bir türüdür.

Makine öğrenimi, hemen yanıt vermeyen bilgisayar zekasını kullanır. Bunun yerine kod, test verileri üzerinde çalışacak ve sonuçlarının doğruluğuna bağlı olarak rotasını ayarlayacaktır. Bu sürecin başarısı için genellikle statik yöntemleri ve lineer cebiri tanımlayan çeşitli teknikler, özel yazılımlar ve bilgisayar bilimi kullanılır.

Derin öğrenme yöntemleri

Derin öğrenme yöntemleri iki ana türe ayrılır:

  • Bir öğretmenle öğrenmek
  • Öğretmensiz öğrenme

İlk yöntem, istenen sonucu elde etmek için özel olarak seçilmiş verileri kullanır. Verilerin manuel olarak seçilmesi gerektiğinden, oldukça fazla insan müdahalesi gerektirir. Ancak sınıflandırma ve regresyon için uygundur.

Bir şirketin sahibi olduğunuzu ve astlarınızla yaptığınız sözleşmelerin süresi üzerindeki ikramiyelerin etkisini belirlemek istediğinizi düşünün. Önceden toplanmış verilerin varlığında, denetimli öğrenme yöntemi vazgeçilmez ve çok etkili olacaktır.

İkinci yöntem, önceden hazırlanmış cevaplar ve çalışma algoritmaları anlamına gelmez. Verilerdeki gizli kalıpları ortaya çıkarmayı amaçlar. İstemcileri davranışa göre gruplamak gibi kümeleme ve ilişkisel görevler için yaygın olarak kullanılır. Amazon'da “Bununla da seçiyorlar”, ilişkisel görevin bir çeşididir.

Denetimli yöntem genellikle oldukça kullanışlı olsa da, daha karmaşık versiyonu yine de daha iyidir. Derin öğrenme, kendisini insan denetimine ihtiyaç duymayan bir sinir ağı olarak kurmuştur.

Derin Öğrenmenin Önemi

Bilgisayarlar, bir görüntüdeki belirli özellikleri tanımak için uzun süredir teknolojiyi kullanıyor. Ancak, sonuçlar başarılı olmaktan uzaktı. Bilgisayarla görmenin derin öğrenme üzerinde inanılmaz bir etkisi oldu. Şu anda tüm tanıma görevlerini çözen bu iki tekniktir.

Özellikle Facebook, derin öğrenmeyi kullanarak fotoğraflardaki yüzleri tanımayı başardı. Bu, teknolojideki basit bir gelişme değil, önceki tüm fikirleri değiştiren bir dönüm noktasıdır: “Bir kişi, aynı kişinin iki farklı fotoğrafta temsil edilip edilmediğini %97,53 olasılıkla belirleyebilir. Facebook ekibi tarafından geliştirilen program, bunu, ışıklandırmadan veya kişinin doğrudan kameraya mı yoksa yanlara mı baktığından bağımsız olarak %97,25 olasılıkla yapabiliyor.

Konuşma tanıma da önemli değişiklikler geçirdi. Çin'in önde gelen arama motorlarından Baidu ekibi, mobil cihazlarda metin yazma hızı ve doğruluğu konusunda insanları geride bırakmayı başaran bir konuşma tanıma sistemi geliştirdi. İngilizce ve Mandarin.

Özellikle ilginç olan, tamamen farklı iki dil için ortak bir sinir ağı yazmanın çok fazla çalışma gerektirmemesidir: “Tarihsel olarak öyle oldu ki insanlar Çince ve İngilizceyi tamamen farklı iki dil olarak gördüler, bu yüzden farklı bir yaklaşım gerekiyordu. her biri,” diyor Baidu Center araştırma başkanı Andrew Ng. “Öğrenme algoritmaları artık o kadar genelleştirildi ki, basitçeöğrenmek."

Google, şirketin veri merkezlerindeki enerjiyi yönetmek için derin öğrenmeyi kullanır. Soğutma kaynaklarının maliyetini %40 oranında azaltmayı başardılar. Bu, enerji verimliliğinde yaklaşık %15'lik bir iyileşme ve milyonlarca dolarlık tasarruf demektir.

Derin öğrenme mikro hizmetleri

İşte derin öğrenme ile ilgili hizmetlere kısa bir genel bakış.

İllüstrasyon Etiketleyici. Illustration2Vec tarafından tamamlanan bu hizmet, görüntünün içeriğini önceden anlamak için görüntüleri "korumalı", "şüpheli", "tehlikeli", "telif hakkı" veya "genel" olarak işaretlemenize olanak tanır.

  • Google'dan Theano için Eklenti
  • Python ve Numpy'de düzenlendi
  • Genellikle belirli bir dizi sorunu çözmek için kullanılır
  • Genel amaçlı değil. Makine görüşüne ana odak
  • C++'da düzenlendi
  • Python arayüzü var

Derin Öğrenme Çevrimiçi Kursları

Google ve Udacity, Udacity Makine Öğrenimi Kursu'nun bir parçası olan ücretsiz bir derin öğrenme kursu oluşturmak için bir araya geldi. Bu program, makine öğrenimi ve özellikle derin öğrenme alanını geliştirmek isteyen deneyimli geliştiriciler tarafından yönetilmektedir.

Diğer bir popüler seçenek ise, Coursera ve Stanford tarafından desteklenen Andrew Ng'nin makine öğrenimi kursu.

  1. Makine Öğrenimi - Stanford, Andrew Ng tarafından Coursera'da (2010-2014)
  2. Makine Öğrenimi - Caltech, Yaser Abu-Mostafa (2012-2014)
  3. Makine Öğrenimi - Tom Mitchell tarafından Carnegie Mellon (Bahar 2011)
  4. Makine Öğrenimi için Sinir Ağları – Coursera'da Geoffrey Hinton (2012)
  5. sinir ağı sınıfı– Université de Sherbrooke'dan Hugo Larochelle (2013

Derin Öğrenme Kitapları

Önceki bölümdeki kaynaklar oldukça geniş bir bilgi tabanına dayansa da, Grokking Derin Öğrenme tam tersine yeni başlayanlara yöneliktir. Yazarların dediği gibi: "11 dersi tamamladıysanız ve Python'da nasıl yazılacağını kabaca anladıysanız, size derin öğrenmeyi öğreteceğiz."

Bu kitaba popüler bir alternatif, uygun bir şekilde başlıklı Derin Öğrenme Kitabıdır. Özellikle iyidir çünkü bu alana dalmak için ihtiyaç duyacağınız tüm matematiği açıklar.

  1. Yoshua Bengio, Ian Goodfellow ve Aaron Courville tarafından Derin Öğrenme (2015)
  2. Michael Nielsen (2014) tarafından "Sinir Ağları ve Derin Öğrenme"
  3. Microsoft Research (2013) tarafından "Derin Öğrenme"
  4. LISA Lab tarafından hazırlanan "Derin Öğrenme Eğitimleri", Montreal Üniversitesi (2015)
  5. Andrej Karpathy tarafından "nöral konuşma"
  6. "Genetik Algoritmalara Giriş"
  7. "Yapay zekaya modern yaklaşım"
  8. "Derin Öğrenme ve Sinir Ağlarına Genel Bakış"

Videolar ve dersler

Derin Öğrenme Basitleştirilmiş harika bir YouTube kanalıdır. İşte ilk videoları:

Kiev yakınlarındaki büyük ölçekli bir konferansta iş trendleri hakkında bilgi edinildi. Cumartesi, bir saat harcamanın melankolisinden esinlenerek yeni bilgi ve bilgileri alıp götürdükleri için içgörülerle doluydu. Konferansta iş dünyası liderleri, üst düzey yöneticiler, pazarlamacılar, satışlar, akademisyenler ve diğer uzmanlar için 4 ek rapor akışı vardı. Konuşmacılardan biri, galerinin geliştirilmesi, yolların ve havaalanlarının yenilenmesinden bahseden Altyapı Bakanı Volodymyr Omelyan oldu.

Herkese iyi günler, sevgili iOS meslektaşları, elbette her biriniz ağ ile çalıştınız ve JSON'dan gelen verileri ayrıştırdınız. Bu işlem için kullanabileceğiniz bir sürü kitaplık, her türlü araç var. Bazıları karmaşık ve bazıları basittir. Ben kendim, çok uzun bir süre boyunca, JSON'u ellerimle dürüstçe ayrıştırdım, bu sürece bazı üçüncü taraf kütüphanelere güvenmedim ve bunun avantajları vardı.

9 Eylül 2014'te, bir sonraki sunum sırasında Apple, kendi mobil ödeme sistemini tanıttı - Apple Pay.

Apple Pay, iPhone 6 ve iPhone 6+ kullanıcıları ve Apple Watch'un en son sürümleri ile çevrimiçi alışveriş yapabilir, mobil uygulamalar için Apple Pay'in ek avantajlarından yararlanabilir ve NFC (Yakın Alan İletişimi) teknolojisini kullanarak ödeme yapabilir. Ödemeleri yetkilendirmek için Touch ID veya Face ID teknolojileri kullanılmaktadır.

Teknolojiler sabit durmaz ve geliştirme süreçleri onlarla birlikte hareket eder. Daha önce şirketler “Şelale” modeline göre çalıştıysa, örneğin şimdi herkes “Scrum” uygulamak için çabalıyor. Evrim, yazılım geliştirme hizmetlerinin sağlanmasında da yer almaktadır. Daha önce şirketler, müşterilere bütçe dahilinde kaliteli geliştirme sağlıyordu, burada durdular, ancak şimdi uzmanlıklarını sunarak müşteri ve işletmesi için maksimum fayda sağlamaya çalışıyorlar.

Geçtiğimiz birkaç yıl içinde, ücretsiz olanlar da dahil olmak üzere pek çok iyi yazı tipi ortaya çıktı ve tasarımcılar için yazımızın devamını yazmaya karar verdik.

Her tasarımcının çalışmaya alışkın olduğu ve grafik stilini yansıtan bir dizi favori yazı tipi vardır. Tasarımcılar “Asla çok fazla iyi yazı tipi yoktur” derler, ancak şimdi bu setin yalnızca ücretsiz yazı tiplerinden oluştuğu bir durumu güvenle hayal edebilirsiniz.

Proje yöneticileri, müşterinin tüm gereksinimleri ve son teslim tarihleri ​​ile tüm ekibin ruh sağlığı arasında bir denge bulmaya çalışırken kendilerini ne sıklıkla bir kaya ile zor bir yer arasında bulurlar? Sorumluluğun her iki tarafında da barış ve düzen olması için kaç nüansın dikkate alınması gerekiyor? İyi bir yönetici olup olmadığınızı veya acilen tüm cephelerde yetişmeniz gerekip gerekmediğini nasıl anlarsınız? Bir Başbakan olarak sizin hangi yönlerden geride olduğunuzu ve nerede iyi ve akıllı olduğunuzu nasıl belirleyebilirsiniz? Bir sonraki Code'n'Coffee konferansının konusu tam olarak buydu.

Görüntü tanıma teknolojisi, günlük hayatımızda giderek daha aktif hale geliyor. Şirketler ve kurumlar, güvenlikten müşteri memnuniyeti araştırmalarına kadar her şey için kullanıyor. Bu özelliğe dayalı ürünlere yapılan yatırımların 2021 yılına kadar 39 milyar dolara ulaşması bekleniyor. İşte örüntü tanımanın çeşitli alanlarda nasıl kullanıldığına dair birkaç örnek.

Derin öğrenme nedir? 3 Mart 2016

Şimdi, sanki cennetten gelen bir mannaymış gibi, derin öğrenmenin modaya uygun teknolojilerinden bahsediyorlar. Ama konuşmacılar gerçekte ne olduğunu anlıyorlar mı? Ancak bu kavramın resmi bir tanımı yoktur ve bir dizi teknolojiyi birleştirir. Bu yazıda olabildiğince popüler ve aslında bu terimin arkasında ne olduğunu, neden bu kadar popüler olduğunu ve bu teknolojilerin bize neler kazandırdığını açıklamak istiyorum.


Kısacası, bu yeni moda terim (derin öğrenme), bazı basit soyutlamalardan daha karmaşık ve derin bir soyutlamanın (temsil) nasıl bir araya getirileceği ile ilgilidir. en basit soyutlamaların bile bir kişi tarafından değil, bilgisayarın kendisi tarafından toplanmasına rağmen. Şunlar. Bu sadece öğrenmekle ilgili değil, meta-öğrenmeyle ilgili. Mecazi anlamda, bilgisayarın kendisi onu en iyi nasıl öğreneceğini öğrenmelidir. Ve aslında, "derin" terimi tam olarak ne anlama geldiğidir. Hemen hemen her zaman, bu terim birden fazla gizli katmanın kullanıldığı yapay sinir ağlarına uygulanır, bu nedenle resmi olarak “derin” aynı zamanda daha derin bir sinir ağı mimarisi anlamına gelir.

Buradaki geliştirme slaytında, derin öğrenmenin gelenekselden ne kadar farklı olduğunu açıkça görebilirsiniz. tekrarlıyorum derin öğrenmeye özgü, makinenin kendisinin özellikler bulması(bir nesne sınıfını diğerinden ayırt etmesi en kolay olan bir şeyin temel özellikleri) ve bu özellikler hiyerarşik olarak yapılandırılmıştır: daha karmaşık olanlar daha basit olanlardan oluşur.. Aşağıda bunu bir örnekle inceleyeceğiz.

Bir görüntü tanıma sorunu örneğine bakalım: daha önce, nasıl - büyük bir (1024 × 768 - yaklaşık 800.000 sayısal değer) görüntüyü tek katmanlı geleneksel bir sinir ağına doldurdular ve bilgisayarın bellek yetersizliğinden boğularak yavaş yavaş ölmesini izlediler. ve hangi piksellerin tanınmasının önemli olduğunu ve hangilerinin önemli olmadığını anlayamama. Bu yöntemin etkinliğinden bahsetmiyorum bile. İşte böyle bir geleneksel (sığ) sinir ağının mimarisi.

Sonra, yine de, beynin işaretleri nasıl vurguladığını dinlediler ve bunu kesinlikle hiyerarşik bir şekilde yapıyor ve ayrıca resimlerden hiyerarşik bir yapı çıkarmaya karar verdiler. Bunu yapmak için, sinir ağına daha fazla gizli katman (giriş ve çıkış arasındaki katmanlar; kabaca konuşursak, bilgi dönüşüm adımları) eklemek gerekiyordu. Bunu neredeyse hemen yapmaya karar vermelerine rağmen, nöronlar icat edildi, ancak daha sonra sadece bir gizli katmana sahip ağlar başarıyla eğitildi. Şunlar. Prensip olarak, derin ağlar, normal ağlar kadar uzun süredir var, onları eğitemedik. Ne değişti?

2006 yılında, birkaç bağımsız araştırmacı bu sorunu bir kerede çözdü (ayrıca, donanım kapasiteleri zaten yeterince gelişti, yeterince güçlü ekran kartları ortaya çıktı). Bu araştırmacılar: Jeffrey Hinton (ve meslektaşı Ruslan Salakhutidinov), sinir ağının her katmanını sınırlı bir Boltzmann makinesiyle önceden eğitme tekniğiyle (bu terimler için beni bağışlayın...), Evrişimsel sinir ağlarıyla Jan Lekun ve Yoshuaia. Kademeli otomatik kodlayıcılara sahip Bengio. İlk ikisi sırasıyla Google ve Facebook tarafından hemen işe alındı. İşte iki ders: bir - Hinton, diğer - lyakuna derin öğrenmenin ne olduğunu açıkladıkları yer. Kimse sana onlardan daha iyi söyleyemez. Bir başka harika ders Schmidhuber, aynı zamanda bu bilimin temel direklerinden biri olan derin öğrenmenin gelişimi hakkında. Ve Hinton'un nöronlar üzerinde de harika bir kursu var.

Derin sinir ağları şimdi ne yapabilir? Nesneleri tanıyabilir ve tanımlayabilirler, ne olduğunu "anlayın" diyebilirsiniz. Anlamı anlamakla ilgili.

Kameranın gerçek zamanlı olarak ne gördüğünü tanımayla ilgili bu videoyu izleyin.

Dediğim gibi, derin öğrenme teknolojileri bir dizi teknoloji ve çözümdür. Birkaçını yukarıdaki paragrafta zaten listeledim, başka bir örnek, ağın ne gördüğünü açıklamak için yukarıdaki videoda kullanılan tekrarlayan ağlardır. Ancak bu teknoloji sınıfının en popüler temsilcisi hala LaCun'un evrişimli sinir ağlarıdır. Bunlar, sözde basit hücrelerin keşfedildiği, farklı açılarda düz çizgilere tepki veren ve karmaşık - reaksiyonu ile ilişkili olan kedinin beyninin görsel korteksinin çalışma ilkelerine benzetilerek inşa edilirler. belirli bir dizi basit hücrenin aktivasyonu. Dürüst olmak gerekirse, Lyakun'un kendisi biyolojiye yönelik olmasa da, belirli bir sorunu çözdü (derslerine bakın) ve sonra öyle oldu.

Basitçe, konvolüsyonel ağlar, öğrenmenin ana yapısal öğesinin bir nöron grubu (kombinasyonu) (genellikle 3 × 3.10 × 10 kare, vb.) olduğu ve bir değil ağlardır. Ve ağın her seviyesinde, bu türden düzinelerce grup eğitilir. Ağ, görüntü hakkındaki bilgileri en üst düzeye çıkaran nöron kombinasyonlarını bulur. İlk seviyede, ağ resmin en temel, yapısal olarak basit unsurlarını çıkarır - yapı taşlarını söyleyebilirsiniz: sınırlar, konturlar, bölümler, kontrastlar. Daha yüksek - zaten birinci seviyedeki elementlerin kararlı kombinasyonları, vb. Derin öğrenmenin temel özelliğini bir kez daha vurgulamak istiyorum: ağların kendileri bu unsurları oluşturur ve hangilerinin daha önemli ve hangilerinin olmadığına karar verir. Bu önemlidir, çünkü makine öğrenimi alanında özellik oluşturma anahtardır ve şimdi bilgisayarın kendisinin özellik oluşturmayı ve seçmeyi öğrendiği aşamaya geçiyoruz. Makinenin kendisi, bilgilendirici özelliklerden oluşan bir hiyerarşi tahsis eder.

Bu nedenle, öğrenme sürecinde (yüzlerce resmin görüntülenmesi), evrişimsel ağ, farklı derinlik seviyelerinde bir özellikler hiyerarşisi oluşturur. Burada ilk düzeyde, örneğin bu tür öğeleri (kontrast, açı, kenarlık vb. yansıtan) vurgulayabilirler.


İkinci seviyede, zaten birinci seviyenin unsurlarından bir unsur olacaktır. Üçüncüde - ikinciden. Bu resmin sadece bir gösteri olduğu anlaşılmalıdır. Şimdi endüstriyel kullanımda, bu tür ağlar 10 ila 30 katmana (seviyeye) sahiptir.

Böyle bir ağ eğitildikten sonra sınıflandırma için kullanabiliriz. Girdi olarak bir görüntü verdikten sonra, ilk katmanın nöron grupları görüntü boyunca ilerler ve belirli bir öğeye karşılık gelen bir görüntü öğesinin bulunduğu yerlerde etkinleştirilir. Şunlar. bu ağ resmi parçalara ayırır - önce tireler, konturlar, açılar, sonra daha karmaşık kısımlar ve sonunda bu tür temel unsurların birleşiminden oluşan bir resmin bir yüz olduğu sonucuna varır.

Evrişimli ağlar hakkında daha fazla bilgi -

Günümüzde bir grafik, bir makine öğrenimi sisteminde oluşturulan modelleri tanımlamanın en kabul edilebilir yollarından biridir. Bu hesaplama grafikleri, köşeler arasındaki bağlantıları tanımlayan sinaps kenarlarıyla birbirine bağlanan nöron köşelerinden oluşur.

Bir skaler CPU veya vektör GPU'nun aksine, makine öğrenimi için tasarlanmış yeni bir işlemci türü olan IPU, bu tür grafiklerin oluşturulmasına izin verir. Grafikleri yönetmek için tasarlanmış bir bilgisayar, makine öğreniminin bir parçası olarak oluşturulan grafiklerin hesaplamalı modelleri için ideal bir makinedir.

Makine zekasının nasıl çalıştığını tanımlamanın en kolay yollarından biri onu görselleştirmektir. Graphcore geliştirme ekibi, IPU'da görüntülenecek bu tür görüntülerden oluşan bir koleksiyon oluşturdu. Yapay zeka çalışmalarını görselleştiren Poplar yazılımına dayanıyordu. Bu şirketten araştırmacılar, derin ağların neden bu kadar çok bellek gerektirdiğini ve sorunu çözmek için hangi çözümlerin bulunduğunu da öğrendi.

Poplar, yaygın makine öğrenimi işlemlerini yüksek düzeyde optimize edilmiş IPU uygulama koduna dönüştürmek için sıfırdan oluşturulmuş bir grafik derleyici içerir. Bu grafikleri, POPNN'lerin bir araya getirildiği şekilde bir araya getirmenizi sağlar. Kitaplık, jenerik ilkeller için bir dizi farklı tepe noktası içerir.

Grafikler, tüm yazılımların dayandığı paradigmadır. Poplar'da grafikler, köşelerin işlemleri gerçekleştirdiği ve kenarların aralarındaki ilişkiyi tanımladığı bir hesaplama süreci tanımlamanıza izin verir. Örneğin, iki sayıyı birbirine eklemek istiyorsanız, iki girdi (eklemek istediğiniz sayılar), bazı hesaplamalar (iki sayı toplama işlevi) ve bir çıktı (sonuç) içeren bir tepe noktası tanımlayabilirsiniz.

Genellikle, köşe işlemleri yukarıdaki örnekte olduğundan çok daha karmaşıktır. Genellikle kodletler (kod adları) adı verilen küçük programlar tarafından tanımlanırlar. Grafiksel soyutlama çekicidir çünkü hesaplamanın yapısı hakkında hiçbir varsayımda bulunmaz ve hesaplamayı IPU'nun çalışmak için kullanabileceği bileşenlere ayırır.

Poplar, bir görüntü olarak temsil edilen çok büyük grafikler oluşturmak için bu basit soyutlamayı kullanır. Grafiği programlı olarak oluşturmak, onu IPU kaynaklarını en verimli şekilde kullanmak için gereken belirli hesaplamalara göre uyarlayabileceğimiz anlamına gelir.

Derleyici, makine öğrenimi sistemlerinde kullanılan standart işlemleri yüksek düzeyde optimize edilmiş IPU uygulama koduna dönüştürür. Grafik derleyici, bir veya daha fazla IPU'da konuşlandırılmış bir hesaplama grafiğinin ara görüntüsünü oluşturur. Derleyici bu hesaplama grafiğini görüntüleyebilir, bu nedenle sinir ağı yapısı seviyesinde yazılmış bir uygulama, IPU'da çalışan hesaplama grafiğinin bir görüntüsünü görüntüler.


AlexNet tam döngü eğitim grafiği ileri ve geri yönde

Poplar grafik derleyicisi, AlexNet tanımını 18,7 milyon köşe ve 115,8 milyon kenardan oluşan bir hesaplama grafiğine dönüştürdü. Açıkça görülebilen kümeleme, ağın her katmanındaki süreçler arasındaki güçlü iletişimin ve katmanlar arasında daha kolay iletişimin sonucudur.

Başka bir örnek, MNIST üzerinde eğitilmiş basit, tam bağlantılı bir ağ, basit bir bilgisayarla görme veri seti, makine öğreniminde bir tür "Merhaba, dünya". Bu veri kümesini keşfetmek için basit bir ağ, Poplar uygulamaları tarafından yönlendirilen grafiklerin anlaşılmasına yardımcı olur. Şirket, grafik kitaplıklarını TensorFlow gibi çerçevelerle entegre ederek, makine öğrenimi uygulamalarında IPU'ları kullanmanın kolay bir yolunu sunar.

Grafik derleyici kullanılarak oluşturulduktan sonra çalıştırılmalıdır. Bu, Graph Engine ile mümkündür. ResNet-50 örneği, çalışmasını göstermektedir.


Grafik ResNet-50

ResNet-50 mimarisi, tekrarlanan bölümlerden derin ağlar oluşturmanıza olanak tanır. Bu bölümleri yalnızca bir kez tanımlayıp yeniden çağırmak işlemciye kalır. Örneğin, conv4 düzeyindeki bir küme altı kez yürütülür, ancak yalnızca bir kez grafikte çizilir. Görüntü ayrıca, her biri hesaplamanın doğal biçimine göre oluşturulmuş bir grafiğe sahip olduğundan, evrişimli katmanların şekillerinin çeşitliliğini de gösterir.

Motor, derleyici tarafından oluşturulan bir grafiği kullanarak bir makine öğrenimi modelinin yürütülmesini oluşturur ve yönetir. Graph Engine, dağıtıldıktan sonra, uygulamalar tarafından kullanılan IPU'ları veya cihazları izler ve bunlara yanıt verir.

ResNet-50 görüntüsü tüm modeli gösterir. Bu seviyede, tek tek köşeler arasındaki bağlantıları ayırt etmek zordur, bu nedenle büyütülmüş resimlere bakmaya değer. Aşağıda, bir sinir ağının katmanları içindeki bazı kesit örnekleri verilmiştir.

Derin ağlar neden bu kadar çok belleğe ihtiyaç duyar?

Büyük miktarda bellek, derin sinir ağlarının en büyük sorunlarından biridir. Araştırmacılar, derin bir sinir ağında çok sayıda ağırlık ve aktivasyonu depolamak için modern sistemler tarafından kullanılması gereken DRAM cihazlarının sınırlı bant genişliği ile mücadele etmeye çalışıyorlar.

Mimariler, yüksek yoğunluklu bellek için DRAM'i seri hale getirmek ve optimize etmek üzere tasarlanmış işlemci yongaları kullanılarak tasarlandı. Bu iki cihaz arasındaki arayüz, bant genişliği sınırlamaları getiren ve güç tüketiminde önemli bir ek yük getiren bir darboğazdır.

İnsan beyni ve nasıl çalıştığı hakkında henüz tam bir anlayışa sahip olmasak da, genel olarak büyük bir ayrı hafıza deposu olmadığı anlaşılmaktadır. İnsan beynindeki uzun süreli ve kısa süreli belleğin işlevinin nöronlar + sinapsların yapısında yerleşik olduğuna inanılmaktadır. Beynin nöral yapısına sahip, 300'den fazla nörondan oluşan solucanlar gibi basit organizmalar bile, bir dereceye kadar hafızanın bir işlevidir.

Geleneksel işlemcilere bellek oluşturmak, çok daha düşük güç tüketimiyle büyük miktarlarda bant genişliği açarak bellek darboğazlarını aşmanın bir yoludur. Bununla birlikte, yonga üzerinde bellek, şu anda derin sinir ağlarını eğitmek ve dağıtmak için kullanılan CPU'lara ve GPU'lara bağlı olan gerçekten büyük miktarda bellek için tasarlanmamış pahalı bir şeydir.

Bu nedenle, günümüzde GPU tabanlı CPU'larda ve derin öğrenme sistemlerinde belleğin nasıl kullanıldığına bakmak ve kendinize şunu sormak yararlıdır: İnsan beyni onlarsız gayet iyi çalışıyorken neden bu kadar büyük bellek depolama cihazlarına ihtiyaç duyuyorlar?

Yapay sinir ağları, girdi ağ boyunca yayılırken girdi verilerini, ağırlık parametrelerini ve aktivasyon fonksiyonlarını depolamak için belleğe ihtiyaç duyar. Eğitimde, girişteki aktivasyon, çıkıştaki gradyanlardaki hataları hesaplamak için kullanılabilene kadar korunmalıdır.

Örneğin, 50 katmanlı bir ResNet yaklaşık 26 milyon ağırlığa sahiptir ve 16 milyon ileri aktivasyonu hesaplar. Her ağırlığı ve etkinleştirmeyi depolamak için 32 bitlik kayan noktalı bir sayı kullanırsanız, bunun için yaklaşık 168 MB alan gerekir. Bu ağırlıkları ve aktivasyonları depolamak için daha düşük bir kesinlik değeri kullanarak, bu depolama gereksinimini yarıya, hatta dörde katlayabiliriz.

GPU'ların yoğun vektörler olarak temsil edilen verilere dayanması nedeniyle ciddi bir bellek sorunu ortaya çıkar. Bu nedenle, yüksek hesaplama yoğunluğu elde etmek için tek bir komut akışı (SIMD) kullanabilirler. CPU, yüksek performanslı bilgi işlem için benzer vektör bloklarını kullanır.

GPU'lar 1024 bit sinaps genişliğine sahiptir, bu nedenle 32 bit kayan nokta verileri kullanırlar, bu nedenle 1024 bit veri vektörleri oluşturmak için genellikle paralel çalışan 32 örnekten oluşan mini toplu işlere bölerler. Vektör paralelliğine yönelik bu yaklaşım, etkinleştirme sayısını 32 kat ve 2 GB'den fazla yerel depolama gereksinimini artırır.

GPU'lar ve matris cebiri için tasarlanmış diğer makineler de ağırlıklardan veya sinir ağı aktivasyonlarından kaynaklanan bellek stresine maruz kalır. GPU'lar, derin sinir ağlarında kullanılan küçük evrişimleri verimli bir şekilde gerçekleştiremez. Bu nedenle, bu evrişimleri grafik hızlandırıcıların verimli bir şekilde işleyebileceği matris matris çarpımlarına (GEMM'ler) dönüştürmek için "düşürme" adı verilen bir dönüşüm kullanılır.

Giriş verilerini, geçici değerleri ve program talimatlarını saklamak için ek bellek de gereklidir. ResNet-50'yi üst düzey bir GPU üzerinde eğitirken bellek kullanımını ölçmek, bunun 7.5 GB'ın üzerinde yerel DRAM gerektirdiğini gösterdi.

Daha düşük hesaplama hassasiyetinin gerekli bellek miktarını azaltabileceği düşünülebilir, ancak durum böyle değil. Ağırlıklar ve aktivasyonlar için veri değerlerini yarı hassasiyete çevirerek, mevcut bilgi işlem kaynaklarının yarısını kullanarak SIMD vektör genişliğinin sadece yarısını doldurursunuz. Bunu telafi etmek için GPU'da tam hassasiyetten yarı hassasiyete geçtiğinizde, mevcut tüm hesaplamayı kullanmak için yeterli veri paralelliğini zorlamak için mini partinin boyutunu iki katına çıkarmanız gerekir. Bu nedenle, GPU'daki ağırlıkların ve etkinleştirmelerin daha düşük doğruluğuna geçmek için hala 7,5 GB'den fazla boş dinamik bellek gerekir.

Depolanacak çok fazla veri olduğu için hepsini bir GPU'ya sığdırmak imkansız. Evrişimli bir sinir ağının her katmanında, harici DRAM'in durumunu kaydetmek, ağın bir sonraki katmanını yüklemek ve ardından verileri sisteme yüklemek gerekir. Sonuç olarak, zaten bant genişliği sınırlı olan bellek gecikme arabirimi, teraziyi sürekli olarak yeniden yükleme ve etkinleştirme işlevlerini kaydetme ve alma ek yükünden muzdariptir. Bu, eğitim süresini önemli ölçüde yavaşlatır ve güç tüketimini önemli ölçüde artırır.

Bu sorunu çözmenin birkaç yolu vardır. İlk olarak, etkinleştirme işlevleri gibi işlemler yerinde gerçekleştirilebilir, bu da girdinin doğrudan çıktının üzerine yazılmasına olanak tanır. Böylece mevcut hafıza yeniden kullanılabilir. İkinci olarak, ağdaki işlemler arasındaki veri bağımlılığı ve aynı belleğin o anda kullanılmayan işlemler için tahsisi analiz edilerek belleği yeniden kullanma yeteneği elde edilebilir.

İkinci yaklaşım, bellek yönetimi ek yükü sıfıra yakın bir düzeye indirildiğinden, sabit bir tahsis edilmiş bellek oluşturmak için tüm sinir ağı derleme zamanında ayrıştırılabildiğinde özellikle etkilidir. Bu yöntemlerin bir kombinasyonunun, bir sinir ağı tarafından bellek kullanımını iki ila üç kat azaltabileceği ortaya çıktı.
Yakın zamanda Baidu Deep Speech ekibi tarafından üçüncü bir önemli yaklaşım keşfedildi. Aktivasyon işlevlerinin bellek tüketiminde 16 kat azalma elde etmek için çeşitli bellek tasarrufu teknikleri uyguladılar, bu da 100 katmanlı ağları eğitmelerine izin verdi. Önceden, aynı miktarda bellekle ağları dokuz katmanla eğitebiliyorlardı.

Bellek ve işleme kaynaklarını tek bir cihazda birleştirmek, evrişimli sinir ağlarının yanı sıra diğer makine öğrenimi biçimlerinin performansını ve verimliliğini artırmak için önemli bir potansiyele sahiptir. Sistemde bir yetenek ve performans dengesi elde etmek için bellek ve bilgi işlem kaynakları arasında bir değiş tokuş yapılabilir.

Diğer makine öğrenimi yöntemlerindeki sinir ağları ve bilgi modelleri matematiksel grafikler olarak düşünülebilir. Bu grafiklerde yoğunlaşan büyük miktarda paralellik var. Grafik paralelliğinden yararlanmak için tasarlanmış bir paralel işlemci, mini toplu işleme dayanmaz ve gereken yerel depolama miktarını büyük ölçüde azaltabilir.

Modern araştırma sonuçları, tüm bu yöntemlerin sinir ağlarının performansını önemli ölçüde artırabileceğini göstermiştir. Modern GPU'lar ve CPU'lar, toplamda yalnızca birkaç megabayt olan çok sınırlı yerleşik belleğe sahiptir. Makine öğrenimi için özel olarak tasarlanmış yeni işlemci mimarileri, günümüzün CPU'ları ve GPU'ları üzerinde önemli performans ve verimlilik iyileştirmeleri sağlayarak bellek ve çip üzerinde bilgi işlem arasında bir denge kurar.