Daha Hafif Daha Hızlı: Derin Öğrenme Modellerinde Bilgi Distilasyonu

 

Daha Hafif Daha Hızlı: Derin Öğrenme Modellerinde Bilgi Distilasyonu




Günümüzde yapay zeka ve makine öğrenmesi yöntemleri kullanılarak çok başarılı projelere imza atılabilmektedir. Doğal afetleri tespit edebilen görüntü işleme modelleri, verilen cümlenin eş anlamlısını üretebilen doğal dil işleme modelleri ve bunlar gibi binlerce örnek etrafımıza baktığımızda kolayca fark edilebilir. Derin öğrenme(Deep Learning) modellerinin başarısının arkasında yazılımsal gelişmelerle birlikte yüksek performanslı ekran kartları gibi gelişmiş donanım parçalarının varlığı da çok önemli bir yere sahiptir. Peki biz başarılı bir şekilde çalışması için yüksek maliyetli ve performanslı donanım gerektiren bir modeli, daha kısıtlı imkanlarla aynı başarı oranında çalıştırabilir miyiz ? Bu sorunun cevabına hep birlikte bakalım.

Çözmesi gereken problemin büyüklüğüyle doğru orantılı bir şekilde zaman ve kaynak bakımından maliyetli olan derin öğrenme modellerini, çeşitli Model Sıkıştırma yöntemleri kullanarak, yüksek doğrulukta ve kısa çalışma zamanında gerçekleyebiliriz. Bu model sıkıştırma yöntemlerine bir göz atalım.

Pruning (Budama): Bu yöntemde amaç, modeldeki sıfıra yakın ağırlık ve aktivasyonların çıkarılarak daha küçük bir model elde edilmesidir. Böylece model, sonuca neredeyse hiç etki etmeyecek hesaplamalardan kurtarılmış olur.

Model Quantization (Model Niceleme): Model niceleme yöntemi, çıkarım için düşük hassasiyetli aritmetik işlemler yapmak temeline dayanan bir yöntemdir. Model niceleme yöntemini kullanmak isteyen biri, örneğin; 32 bitlik float sayılarla yapılan matematiksel işlemleri, 8 bitlik integer sayıları kullanarak yapabilir. Böylece büyük bir hesaplamasal yükten kurtulmuş olur. Ancak sayıların ifade edeceği küçük detayları kaybeder.

Knowledge Distillation (Bilgi Distilasyonu): Bilgi distilasyonu, önceden eğitilmiş ve öğretmen olarak seçilen bir modelin, öğrenci bir model ile eşleşmesine dayanan bir model sıkıştırma prosedürüdür.

Yukarıda üzerinden geçtiğimiz model sıkıştırma yöntemlerinden biri olan ve ayrıca bloğumuzun ana konusu olan Bilgi Distilasyonu’nu daha derinlemesine inceleyelim.

Bilgi Distilasyonundaki temel prensip daha önce de kısaca bahsettiğimiz üzere, daha geniş ve kompleks bir model olarak seçilen öğretmen modelin bilgisini, daha hafif ve küçük bir model olarak seçilen öğrenci modele aktarmasıdır. Bu bilgi aktarma işlemi için ilk olarak, önceden eğitilmiş (pre-trained) bir öğretmen modele ihtiyaç duyulmaktadır. Öğretmen modelin, çeşitli işlemlerden geçirilerek öğrenci modele özelliklerini aktarması sağlanır.

Nasıl Çalışır?

Bilgi Distilasyonu Çalışma Prensibi[2]

Softmax Function (Softmax Fonksiyonu): Çoklu sınıflandırma problemleri için kullanılır. Verilen her bir girdinin, bir sınıfa ait olma olasılığını gösteren [0,1] arası çıktılar üretmektedir. Hem öğretmen hem öğrenci modelleri eğitilirken kullanılır.

Soft Labels (Esnek Etiketler): Öğretmen model tarafından üretilen değerlerin “doğru” olarak kabul edilmesiyle ortaya çıkan veri etiketleme şeklidir. Esnek etiket olarak adlandırılmasının sebebi, öğretmen modelin doğru ve kesin bir sonuç verememe ihtimalinin bulunmasıdır.

Soft Predictions (Esnek Tahminler): Normal şartlarda [0,1] arasında değer üreten Softmax’ın, 1'den büyük kullanıldığı öğrenci modelinin çıktısıdır. Esnek tahminler, Softmax’ın olasılıkları yerine nihai Softmax’ın girdileri olan logitleri (0–1 arasında değer üreten bir olasılık fonksiyonu) kullanır.

Esnek Tahminler[1]

Distillation Loss (Distilasyon Kaybı): Öğretmen model tarafından üretilen logitler ile küçük model tarafından üretilen logitler arasındaki kare farkının en aza indirilmesi için “Soft Predictions” kullanır. Distilasyon kaybında, öğretmen modelin softmax fonksiyonunun yüksek sıcaklık (parametre olarak verilen “temperature” değeri) ile eğitilmesiyle bilgi, distilasyon modeline aktarılır.

Hard Predictions (Keskin Tahminler): Öğrenci modelinde normal Softmax kullanıldığında elde edilen öğrenci modelinin çıktısıdır. Öğrenci modelinin distilasyon işlemine tabii tutulduktan sonra, esnek tahminlerden faydalanarak kendi tahminlerini oluşturduğu durumdur.

Keskin Tahminler[1]

Ground Truth (Gerçek Sonuç): Bir fotoğrafta kedi olduğunu varsayalım. Elimizde bulunan öğretmen modeli doğru kabul ettiğimizde sonucun köpek çıkabilme ihtimali mevcuttur. Fakat gerçek doğru, fotoğrafın kesin bir şekilde kedi olduğunu söyler.

Student Loss (Öğrenci Doğru Tahmin Kaybı): Öğretmen modelin distilasyon kaybından (distillation loss) elde edilen sabitleştirilmiş sonuç ile gerçek sonuç arasındaki fark, öğrenci modelin bir girdiyi doğru tahmin etmedeki kaybını verir.

Kendi yarattığımız CNN modelini kullanarak bir uygulama örneği verelim:

Öğretmen Model Katmanları ve Özellikleri
Öğrenci Model Katmanları ve Özellikleri

Bilgi Distilasyonu implementasyonu:

  1. optimizer: Keras’ın, öğrenci ağırlıkları için kullanacağımız optimize fonksiyonu.
  2. metrics (metrikler): Modelin çalışmasını değerlendirmek için kullanılacak metrikler.
  3. student_loss_fn (öğrenci kayıp fonksiyonu): Öğrenci tahminleri ve temel gerçek arasındaki farkın kayıp fonksiyonu.
  4. distilasyon_loss_fn (distilasyon kayıp fonksiyonu): Esnek öğrenci tahminleri ile esnek öğretmen tahminleri arasındaki farkın kayıp fonksiyonu.
  5. alpha: student_loss_fn’ye göre ağırlık ve distilasyon_loss_fn’ye 1-alfa
  6. temperature (sıcaklık): Olasılık dağılımlarını yumuşatma oranı. Daha yüksek sıcaklık daha yumuşak dağılımlar sağlar.

Modellerimizi “train” ve “test” etme işlemleri için kullanacağımız veri kümesi, CIFAR10 olarak belirlendi.

Verinin normalize edilmesi ve öğretmen modelin eğitilmesi :

Öğretmen Modelin Train Sonucu

Distiller modelin, öğretmen ve öğrenci modelleri seçilerek belirlenmesi :

Bilgi distilasyonu — Distiller modelin eğitilmesi

Distiller Modelin Train Sonucu

Öğrenci modelin karşılaştırma için sıfırdan eğitilmesi :

Öğrenci Modelin Train Sonucu

Yukarıda Keras’ın önerilerine[3] dayanarak yaptığımız implementasyonu ve sonuçlarını görebilirsiniz. CIFAR-10 veriseti kullanarak eğittiğimiz öğretmen modelin ve bu öğretmen modele distilasyon uygulayarak elde ettiğimiz distiller modelin loss değerleri birbirlerine yakın olmakla birlikte, öğrenci modelin kendisini, sıfırdan eğittiğimizde elde ettiğimiz loss değerinin, diğer loss değerlerinden yüksek olduğunu gözlemleyebiliriz.

Böylece daha hafif bir modelde normal şartlarda elde edilmesi mümkün görünmeyen başarı oranları elde edilebilmektedir. Bunlarla birlikte, çözülmesi gereken problemin lineerliği azaldıkça bilgi distilasyonunun daha fazla fayda vereceğini öngörebiliriz.

Okuduğunuz için teşekkürler!

 & 

Kaynakça

[1] : https://www.researchgate.net/figure/An-intuitive-example-of-hard-and-soft-targets-for-knowledge-distillation-in-Liu-et-al_fig2_342094012

[2] : https://medium.com/analytics-vidhya/knowledge-distillation-in-a-deep-neural-network-c9dd59aff89b

[3] : https://keras.io/examples/vision/knowledge_distillation

Kapak Resmi : Anton Khrupin/Shutterstock.com



from CRYPTTECH BLOG https://ift.tt/3gzm5n9
via IFTTT

Yorum Gönder

0 Yorumlar