Neden başlığımız “Efsaneler efsanesi” ? Çünkü doğru bilinen yanlışları; bildiğimiz her şeyin daha giriş bile olmadığını görmeliyiz.
Yukarıdaki dairesel grafikte gördüğümüz klasik görselde “Yapay Zeka”nın serüvenine konuk oluyoruz. Klasik yapay zeka tanımını bu yazıyı okuyorsanız eğer hepimiz biliyoruzdur. Fakat asıl soru bu tanımla başlamadı, asıl soru “Makinelere bir şeyler öğretebilir miyiz?” -di. Bu da makine öğrenmesi ve deep learning yani yapay sinir ağlarıyla mümkün hale geldi artık. İlk dairemiz olan Machine Learning’de asıl amaç çok basittir: “Problemi anladık, peki bunu nasıl çözeriz?” Problemi anlama kısmını Veri Analizi yazılarımda detaylı bir şekilde göstermiştik.
Peki bu problem çözümünü machine learning nasıl yapıyor? Bol örnekle 🙂 Örneğin: “Kişinin daha önce yaptıkları, gelecekte yapacaklarını temsil eder.” mantığı burada çoğunlukla işimize yarayacaktır. Daha teknik olarak ise ne kadar çok veri o kadar uygun bir çözümlemeye yol açacaktır.
Google’dan yine bulduğumuz bu görsel daja açıklayıcı oalcaktır. Çözümleme, sınıflandırma, ayrıştırma yani Classification yaparak machine learning problemi çözerek bizi çıktıya ulaştıracaktır. Deep Learning kısmına ise ileride değiniriz şimdilik gerek yok 🙂 Buradaki önemli olan yer; “Feature Extraction” kısmıdır. Özellik belirleme olarak doğrudan çevirisini yapıyoruz ama bu ne? neyin özelliği. Kullanıcının verdiği veriler ve bu classification’a hangi kurallara veya koşullara bağlı kalacağını belirttiğimiz kullanıcının en önemli aktiflik gösterdiği kısımdır.
Bolca içerisinde olacağımız durumlar:
- İstatistik
- Algoritmalar
- Modellemeler
- Veriler
Yukarıda bahsettiğimiz gibi, “veri ve koşullar” bunları yukarıdaki durumlara ne kadar uygun verirsek son durumdaki çıktılar o kadar kullanılabilir olacaktır.
Kısaca “NN” olarak tanımlayacağımız neural networks yani Sinir Ağları klasik dairesel görselimizin son halkasını oluşturmaktadır. Makine öğrenmesinin içerisinde ve öğrenmesi en karmaşık olan durum diyebilirim. (-en azından benim için.)
Yukarıdaki sınıflandırmaya göz atalım tekrar. Derin Öğrenme yani NN nedir? sorusunun cevabı klasik olarak, Classification daireleriyle kullanıcının anlık hareketlerinin birleşimidir. Adı üstünde sinir ağları; gerçek insan beyninin çalışması örnek alınarak uygulanmaktadır. Pekala anlaşılmadı biraz daha devam edelim. İlk görselde belirli kurallarımız vardı değil mi? Şimdi ise kuralımız yok; her seçimimiz farklı bir classification’ı etkilemektedir. Ayrıca her seçim bir sonrakini de etkileyecektir. Bunlara insan beyninde kullanıldığı gini “Nöron” bağlantılarıan da aynı şekilde “Sinapsis” adı verilmektedir. Bu Feature Extraction’ların sinapsis’leri ne kadar kuvvetli olursa seçimlerimiz o yönde evrilecektir. Yani NN yapıları insan beynini örnek alarak bu yönde daha çok verim almaktadır. Bu da şu demek; “Makineler Düşünebilir Mi?” sorusuna evet cevabını verdirtecek bir yapı demek :).
Farklı bir anlatım daha yapmak istersek; her bir nöronu model olarak düşünelim ve kolon olarak 1. sıra diyelim. 1 sıradaki her nöron modeli sırasıyla bir sonraki kolona aktarılarak yoluna devam etmektedir. En sonunda tek bir nöron çıktısı verecek bu da bizim prediction değerimiz olacaktır diyebiliriz.
Kafamın ne kadar çok karıştığını umarım anlamışsınızdır 🙂 Yazımın sonunda bir çok referans ile daha çok bilgiye ulaşmanızı sağlayacağım şimdilik bu kadar diyebiliriz. Macera başlıyor!
Basitçe TensorFlow’u açıklayalım. Açık kaynaklı bir deep learning kütüphanesidir. En büyük özelliiği ise cihaz (rasperry pi vs.) ve platform tanımaksızın (JS, Python, R, Go, C# etc..) her yere kullanılabilmektedir. Google tarafından geliştirilmiş olan bu kütüphane çalışmalarını bizde Google Colab üzerinden noteebok ile inceleyeceğiz.
Öncelikle “Tensor” oluşturarak başlayacağız. Tensor Nedir? Tensor boyut fark etmeksizin oluşturacağımız küçük veri setleridir. İçerisindeki veriler tüm öğrendiğimiz veri tipleri olabilir. String, int, float etc. Ayrıca her bir Tensor’ün Rank’ı bulunmaktadır. Bu rank değerimiz Lineer Cebir’de öğrendiğimiz derecelendirmedir. Her bir Tensor’un derecesi bulunmaktadır. ndimension yani boyutu belirsiz ve kullanıcı kontrolündedir. Her Tensor sonunda bir değer üretme hedefini barındırmaktadır. Her Tensor’de en azından datatype ve boyut barındırmak zorundadır.