DeepMind'in açık kaynak dahili derin öğrenme çerçevesi Sonnet, gradyan iniş yoluyla öğrenmeyi araştırıyor

Xinzhiyuan Derlemesi

DeepMind'in tüm araştırma mimarisini TensorFlow (TF) kullanacak şekilde değiştirmeye karar vermesinin üzerinden neredeyse bir yıl geçti. Bunun iyi bir seçim olduğu kanıtlandı - modellerimizin çoğu önemli ölçüde daha hızlı öğreniyor ve yerleşik dağıtılmış eğitim işlevi kodumuzu büyük ölçüde basitleştiriyor.

TF'nin esnekliğinin ve uyarlanabilirliğinin belirli amaçlar için daha yüksek seviyeli çerçeveler oluşturmak için uygun olduğunu bulduk ve TF ile sinir ağı modüllerini hızlı bir şekilde oluşturmak için kullanılabilecek böyle bir çerçeve yazdık. Bu kod tabanını aktif olarak geliştiriyoruz, ancak şu ana kadar araştırma ihtiyaçlarımızla uyumlu, bu yüzden bugün bu çerçeveyi açık kaynak yapacağımızı duyurmaktan heyecan duyuyoruz. Biz buna Sonnet çerçevesi diyoruz.

Kasım 2015'teki ilk sürümünden bu yana, TensorFlow çevresinde farklı bir üst düzey kitaplık ekosistemi oluşmaya devam ederek ortak görevlerin daha hızlı gerçekleştirilmesini sağladı. Sonnet, mevcut sinir ağı kitaplıklarının bazılarıyla pek çok benzerliğe sahiptir, ancak aynı zamanda araştırma gereksinimlerimiz için özel olarak tasarlanmış bazı özelliklere de sahiptir. Önce Makaleyi öğrenmeyi öğrenirken (aşağıya bakın), Sonnet'in ön sürümü de dahil olmak üzere bazı kodlar kullandık , Diğer gelecek kod sürümleri bugün yayınladığımız tam kitaplıkta oluşturulacak.

Açık kaynak Sonnet, DeepMind tarafından oluşturulan diğer modellerin toplulukla kolayca paylaşılmasına izin verir.Ayrıca topluluğun Sonnet'i kendi araştırmaları için kullanabileceğini umuyoruz. Son aylarda, amiral gemimiz DeepMind Lab platformumuzu da açık kaynaklı hale getirdik ve şu anda StarCraft II'de yapay zeka araştırmasını destekleyen açık kaynaklı bir API geliştirmek için Blizzard ile birlikte çalışıyoruz. Gelecekte daha fazla sürüm yayınlanacak ve hepsi yeni açık kaynak sayfamızda paylaşılacak.

Bu kütüphane, Torch / NN'ye benzer nesne yönelimli bir yaklaşım kullanır ve bazı hesaplama ön aktarımlarını tanımlayan modüllerin oluşturulmasına izin verir. Modül, bazı Tensor girdileri tarafından "çağrılır", Grafiğe işlemler ekler ve Tensor çıktısını döndürür. Tasarım seçeneklerinden biri, aynı modül daha sonra çağrıldığında değişkenleri otomatik olarak yeniden kullanarak değişken paylaşımının şeffaf bir şekilde ele alınmasını sağlamaktır.

Makaledeki modellerin çoğu elbette hiyerarşik bir yapı olarak değerlendirilecektir.Örneğin, farklılaştırılabilir bir sinir bilgisayarı, standart bir doğrusal katman olarak implante edilebilen bir LSTM olabilen bir kontrolör içerir. Alt modülleri ayrıntılı olarak ifade eden kod yazmanın, kodun yeniden kullanılmasını ve deneylere daha hızlı uygulanmasını kolaylaştırabileceğini bulduk - Sonnet, diğer alt modülleri dahili olarak aynı anda ifade edebilen modülleri veya yapım sürecinde diğer modüller tarafından geçilebilen modülleri savunuyor.

Çok yararlı bulduğumuz son teknik, belirli modüllerin rastgele iç içe geçmiş Tensor gruplarında çalışmasına izin vermektir. Genellikle bir grup farklılaştırılabilir sinir bilgisayarı, farklılaştırılabilir sinir hesaplamalarının durumunu en iyi şekilde tanımlayabilir, ancak bunu paralel bir listede ifade etmek için hata yapmak kolaydır. Sonnet, bu rasgele hiyerarşilerle başa çıkmak için yardımcı programlar sağlar, böylece deneyi farklı bir RNN türü kullanmak üzere değiştirmek, hantal kod değişiklikleri gerektirmez. Bu kullanım durumunu daha iyi desteklemek için çekirdek TF'de de değişiklikler yaptık.

Sonnet, TensorFlow ile çalışmak üzere özel olarak tasarlanmıştır, bu nedenle Tensörler ve değişken aralıklar gibi düşük seviyeli ayrıntılara erişimi engellemez. Sonnet tarafından yazılan modeller, diğer gelişmiş kütüphanelerdeki orijinal TF kodu ve modelleri ile serbestçe karıştırılabilir.

Bu tek seferlik bir sürüm değildir - Github deposunu dahili sürümümüzle eşleşecek şekilde düzenli olarak güncelleyeceğiz. Hazır olduklarında sağlanacak birçok yeni özellik için birçok fikrimiz var. Topluluğun katkılarından dolayı çok heyecanlıyız. Sonnet hakkında daha fazla bilgi edinmek için lütfen GitHub depomuzu ziyaret edin.

GitHub deposu: https://www.github.com/deepmind/sonnet

Yeni bir TF kitaplığına sahip olmanın anlamı nedir?

Sonnet'in Github sayfasında, araştırmacılar, DeepMind'in orijinal amacını daha iyi anlayabileceğimiz ve bu aracı nasıl daha iyi kullanabileceğimizi daha iyi anlayabileceğimiz bazı genel sorulara cevaplar verdiler.

Soru: Neden başka bir TF kütüphanesi çıktı?

Yanıt: Mevcut TF kitaplığı, DeepMind için çok esnek değildir, çünkü ağırlık paylaşımı gerektiren çok sayıda kullanım durumumuz vardır. Şimdi, tf.make_template her şey için kullanılıyor, ağırlık paylaşımını başından beri destekliyor ve bundan elde edilen faydalar açıkça geliştirme maliyetini aşıyor. Sadece bu değil, konfigürasyon ve bağlantıyı ayıran paradigma da modül kombinasyonu için daha uygundur.

S: Aynı yapının sonraki çağrılarında farklı değişkenlere erişilebilir mi?

Cevap: Hayır. tf.make_template buna izin vermez, sonraki çağrılarda farklı değişkenlere erişimi bir hata olarak ele alır.

S: Yanlışlıkla iki modüle aynı isim verilirse ne olur?

Cevap: Aynı isimle inşa edilen modüllerin farklı isimleri ve değişken kapsamları olacak gibi görünüyor. Dahili olarak, Sonnet tf.make_template'i kullanır, bu temelde bir python işlevini bazı tf.VariableScope ile birlikte sararak işleve yapılan her çağrının aynı kapsamda ve ilk çağrıdan sonra her şeyin gerçekleşmesini sağlar. Çağrılar, değişkenleri yeniden kullanmak üzere ayarlanmıştır. Şablonun bir özelliği, aynı kapsamda herhangi bir ad girilmişse, onu benzersiz kılacak olmasıdır. Örneğin:

S: Modülümü adlandırmam gerekiyor mu?

Cevap: Hayır. Modül, snake_case'deki sınıf adı olması gereken varsayılan bir ada sahiptir, gerekirse benzersiz bir ad olarak da kullanılacaktır (yukarıya bakın). Bununla birlikte, modüle değişkenler içeren bir ad vermenizi öneririz, çünkü bu ad aynı zamanda değişkenin adını da tanımlayan dahili kapsamın adı olacaktır. Çoğu modülün adlarında dahili ağırlıkları göstermek için "w" (ağırlıklar) ve "b" (sapma) vardır. Herkes böyle adlandırmayı sever:

Seçtiğiniz isim TensorBoard'da görünecektir.

S: Bir modülün hangi değişkenleri bildirdiğini nasıl bilebilirim?

Cevap: Kapsamdaki tüm değişkenleri sorgulamak için bir modül için get_variables yöntemini kullanabilirsiniz. Modül grafiğe bağlı değilse, bir hata görüntülenecektir, çünkü değişken şu anda mevcut değildir, bu nedenle ilgili kapsam boştur.

S: Sonnet'teki her şey modüller olarak uygulanmalı mı?

Cevap: Hayır, tf.Variables oluşturmayan ve dahili konfigürasyonu saklamayan hesaplamalar normal TF Op stilinde, yani girdi tensörlerini, anahtar kelime argümanlarını alan ve tensör çıktı döndüren bir python fonksiyonunda uygulanabilir.

Bir işlem bir değişken oluşturmak istiyorsa (yani, dolaylı dahil olmak üzere herhangi bir yerde tf.get_variable çağrısı yaparsa), değişken paylaşımının doğru bir şekilde işlenebilmesi için snt.AbstractModule alt sınıfı olarak ele alınmalıdır.

Bir hesaplama herhangi bir değişken oluşturmazsa, onu uygulamak için İşlem yerine bir Modül kullanmanız gerekebileceğine dikkat edilmelidir.

Değişken paylaşıma ek olarak, Sonnet modülü, işletim sistemine konfigürasyon parametreleri eklemek istediğimizde çok kullanışlı olabilir. Bir örnek (farklılaştırılabilir sinir bilgisayarlarındaki modüller) Bu modüller, birden çok yapılandırma parametresi alır (bellekteki her bir kelimenin boyutu, okuma-yazma kafalarının sayısı) ve bu girişlerin bazı işlevleri etkin girişi tanımlar. Doğru boyutu sağlamak için bu modülden önce doğru çıktı boyutu ile snt.Linear kullandık. Bir modül olduğu için, yapılandırma sırasında yapılandırmayı uygulamak kolaydır ve ardından gerekli girdi boyutlarını veren bir method.param_size sağlar. Daha sonra doğru giriş tensör boyutunu alıp bağlanabiliriz.

Yukarıdaki işlem kosinüs_ağırlıkları (bellek, cos_params, sözcük_boyutu, sayı_başları) olarak uygulanırsa, gerekli cos_param boyutunu belirten mantık ayrı bir işlevde depolanmalıdır. İlgili işlevleri bir modül içine almak, kodu daha net hale getirecektir.

S: Diğer gelişmiş TF API'leri (TF Slim gibi) ile karıştırılabilir mi?

Cevap: Sonnet modülü oluşturulduktan sonra, Tensor-In-Tensor-Out ilkesini izler, böylece TF-Slim ve diğer işlevlerle karıştırılabilir. Ancak, Sonnet modülünün _build yönteminde TF kullanıyorsanız katman işlevine net kapsam = ve yeniden kullanım = kwargs geçirerek beklenmedik davranışlara-TF-Slim kontrollerinin paylaşımına neden olabileceği unutulmamalıdır. İnce katman, birden çok kez çağrılırsa düzgün çalışmayabilir.

S: Sonnet ve diğer kitaplıkları ve orijinal TF'yi kullanmanın ek yükü nedir?

Cevap: Hayır. Sonnet yalnızca hesaplamalı grafikler oluştururken dahil edilir. Session.run'u kullanma aşamasına geldiğinizde, diyagramı birleştirmek için hangi kitaplığın kullanıldığına bakılmaksızın, yalnızca Ops'u yürütmeniz gerekir.

Hacker News Review: DeepMind'ın dahili araştırmalarına bir bakış

En yüksek desteği alan HN kullanıcısı gcr şu yorumu yaptı:

Bir makine öğrenimi ortamı olarak TensorFlow çok karmaşıktır ve farklı araştırma grupları en iyi uygulamalarını tanımlamalıdır. TF kullanmak, C ++ öğrenmek gibidir.Herkes biraz farklı, karşılıklı olarak uyumsuz, ancak büyük ölçüde örtüşen bir dil alt kümesini öğrenir.

Sonnet açık kaynaklı olduktan sonra, DeepMind'ın özel araçlarını (biraz da olsa) ve çalışmalarında kullandıkları işlemlerin referans uygulamasını gördük.

Bu açık kaynak, DeepMind'ın çalışmalarını anlamak isteyen araştırma enstitülerinde olanlar için çok kullanışlıdır.

Ancak Sonnet, tamamen yeni bir sinir ağı kitaplığı değildir. Bu sürümün neden olduğu herhangi bir paradigma değişikliği iddiasında bulunulmadı.Sektörden biri olarak hala çok memnunum.

Araştırma makalesi: Gradyan iniş yoluyla öğrenme

Aşağıda, makalenin başında bahsedilen "Kağıt öğrenmeyi öğrenme" bölümü yer almaktadır. Bu makale 2016'nın sonunda arXiv'e yüklendi ve o sırada makalede kullanılan bazı kodlar Sonnet'in ön versiyonunu içeriyordu.

Bugün, DeepMind Github'a daha eksiksiz bir kod koydu.

Bu makalenin başlığı çok ilginçtir. "Gradyan İniş Yoluyla Öğrenme ve Gradyan İniş yoluyla Öğrenme" olarak adlandırılır Optimizasyon algoritması bir öğrenme problemi olarak kullanılır ve algoritma gerekli yapıyı otomatik olarak keşfetmeyi öğrenir. Yazarlar arasında Oxford Üniversitesi'nde profesör ve DeepMind'de araştırmacı olan Nando de Feritas yer alıyor.

Özet

Makine öğreniminde, elle tasarlanmış özelliklerden makine öğrenimi özelliklerine kadar olan süreç çok başarılı olmuştur. Bununla birlikte, optimizasyon algoritması hala manuel olarak tasarlanmıştır. Bu makalede, algoritmanın gerekli yapıyı otomatik olarak keşfetmeyi öğrenmesi için bir optimizasyon algoritmasının tasarımının bir öğrenme problemine nasıl dönüştürüleceğini gösteriyoruz. Son olarak öğrenilen algoritma (LSTM tarafından uygulanan), eğitilmiş görevlerde genel elle tasarlanmış algoritmayı aşar ve benzer yapılara sahip (yüksek genelleme yeteneği) yeni görevlerde iyi performans gösterir. Bu yeni algoritmayı basit dışbükey problemler, sinir ağlarını eğitme ve sinir sanatı ile görüntüleri şekillendirme gibi birçok görev üzerinde test ettik.

Kağıt adresi: https://arxiv.org/pdf/1606.04474.pdf

Orijinal adres: https://deepmind.com/blog/open-sourcing-sonnet/?from=groupmessageisappinstalled=1

27 Mart'ta Xinzhiyuan Açık Kaynak Ekolojik Yapay Zeka Teknolojisi Zirvesi ve Xinzhiyuan 2017 Girişimcilik Yarışması Ödül Töreni görkemli bir şekilde düzenlendi. "BAT" dahil olmak üzere Çin'in ana akım AI şirketleri ve 600'den fazla sektör eliti 2017 Çin'e ortak katkıda bulunmak için bir araya geldi Yapay zekanın gelişimi güçlü bir darbe aldı.

Orijinal metni okumak ve konferans kaydının metin versiyonunu görmek için tıklayın

Büyük etkinliği incelemek için aşağıdaki bağlantıyı ziyaret edin:

  • Aliyunqi topluluğu:

  • Iqiyi:

  • Tencent Teknolojisi:

Dış medya: Küresel petrol fiyatları yine hassas olabilir ABD, Rusya ve Suudi Arabistan'ın üç ülkesinde son gülen kim olabilir?
önceki
Guizhou sonbaharda çok güzel!
Sonraki
100 günlük iş, 0 ila 10 milyar çevrimdışı trafik, neyi doğru yaptık?
Etkisi gökyüzüne karşı, Google'ın en son BEGAN'ı bilgisayarda oluşturulan görüntülerin kalite kaydını yeniliyor
Dünyanın dört bir yanındaki 20 şehirdeki emlak piyasası soğuk gerçekle karşı karşıya ve ABD dolarının yaptığı yüksek fiyatlı saadet zinciri ortaya çıkmış olabilir.
Jingdezhenin belgeseli uluslararası bir ödül kazandı! Yurt dışından arkadaşlar hoşuna gidiyor ...
Otomobilin ana konforu veya sporu nasıl değerlendirilir? Biçim değil, süspansiyon.
Resmi duyuru Bu toz kar dünyası 11 / 23'te görkemli bir şekilde açılacak
"Çirkinsin, kuralları çiğniyorsun" ... Polis sakince dedi: Herkes oturun ve oturun, normal işleyiş ...
Fren lambasının bir kez yanıp sönmesi ile iki kez yanıp sönmesi arasındaki fark nedir? Usta, bilginin harika olduğunu söyledi
2018 pasaport altın sıralaması: Japonya bu kadar güçlü mü? Çin sıralanıyor
İran ABD doları ile ara verdi, Fransız petrol fiyatları 8 yılın en yüksek seviyesine çıktı ve aniden ABD'nin borcunu boşaltmaya başladı.
Bu kaptanın "romantik teklifi" beni ısıttı!
Hangi durumlarda acil durum şeridini kullanabilirim?
To Top