1. Giriş

Son Güncelleme: 2022-03-28
Makine öğrenimi
Makine öğrenimi, baş döndürücü bir hızla gelişen bir alandır. Her gün yeni araştırmalar ve imkanlar yayınlanıyor. Bu sayede, daha önce mümkün olmayan kullanım alanları ortaya çıkıyor.
Bu yayınlar genellikle bir modelle sonuçlanır. Modeller, bir giriş (ör. resim) verildiğinde bir sonuç (ör. sınıflandırma) çıkaran çok uzun matematik denklemleri olarak anlaşılabilir.
- Bu yeni modellerden birini kendi verilerinizle kullanmak isterseniz ne yapmanız gerekir?
- Kullanım alanınız veya uygulamanız için bu son teknoloji modellerden nasıl yararlanabilirsiniz?
Bu codelab'de, makine öğrenimi modellerini kendi verilerinize göre kolayca özelleştirme süreci adım adım açıklanmaktadır.
Makine öğrenimi modelleri oluşturma ve eğitme birçok zorluk içerir:
- Çok zaman alır.
- Büyük miktarda veri kullanır.
- Matematik ve istatistik gibi alanlarda uzmanlık gerektirir.
- Kaynak yoğun: Bazı modellerin eğitimi günler sürebilir.
Yeni model mimarileri oluşturmak çok zaman alır ve birçok deneme ile yıllarca deneyim gerektirebilir. Peki tüm bu bilgilerden yararlanıp son teknoloji araştırmaları kendi sorununuz için özelleştirerek kendi verilerinizde kullanabilseydiniz? Transfer Learning (Aktarımlı Öğrenme) adı verilen bir teknikle bu mümkün.
Bu codelab'de, transfer öğreniminin nasıl yapılacağını, neden işe yaradığını ve ne zaman kullanılması gerektiğini öğreneceksiniz.
Neler öğreneceksiniz?
- Transfer öğrenimi nedir ve ne zaman kullanılır?
- Transfer öğrenimi nasıl kullanılır?
- Modelleri nasıl ince ayarlayacağınızı öğrenin.
- TensorFlow Lite Model Maker'ı kullanma
- TensorFlow Hub'ı kullanma
Gerekenler
- Tüm kodlar Google Colaboratory kullanılarak yürütüldüğünden makinenize herhangi bir şey yüklemeniz gerekmez. Colab'da oturum açmak için internet erişimi ve bir Google Hesabı'na sahip olmanız yeterlidir.
- TensorFlow ve Keras API hakkında temel düzeyde bilgi sahibi olmanız gerekir.
- Python bilgisi
TensorFlow veya makine öğrenimi hakkında temel bilgileriniz olmasa da Transfer Learning hakkında bilgi edinebilirsiniz. Tekniğin teorisini öğrenmek için sonraki adım olan "Transfer Öğrenimi Nedir?"i okuyun, ardından "Model Maker ile Transfer Öğrenimi" bölümüne geçin. Daha ayrıntılı bilgi edinmek ve süreci daha ayrıntılı görmek isterseniz TensorFlow Hub ile Transfer Öğrenimi hakkındaki bölümlere göz atabilirsiniz.
2. Transfer öğrenimi nedir?
Önceden eğitilmiş model, daha önce büyük bir veri kümesi üzerinde (genellikle büyük ölçekli bir görüntü sınıflandırma görevi üzerinde) eğitilmiş, kaydedilmiş bir ağdır. Önceden eğitilmiş modeli olduğu gibi kullanabilir veya bu modeli belirli bir göreve göre özelleştirmek için aktarımlı öğrenmeyi kullanabilirsiniz.
Görüntü sınıflandırması için transfer öğreniminin arkasındaki sezgi, bir model yeterince büyük ve genel bir veri kümesi üzerinde eğitilirse bu modelin görsel dünyanın genel bir modeli olarak etkili bir şekilde hizmet edeceği yönündedir. Ardından, büyük bir modeli büyük bir veri kümesi üzerinde eğiterek sıfırdan başlamak zorunda kalmadan bu öğrenilmiş özellik haritalarından yararlanabilirsiniz.
Makine öğrenimi modelini özelleştirmenin iki yolu vardır.
- Özellik Çıkarma: Yeni örneklerden önemli özellikleri çıkarmak için önceki bir ağ tarafından öğrenilen temsilleri kullanın. Önceden eğitilmiş modelin üzerine sıfırdan eğitilmiş yeni bir sınıflandırıcı ekleyerek daha önce veri kümesi için öğrenilen özellik haritalarını yeniden kullanabilirsiniz. Modelin tamamını (yeniden) eğitmeniz gerekmez. Temel evrişimli ağ, resimleri sınıflandırmak için genel olarak yararlı olan özellikleri zaten içerir. Ancak, önceden eğitilmiş modelin son sınıflandırma kısmı, orijinal sınıflandırma görevine ve dolayısıyla modelin eğitildiği sınıf kümesine özeldir.
- İnce ayar: Dondurulmuş bir model tabanının üst katmanlarından birkaçını çözün ve hem yeni eklenen sınıflandırıcı katmanlarını hem de temel modelin son katmanlarını birlikte eğitin. Bu sayede, temel modeldeki yüksek düzeyli özellik temsillerini belirli görevle daha alakalı hale getirmek için "ince ayarlayabiliriz".
Özellik çıkarma daha hızlı eğitilir ancak ince ayar ile daha iyi sonuçlar elde edebilirsiniz.
Transfer öğrenmeyi iki farklı şekilde yaparak her ikisini de (Özellik Çıkarma ve İnce Ayar) deneyeceksiniz:
- TensorFlow Lite Model Maker kitaplığı, veri işlem hattı ve model oluşturma işlemlerinin çoğunu otomatik olarak yaparak süreci çok daha kolay hale getirir. Elde edilen model, mobil cihazlarda ve tarayıcıda kullanılmak üzere kolayca dışa aktarılabilir.
- TensorFlow Hub modelleri, TensorFlow Hub'da bulunan geniş makine öğrenimi modeli deposundan yararlanır. Araştırmacılar ve topluluk bu modellere katkıda bulunarak en yeni modellerin çok daha hızlı ve çeşitli bir şekilde kullanılabilmesini sağlar.
3. Model Maker ile Transfer Öğrenimi
Transfer öğreniminin arkasındaki fikri öğrendiğinize göre, bu işlemi kolayca yapmanıza yardımcı olacak bir araç olan TensorFlow Lite Model Maker kitaplığını kullanmaya başlayalım.
TensorFlow Lite Model Maker kitaplığı, Transfer Learning sürecini basitleştiren ve bu süreci mobil ve web geliştiricileri gibi makine öğrenimi geliştiricisi olmayan kullanıcılar için çok daha kolay hale getiren açık kaynaklı bir kitaplıktır.
Colab not defteri, aşağıdaki adımlarda size yol gösterir:
- Verileri yükleyin.
- Verileri bölme
- Modeli oluşturma ve eğitme
- Modeli değerlendirin.
- Modeli dışa aktarın.
Bu adımdan sonra, aynı süreci izleyerek kendi verilerinizle Transfer Learning yapmaya başlayabilirsiniz.
Colaboratory
Ardından, özel modeli eğitmek için Google Colab'e gidelim.
Açıklamayı inceleyip not defterinin temel bilgilerini öğrenmek yaklaşık 15 dakika sürer.
Artıları:
- Modelleri kolayca özelleştirme
- TensorFlow veya Keras API'yi anlamanıza gerek yoktur.
- Kullanıcının henüz uygulanmamış belirli bir şeye ihtiyacı varsa değiştirilebilen açık kaynaklı araç.
- Modeli doğrudan mobil veya tarayıcıda yürütme için dışa aktarır.
Eksileri
- Önceki iki yöntemde olduğu gibi, tam işlem hattını ve modeli kendiniz oluşturmaya kıyasla daha az yapılandırma olanağı sunar.
- Temel model seçerken bile tüm modeller temel olarak kullanılamaz.
- Veri ardışık düzeninin daha karmaşık olduğu büyük miktarlarda veri için uygun değildir.
4. TensorFlow Hub'da model bulma
Bu bölümün sonunda şunları yapabileceksiniz:
- TensorFlow Hub'da makine öğrenimi modellerini bulun.
- Koleksiyonlar hakkında bilgi edinin.
- Farklı model türlerini anlama
Transfer öğrenimi yapmak için iki şeyle başlamanız gerekir:
- Veriler (ör. tanımak istediğiniz öznelerin resimleri).
- Verilerinize göre özelleştirebileceğiniz bir temel model.
Veri kısmı genellikle işletmeye bağlıdır ancak en kolay yol, tanımak istediğiniz şeylerin birçok fotoğrafını çekmektir. Peki ya temel model? Nerede bulabilirsiniz? TensorFlow Hub bu konuda size yardımcı olabilir.
TensorFlow Hub, TensorFlow modelleriyle ilgili ihtiyaçlarınız için model deposudur.
Kullanıma hazır binlerce modelin dokümanlarını arayabilir ve okuyabilirsiniz. Bu modellerin çoğu, Transfer Learning ve Fine-tuning için uygundur.
Model arama
Öncelikle TensorFlow Hub'da, daha sonra kodunuzda kullanabileceğiniz modeller için basit bir arama yapalım.
1. adım: Tarayıcınızda tfhub.dev sitesini açın.

Resim alanında Transfer Learning için Özellik Vektörleri gerekir. Özellik vektörleri, sınıflandırma modellerine benzer ancak sınıflandırma başlığı yoktur.
Özellik vektörleri, resimleri N. uzayda sayısal bir temsile dönüştürebilir (burada N, modelin çıkış katmanının boyut sayısıdır).
TFHub'da belirli bir kartı tıklayarak özellikle Özellik Vektörleri'ni arayabilirsiniz.

Ayrıca, soldaki filtreyi kullanarak yalnızca Image feature vectors gösterilecek şekilde bir modelin adını arayabilirsiniz.

Mavi simgeli kartlar model koleksiyonlarıdır. Bir resim koleksiyonunu tıkladığınızda, aralarından seçim yapabileceğiniz birçok benzer modele erişebilirsiniz. Resim koleksiyonunu seçelim.

Aşağı kaydırıp MobileNet V3 simgesini seçin. Özellik vektörlerinden herhangi biri kullanılabilir.

Modelin ayrıntılar sayfasında, modelle ilgili tüm belgeleri okuyabilir, modeli denemek için kod snippet'lerini görebilir veya doğrudan Colab not defterinde deneyebilirsiniz.

Şimdilik ihtiyacınız olan tek şey en üstteki URL'dir. Bu, model tutma yeri ve TensorFlow Hub kitaplığındaki bir modele kolayca erişebileceğiniz yöntemdir.
5. TensorFlow Hub ile Transfer Öğrenimi
Kullanılacak modeli seçtiğinize göre, TensorFlow Hub kitaplığındaki KerasLayer yöntemiyle yükleyerek modeli özelleştirelim.
Bu yöntem, modeli, modelinizde katman olarak kullanılabilecek şekilde yükler. Böylece modelinizi bu katman etrafında oluşturabilirsiniz.
Daha önce Model Oluşturucu'yu kullanmayı öğrenirken, anlamanızı kolaylaştırmak için tüm iç kısımlar sizden gizleniyordu. Hayır, Model Oluşturucu'nun perde arkasında neler yaptığını görürsünüz.
Colaboratory
Ardından, özel modeli eğitmek için Google Colab'e gidelim.
Açıklamayı inceleyip not defterinin temel bilgilerini anlamak yaklaşık 20 dakika sürer.
Artıları:
- Araştırmacılar ve topluluk tarafından gönderilen, çeşitli veri kümeleri üzerinde eğitilmiş binlerce model.
- Görsel, metin ve ses gibi tüm görevler için modeller.
- Farklı benzer modellerle deneme yapmak kolaydır. Temel modeli değiştirmek için yalnızca bir dizeyi değiştirmeniz gerekebilir.
Eksileri
- Modelleri kullanmak için TensorFlow/Keras konusunda uzmanlık gerekir.
Daha da ayrıntılı bilgi edinmek isterseniz Keras Uygulaması ile Transfer Öğrenimi'ni de inceleyebilirsiniz. Bu işlem, TensorFlow Hub'ı kullanmaya çok benzer ancak yalnızca temel TensorFlow API'leri ile yapılır.
6. Tebrikler
Tebrikler, transfer öğrenimi hakkında bilgi edindiniz ve kendi verilerinize nasıl uygulayacağınızı öğrendiniz.
Bu Codelab'de, Transfer Öğrenimi adı verilen bir teknik kullanarak makine öğrenimi modellerini kendi verilerinize göre nasıl özelleştireceğinizi öğrendiniz.
İki tür transfer öğrenimi denediniz:
- TensorFlow Lite Model Maker gibi bir araç kullanma.
- TensorFlow Hub'dan bir özellik vektörü kullanma.
Her iki seçeneğin de avantajları ve dezavantajları vardır ve özel ihtiyaçlarınız için birçok olası yapılandırma mevcuttur.
Ayrıca, verilerinize daha iyi uyacak şekilde ağırlıklarını biraz daha ayarlayarak modelleri daha da hassaslaştırabileceğinizi öğrendiniz.
Her iki seçenek de modellerde ince ayar yapabilir.
Transfer öğrenimi ve ince ayar yalnızca görüntüyle ilgili modeller için değildir. Amaç, veri kümenize göre ayarlama yapmak için bir alanın öğrenilmiş gösterimini kullanmak olduğundan bu yöntem, Metin ve Ses alanları için de kullanılabilir.
Sonraki Adımlar
- Kendi verilerinizle deneyin.
- Geliştirdiğiniz projeleri bizimle paylaşın ve sosyal medyada projelerinizle birlikte TensorFlow'u etiketleyin.
Daha Fazla Bilgi
- BERT gibi son teknoloji modeller için ince ayar yapma hakkında daha fazla bilgi edinmek istiyorsanız BERT modeline ince ayar yapma başlıklı makaleyi inceleyin.
- Ses modelleri için aktarımlı öğrenme hakkında daha fazla bilgi edinmek istiyorsanız Çevresel ses sınıflandırması için YAMNet ile aktarımlı öğrenme başlıklı makaleyi inceleyin.