Yapay Zeka Girdi Katmanı Oluşturmak

Yapay Zeka (YZ) ile ilgili araştırmalar yaparak konunun içerisine girdikçe YZ ‘nin aslında bir Paradoks olduğunu düşünmeye başladım. Biyolojik taraftaki cevaplanamamış sorular bu düşüncelerimi perçinledi. Fakat daha derinlere girmeden benim kullanmak istediğim YZ’nin sadece bir “Tahmin Metodu” olduğunu ve bana işlemlerimde yön göstermede kullanmam gerektiğini anladım. YZ üretmek çok karışık bir konu, Forex ‘te YZ kadar karışık bir konu olunca işler bazen içerisinden çıkılmayacak duruma dönüşebiliyor. Beni yanlış anlamayın fakat YZ konusu ben çok iyi yazılımcıyım, Forex ‘i çok iyi biliyorum diyenlerin bile sıkılacağı bir konu bence. Bir Veri Ambarı (BigData) oluşturmak ve bu veri ambarı içerisinde Veri Madenciliği kullanmak bunu normal PC’ler ve bizim internet alt yapımızla gerçekleştirmek ömür törpüsü oluyor. Bu konuyu aşmak ise ciddi maddi güç gerektiriyor. (Robotun Sistem eksikleri yüzünden hatalı işleme düştüğü yada yanlış işleme girdiği çok zaman oldu belirtmek isterim)

Uzun süredir YZ ile ilgili kod geliştirmesi yapmadım sadece araştırıyorum ve notlar alıyorum. Bir çalışma düzeni oluşturmadan yap-boz yaparak sonuç üretilmeyeceği çok açık. Kısaca Finansal piyasalarda bir Tahmin Sistemi oluşturmak için yapmamız gerekenleri anlatmaya çalışacağım;

Otomatik alım/satım yapan yada size al/sat sinyali üreten basit bir sistemimiz olduğunu düşünelim. YZ ‘nin ilk önce sizin ne yaptığını bilmesi gerekiyor. Bunu için oluşturulan Yapay Sinir Ağı (YSA) ‘nın eğitilmesi gerekli. 2 metodumuz var yönlendirilmeli (öğretici ile) ve yönlendirmesiz eğitilme (Genetik Algoritmalar Evrimsel öğrenme ile). Biz öğretici ile öğrenme mantığını kullanacağız. Bizler bir enstrümanın yada bir hisse senedinin hareketlerini izler ve göstergelere, fiyat hareketlerine göre karar veririz. (genel olarak) Burada Girdi Katmanı’nı oluşturmak için bir öğrenme algoritmasına ihtiyaç duyacağız. Bu algoritma istediğiniz verileri (fiyatlar, tickler, volumler, hareket hızları vs.) Girdi olarak kayıt edecek bir fonksiyon yada fiyat hareketlerinin algoritmik (matematiksel) desenlerini çıkaran bir sistemde olabilir. (bu yapı sizin kuracağınız mantıkta olmalı) Sonuçta veri olmadan YZ öğrenmeye başlayamaz. Girdi Katmanı ‘nı bu şekilde oluştururken veri ambarına (veri tabanı diyelim ki anlam kargaşası oluşmasın) verileri ağırlık değerleriyle kayıt etmemiz gerekli. (YZ’nin normal mantığına göre) Bu ne demek oluyor diye soracak olursanız Çıktı Katmanın’daki Çıktı ile olması gereken değer arasındaki farkı minimize etmek için kullanılan bir mantık. Fakat burada karşılaşacağımız sorun biz Tahmin Sistemi kurduğumuz için olması gereken Çıktı hakkında hiç bir tahminimiz veya bilgimiz yok. Bu yüzden ağırlık çarpanlarını bir yana atıyoruz. Oluşturduğumuz sistemde verileri Girdi Katmanına göndererek (isterseniz bu katmanda verileri sisteminize göre işleyebilirsiniz.) Veri Ambarını yani YZ’nin bilmesi gereken verileri işleyeceği veri bütünlüğünü kurmuş oluyoruz. Tabi bu veriler işlem yaptığınız parite, emtia yada hissenin 3-5 fiyat hareketi olmamalı. Belki günlerce, haftalarca sisteminize göre YZ’nin öğrenmesi için Girdi Katmanına kayıt göndermelisiniz. Burada Öğrenme Fonksiyonu haricinde Katmanlar arası Transfer Fonksiyonu, İleri ve Geri Besleme sistemleri devreye girmekte. Veri işlenirken oluşan hatalar ve YZ’nin bunu öğrenmesi için bir Geri Besleme Katmanı oluşturabilirsiniz. Geri Besleme YSA’nın hataları öğrenmesine ve tekrarlamamasına yardımcı olacaktır. Söylediğim gibi konu çok karmaşık ve detaylı.

Bu kadar kavram kargaşasını anlattıktan sonra kendi sistemim için yazdığım uygulamadan kısaca bahsedeyim ki, senin sistemin ne yapıyor demeyin. Ben Veri Ambarı olarak domainim üzerinde bir mySQL veri tabanı oluşturdum. EURUSD paritesinde işlem yaptığım için her tick verisini ve  bir algoritmayla fiyat hareketlerinin matematiksel karşılığını çıkarıp bu değeri Master Value olarak ilgili tabloma kayıt ediyorum. Günde bazen 100.000 tickin üzerinde veri girişi oluyor tabloya. Bu işlemi AWS (Amazon Web Server) üzerinde server açıp bir Nero Bot kodlayarak gerçekleştirdim. Nero Bot’um EURUSD paritesindeki gerekli değerleri yazdığım bir API ile veri tabanına sorunsuz şekilde gönderiyor. Bu işlemler benim öğrenme algoritmamı ve Girdi Katmanı’mı oluşturuyor. (Şuan için 6milyona yakın tick value mevcut). Sistemim için Tahmin Metodum burada yürümeye çalışıyor. Fakat bu sistemin eksikleri mevcut YZ buradaki fiyat hareketlerinin neye bağlı, neden hızlı veya yavaş olduğunu bilmiyor. Bunu öğrenmesi için Ekonomik Takvim ile ilişkilendirmem gerekiyor. Örneğin bir TDİ veya PMI verisindeki hareket hızını ve veriye göre yönünü öğrenirse Tahmin/İşlem farklılığı oluşturabilir.

YZ üretmek için gerekli olan YSA üzerindeki Girdi Katma’nının oluşumunu bu şekilde özetlemek istedim. Sonraki YZ makalelerinde Gizli Katman ve Çıktı Katmanı (önerme/tahmin) hakkında yazacağım. Bu arada Yapay Zeka hiç bir zaman dünyayı ele geçiremez çok rahat olun 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir