Windows 10 vpn A connection to the remote computer could not be established. You might need to change the network settings for this connection hatası

Uzun süredir kullandığım VPN bağlantım birden girmez oldu (A connection to the remote computer could not be established. You might need to change the network settings for this connection). Sunucu tarafında bir değişiklik yapılmadığını öğrendim. VPN ayarlarıyla oynadım ama ne çare. Aklıma gelen tek sebep de güncelleme oldu. Her neyse yaptığım araştırmalarda aşağıdaki çözümü buldum. Başınıza böyle birşey gelmişse sizde aşağıdaki adımları takip edebilirsiniz.

  1. Aygıt yöneticisini açın (Open Device Manager).
  2. Ağ Bağdaştırıcılarının üzerine tıklayarak alt seçeneklerin açılmasını sağlayın (Expand Network Adapters).
  3. Buradan Wan Miniport (IP), WAN Miniport (IPV6) ve WAN (Miniport PPTP)‘lere sırasıyla tıklayarak Cihazı kaldır diyin (Right click and Uninstall Wan Miniport (IP), WAN Miniport (IPV6) and WAN Miniport (PPTP).
  4. Sonra en yukarıda bilgisayarınızın adının yazdığı kök elemente sağ tıklayarak Donanın Değişikliğini Tara diyin.
  5. Şimdi mevcut VPN bağlantınızı kaldırın ve yeniden kurun. Sorun çözülmüş olmalı.

Kayseri Kitabeleri – Halit Erkiletlioğlu

Kitabelere, mezar taşlarına ve diğer eski yazılara karşı bir ilgim var. Fakat bunlarla uğraşmak için çok fazla zaman da ayıramıyorum. Geçenlerde Kayseri Kitabeleri adında bir kitap geçti elime. 2001 yılında basılmış. Tabi hem konuya ilgi duyup hem de Kayserili olunca bir çırpıda okumak istedim. İçerisinde Kayseri ve ilçelerinde bulunan eski cami, kilise vs. kitabelerinin resimleri, tercüme ve açıklamaları mevcut. Hazırlayan Halit Erkiletlioğlu’na teşekkür etmek gerekiyor. Bu kitap daha profesyonelce hazırlanacak, daha geniş kapsamlı, ilgili yapıların yeri ve tarihi hakkında bilgi verecek daha kapsamlı bir kaynak için temel olarak kullanılabilir.

Mekanlar ve Olaylarıyla Hz. Muhammed’in Hayatı – Mekke – Medine – Talha Uğurluel

Bir gün kutsal toprakları görme fikrinde olanların veya Mekke ve Medine’yi tanımayı isteyenlerin yararlanabileceği bir kitap. Bir umre seyahatinde nereye niçin gidilir güzel bir şekilde anlatılmış. Ayrıca bu kitap bir kez okumalık bir kitap da değil. Bir başucu kaynağı olarak da kullanılabilir. Özellikle umre veya hac fikrinde olanların kutsal topraklara gitmeden önce kesinlikle oralar hakkında bilgi edinmesini gerektiğini düşünen biri olarak kütüphanede saklanması gereken bir kitap olduğunu düşünüyorum. Kitaptan çektiğim üç tane fotoğrafı da paylaşmak istiyorum.

Fotoğraflarda ilki Mekke’nin krokisi.

İkincisi Medine’nin Planı.

Ve sonuncusu da Mescid-i Nebevi’nin Planı.

Dünya ve Ahiret Efendimizsin

[pastacode lang=”markup” manual=”Bir%20ul%C3%BC%E2%80%99l%20emr%20idin%20emrine%20girdik%3B%0AEzelden%20bey%E2%80%99atl%C4%B1%20hakan%C4%B1m%C4%B1zs%C4%B1n.%0AAz%20idik%2C%20sayende%20murada%20erdik.%0AD%C3%BCnya%20ve%20ahiret%20sultan%C4%B1m%C4%B1zs%C4%B1n.%0A%0AUnuttuk%20%C4%B0lhan%E2%80%99%C4%B1%2C%20Kara%20O%C4%9Fuz%E2%80%99u%3B%0A%C4%B0%C5%9Fledik%20seni%20g%C3%B6z%20bebe%C4%9Fimize.%0ABa%C4%9F%C4%B1%C5%9Fla%20ey%20%C5%9Fef%E2%80%99i%20kusurumuzu%0ABin%20k%C3%BCsur%20senelik%20eme%C4%9Fimize.%0A%0ASu%C3%A7umuz%20%C3%A7oksa%20da%20sun%E2%80%99umuz%20yoktur.%0A%C5%9E%C4%B1mard%C4%B1k%20m%C3%BCjde-i%20sahabetinle%0AG%C3%B6nl%C3%BCm%C3%BCz%20ganidir%2C%20g%C3%B6z%C3%BCm%C3%BCz%20toktur%0ADoyar%C4%B1z%20bir%20lokma%20%C5%9Fefaatinle%0A%0ANedense%20kimseler%20dinlemez%20eyvah!%0AO%20kadar%20saf%20olan%20dile%C4%9Fimizi%0ABir%20%C3%BCmmi%20isen%20de%20Ya%20Rasulallah%0AAncak%20sen%20okursun%20y%C3%BCre%C4%9Fimizi.%0A%0ASular%C4%B1%20t%C3%BCkendi%20g%C3%BClabdanlar%C4%B1n.%0ADinmedi%20g%C3%B6z%C3%BCm%C3%BCz%20ya%C5%9F%C4%B1%20merhamet%0AK%C3%BClleri%20so%C4%9Fudu%20buhurdanlar%C4%B1n.%0AA%C5%9Fk%C4%B1nla%20ba%C4%9Fr%C4%B1n%C4%B1%20yakmada%20millet.%0A%0AGelmemi%C5%9F%20T%C3%BCrk%C3%A7e%E2%80%99de%20Lebid%2C%20Hassan%E2%80%99%C4%B1n.%0AYok%20bizde%20ne%20B%C3%BCrde%2C%20ne%20Muallaka.%0AYolunda%20ba%C5%9Fveren%20Al-i%20Osman%E2%80%99%C4%B1n.%0AL%C3%A2l%20ile%20yazd%C4%B1%C4%9F%C4%B1%20tarihten%20ba%C5%9Fka.%0A%0ANe%20kanlar%20ak%C4%B1tt%C4%B1k%20hep%20senin%20i%C3%A7in.%0AO%20ulu%20Kitab%E2%80%99%C4%B1n%20hakk%C4%B1%20i%C3%A7%C3%BCn%20aziz%E2%80%A6%0AG%C3%BCc%C3%BCm%C3%BCz%20eri%C5%9Fsin%20ve%20eri%C5%9Fmesin.%0AU%C4%9Frunda%20her%20zaman%20d%C3%B6%C4%9F%C3%BC%C5%9Fece%C4%9Fiz.%0A%0AYapamaz%20Ertu%C4%9Frul%20evlad%C4%B1%20sensiz.%0ACan%20verir%2C%20canan%C4%B1%20veremez%20T%C3%BCrkler.%0AEbedi%20hadim%E2%80%99%C3%BCl%20harameyniniz.%0A%C3%96lsek%20de%20Ravza%E2%80%99n%C4%B1%20ruhumuz%20bekler.” message=”Mülâzım-ı evvel (Üsteğmen) İdris Sabih Bey (Fahreddin Paşa’nın ihtiyat mülazımı)” highlight=”” provider=”manual”/]

Meşekkatli LG G2 Maceram

Yaklaşık 4,5 senedir ısrarla kullanmaya devam ettiğim LG G2 telefonum artık S.O.S. veriyor diyebilirim. Çok güzel başlayan LG G2 maceram kötü bir şekilde son bulacak gibi görünüyor. LG G2 ile yaşadığım sorunları aşağıda sıralayacağım.

  • Aslında herşey çok güzel başlamıştı çok hızlı ve güzel tasarımlı bir telefondu. Pil ömrü de iyiydi ve aldığım zamanlarda Samsung S4 ile kıyaslanıyordu. Aralarında da fiyat farkı çok yoktu. Ben G2’yi tercih ettim. İlk zamanlar fark ettiğim ilk sorun cihazın çok ısınmasıydı. Önemsemedim ama bir müddet sonra bu ısınmalar ekranda sararmalara yol açtı ve kameramda odaklanma problemi oluşmaya başladı. Garantiye gönderdim sağolsunlar ekranı tamamen değiştirdiler. Kamera içinde kapaktaki kamera camını değiştirmeyle yetindiler ama sorun çözülmedi.
  • Neyse dedim Aliexpress’ten G2 kamerası aldım ve kendim taktım. En sevdiğim yanlarından bir tanesi telefonun modüler olması kamerayı rahatlıkta değiştirebildim.
  • Garanti süresi dolduktan bir müddet sonra hoparlörüm patladı. Bundan benim hatam olabilir. Çünkü yağmurlu bir günde uzun süre kullanmak durumunda kaldım ve akabinde bu sorun ortaya çıktı. Yine Aliexpress’ten hoparlör aldım. Onu da kolaylıkla değiştirdim.
  • Bir müddet sonra ekranda sararmalar yeniden ortaya çıktı ve halen o şekilde kullanıyorum.
  • Telefon üçüncü yılın ardından baya bir yavaşladı. Yüklü uygulamaların yeni versiyonlarına gücü yetmiyor artık. Boşken hızlı ama uygulama yükleyince kağnıya dönüşüyor.
  • Bir gün bir baktım kulaklık takılı olmadığı halde takılıymış gibi görünüyor. Kendim düzeltemedim çünkü donanımsal bir problemdi. Telefoncuya falan götürdüm ama onlar da yapamadılar. Netice itibariyle bluetooth kulaklıkla kullanıyorum ve bir de headset toogle adlı uygulamayla.
  • Arada sırada reboot etmeye başladı kendi. Hem de bu reboot’larda pin de sormuyor ilginç.
  • Ve son bomba logo ekranında takılma sorunu Soft-brick. Bu da telefonumdaki resim ve dosyalarımın uçmasına sebep oldu. Artık can çekişiyor diyebilirim.

4,5 yılda bu kadar problemle karşılaşmışım acaba zamanında Samsung S4 alsam ne olurdu diye düşünmüyor değilim. Ama sanıyorum bundan sonra LG telefon almayacağım.

LG G2 logo ekranında takılma problemi

Yaklaşık 4,5 senedir ısrarla kullanmaya devam ettiğim LG G2 telefonum artık S.O.S. veriyor diyebilirim. Bir kaç ay önce (sanıyorum) kulaklık soketi bozuldu ve sürekli olarak kulaklık takılı gibi algılıyor. Hal böyle olunca da kulaklık takmadan veya hoparlöre almadan telefonla konuşamıyorum. Dün ise başka bir problemle karşılaştım ve telefonu değiştirmeye kesin olarak karar verdim.

Dün cebimden telefonu çıkardığımda açılıştaki logonun ekranda olduğunu gördüm ve cebimde baskıdan dolayı kapatma tuşunun basılı olduğunu düşündüm ama uzun bir süre beklememe rağmen telefon açılmadı öylece kalakaldı. Biraz araştırmadann sonra telefonun Soft-Bricked olduğunu anladım. Bu durumda malesef verilerimi kaybedecektim. Neyse en azından yeni bir telefon alana kadar idare ediyim düşüncesiyle telefonu kurtarmaya çalışayım dedim. Velhasıl aşağıdaki şekilde telefonu çalışır hale getirdim ama dediğim gibi içindeki veriler uçtu.

  1. Öncelikle telefonun kapalı olması gerekiyor. Yukarıdaki sorunla karşı karşıya ise telefonunuz açık. Kapatmak için kapatma tuşuna basılı tutuyoruz önce kararıyor ekran ama tekrar logo geliyor basılı tutmaya devam ediyoruz ve tekrar karardığında telefon kapanmış oluyor.
  2. Ses kısma ve güç tuşuna basılı tutuyoruz. Ekrana logo geldiği anda elimizi güç tuşundan çekip hemen tekrar güç tuşuna basılı tutuyoruz.
  3. Ekrana fabrika ayarlarına dönüş için seçenekler geliyor. Burada dokunmatik çalışmıyor. Ses açma-kısma ve güç düğmelerini kullanarak reset işlemini başlatmak için ilgili seçeneği seçiyoruz. Emin olduğumuzu anlamak için tekrar soruyor onu da evet dedikten sonra telefonun fabrika ayarlarına dönmesi için bekliyoruz.

Ubuntu 18.04 Siyah Ekran Hatası

Daha önceleri versiyonlar arası geçişte birar tedirgin oluyordum. Yeni bir versiyon çıktıntan sonra stabil olması için uzun süreler beklediğim oldu. Ne kadar tedirgin olursam o kadar da sorunla karşılaşır olmuştum. Uzunca bir süredir bu alışkanlığımı bıraktım ve yeni bir versiyon çıkar çıkmaz ona geçiyorum. Tabi bunda çok fazla third party uygulama kullanmamamında etkisi var. Kullanan biri olsa iki kez düşünürdüm bu konuyu.

Ubuntu 18.04 çıkar çıkmaz Ubuntu 17.10’dan sudo do-release-upgrade -d diyerek yeni versiyona geçtim. Başlarda sorun da çıkmadı. Ama bir sabah iş yerime geldiğimde önce şifre yanlış dedi. Şifremi ingilizce klavyeye göre tekrar girdim bu kez şifre ekranını geçti ama siyah ekranda takıldı kaldı. Anladım ki ben yokken elektrik gidip gelmiş ve bilgisayar yeniden başlamış. O sırada ne olduysa bilgisayar siyah ekranda takılıyor. Öncelikle bilgisayarı kapatma tuşuna basarak tekrar açtım ama bir önceki senaryo tekrarlandı. Sonrasında aşağıdaki adımlarla problemi çözdüm.

  1. Siyah ekrandayken Ctrl + Alt + F3‘e basarak yeni bir terminal açtım. Bu ekranda aşağıdaki komutlarla güncellemeleri yaptım (güncelleme yapmaya gerek de kalmayabilir aslında).
    • sudo apt-get update
    • sudo apt-get upgrade
    • sudo apt-get dist-upgrade
  2.  Güncelleme bittikten sonra da sudo reboot ile bilgisayarı yeniden başlattım ve sorun çözüldü.

Çok Katmanlı Algılayıcılar (Multi-Layer Perceptron)

  • SINGLE PERCEPTRON MODEL

Multilayer Perceptrom Model’den  önce Perceptron Model’den bahsetmek gerekiyor. Perceptron Model bir Yapay Sinir Ağları modelidir ve bugünkü Yapay Sinir Ağları için önemli bir temel oluşturmaktadır. Supervised (denetimli) bir training (öğrenme) algoritmasıdır. Yani ağa hem giriş hem de çıkış kümesi verili ve öğrenme beklenir. Perceptron Modeli’nde en önemli faktör eşik değeridir. Bu değer kullanılarak güzel bir sınıflandırma yapılabilmektedir. Saptanacak olan eşik değeri probleme göre belirlenebilir. Bu modelde iterasyon sayısı artırılarak öğrenme derecesi artırılabilir. Tek Katmanlı Algılayıcı’lar aşağıdaki şekilde modellenmiştir.

Modelde görülen x değerleri girişleri, w değerleri ise ağırlıkları ifade edilmektedir. BIAS değeri ise öğrenmeyi güçlendirmek için kullanılır. Ayrıca öğrenmeyi güçlendirirken yerel optimum değerler takılmayı da önler. Bu modelin algoritma adımlar şu şekildedir;

Adım 1) Tüm ağırlıklara başlangıç değerleri atanır. Öğrenme katsayısına küçük bir değer verilir. (Örn: Bias = 0)

Adım 2) Adım 3 ile 7 arasını belirli bir iterasyon sayısına ulaşılıncaya kadar tekrarla.

Adım 3) Her bir girdi için Adım 4 ile 6 arasını tekrarla.

Adım 4) Girdi değerlerini girdiden al.

Adım 5) Perceptron’a gelen toplam sinyali hesapla. Aktivasyonu hesapla.

Adım 6) Eğer hesaplanan değer beklen değerden farklı ise, hesaplama yanlıştır. Ağırlıkları güncelle.

Adım 7) Döngü sonunu kontrol et.

Şekil-1’de görüldüğü üzere Perceptron Model tek katmanlıdır. Bu yüzden Single Perceptron Model de denmektedir. Sadece giriş ve çıkış katmanı bulunmaktadır. Net girdi hesaplanır. Girdi eşik değerin altındaysa 0, üstündeyse 1 olarak çıkış değeri belirlenir. Çıkış beklenen değerden farklı ise ağırlık güncellemesi yapılır. Şöyle ki ; Eğer çıkış 1 bekleniyorken, 0 olarak alınmışsa ağırlıklarda artırılmaya gidilir. Tersi durumda ise ağırlıklar azaltılır. Artırım ve azaltım belirlenen delta değeri ile yapılır. Tüm eğitim seti için doğru sonuçlar bulunana kadar algoritma devam ettirilir. Her biri için doğru sonuçlar bulunduğunda öğrenme tamamlanmış sayılır. Bu modelde elde edilen çıktı fonksiyonu doğrusaldır. Perceptron Modeli ile ağa gösterilen örnekler iki sınıf arasında paylaştırılarak iki sınıfı birbirinden ayıran doğru bulunmaya çalışılır. Aşağıda örnekle gösterilmiştir.

Şekil-2

Şekil-3

  • DOĞRUSAL AYRILABİLİRLİK (Linear Seperability)

Bir düzlemde sadece bir hat varsa iki sınıfa ait iki boyutlu örüntülerin bir kümesi doğrusal olarak ayrılabilirdir. Şekil-2’de görülen doğru düzlemi bir hatla ikiye ayırmıştır. Verilen düzlemdeki örneklerin hepsi iki gruptan birine dahil olmuştur. Yani problem çözülebilir. Konuya örnek olarak and ve or fonksiyonları verilebilir. Bunları şekil üzerinden görelim. Yandaki şekilde veya fonksiyonu gösterilmiştir. Bilindiği üzere or fonksiyonunun 1 çıkışı vermesi için giriş değerlerinden birinin bir olması yeterli  olur. Bu durumda or fonksiyonunun çıktılarını düzlemde iki gruba ayırmak istersek yandaki şekilde bu işlemi gerçekleştirebilir. Yani or fonksiyonu doğrusal ayrılabilirdir. Or fonksiyonunu yapay sinir ağları yöntemleriyle sisteme öğretmeye çalışırsak başarılı olabiliriz. Aynı durum and fonksiyonu içinde geçerlidir. Tek farkı doğru farklı yerden geçip düzlemi ikiye ayıracaktır. Eğer bir problem doğrusal ayrılabilir ise o zaman Perceptron Öğrenimi ile örüntülerin bir kümesinden ağırlıklar elde edilebilir. Eğer problem doğrusal ayrılabilir değilse Single Perceptron Modeli ile çözüme ulaşamayız.

  • XOR PROBLEMi

Xor fonksiyonu doğrusal ayrılabilir değildir. Daha önce bahsettiğimiz or ve and fonksiyonunun çıktılarını düzlemde iki gruba ayırabiliyorduk. Fakat xor fonksiyonunda bunu gerçekleştiremiyoruz. Düzlemdeki çıktıları tek bir hatla ikiye bölemiyoruz.(Şekil 5) En az iki doğru gerekiyor. Xor problemi Yapay Sinir Ağları’nın “Hello World”ü olarak bilinir. Perceptronlar XOR Problemi gibi doğrusal olarak sınıflandırılamayan problemleri çözümünde başarısızdır. XOR Problemi’ni çözmek için geriye yayılımlı çok katmanlı ağlardan faydalanılabilir.

Şekil-4

Şekil-5

  • MULTI-LAYER PERCEPTRON MODEL

Çok Katmanlı Algılayıcılar (MLP) XOR Problemi’ni çözmek için yapılan çalışmalar sonucu ortaya çıkmıştır. Rumelhart ve arkadaşları tarafından geliştirilen bu modeli ‘Back Propogation Model’ yada hatayı ağa yaydığı için ‘Hata Yayma Modeli’ de denmektedir. Delta Öğrenme Kuralı denilen bir öğrenme metodu kullanır. MLP özellikle sınıflandırma ve genelleme yapma durumlarında etkin çalışır. Çok Katmanlı Ağ’ların yapısı aşağıdaki gibidir.

Şekil-6

Birçok giriş için bir nöron yeterli olmayabilir. Paralel işlem yapan birden fazla nörona ihtiyaç duyulduğunda katman kavramı devreye girer. Görüldüğü üzere Single Perceptron Model’den farklı olarak arada gizli(hidden) katman bulunmaktadır. Giriş katmanı gelen verileri alarak ara katmana gönderir. Gelen bilgiler bir sonraki katmana aktarılırlar. Ara katman sayısı en az bir olmak üzere probleme göre değişir ve ihtiyaca göre ayarlanır. Her katmanın çıkışı bir sonraki katmanın girişi olmaktadır. Böylelikle çıkışa ulaşılmaktadır. Her işlem elemanı yani nöron bir sonraki katmanda bulunan bütün nöronlara bağlıdır. Ayrıca katmandaki nöron sayısı da probleme göre belirlenir. Çıkış katmanı önceki katmanlardan gelen verileri işleyerek ağın çıkışını belirler. Sistemin çıkış sayısı çıkış katmanında bulunan eleman sayısına eşittir. Single Perceptron Modeli incelerken bahsettiğimiz nöron yapısı burada aynen geçerlidir.

Modelde aktivasyon fonksiyonu olarak herhangi bir matematiksel fonksiyon kullanılabilir. Ancak Sigmoid, tang, lineer, threshold ve hard limiter fonksiyonları en çok kullanılan fonksiyonlardır.

Şekil-7

Çok katmanlı ağlardaki hücreler yandaki gibidir. Aktivasyon fonksiyonu olarak yandaki modelde sigmoid fonksiyonu seçilmiştir. Çok katmanlı ağda öğrenme Delta Öğrenme Kuralı tabanlıdır. Ağın öğrenebilmesi için örnek giriş ve çıkışlardan oluşan  eğitim seti şarttır. Geri Yayılımlı Yapay Sinir Ağları’nda öğrenme işlemi bir anlamda örnek setindeki giriş değerleriyle, çıkış değerlerini eşleştiren fonksiyonu bulma işlemidir.  Sistemin öğrenme metodu genel olarak iki aşamadan oluşur. Birinci kısım ileri doğru hesaplamadır. İkinci kısım ise geri doğru hesaplamadır (back propogation).

İleri doğru hesaplama aşamasında sisteme verilen girdi ara katmanlardan geçerek çıkışa ulaşır. Her işlem elemanına gelen girdiler toplanılarak net girdi hesaplanır. Bu net girdi aktivasyon fonksiyonundan geçirilerek mevcut işlem elemanının çıktısı bulunur. Ve bu çıktı değeri bir sonraki katmanda bulunan işlem elemanlarına gönderilir. Bu işlemler tekrar edilerek en son çıktı katmanından çıktılar elde edilir. En çok kullanılan aktivasyon fonksiyonu olan sigmoid fonksiyonu şekildedir.

Şekil-8

Ağdan çıktı alınmasıyla öğrenmenin ilk aşaması bitirilmiş olur. İkinci aşama hatanın dağıtılması olacaktır. Beklenen çıktı değeri ile elde ettiğimiz birbirinden farklı ise hata vardır. Geriye doğru hesaplama aşamasında hata ağırlık değerlerine dağıtılarak her iterasyonda azaltılması beklenir. Sisteme başlangıçta random olarak verilen ağırlık değerleri, hataların ağırlıklara dağıtılmasıyla her iterasyonda güncellenmiş olur.

Genelleştirilmiş Delta Öğrenme Kuralı’nın yapısı genel olarak aşağıdaki gibidir.

Şekil-9

Multi-layer Perceptron(MLP) yani Çok Katmanlı Algılayıcılar, Yapay Sinir Ağları’na olan ilgiyi hızlı bir şekilde artırmıştır. MLP ile birlikte YSA tarihinde yeni bir dönem başlamıştır. Geniş kullanım alanına sahiptir. Örnek verecek olursak; Otomotiv alanında yol izleme, rehberlik vs. gibi konularda kullanılmaktadır. Bankacılıkta kredi kartı suçu tespiti ve kredi uygulamalarında kullanılmaktadır. Uzay sanayinde uçuş simülasyonu  ve otomatik pilot uygulamalarında kullanılır. Finans sektöründe ise döviz kuru tahminlerinde kullanılır.

  • MULTI-LAYER PERCEPTRON MODEL UYGULAMASI

Uygulamamızı anlatırken, sadece main sınıfımızdaki kodlar konulup bu sınıfın kullandığı fonksiyonları kod koymaksızın anlatılacaktır. Uygulamamıza giriş olarak 9 değer verilmiştir bunlar;

inputs = [ 0 0 0 ; 0 1 0 ; 1 0 1 ; 1 1 1];
targets = [ 1 1 ; -1 -1 ; -1 -1 ; 1 1];

ni = 3;
nh = 4;
no = 2;
wsize = ((ni+1)*nh)+(nh*no); 
net = 4*rand(1,wsize)-2;
ci = zeros(ni+1,nh);
co = zeros(nh,no);

Giriş değişkenlerimize sırasıyla bakacak olursak;

inputs,targets: Multi Layer Perceptron modeli danışmanlı öğrenme yöntemini kullanarak algoritmanın eğitimini gerçekleştirir. Danışmanlı öğrenme modelinde ise algoritmanın eğitilmesi için giriş değerleri ve bu giriş değerlerden üretilmiş olan çıkış değerleri verilmelidir. Uygulamamızdaki giriş ve çıkış değerleri raporumuzda açıklanan ex-or problemi ile benzerlik göstermektedir. Böylece Multi Layer Perceptron modelinin “Hello word” ü olarak tanımlanan bir uygulamayı gerçekleştirmiş oluyoruz.

ni: Bu değişken algoritmamızda giriş sayısı olarak kullanılmaktadır. Bu değişkenin değiştirilmesi halinde inputs değişkenin içerisinde bulunan değerleri de değiştirmemiz gerekecektir.

nh: Bu değişken ise  ara katmandaki nöron sayısı olarak tanımlanmaktadır.

no: Bu değişken ise targets değişkenine bağlıdır ve girişler sonucunda üretilen çıkış sayısıdır. Eğer targets sayısı değiştirilirse bu değişkeninde değiştirilmesi gerekmektedir.

wsize : bu değişken giriş sayısı, nöron sayısı ve çıkış sayısı kullanılarak oluşturulan ve ağırlık sayısını temsil eden değerdir. Denklemde kullanılan (ni+1) değerindeki +1 öğrenmeyi güçlendirmek için kullanılan bias değeridir.

net: Bu değişken ağırlıkların tutulduğu vektördür. Başlangıçta rastgele atanan değerler ile doldurulur ama kullanılan algoritmada her bir döngüde bu değerler çeşitli parametrelere göre değiştirilmektedir.

ci: Her döngüde girişlerde oluşan değişimi tutan vektördür. Başlangıç değeri olarak giriş sayısı ve ara katman sayısı parametrelerine göre sıfır değerleri atanır. Değişim oldukça bu vektör düzeltilir. Denklemde kullanılan (ni+1) değerindeki bias değeri için kullanılmıştır.

co:  Bu vektör ise çıkış değerlerindeki değişimleri tutmaktadır. Başlangıç değerleri ara katman sayısı ve çıkış sayısı parametrelerine göre sıfır olarak atanır. ci,co değişkenleri hatanın hesaplanması için kullanılmaktadır. Böylece her adımda hata kontrolü yapabiliyoruz ve bu hata kontrolüne göre eğitimi durdurabiliyoruz.

for i=1:1000
 error = 0;
 for j=1:4
 [ net,co,ci,err ] = BackProp(net,inputs(j,:),targets(j,:),ni,nh,no,co,ci ); 
 error = error + err; 
 end
 if mod(i,100)==0
 display([' Error ',num2str(error)])
 end
end

Bu kod bloğu eğitim gerçekleştiği yerdir. Bizim uygulamamızda belli bir iterasyon sayısı boyunca eğitim devam etmektedir ve bin iterasyonda sonlanmaktadır fakat bu yaklaşım yerine her adımda hesapladığımız hata değerini(gerçek değere yakınlığını) de kullanabiliriz. Yani algoritmamız bizim belirlediğimiz hata değerinden küçük oluncaya kadar eğitime devam edebilir.

Algoritma her bir iterasyonda her bir giriş için:

BackProp(net,inputs(j,:),targets(j,:),ni,nh,no,co,ci ); fonksiyonunu kullanmaktadır. Bu fonksiyon parametre olarak ağırlık değerleri, girişler, çıkışlar, giriş sayısı, nöron sayısı, çıkış sayısı ve hata hesaplamaları için kullanılan parametreler alarak işlemini gerçekleştirmektedir. İlk önce ileri doğru hesaplama gerçekleştiriliyor.  Bu hesaplama iki kısma ayrılıyor. Birincisi giriş katmanı ile ara katman arasında, ikincisi ise ara katman ve çıkış katmanı arasında gerçekleşiyor. İkinci kısım birinci kısımdan çıkan değerleri kullanmak suretiyle çıkışlar üretiliyor. İleri doğru hesaplama yapılırken birçok aktivasyon fonksiyonu kullanılabilir. Bizim uygulamamızda hiperbolik tanjant fonksiyonu kullanılmaktadır. Böylece ileri doğru hesaplama tamamlanmış oluyor. İleri doğru hesaplama tamamlandıktan sonra ağa sunulan girdi için ağın ürettiği çıktı ağın beklenen çıktıları ile karşılaştırılır. Bunların arasındaki fark hata olarak kabul edilir. Bu hata, ağın ağırlık değerlerine dağıtılarak bir sonraki iterasyonda hatanın azaltılması sağlanır. Algoritma eğitimi de sürerken toplamda on adımda hata yazdırılarak hatanın giderek azaldığı gösterilmiştir.  Böylece hata azaltılarak bütün ağa paylaştırılmış ve geri doğru hesaplama tamamlanmıştır. İki aşama da sona erdikten sonra eğitim tamamlanmış ve değerlerin test edilmesi aşamasına gelinmiştir.

for j=1:4
 output = EvalNN( inputs(j,:),net,ni,nh,no );
 display([' Inputs [',num2str(inputs(j,:)),'] --> outputs: [',num2str(output),']']) 
end

Bu kod bloğunda kullanılan EvalNN( inputs(j,:),net,ni,nh,no );  fonksiyonu ile giriş değerleri test edilmektedir ve öğrenmenin ne kadar başarılı olduğu belirlenmektedir. Test aşamasından çıkan sonuçlar ise şöyledir.

inputs =
 0 0 0
 0 1 0
 1 0 1
 1 1 1
targets =
  1 1
 -1 -1
 -1 -1
  1 1
Error 2.0021
Error 1.9997
Error 0.012925
Error 0.0028741
Error 0.0016513
Error 0.0011705
Error 0.00091238
Error 0.00075076
Error 0.00063978
Error 0.00055868

Inputs [0 0 0] --> outputs: [0.99643 0.99213]
Inputs [0 1 0] --> outputs: [-0.98962 -0.98221]
Inputs [1 0 1] --> outputs: [-0.99356 -0.98541]
Inputs [1 1 1] --> outputs: [0.98985 0.98393]

Görüldüğü üzere hata gittikçe azalmıştır ve girilen giriş değerlerine göre ağın ürettiği çıkış değerleri gerçek değerlere çok yaklaşmıştır.

KAYNAKLAR