Keras Model Wars: Sequential vs Functional

Merhabalar,

Başarabilirsin: Makine Öğrenmesine Giriş serimin 3.yazısında konusu açılan ve bu yüzden de kendimi açıklamak zorunda hissettiğim Keras Model çeşitlerini açıklamaya çalışacağım.

Şimdiden keyifli okumalar 🙂

 

MODEL NEDİR?

Başarabilirsin: Makine Öğrenmesi’ne Giriş serimin ilk yazısındaki örneği ele alalım:

İki gün sonra üniversite sınavı olan bir lise öğrencisi düşünün. Bu öğrenci sınava hazırlanmak için çalışır ve deneme sınavları çözer. Üniversite sınavına girdiğinde ise deneme sınavlarındaki soruların aynısı değil, benzeri sorularla karşılaşır. Öğrenci deneme sınavlarını çözerek çalışmış ve üniversite sınavında deneme sınavlarındaki soru modeli üzerinden soruları cevaplandırabilmiştir.
Şimdi bu senaryoyu Makine Öğrenmesi tarafına çevirelim.
Makine Öğrenmesi problemlerini çözerken bir model (öğrenci) oluştururuz. Bu model bizim Makine Öğrenmesi algoritmamızın çalıştığı modeldir. Bu modeli önce bilgiyle besler, eğitir(öğrencinin sınava çalışması) ve sonrasında eğitilen bu modelin, daha önce vermediğimiz bilgilerle yeni bir sonuç tahmininde bulunmasını isteriz. (Öğrencinin daha önce sorularını görmediği bir sınava girmesi.)

Bu durumda modelimizi bilgileri öğrenen, öğrendiği bilgiler üzerinden belli verilerle tahminler gerçekleştiren bir yapı olarak görebiliriz.

Keras’ta Makine Öğrenmesi implemantasyonu yaptığımızda modelimizi iki şekilde oluşturabiliyoruz: Sequential ve Functional

LSTM için bu yazıyı okumanızı öneririm 🙂

Aşağıda basit bir model diyagramını görebilirsiniz:

                                                         i2tutorials.com sitesinden alınmıştır

Kısaca bahsetmek gerekirse:

  1. Input Katmanı: Modelimizin girdi katmanıdır. Bu katmanda modelimize tahminin hangi bilgiler üzerinden yapılmasını istiyorsak o bilgileri yani özniteliklerimizi veriyoruz.
  2. Hidden (Gizli) Katmanlar: Modelimizin input ve output katmanları arasındaki diğer katmanların hepsi hidden katmanlar olur.
  3. Output Katmanı: Modelimizin çıktı katmanıdır. Bu katmandan label değerimiz çıkmaktadır.

Buraya kadar problem yok değil mi? Güzel.

SEQUENTIAL MODEL:

Bu model çeşidinde modelin implementasyonu basittir. Bir modelin basit olması için:

  1.  Birden farklı input kaynağının olmaması
  2.  Çoklu output hedeflerine sahip olmaması
  3.  Katmanları tekrar tekrar kullanmaması (reusability)

Gerekir. Buna göre bir modelin inputu tek bir yerden geliyorsa, outputu tek bir yere gidiyorsa, katmanlar başka modellerde kullanılmıyorsa o model basittir diyebiliriz.
Sequential Model’de önce modelimizi, sonra katmanlarımızı oluşturup modelimize ekliyoruz. Bir katmanın outputu kendisinden sonraki katmanın inputu oluyor. Hadi biraz ellerimizi kirletip işin mutfağına girelim 🙂

Sequential Model Implementation

Burada dikkat etmeniz gereken noktalardan biri modelimizin add fonksiyonuyla katmanları ekleyişimiz. Katmanları dikkatli incelediğinizde ilk katmanın input_dim parametresi aldığını görüyoruz. Buradan da şunun anlayabiliriz: Sequential modeller tek input katmanına sahiptir ve bu katman her zaman ilk katmandır.

Dense ile ilgili daha fazla bilgiyi buradan, Activation ile ilgili daha fazla bilgiyi ise buradan edinebilirsiniz.

FUNCTIONAL MODEL:

Bu model çeşidi bize implementasyonda daha büyük esneklik sunmaktadır. Aynı katmanları paylaşan çoklu input ve output kaynaklarının var olmasına olanak sağlamaktadır. Bu implementasyonda önce katmanları oluşturur, birbirine bağlar, ondan sonra modelimizi oluştururuz.
Functional Model Implementation

SONUÇ:

Sequential Model bize basitlik sağlasada katman bazında esneklik sağlamaz. Modelimizi oluşturur ve katmanlarımızı sırasıyla ekleriz. Yalnızca tek bir input katmanı vardır.

Functional Model daha karmaşık ancak buna bağlı olarak daha esnektir. Önce katmanlarımızı oluşturur, gerekirse bunları birbirileri ile işleme sokar, sonrasında bir veya birden fazla input ve output katmanlarını kullanarak modelimizi oluştururuz.

KAPANIŞ:

Bu yazımda Sequential ve Functional modelleri anlatmaya çalıştım. Umarım açıklayıcı bir yazı olmuştur. Yazımın bu kısmına kadar gelebildiyseniz tebrikler ve teşekkürler 🙂 Sağlıklı, mutlu ve verimli zamanlar dilerim, Makine Öğrenmesi maratonundaki koşunuzda başarılar 🙂

Diğer yazılarım için takipte kalın 🙂

-Fethi Tekyaygil

Data Science Earth

Data Science Earth ekibi, üst düzey Veri Bilim çözümleri üretmek amacı ile toplanmış akademisyenler ve uzmanlardan oluşmaktadır. Öncelikli olarak veri bilincini geliştirmeyi ve küreselleşen rekabet ortamında verinin gücünün doğru kullanılmasını sağlamayı amaçlamaktadır.

Sponsor

QuestionPro 35 farklı soru seçim özelliği ile anket çalışmalarımıza güç katmaktadır.