Dinamik Hesaplamalı Grafik nedir?


19

TensorFlow Fold ile PyTorch ve TensorFlow gibi çerçeveler Dinamik Hesaplama Grafiklerini destekler ve veri bilim insanlarından dikkat çeker .

Bununla birlikte, Dinamik Hesaplama Grafiklerini anlamada yardımcı olacak kaynak eksikliği var gibi görünüyor.

Dinamik Hesaplamalı Grafiklerin avantajı, giriş verilerinde değişen miktarlara uyum sağlama yeteneğini içerir. Eğitim sırasında her bir giriş seti örneğine bağlı olarak, katman sayısının, her katmandaki nöron sayısının, aktivasyon fonksiyonunun ve diğer NN parametrelerinin otomatik seçimi olabilir gibi görünüyor. Bu doğru bir karakterizasyon mu?

Dinamik modellerin statik modellere göre avantajları nelerdir? DCG'lerin bu kadar ilgi görmesinin nedeni bu mu? Özetle, DCG'ler nedir ve bunların avantajları ve dezavantajları nelerdir?

Yanıtlar:


8

İki Kısa Yanıt

Teorik bir bakış açısından kısa cevap şu ki ...

Dinamik Hesaplamalı Grafik, işlemler arasındaki veri akışının yönlendirilmiş bir grafiği olarak temsil edilen değiştirilebilir bir sistemdir. Oklarla birbirine bağlanmış metin içeren şekiller olarak görselleştirilebilir, böylece köşeler (şekiller) kenarlar boyunca akan veriler üzerindeki işlemleri temsil eder (oklar).

Böyle bir grafiğin veri akışındaki bağımlılıkları tanımladığını, ancak geçici olarak öncelikleri belirtmek için ek bir mekanizma olmadan grafikteki tepe noktalarında veya döngülerde durumun tutulmasında belirsiz hale gelebilecek işlemlerin geçici sırasını tanımlaması gerekmediğini unutmayın.

Uygulama geliştirme perspektifinden kısa cevap şudur:

Dinamik Hesaplamalı Grafik çerçevesi, sonlu ancak belki de genişletilebilir bir işlem seti bağlayarak sistemlerin yapımını ve değiştirilmesini kolaylaştıran esnek, programlı, çalışma zamanı arabirimi sağlayan bir kütüphane, arayüz ve bileşen sistemidir.

PyTorch Çerçevesi

PyTorch, Torch çerçevesinin Python dili ve veri yapılandırması ile entegrasyonudur. Torch, Theano, TensorFlow ve diğer dinamik hesaplama sistemi inşaat çerçeveleriyle rekabet eder.


——— Anlamaya   Ek Yaklaşımlar   ———

Keyfi Ayrık Tensörlerin Rasgele Hesaplama Yapıları

Bir hesaplama sistemi oluşturmak için kullanılabilecek bileşenlerden biri, sinir ağları oluşturmak için birbirine bağlanacak şekilde tasarlanmış bir elementtir. Bunların mevcudiyeti, derin öğrenme ve sinir ağlarını ilerletmeyi desteklemektedir. Rasgele tanımlanmış hesaplama yapılarında potansiyel olarak çok boyutlu verilerle çalışan bileşenlerin birleştirilmesini içeren çok çeşitli diğer sistemler de oluşturulabilir.

Veriler, kayan nokta sayıları, tamsayılar veya dizeler gibi skaler değerler ya da bunların vektörler, matrisler, küpler ya da hiper küpler gibi ortogonal kümelenmeleri olabilir. Bu veri formlarının genelleştirilmesi işlemleri ayrı tensörlerdir ve tensör işlemlerinin çalışma sistemlerine birleştirilmesinden oluşturulan yapılar veri akışlarıdır.

Dinamik Hesaplama Kavramını Anlamak için Referans Noktaları

Dinamik Hesaplamalı Grafikler, terim nispeten yeni olmasına rağmen, özellikle yeni bir kavram değildir. Bilgisayar bilimcileri arasında DCG'lere ilgi, Veri Bilimcisi terimi kadar yeni değildir. Bununla birlikte, soru doğru bir şekilde, ortaya çıkmalarını ve kullanımlarını çevreleyen genel kavramı öğrenebilecek çok iyi yazılmış kaynakların (kod örnekleri dışında) olduğunu doğru bir şekilde belirtir.

DCG'leri anlamaya başlamak için olası bir referans noktası, nesne yönelimli tasarımın savunucuları tarafından popüler hale getirilen birçok tasarım modelinden biri olan Command tasarım modelidir. Komut tasarım deseni işlemleri, ayrıntıları tetikleyen komut nesnelerinden gizlenen hesaplama birimleri olarak kabul eder. Komut tasarım deseni genellikle Tercüman tasarım deseni ile birlikte kullanılır.

DCG'ler için, Kompozit ve Cephe tasarım modelleri, sistemleri oluşturmak için desenlerde bir araya getirilebilen tak ve çalıştır ayrı tensör işlemlerinin tanımlanmasını kolaylaştırmak için de dahil edilir.

Sistemler oluşturmak için tasarım desenlerinin bu özel kombinasyonu aslında günümüzde çoğu bilgisayarın merkezi olan Von Neumann mimarisinin ortaya çıkmasına neden olan radikal düşünceye büyük ölçüde benzeyen bir yazılım soyutlamasıdır. Von Neumann'ın bilgisayarın ortaya çıkışına katkısı, Boolean mantığı, aritmetik ve dallanma içeren rasgele algoritmaların veri - bir program olarak temsil edilmesine ve saklanmasına izin verme fikridir.

DCG'lerin bir diğer öncüsü de ifade motorlarıdır. İfade motorları aritmetik motorlar kadar basit ve Mathematica gibi uygulamalar kadar karmaşık olabilir. Bir kural motoru, DCG'lere benzer, ancak kural motorları deklaratiftir ve motorların bu beyanlarda çalışan kurallar için meta-kurallardır.

Programlar Programları Yönetme

Bunların DCG'lerle ortak yanı, uygulanacak veri akışının ve işlemlerin çalışma zamanında tanımlanabilmesidir. DCG'lerde olduğu gibi, bu yazılım kitaplıklarının ve uygulamalarının bazılarında, işlemlerin işlevsel ayrıntılara uygulanmasına izin veren API'ler veya başka mekanizmalar bulunur. Esasen başka bir programın değiştirilmesine izin veren bir program fikri.

Bu ilkeyi ilkel düzeyde anlamak için bir başka referans noktası, bazı bilgisayar dillerinde mevcut olan anahtar-durum ifadesidir. Programlayıcının aslında "Ne yapılması gerektiğinden emin değiliz, ancak bu değişkenin değeri gerçek zamanlı yürütme modeline bir dizi olasılıktan ne yapılacağını söyleyeceği" bir kaynak kodu yapısıdır.

Geçiş vakası ifadesi, kararın çalışma yönüne kadar ertelenmesi fikrini uzatan bir soyutlamadır. Çağdaş bir CPU'nun kontrol ünitesinde yapılanların yazılım versiyonudur ve bazı algoritma detaylarını erteleme kavramının bir uzantısıdır. C'deki bir işlevler tablosu (işlev işaretçileri) veya C ++, Java veya Python'daki polimorfizm diğer ilkel örneklerdir.

Dinamik Hesaplama soyutlamayı daha da ileri götürür. Hesaplamaların özelliklerinin tamamı olmasa da ve çalışma zamanı arasındaki ilişkilerin çoğunu yok ederler. Bu kapsamlı genelleme, çalışma zamanında işlevsel modifikasyon olanaklarını genişletir.

Hesaplamanın Yönlendirilmiş Grafik Gösterimi

Dinamik Hesaplama modeli budur. Şimdi Grafik bölümü için.

Çalışma zamanına kadar önceden oluşturulacak işlem seçimini ertelemeye karar verdikten sonra, işlemleri, bağımlılık ilişkilerini ve belki de haritalama parametrelerini tutmak için bir yapı gereklidir. Böyle bir temsil, sözdizimsel bir ağaçtan (kaynak kodu hiyerarşisini temsil eden bir ağaç gibi) daha fazlasıdır. Bir montaj dili programının veya makine kodunun aksine, kolay ve keyfi olarak değiştirilebilir olmalıdır. Bir veri akış grafiğinden daha fazla ve bir bellek haritasından çok daha fazla bilgi içermelidir. Hesaplama yapısını belirten veri yapısı neye benzemelidir?

Neyse ki, herhangi bir keyfi, sonlu, sınırlı algoritma, belirtilen işlemler arasındaki bağımlılıkların yönlendirilmiş bir grafiği olarak temsil edilebilir. Böyle bir grafikte, köşeler (genellikle görüntülendiğinde çeşitli şekillerin düğümleri olarak temsil edilir) veriler üzerinde gerçekleştirilen işlemleri temsil eder ve kenarlar (görüntülendiğinde genellikle oklar olarak gösterilir), bazı işlemlerden (veya sistem girdisinden) kaynaklanan bilginin dijital temsilidir ve hangi diğer işlemlerin (veya sistem çıktısının) bağlı olduğu.

Yönlendirilen grafiğin ne bir algoritma (kesin bir işlem dizisi belirtildiği) ne de bir bildirim (verilerin açıkça saklanabileceğini ve döngüler, dallar, işlevler ve modüller tanımlanabilir ve iç içe olabileceğini unutmayın) unutmayın.

Bu Dinamik Hesaplamalı Grafik çerçeveleri ve kitaplıkları, bileşenlerin makine öğrenmesini destekleyen bileşen girdisi üzerinde hesaplamalar yapmasına izin verir. Yönlendirilen grafikteki tepe noktaları, bir nöral ağın veya diferansiyel hesabı destekleyen bileşenlerin inşası için nöronların simülasyonları olabilir. Bu çerçeveler daha genel bir anlamda derin öğrenme için kullanılabilecek yapı olasılıkları sunar.

Bilgisayar Tarihi Bağlamında

Yine, şimdiye kadar bahsedilen hiçbir şey bilgisayar bilimi için yeni değildir. LISP, hesaplama şemalarının diğer algoritmalar tarafından değiştirilmesine izin verir. Genelleştirilmiş giriş boyutu ve numerocity, uzun süredir devam eden tak ve çalıştır arabirimleri ve protokolleri içine yerleştirilmiştir. Öğrenme için bir çerçeve fikri, 20. yüzyılın ortalarına kadar uzanmaktadır.

Yeni ve popülerlik kazanmakta olan şey, entegre özelliklerin ve ilişkili terminolojinin belirli bir kombinasyonudur, bu özelliklerin her biri için mevcut terminolojinin bir araya getirilmesi, yazılım endüstrisinde zaten çalışmış ve çalışmakta olanların kavraması için daha geniş bir tabana yol açmaktadır. .

  • API arayüzlerinin çağdaş (modaya uygun) lezzeti
  • Nesne yönelimi
  • Ayrık tensör desteği
  • Yönlendirilmiş grafik soyutlama
  • Büyük veri, veri madenciliği, makine öğrenimi ve istatistiksel analizi destekleyen popüler diller ve paketlerle birlikte çalışabilirlik
  • Keyfi ve sistematik sinir ağı yapımı için destek
  • Dinamik sinir ağı yapısal adaptasyonu olasılığı (sinir plastisitesi üzerine deney yapılmasını kolaylaştırır)

Bu çerçevelerin çoğu, değişen girdi boyutluluğuna (boyut sayısı ve her birinin aralığı) uyarlanabilirliği destekler.

Derleyicilerdeki Soyut Sembol Ağaçlarına Benzerlik

İşlemlerin girdi ve çıktılarının bir bağımlılık grafiği, kaynak kod yapısının yorumlanması sırasında daha ilerleyici derleyicilerin bazılarının oluşturduğu soyut sembol ağaçları (AST) içinde de görünür. Daha sonra AST, kütüphanelerle bağlantı kurma ve bir yürütülebilir dosya oluşturma sürecinde montajcı talimatları veya makine talimatları üretmek için kullanılır. AST, verilerin yapısını, gerçekleştirilen işlemleri ve kaynak koduyla belirtilen kontrol akışını temsil eden yönlendirilmiş bir grafiktir.

Veri akışı, AST'nin derleyici veya makine kodunda kaynak kodunda belirtilen algoritmayı tam olarak izleyen yürütme talimatları oluşturmak için kullanılması için AST'de bulunması gereken işlemler arasındaki bağımlılıklar kümesidir.

Dinamik Hesaplamalı Grafik çerçeveleri, derleyicilerdeki anahtar durum ifadelerinin veya AST modellerinin aksine, gerçek zamanlı olarak manipüle edilebilir, optimize edilebilir, ayarlanabilir (plastik yapay ağlarda olduğu gibi), ters çevrilmiş, tensörler tarafından dönüştürülmüş, küçültülmüş, eklenecek veya çıkarılacak şekilde değiştirilebilir entropi, bir dizi kurala göre mutasyona uğramış veya başka şekilde türev formlarına çevrilmiştir. Dosya veya akış olarak saklanabilir ve daha sonra bunlardan alınabilirler.

Bu, LISP programcıları veya John von Neumann'ın operasyonel spesifikasyonları veri olarak saklama önerisinin doğasını anlayanlar için önemsiz bir kavramdır. Bu daha sonraki anlamda, bir program, bir derleyici ve işletim sistemi aracılığıyla VLSI dijital devresinde uygulanan dinamik bir hesaplama sistemine talimat vermek için bir veri akışıdır.

Uyarlanabilir Boyutsallık ve Sayısallık Elde Etme

Soruda, "Veri kümesine sahip olmak gerekiyor - içindeki tüm örneklerin aynı, sabit sayıda girdiye sahip olduğu" yorumu yok. Bu ifade doğru bir kavrayışı desteklemez. Girdi uyarlanabilirliği hakkında neyin doğru olduğunu söylemenin daha açık yolları vardır.

Bir DCG ile genel bir sistemin diğer bileşenleri arasındaki arayüz tanımlanmalıdır, ancak bu arayüzler dinamik boyutlara veya numerocity içine yerleştirilmiş olabilir. Bu bir soyutlama meselesidir.

Örneğin, ayrı bir tensör nesne türü belirli bir yazılım arayüzü sunar, ancak tensör, etrafında ortak bir arayüzün kullanılabileceği dinamik bir matematiksel kavramdır. Ayrı bir tensör bir skaler, bir vektör, bir matris, bir küp veya bir hiper küp olabilir ve her bir boyut için bağımlı değişkenlerin aralığı değişken olabilir.

Dinamik Hesaplama Grafiğinde tanımlanan bir sistem katmanındaki düğümlerin miktarının, belirli bir tipteki girdi sayısının bir fonksiyonu olabileceği ve çalışma süresine ertelenen bir hesaplama olabileceği de olabilir.

Çerçeve, katman yapısını seçmek için (anahtar-kasa paradigmasının bir uzantısı) veya yapı boyutlarını ve derinliğini veya aktivasyonunu tanımlayan parametreleri hesaplamak üzere programlanabilir. Ancak bu karmaşık özellikler, çerçeveyi Dinamik Hesaplamalı Grafik çerçevesi olarak nitelendiren özellikler değildir.

Dinamik Hesaplama Grafiklerini Destekleyecek Bir Çerçeveyi Neler Nitelendirir?

Dinamik Hesaplamalı Grafik çerçevesi olarak nitelendirilebilmesi için, çerçevenin yalnızca algoritma belirlemesinin çalışma süresine ertelenmesini desteklemesi ve bu nedenle çalışma zamanında hesaplama bağımlılıkları ve veri akışı üzerindeki çok sayıda işlemin kapısını açması gerekir. Ertelenen işlemlerin temelleri, işletim sistemlerini temsil eden yönlendirilmiş grafiklerin tanımlanmasını, değiştirilmesini, yürütülmesini ve depolanmasını içermelidir.

Algoritmanın özellikleri çalışma zamanına kadar ertelenmez, ancak yalnızca if-then-else, switch-case, polimorfizm, diziler gibi düşük seviyeli diller tarafından sağlanan geleneksel esneklikle belirli bir işletim sistemi için tasarlanmış yürütülebilir dosyada derlenirse functors ve değişken uzunluklu dizeler statik bir algoritma olarak kabul edilir.

İşlemler, aralarındaki bağımlılıklar, veri akışı, akış içindeki verilerin boyutsallığı ve sistemin giriş numerocity ve boyutluluğuna uyarlanabilirliği, çalışma zamanında oldukça uyarlanabilir bir sistem oluşturacak şekilde değişkendir, algoritma bu yollarla dinamiktir.

Yine, LISP programlarında çalışan LISP programları, meta-kural yeteneklerine sahip motorları yönetir, ifade motorları, ayrık tensör nesne kütüphaneleri ve hatta nispeten basit Komut tasarım desenleri, bir anlamda dinamiktir ve bazı özellikleri çalışma zamanını erteler. DCG'ler, derin öğrenme deneyleri ve sistemlerin uygulanması için zengin bir ortam oluşturacak şekilde keyfi hesaplama yapılarını destekleme yeteneklerinde esnek ve kapsamlıdır.

Dinamik Hesaplamalı Grafikler Ne Zaman Kullanılmalı

DCG'lerin artıları ve eksileri tamamen probleme özgüdür. Yukarıdaki çeşitli dinamik programlama kavramlarını ve ilişkili literatürde kendilerine yakından bağlı olabilecekleri araştırırsanız, Dinamik Hesaplama Grafiğine ihtiyacınız olup olmadığı açık olacaktır.

Genel olarak, derin öğrenme sisteminin, matematiksel manipülasyon sisteminin, uyarlanabilir sistemin veya DCG paradigmasına iyi eşleşen diğer esnek ve karmaşık yazılım yapısının uygulanmasını kolaylaştırmak için keyfi ve değişen bir hesaplama modelini temsil etmeniz gerekiyorsa, o zaman bir kanıt Dinamik Hesaplamalı Grafik çerçevesi kullanan konsept, sorunun çözümü için yazılım mimarinizi tanımlamak için iyi bir ilk adımdır.

Tüm öğrenme yazılımları DCG'leri kullanmaz, ancak keyfi bir hesaplama yapısının sistematik ve muhtemelen sürekli manipülasyonu bir çalışma süresi gereksinimi olduğunda, genellikle iyi bir seçimdir.


" PyTorch, Meşale çerçevesinin Python dili için entegrasyonudur " - Bence bu ifade yanlış bir ifade olacak " PyTorch Python dili için Meşale çerçevesi için bir sarıcı kütüphanesi " olarak yanlış yorumlanabilir . Muhtemelen yeniden ifade etmelisiniz.
nbro

" Dinamik Hesaplamalı Grafik çerçeveleri ile, derleyicilerdeki anahtar-durum ifadeleri veya ara AST modellerinin aksine, " ... " onları çevir " işlemlerini manipüle edebilir - "Çeviri işlemleriyle" ne demek istersiniz?
nbro

1

Kısacası, dinamik hesaplama grafikleri, statik olanların gruplar halinde eğitime izin vermemeleri nedeniyle veremedikleri veya verimsiz oldukları bazı sorunları çözebilir.

Daha spesifik olmak gerekirse, modern sinir ağı eğitimi genellikle gruplar halinde yapılır , yani bir seferde birden fazla veri örneği işlenir. Bazı araştırmacılar 32, 128 gibi parti boyutunu seçerken, diğerleri 10.000'den büyük parti boyutunu kullanır. Tek örnekli eğitim genellikle çok yavaştır, çünkü donanım paralelliğinden yararlanamaz.

Örneğin, Doğal Dil İşlemede, araştırmacılar sinir ağlarını farklı uzunluklarda cümlelerle eğitmek istiyorlar. Statik hesaplama grafikleri kullanarak, genellikle önce dolgu yapmak zorunda kalacaklardır , yani aynı uzunluktaki tüm cümleleri yapmak için daha kısa cümlelerin başına veya sonuna anlamsız semboller eklemek zorunda kalacaklardır . Bu işlem eğitimi çok karmaşık hale getirir (örneğin maskeleme ihtiyacı, değerlendirme metriklerini yeniden tanımlama, bu dolgulu sembollerde önemli miktarda hesaplama süresi harcar). Dinamik bir hesaplama grafiğinde artık dolguya gerek yoktur (veya yalnızca her parti içinde gereklidir).

Daha karmaşık bir örnek, cümleleri ayrıştırma ağaçlarına dayanarak işlemek (sinir ağını kullanmak) olacaktır. Her cümlenin kendi ayrıştırma ağacı olduğundan, her biri farklı bir hesaplama grafiğine ihtiyaç duyar, yani statik bir hesaplama grafiğiyle eğitim yalnızca tek örnekli eğitime izin verebilir. Buna benzer bir örnek Özyinelemeli Sinir Ağlarıdır .


0

Birçok derin sinir ağının statik bir veri akışı grafiği vardır, bu da kabaca hesaplama yapısının (hesaplama grafiği) farklı girdiler üzerinde sabit kaldığı anlamına gelir. Mini yığınlama (aynı anda bir grup girdiyi işlemek gibi) gibi performans için bu özellikten yararlanabileceğimiz için bu iyi bir şey.

Ancak bazı sinir ağlarının her girdi için farklı bir hesaplama grafiği olabilir. Bu, bazı sorunlara neden olur (yığın zorlukları, grafik yapısı hesaplama açısından pahalıdır) ve bu nedenle bu ağların kullanımı biraz zordur.

Bağladığınız makale, birkaç hesaplama grafiğini bir araya getirebilecek bir yöntem önererek bu sorunun üstesinden gelir. O zaman, her zamanki NN tekniklerimizi yapabiliriz.

Faydaları, araştırmacıları farklı yapıları keşfetmeye ve daha yaratıcı olmaya teşvik eden hızlandırmalardır.

Dinamik Hesaplamalı Grafiklerin avantajı, giriş verilerinde değişen miktarlara uyum sağlama yeteneğini içerir. Eğitim sırasında her bir giriş seti örneğine bağlı olarak, katman sayısının, her katmandaki nöron sayısının, aktivasyon fonksiyonunun ve diğer NN parametrelerinin otomatik seçimi olabilir gibi görünüyor. Bu doğru bir karakterizasyon mu?

Bu yanlış.


0

Dinamik Hesaplamalı Grafikler, daha yüksek bir soyutlama düzeyine sahip basitçe değiştirilmiş CG'lerdir. 'Dinamik' kelimesi her şeyi açıklar: verinin grafikten nasıl aktığı giriş yapısına bağlıdır, yani DCG yapısı değişebilir ve statik değildir. Önemli uygulamalarından biri NLP sinir ağlarıdır.

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.