TensorFlow nedir? Makine öğrenimi kitaplığının açıklaması

Makine öğrenimi karmaşık bir disiplindir. Ancak makine öğrenimi modellerini uygulamak, veri edinme, modelleri eğitme, tahmin sunma ve gelecekteki sonuçları iyileştirme sürecini kolaylaştıran Google'ın TensorFlow gibi makine öğrenimi çerçeveleri sayesinde eskisinden çok daha az yıldırıcı ve zordur.

Google Brain ekibi tarafından oluşturulan TensorFlow, sayısal hesaplama ve büyük ölçekli makine öğrenimi için açık kaynaklı bir kitaplıktır. TensorFlow, bir dizi makine öğrenimi ve derin öğrenme (diğer adıyla sinir ağı) modellerini ve algoritmalarını bir araya getirir ve bunları ortak bir metafor aracılığıyla kullanışlı hale getirir. Bu uygulamaları yüksek performanslı C ++ ile çalıştırırken, çerçeveyle uygulamalar oluşturmak için uygun bir ön uç API sağlamak için Python kullanır.

TensorFlow, el yazısıyla yazılmış rakam sınıflandırması, görüntü tanıma, kelime yerleştirme, tekrarlayan sinir ağları, makine çevirisi için diziden diziye modeller, doğal dil işleme ve PDE (kısmi diferansiyel denklem) tabanlı simülasyonlar için derin sinir ağlarını eğitebilir ve çalıştırabilir. Hepsinden iyisi, TensorFlow, eğitim için kullanılan modellerin aynısıyla üretim tahminini geniş ölçekte destekler.

TensorFlow nasıl çalışır?

TensorFlow, geliştiricilerin veri akışı grafikleri ( verilerin bir grafikte veya bir dizi işleme düğümünde nasıl hareket ettiğini açıklayan yapılar) oluşturmalarına olanak tanır . Grafikteki her düğüm matematiksel bir işlemi temsil eder ve düğümler arasındaki her bağlantı veya kenar, çok boyutlu bir veri dizisi veya tensördür .

TensorFlow, tüm bunları programcı için Python dili aracılığıyla sağlar. Python öğrenmesi ve çalışması kolaydır ve üst düzey soyutlamaların nasıl bir araya getirilebileceğini ifade etmek için uygun yollar sağlar. TensorFlow'daki düğümler ve tensörler Python nesneleridir ve TensorFlow uygulamalarının kendileri de Python uygulamalarıdır.

Ancak gerçek matematik işlemleri Python'da gerçekleştirilmez. TensorFlow aracılığıyla kullanılabilen dönüşüm kitaplıkları, yüksek performanslı C ++ ikili dosyaları olarak yazılır. Python sadece parçalar arasındaki trafiği yönlendirir ve bunları birbirine bağlamak için üst düzey programlama soyutlamaları sağlar.

TensorFlow uygulamaları, uygun olan her hedefte çalıştırılabilir: yerel bir makine, buluttaki bir küme, iOS ve Android cihazlar, CPU'lar veya GPU'lar. Google'ın kendi bulutunu kullanıyorsanız daha fazla hızlanma için Google'ın özel TensorFlow İşleme Birimi (TPU) silikonunda TensorFlow'u çalıştırabilirsiniz. TensorFlow tarafından oluşturulan ortaya çıkan modeller, tahminlere hizmet etmek için kullanılacakları çoğu cihaza yerleştirilebilir.

Ekim 2019'da piyasaya sürülen TensorFlow 2.0, çalışmayı kolaylaştırmak (örneğin model eğitimi için nispeten basit Keras API'sini kullanarak) ve daha performanslı hale getirmek için çerçeveyi kullanıcı geri bildirimlerine dayalı olarak birçok şekilde yeniledi. Yeni bir API sayesinde dağıtılmış eğitimin çalıştırılması daha kolaydır ve TensorFlow Lite desteği, modellerin daha çeşitli platformlarda konuşlandırılmasını mümkün kılar. Ancak, TensorFlow'un önceki sürümleri için yazılan kodun, yeni TensorFlow 2.0 özelliklerinden en üst düzeyde yararlanabilmek için, bazen yalnızca biraz, bazen önemli ölçüde yeniden yazılması gerekir.

TensorFlow avantajları

TensorFlow'un makine öğrenimi geliştirmeye sağladığı en büyük fayda soyutlamadır. Geliştirici, algoritmaları uygulamanın en ince ayrıntılarıyla uğraşmak veya bir işlevin çıktısını diğerinin girdisine bağlamanın uygun yollarını bulmak yerine, uygulamanın genel mantığına odaklanabilir. TensorFlow, perde arkasındaki ayrıntılarla ilgilenir.

TensorFlow, TensorFlow uygulamalarında hata ayıklama ve iç gözlem elde etmesi gereken geliştiriciler için ek kolaylıklar sunar. İstekli yürütme modu, grafiğin tamamını tek bir opak nesne olarak oluşturmak ve hepsini aynı anda değerlendirmek yerine, her bir grafik işlemini ayrı ayrı ve şeffaf bir şekilde değerlendirmenize ve değiştirmenize olanak tanır. TensorBoard görselleştirme paketi, etkileşimli, web tabanlı bir gösterge panosu aracılığıyla grafiklerin çalışma şeklini incelemenizi ve profil oluşturmanızı sağlar.

TensorFlow, Google'da A listeli bir ticari kıyafetin desteklenmesinden de birçok avantaj elde ediyor. Google, yalnızca projenin arkasındaki hızlı geliştirme hızını artırmakla kalmadı, aynı zamanda TensorFlow çevresinde dağıtımı ve kullanımı kolaylaştıran birçok önemli teklif yarattı: Google'ın bulutunda hızlandırılmış performans için yukarıda bahsedilen TPU silikon; çerçeve ile oluşturulan modelleri paylaşmak için çevrimiçi bir merkez; çerçevenin tarayıcı içi ve mobil uyumlu enkarnasyonları; ve daha fazlası.

Bir uyarı: TensorFlow uygulamasının bazı ayrıntıları, bazı eğitim işleri için tamamen deterministik model eğitim sonuçları elde etmeyi zorlaştırır. Bazen bir sistem üzerinde eğitilen bir model, aynı verilerle beslendiklerinde bile, diğerinde eğitilmiş bir modelden biraz farklı olacaktır. Bunun nedenleri kaygandır - örneğin rastgele sayıların nasıl ve nerede tohumlandığı veya GPU'ları kullanırken belirli deterministik olmayan davranışlar). Bununla birlikte, bu sorunların etrafında çalışmak mümkündür ve TensorFlow'un ekibi, bir iş akışında determinizmi etkilemek için daha fazla kontrol üzerinde düşünmektedir.

İlgili video: Makine öğrenimi ve yapay zeka deşifre edildi

Makine öğrenimi ve yapay zeka ile ilgili heyecanı kıran panelimiz, teknolojinin tanımları ve etkileri hakkında konuşuyor.

TensorFlow ve rekabet

TensorFlow, bir dizi başka makine öğrenimi çerçevesiyle rekabet eder. PyTorch, CNTK ve MXNet, aynı ihtiyaçların çoğuna hitap eden üç ana çerçevedir. Aşağıda nerede öne çıktıklarını ve TensorFlow'a karşı yetersiz kaldıklarını not ettim.

  • PyTorch , Python ile oluşturulmasına ek olarak ve TensorFlow ile birçok benzerliğe sahiptir: kaputun altındaki donanım hızlandırmalı bileşenler, hareket halindeyken tasarım çalışmasına izin veren oldukça etkileşimli bir geliştirme modeli ve halihazırda dahil edilen birçok yararlı bileşen. PyTorch, kısa sürede kurulması ve çalıştırılması gereken projelerin hızlı gelişimi için genellikle daha iyi bir seçimdir, ancak TensorFlow daha büyük projeler ve daha karmaşık iş akışları için kazanır.

  • TensorFlow gibi Microsoft Bilişsel Araç Seti olan CNTK, veri akışını tanımlamak için bir grafik yapısı kullanır, ancak en çok derin öğrenme sinir ağları oluşturmaya odaklanır. CNTK, birçok sinir ağı işini daha hızlı yönetir ve daha geniş bir API kümesine (Python, C ++, C #, Java) sahiptir. Ancak CNTK şu anda TensorFlow kadar öğrenilmesi veya dağıtılması kadar kolay değil.

  • Amazon tarafından AWS'de önde gelen derin öğrenme çerçevesi olarak benimsenen Apache MXNet , birden çok GPU ve birden çok makinede neredeyse doğrusal olarak ölçeklenebilir. Aynı zamanda çok çeşitli dil API'lerini de destekler - Python, C ++, Scala, R, JavaScript, Julia, Perl, Go - yerel API'leri TensorFlow'lar kadar çalışmak kadar hoş olmasa da.