Keras ile Derin Öğrenme - Derin Öğrenme
Giriş bölümünde belirtildiği gibi, derin öğrenme, büyük miktarda veriyle yapay bir sinir ağını eğitme sürecidir. Ağ, eğitildikten sonra bize görünmeyen verilerle ilgili tahminler verebilir. Derin öğrenmenin ne olduğunu açıklamaya geçmeden önce, bir sinir ağını eğitirken kullanılan bazı terimleri hızlıca gözden geçirelim.
Nöral ağlar
Yapay sinir ağı fikri beynimizdeki sinir ağlarından türetilmiştir. Tipik bir sinir ağı, aşağıdaki resimde gösterildiği gibi üç katmandan oluşur - giriş, çıkış ve gizli katman.
Buna aynı zamanda shallowsadece bir gizli katman içerdiğinden sinir ağı. Daha karmaşık bir mimari oluşturmak için yukarıdaki mimariye daha fazla gizli katman eklersiniz.
Derin Ağlar
Aşağıdaki diyagram, dört gizli katmandan, bir giriş katmanından ve bir çıktı katmanından oluşan derin bir ağı göstermektedir.
Ağa gizli katmanların sayısı eklendiğinde, gerekli kaynaklar ve ağı tam olarak eğitmek için gereken süre açısından eğitimi daha karmaşık hale gelir.
Ağ Eğitimi
Ağ mimarisini tanımladıktan sonra, onu belirli türden tahminler yapması için eğitirsiniz. Bir ağ eğitimi, ağdaki her bağlantı için uygun ağırlıkları bulma sürecidir. Eğitim sırasında veriler, çeşitli gizli katmanlar aracılığıyla Girişten Çıkış katmanlarına doğru akar. Veriler her zaman girişten çıkışa tek yönde hareket ettiğinden, bu ağı İleri Besleme Ağı olarak adlandırıyoruz ve veri yayılımını İleri Yayılma olarak adlandırıyoruz.
Aktivasyon Fonksiyonu
Her katmanda, ağırlıklı girdilerin toplamını hesaplıyor ve bunu bir Aktivasyon işlevine besliyoruz. Aktivasyon işlevi, ağa doğrusal olmama durumu getirir. Çıktıyı ayıran basit bir matematiksel fonksiyondur. En sık kullanılan aktivasyon fonksiyonlarından bazıları sigmoid, hiperbolik, tanjant (tanh), ReLU ve Softmax'tır.
Geri yayılım
Geri yayılım, denetimli öğrenme için bir algoritmadır. Geri yayılımda, hatalar çıktıdan giriş katmanına geriye doğru yayılır. Bir hata fonksiyonu verildiğinde, her bağlantıda atanan ağırlıklara göre hata fonksiyonunun gradyanını hesaplarız. Gradyanın hesaplanması ağ üzerinden geriye doğru ilerler. Son ağırlık katmanının eğimi ilk olarak hesaplanır ve ilk ağırlık katmanının eğimi en son hesaplanır.
Her katmanda, gradyanın kısmi hesaplamaları, önceki katman için gradyan hesaplamasında yeniden kullanılır. Buna Gradyan İniş denir.
Bu proje tabanlı öğreticide, ileri beslemeli bir derin sinir ağı tanımlayacak ve onu geri yayılım ve gradyan iniş teknikleriyle eğiteceksiniz. Neyse ki Keras, ağ mimarisini tanımlamak ve onu gradyan iniş kullanarak eğitmek için bize tüm yüksek seviyeli API'leri sağlıyor. Sonra, bunu Keras'ta nasıl yapacağınızı öğreneceksiniz.
El Yazısı Rakam Tanıma Sistemi
Bu mini projede, daha önce açıklanan teknikleri uygulayacaksınız. El yazısıyla yazılmış rakamları tanımak için eğitilecek bir derin öğrenme sinir ağı oluşturacaksınız. Herhangi bir makine öğrenimi projesinde, ilk zorluk verileri toplamaktır. Özellikle derin öğrenme ağları için çok büyük verilere ihtiyacınız var. Neyse ki, çözmeye çalıştığımız problem için, birisi eğitim için bir veri seti oluşturdu. Bu, Keras kitaplıklarının bir parçası olarak bulunan mnist olarak adlandırılır. Veri kümesi, el yazısıyla yazılmış birkaç 28x28 piksel görüntüden oluşur. Modelinizi bu veri kümesinin büyük bölümünde eğiteceksiniz ve verilerin geri kalanı eğitilmiş modelinizi doğrulamak için kullanılacaktır.
Proje Açıklaması
mnistveri kümesi el yazısıyla yazılmış 70000 görüntüden oluşur. Referansınız için burada birkaç örnek resim çoğaltılmıştır
Her görüntünün boyutu 28 x 28 pikseldir, bu da onu çeşitli gri tonlama seviyelerinde toplam 768 piksel yapar. Piksellerin çoğu siyah gölgeye doğru eğilimliyken, yalnızca birkaçı beyaz renktedir. Bu piksellerin dağılımını bir dizi veya bir vektöre koyacağız. Örneğin, tipik bir rakam 4 ve 5 görüntüsü için piksel dağılımı aşağıdaki şekilde gösterilmektedir.
Her görüntünün boyutu 28 x 28 pikseldir, bu da onu çeşitli gri tonlama seviyelerinde toplam 768 piksel yapar. Piksellerin çoğu siyah gölgeye doğru eğilimliyken, yalnızca birkaçı beyaz renktedir. Bu piksellerin dağılımını bir dizi veya bir vektöre koyacağız. Örneğin, tipik bir rakam 4 ve 5 görüntüsü için piksel dağılımı aşağıdaki şekilde gösterilmektedir.
Açıkça, piksellerin dağılımının (özellikle beyaz tona meyilli olanlar) farklı olduğunu görebilirsiniz, bu temsil ettikleri rakamları ayırt eder. 784 piksellik bu dağılımı girdi olarak ağımıza besleyeceğiz. Ağın çıktısı, 0 ile 9 arasındaki bir rakamı temsil eden 10 kategoriden oluşacaktır.
Ağımız 4 katmandan oluşacaktır - bir giriş katmanı, bir çıktı katmanı ve iki gizli katman. Her gizli katman 512 düğüm içerecektir. Her katman bir sonraki katmana tam olarak bağlıdır. Ağı eğitirken, her bağlantı için ağırlıkları hesaplıyor olacağız. Ağı, daha önce tartıştığımız geri yayılım ve gradyan inişi uygulayarak eğitiyoruz.