Benzetimli Tavlama (Simulated Annealing) Algoritması

BENZETİMLİ TAVLAMA ALGORİTMASI

Herkese merhabalar, optimize kelimesi aslında günlük hayatta çok sık karşımıza çıkan bir kelimedir. Takdir edersiniz ki optimizasyon kelimesi aslında bir olayın, problemin veya bir durumun içerisindeki olasılıklardan mümkün olan en iyiyi seçmesi durumudur 📈.

Genel bir minimum noktası bulmak amacı ile problemin farklı zamanlarındaki sonuçlarını elde ederek bu sonuçlardan iyi olan değere doğru hareket edip birden fazla çözümü test ederek en iyi sonucu bulmaya yardımcı olan yöntem olan Simulated Annealing (Benzetimli Tavlama) yöntemi de bir optimizasyon problemi çözüm yöntemidir [1].

🔎Simulated Annealing Algoritması Hakkında

Benzetimli tavlama (Simulated Annealing) yöntemi, ayrık ve daha az ölçüdeki sürekli optimizasyon problemlerini ele almak için kullanılan popüler bir metasezgisel yerel arama yöntemidir.

Benzetimli tavlama algoritmasının temel özelliği, küresel bir optimum bulma umudu ile tepe tırmanma hareketlerine (amaç fonksiyon değerini kötüleştiren hareketlere) izin vererek yerel optimumdan kaçma aracı sağlamasıdır [2].

Algoritmaya tavlama ismi verilmesinin sebebi, demircilerin demiri döverken belirli bir dereceye kadar ısıl işlemden geçirmesi sonucu demirin istenilen kıvama gelmesini esas almasından kaynaklanmaktadır. Aynı mantık ile bir problem ele alınarak tavlama derecesi ile ısıtma sürecinden geçiriliyor ve ardından istenilen noktaya geldiğinde sonuca ulaştığı kabul ediliyor. (Local Objective Function)  

Simulated Annealing
                                                          Demirin ısıl işlemden geçirilerek tavlanması [3]

Amaç fonksiyonunda Δ kadar bir yükselmeye yol açan hareketin kabul edilme olasılığını veren fonksiyon kabul (accept) fonksiyonu olarak adlandırılır [4].Probability Formula

                                                                      Değerler arasında swap değişim yöntemi

Table1

İterasyon çıktılarındaki ilk çözüm ve elde edilen en iyi çözüm değerleri ise sırasıyla aşağıda gösterilmektedir. Optimum değerleri ulaşmayı hedefleyerek 10 iterasyon boyunca ilk çözüm ve son çözüm değerlerini elde edeceğiz.

First Five İteration

                                                                              Objective değerler tablosu

Visual                                                                         Objective değerlerin grafikselleştirilmesi

Örneğin 5.iterasyon çalıştırılırken değer değişimlerini gözlemlemek amacı ile hesaplama sırasında farklı zamanlarda alınan sonuçlar aşağıda gösterilmiştir. Böylelikle swap işlemi mantığını ve bu süreçteki enerji değişimleri (ΔE) gözle görülebilmektedir.

Table3

                                                         Swap işlemi devam ederken enerji değerlerinin gösterilmesi

Table4                                                     5 ve 102 nolu bağdaki hesaplamaya bağlı result değerleri

Table5

                                                           113 ve 127 bağındaki hesaplamaya bağlı olarak result değerleri

🔎 2-OPT ALGORİTMASININ SA ÜZERİNDE UYGULANMASI

2-opt algoritması, GSP problemlerinin çözümüne yönelik, muhtemelen en temel ve çok geniş kullanım alanına sahip bir algoritmadır [6]. Temel olarak tur içerisindeki iki kenarın silinmesi ve iki parçaya ayrılan turun maliyetleri düşürecek şekilde, farklı olarak bağlanması şeklinde tanımlanabilir (Gutin ve Punnen, 2002).

✔️Benzetimli tavlamanın swap yönteminde iki değer birbiri ile kontrol edilmekte ve olasılık değerine göre hafızaya alınmaktadır. Fakat tüm işlemler sırası ile yapılacağından çalışma zamanı açısından çok verimli olmayacaktır.

✔️2opt algoritması ile örneğin tour olarak adlandırılan indis değerlerinde (initial_p) 4. düğümden sonra 17. düğüme geçiş yapmakta olduğu görülmektedir. 2opt algoritması devreye 4 ve 5. düğümler arasındaki bağı kırıp d ile 17 düğümleri arasındaki bağı oluşturmakta girer. Böylelikle çalışma zamanı daha verimli sonuçlar üretir.      

                                                     Tour bağlantısındaki farklı değerlerin bağlanması

two_opt_python fonksiyonunda şehirlerdeki indis değerleri 2 artırımlı olarak kontrol edilerek değişimi vermektedir. Tour üzerindeki yolda herhangi bir değişim yaşandıysa bu değişim tour değişkenine atanmaktadır. dist( ) fonksiyonu sonucunda iki şehir arasındaki ( 4-17 gibi) Öklid uzaklığı hesaplatılarak tour içerisindeki koordinatlar döndürülmektedir. Bu sayede en iyi çözüm üzerinde iyileştirme sağlanmaktadır ⭐

REFERANSLAR

[1] Sadi Evren Şeker, Bilgisayar Kavramları, “Simulated Annealing (Benzetilmiş Tavlama)”, http://bilgisayarkavramlari.sadievrenseker.com/2009/11/23/simulated-annealing-benzetilmis-tavlama/ adresinden alınmıştır.

 [2] Darrall Henderson, Sheldon H Jacobson, Alan W. Johnson, The Theory and Practice of Simulated Annealing, April 2006.          

 [3] Orhan Baylan, “ISIL İŞLEM NEDİR? ÇELİĞE NİÇİN ISIL İŞLEM YAPILIR?”, https://www.metaluzmani.com/isil-islem-nedir-celige-nicin-isil-islem-yapilir/ adresinden alınmıştır.     

 [4] Tavlama Benzetimi Algoritması (Simulated Annealing), BMÜ-579 Benzetim ve Modelleme, Yrd. Doç. Dr. İlhan AYDIN.

[5] Hefei University, Thomas Weise, Metaheuristic Optimization, 7. Simulated Annealing.

[6] Timur KESKİNTÜRK, Barış KİREMİTCİ, Serap KİREMİTCİ, 2-OPT Algoritması ve Başlangıç Çözümünün Algoritma Sonuçları Üzerindeki Etkisi, 2016.

                                                                                              Olasılık formülü

Sıcaklık yüksek olduğunda, amaç fonksiyonunda artışa neden olabilecek hareketlerin kabul edilme olasılığı çok yüksek olacak, sıcaklık düştükçe bu olasılık da azalacaktır. Bu sebeple, aramaya yeteri kadar yüksek bir sıcaklık değeri ile başlamak gereklidir [4]. Ben çalıştığım projede kullanılacak başlangıç sıcaklık değerini T= 100000 olarak belirledim 🌡️.

Algoritmada, sıcaklık yavaş yavaş azaltılırken her sıcaklık değerinde belli sayıda hareket deneyerek arama işlemi sürdürülmektedir [4].

Algoritmanın Akış Şeması 🖋️Flowchart

                                                   Benzetimli Tavlama Algoritması Akış Diyagramı

Algoritmanın Çalışma Prensibi 🔨

Benzetimli algoritmanın çalışma mantığında en önemli işlem, sıcaklığın zamanla soğutulması gerektiğidir. Çünkü başlangıç sıcaklığı zamanla azalmazsa enerji sürekli yüksek kalacak ve yüksek orandaki entropi ile tüm ağacın aranması sağlanacaktır, bu istenmeyen bir durumdur.

Algoritmada soğuma işlemi gerçekleştirilene kadar her çözümde enerji seviyeleri karşılaştırılır. Enerji değişimi hesaplanmasında pos’ olarak olası bir yapılandırmadan mevcut yapılandırma farkından faydalanılır [5].

Solution1                                                                  Enerji değişimi hesaplanması [5]

Daha sonra kabul edilecek pozisyonun hesaplanması için Şekil 4’ de görüldüğü gibi bir hesaplama olasılığı sunulmuştur. Boltzmann sabiti olan k değeri göz ardı edilerek denklem sadeleştirilmiştir. Bu sayede yeni aday çözümün hesaplanmasına imkân sunulmuştur.

                                                               Yeni aday çözümün olasılık hesabı [5]

Bu durumlarda T sıcaklığı ise yinelenen belirli bir aralıkta sıcaklığını azaltmaya devam etmektedir. Bu projede kullanılan veri seti ‘gr137.tsp’ olarak seçilmiştir.

Bu veri seti TSP alt yapısı ile çalışmakta ve gezgin satıcı problemlerini baz almaktadır. Bu veri seti Amerika alt yapısındaki 666 tane şehir problemi için bilgi içermekte ve içerik boyutunda 137 tane X ve Y koordinatları verilmektedir.

Benzetimli tavlama yönteminde çalıştırılan düğümleri öncelikle swap yöntemi ile değiştirerek karşılaştıracağız ve en iyi sonucu elde etmeye çalışacağız 👩🏻‍🏫

Amaç fonksiyonu olarak gösterilen Objective Function ’da karşılaştırılacak düğümlerin mesafelerini aşağıdaki gibi hesaplayacağız. Burada hesaplanacak mesafeyi ise öklid mesafesi olarak alacağız 📏

Optimizasyon algoritmalarında çok sık kullanılan bir dil olan Python dilinde kodlamaya devam edeceğiz. Haydi birlikte amaç fonksiyonunu öklid mesafesi baz alarak yazalım 👍

Objective Function                                                              Amaç fonksiyonu mesafe hesaplanması

Swap Yöntemi ile Hesaplama 🧮

Şekil 8’ de görüldüğü üzere N ile gösterilen değer koordinatların boyutunu ifade etmektedir. N boyutunda rastgele değerler üreterek swap1 ve swap2 değişkenlerine atayacağız. 

Kontrol edilecek iki değer birbiri ile aynı ise yeni olasılık değeri oluşturmak üzere swap2 olasılığı yeniden değer oluşturacak demektir. Bu veri setinde p ile ifade edilen değer bir bakıma Id sütununa denk gelmektedir. 

Üzerinde değişiklik yapılmaması için copy( ) fonksiyonu ile değerler kopyalanmaktadır. Her aşamada enerji hesaplaması yapılmasının sebebi, Simulated Annealing algoritma mantığındaki sıcaklık ( temperature ) değerinin belirli bir değere kadar ısıtılması ve sonra cooling factor denilen soğuma faktörü ile belirli bir seviyeye kadar soğutulması gerektiğinden kaynaklanmaktadır.

Benzetimli tavlama örneğindeki ısınma sürecinde içerisindeki partiküllerin hareketliliğinden dolayı enerji yükselmesi olacaktır ve enerji hesabı her süreçte yapılarak yüksek enerjiye sahip olup olmadığı kontrol edilmek istenmektedir ⚡

Swap method

                                                                        Swap yöntemi ile hesaplama

Algoritmada kullanılan bu yöntemde sıra ile (order) işlem yapılmakta olduğundan rastgele değerler üzerinde hesaplama yöntemine gidemez böylelikle doğru sonuçlara diğer arama operatörlerinin kullanımı ile gidilmesi zaman açısından da çok önem arz etmektedir.Swap Changing

                                                                      Değerler arasında swap değişim yöntemi

Table1

İterasyon çıktılarındaki ilk çözüm ve elde edilen en iyi çözüm değerleri ise sırasıyla aşağıda gösterilmektedir. Optimum değerleri ulaşmayı hedefleyerek 10 iterasyon boyunca ilk çözüm ve son çözüm değerlerini elde edeceğiz.

First Five İteration

                                                                              Objective değerler tablosu

Visual                                                                         Objective değerlerin grafikselleştirilmesi

Örneğin 5.iterasyon çalıştırılırken değer değişimlerini gözlemlemek amacı ile hesaplama sırasında farklı zamanlarda alınan sonuçlar aşağıda gösterilmiştir. Böylelikle swap işlemi mantığını ve bu süreçteki enerji değişimleri (ΔE) gözle görülebilmektedir.

Table3

                                                         Swap işlemi devam ederken enerji değerlerinin gösterilmesi

Table4                                                     5 ve 102 nolu bağdaki hesaplamaya bağlı result değerleri

Table5

                                                           113 ve 127 bağındaki hesaplamaya bağlı olarak result değerleri

🔎 2-OPT ALGORİTMASININ SA ÜZERİNDE UYGULANMASI

2-opt algoritması, GSP problemlerinin çözümüne yönelik, muhtemelen en temel ve çok geniş kullanım alanına sahip bir algoritmadır [6]. Temel olarak tur içerisindeki iki kenarın silinmesi ve iki parçaya ayrılan turun maliyetleri düşürecek şekilde, farklı olarak bağlanması şeklinde tanımlanabilir (Gutin ve Punnen, 2002).

✔️Benzetimli tavlamanın swap yönteminde iki değer birbiri ile kontrol edilmekte ve olasılık değerine göre hafızaya alınmaktadır. Fakat tüm işlemler sırası ile yapılacağından çalışma zamanı açısından çok verimli olmayacaktır.

✔️2opt algoritması ile örneğin tour olarak adlandırılan indis değerlerinde (initial_p) 4. düğümden sonra 17. düğüme geçiş yapmakta olduğu görülmektedir. 2opt algoritması devreye 4 ve 5. düğümler arasındaki bağı kırıp d ile 17 düğümleri arasındaki bağı oluşturmakta girer. Böylelikle çalışma zamanı daha verimli sonuçlar üretir.      

                                                     Tour bağlantısındaki farklı değerlerin bağlanması

two_opt_python fonksiyonunda şehirlerdeki indis değerleri 2 artırımlı olarak kontrol edilerek değişimi vermektedir. Tour üzerindeki yolda herhangi bir değişim yaşandıysa bu değişim tour değişkenine atanmaktadır. dist( ) fonksiyonu sonucunda iki şehir arasındaki ( 4-17 gibi) Öklid uzaklığı hesaplatılarak tour içerisindeki koordinatlar döndürülmektedir. Bu sayede en iyi çözüm üzerinde iyileştirme sağlanmaktadır ⭐

REFERANSLAR

[1] Sadi Evren Şeker, Bilgisayar Kavramları, “Simulated Annealing (Benzetilmiş Tavlama)”, http://bilgisayarkavramlari.sadievrenseker.com/2009/11/23/simulated-annealing-benzetilmis-tavlama/ adresinden alınmıştır.

 [2] Darrall Henderson, Sheldon H Jacobson, Alan W. Johnson, The Theory and Practice of Simulated Annealing, April 2006.          

 [3] Orhan Baylan, “ISIL İŞLEM NEDİR? ÇELİĞE NİÇİN ISIL İŞLEM YAPILIR?”, https://www.metaluzmani.com/isil-islem-nedir-celige-nicin-isil-islem-yapilir/ adresinden alınmıştır.     

 [4] Tavlama Benzetimi Algoritması (Simulated Annealing), BMÜ-579 Benzetim ve Modelleme, Yrd. Doç. Dr. İlhan AYDIN.

[5] Hefei University, Thomas Weise, Metaheuristic Optimization, 7. Simulated Annealing.

[6] Timur KESKİNTÜRK, Barış KİREMİTCİ, Serap KİREMİTCİ, 2-OPT Algoritması ve Başlangıç Çözümünün Algoritma Sonuçları Üzerindeki Etkisi, 2016.

Python Veri Bilimi Kütüphaneleri 2 – Numpy Metodoloji

Python içerisinde en önemli ve temel olarak bakılan kütüphanelerden birisi de şüphesiz numpy kütüphanesidir. Bu serinin devamında öncelikle pandas kütüphanesinden şimdi de numpy ile devam edeceğim. Genelde sahip olduğu kütüphane bazlı özelliklerde fonksiyonel yapısı, diğer kütüphanelere göre daha sağlam bir altyapıya dayanmaktadır. Bundan ötürü, yapılacak olan matematiksel işlemleri de hızlıca ve sağlıklı bir şekilde yapabilmektedir. Açılımı zaten python içerisinde Numerical (num) python (py) olarak bilinmektedir. Buradan da anlaşıldığı üzere, matematiksel yönü kuvvetli, istenen sonuçlara hızlı ve kolay şekilde ulaşması mümkün bir kütüphanedir. Makine Öğrenmesi ve Derin Öğrenme konularında vazgeçilmez yapı taşı kütüphanelerinden birisidir. Temel anlamda yapılan her işlemin arka planında kendisi rol oynar. Burada bahsedilen şey array halde bulunan matrisler ve onların durumlarına göre kendi aralarındaki işlemler, çıktılarının hesaplanması ve proje olarak yapılan iş esasında matrisleri kullanmak en gerekli koşuldur. Genellikle bunu Image Processing işlemlerinde sıkça görsek bile, bu alanda çalışacak olan kişilerin yapacağı işlemlerde numpy bilgisi mutlaka olmalıdır.

 

Başlı başına bir bütün olarak kullanılan bu kütüphane, sizlere kullanacağınız modeller için uygun matematiksel yapılar sunar. Bu sayede, yapacağınız işlemlerin betimsel anlamda açıklamaları da aynı şekilde daha mantıklı olur. Üst paragrafta da bahsettiğim gibi matris işlemleri matematik tabanında en mühim olaydır. Bu halihazırda sizin yapacak olduğunuz işlemler bütününe yayılır ve katman bazlı olarak işlem süreçlerinde numpy size kolaylık sağlar. En önemli katman işlemlerini, resimleri aktif olarak işlediğimiz zaman gözle görülebilir bir şekilde fark edebiliriz. OpenCV kütüphanesi işlemler boyunca gerekli yükü sırtlasa bile, herhangi bir numpy kütüphanesinin array yapısı aracılığı ile yapılmamış işlemler sürdürülebilir bir halde olmaz. Yapılacak birçok işlem arkasında, matrisler ve matrislerin çarpımları olacağı için numpy kütüphanesi bu işlerin vazgeçilmez değeridir. Fonksiyonel yapısının verdiği imkanlar doğrultusunda tam anlamıyla kullanıcı dostu bir kütüphanedir. Dünya çapında bu alanda çalışan kişilere yapılan testlere göre, Python kütüphaneleri içerisinde en kullanışlı ilk 5 kütüphane içerisindedir. Kullanım alanları da bununla doğru orantılı olarak artmaktadır.

 

 

Derin öğrenme ve Makine Öğrenmesi konuları, sanılanın aksine sadece uzun satırlar süren kodları yazmak demek değildir. Bu sebepten insanların çoğu, arka planında dönen olayları bilmeden kod yazmaya hatta bu alanda kariyer yapmaya başlıyorlar. Bu olayların arka tarafında yoğun bir matematik ve istatistik bilgisi yatmaktadır ki buna en iyi örnek, Image Processing işlemleridir. Çünkü arka tarafında tamamen matematik yatmaktadır ki bu işlemler matrisler ve kullanılan kütüphaneler içerisinde numpy vardır. Bu da bu kütüphanenin hemen hemen her yerde aktif görev aldığının en büyük kanıtıdır. Bu şekilde çok fonksiyonlu olan python içerisinde kütüphane yoktur. Çünkü her alanda mutlaka bulunması gereken iki kütüphane vardır. Bunlar numpy ve pandas kütüphaneleridir. Bunlar hem veriyi işleme hem veri üzerinde sayısal işlemleri yapma konusunda kolaylık sağlarken bizlere veriye bakış açısında oluşan farklılıkları gösterir. Bu da Python bünyesinde bulunan kütüphanelerin özellikle veri işleme ve veri analizleri üzerine olan kütüphanelerin ne derece mühim olduğunun bir kanıtıdır.

 

 

Numpy kütüphanesinin veri şekillendirme ve hazırlama konusunda büyük ölçüde fark yarattığını net bir şekilde söyleyebilirim. Numpy kütüphanesi içerisinde bulunan reshape, array, exp, std, min, sum gibi birçok anlamda kullanışlı diyeceğimiz fonksiyonlara sahiptir. Diğer kütüphanelerden ayırt eden en temel seviyesi aslında budur. Bunun gerekli detaylarına ulaşmak isteyenler için kaynaklar kısmında bunlara dair bilgiler bırakacağım. Buradan siz de numpy kütüphanesini kullanırken ne gibi özelliklerden faydalanabilirsiniz ya da sayısal işlemlerde ne tarz kolaylıklar yakalayabilirsiniz bunları kendiniz de cheat sheet veya numpy’ın kendine ait olan internet sitesinden bulabilirsiniz.

 

Bu zaman kadar okuduğunuz ve yazılarımı takip ettiğiniz için teşekkür eder, iyi günler dilerim.

 

References:

-https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Numpy_Python_Cheat_Sheet.pdf

-https://numpy.org/

-https://cs231n.github.io/python-numpy-tutorial/

-https://www.w3schools.com/python/numpy_intro.asp

-http://globalaihub.com/python-veri-bilimi-kutuphaneleri-1-pandas-metodoloji/

-http://globalaihub.com/python-data-science-libraries-1-pandas-methodology/

Dijital Miras

DİJİTAL MİRAS

Dijital dünyanın dört bir tarafımızı kuşattığı ve büyük bir hızla analog dünyanın yerini aldığı günümüz koşullarında, hukuki ilişkiler de bu durumdan nasibini almaktadır. Dijital çağın kaçınılmaz bir sonucu olarak; çeşitli özel hukuk ilişkilerinin dijital platformlarda kurulması ve yürütülmesi (dijital içerikli sözleşmeler), bu ilişkilere uygulanacak hukuk kurallarının tespiti ve bu hususta bilhassa, Türk Medeni Kanunu ve/veya Türk Borçlar Kanunu’nun yeterliliği bakımından tereddüt ve mevcut hukuk kurallarının dijital dünyanın gerisinde kaldığı endişesi yaratmaktadır.

İç hukukumuzda dijital çağın gereklerine denk düşecek şekilde bir “dijital güncelleme”nin gerçekleşip gerçekleşmeyeceği ya da ne zaman gerçekleşeceği belli olmadığından, en azından bugün için mevcut mevzuat hükümleri uyarınca bir değerlendirme yapılması gerektiği ortadadır. Her geçen gün farklı bir teknolojiye tanık olduğumuz gündelik yaşamımızda artık teknolojiyle beraber kavramlarımız ve kabul ettiklerimizde değişmektedir. En son farklı olarak yeni bir gelişme yaşandı: Dijital Miras.

Peki nedir bu dijital miras ?

Dijital miras, “miras bırakanın internet ortamındaki hesaplarının ve verilerinin tümü” biçiminde de tanımlanabilir. Aslında böyle bir kavram sadece tanım olarak vardı ve somut bir olayda uygulanabilirliği yoktu. Fakat teknolojik gelişmelerin arttığı bu zamanda artık somut olarak uygulanabilir hale geldi.

 

Dijital Miras kavramı somut olaylara uygulanması zor ve karmaşık bir kavram olarak çıkıyordu. Çünkü internet ortamındaki hesapların ve verilerin kişinin dokunulmazlığı olarak bakılıyor ve buna göre sonuçlandırmalar yapılıyordu. Ama artık bu durum İstinaf Mahkemesinin verdiği son kararlar değişti.

Bu konu hakkındaki İstinaf Mahkemesi kararı şöyle:

Eşini trafik kazasında kaybeden bir vatandaş, Denizli 4. Sulh Hukuk Mahkemesi’ne avukatı …. tarafından verdiği dilekçede, hanımına ait Apple marka cep telefonunun iCloud hesabındaki fotoğraf, video, ses kayıtları, medya dosyaları ile maillere ulaşmak için eşinin terekesinin tespitini, iCloud kimliğinin miras kabul edilerek, hesaba ulaşması için karar verilmesini talep etti. Mahkeme ise bu talebi “özel hayatın gizliliğini ihlal” diyerek reddetti.

Kararı İstinaf Mahkemesi’ne taşıyan vatandaş, Antalya Bölge Adliye Mahkemesi 6. Hukuk Dairesi’ne verdiği dilekçede “Eşim, 13 Temmuz 2019’da vefat etti. Geride mirasçı olarak ben ve çocuğumuz kaldı. Eşimin ölümü sonrası GSM hattı kapatıldı. Telefonundaki fotoğraf, video, ses kayıtları, dokümanlar, notlar, mailler iCloud hesabındaydı. Eşimin iCloud hesabına erişebilmek için şifresini bilmem gerekiyor. Bu hesap vasıtası ile kontrol edilen e-ticaret sitesi hesabı, e-hediye çekleri ve kuponları vardı. Apple firması mahkeme kararıyla erişim izni verileceğini bildirdi” dedi.

Bu kararla beraber hukuk literatürüne de farklı ve uygulanabilir bir kavram girmiş ve ilk uygulamasını bulmuş oldu. Dijital mirasların çok fazla olduğu bugünlerde ölmeden önce bazı şeylerin yok edilmesi gerektiği gerçeğini de göz önünde bulundurmak gerektiği bir defa daha hatırlatmak isterim. Günümüzün yaklaşık üçte birini akıllı telefonumuzda harcıyoruz. Ve haliyle çok veri birikiyor. Biriken verilerin başımıza iş açması hiç hoş olmayacaktır.

 

Referanslar:

Featured Image

Etkileşimli IPython ve Shell Komutları

Standart Python yorumlayıcıyla etkileşimli olarak çalışırken karşılaşacağınız sıkıntılardan biri, Python araçlarına ve sistem komut satırı araçlarına erişmek için birden çok pencere arasında geçiş yapma ihtiyacıdır. IPython bu boşluğu doldurur ve size doğrudan IPython terminalinden kabuk komutlarını yürütmek için bir sözdizimi sunar [1]. Sizlerle birlikte terminal komutları ile devam edeceğiz. Şimdi yazacağım komut satırları Linux veya Mac OS X gibi Unix benzeri bir sistemde kesin olarak çalışmaktadır.

IPython hakkında araştırma yaparken bir yazıda şunlara denk gelmiştim:

Ipython, Python çekirdeğine sahip fakat Pythondan bazı artıları bulunan bir programlama aracıdır. Bu aracı üstün kılan özelliklerden bir tanesi de kendisine has grafiksel bir arayüze ve hoş bir geliştirme ortamına sahip olmasıdır [2].

Bununla daha sonra ilgileneceğiz. Şimdilik Shell’ de çalışırken yeni başlayanlar için burada hızlı bir giriş sunuyor olacağım. Konuya birinci örneğimiz ile devam edelim.

Örnek olarak, burada bir kullanıcının sistemi içerisinde yer alan dizinleri ve dosyaları görebilmekteyiz. Öncelikle terminalde yazı yazdırmamızı sağlayan ilk komutumuz echo olacaktır.

Shell Komutları

✳️ Echo: Bu kod satırı ile tıpkı Python’ da yer alan print fonksiyonu gibi terminalde ekrana veriyi bastırmaktayız. Gördüğümüz üzere tırnak işaretleri içerisinde yer alan veriyi ekrana yazdırmaktadır.

Echo command

✳️ Pwd(Print Working Directory): Adından da anlaşılacağı üzere çalışma dizinini yazdırmaktadır.

PWD Command

✳️ Ls: Çalışma dizini içinde yer alan içerikleri listeler.

LS Command

✳️ Cd: Tahmin ediyorum ki birçoğunuz bu komutu biliyordur. Benim de çok sık kullandığım bir komut. Cd komutu ile dizinler arası gezinmeyi sağlayabilirsiniz. Örneğin, aşağıdaki görselde Documents klasörüne geçmekteyiz.

Cd Command

✳️ Mkdir: Bulunduğumuz dizin içerisinde terminaldeyken bir dizin oluşturmak elbette mümkün! Mkdir komutu ile örnek bir klasör oluşturalım. Bunun yanı sıra işlemleri bir üst dizine geçerek devam ettirdim. Bir üst dizine geçmek için cd .. komutu kullanmanız yeterlidir.

Mkdir Command

IPython’ a Hızlıca Giriş

IPython, dilden bağımsız bileşenlerle büyüyen bir projedir. IPython 4.0’dan itibaren, projenin dilden bağımsız bölümleri: dizüstü bilgisayar formatı, mesaj protokolü, qtconsole, dizüstü bilgisayar web uygulaması vb. Jupyter adı altında yeni projelere taşındı. IPython, bir kısmı Jupyter için bir Python çekirdeği sağlayan etkileşimli Python’a odaklanmıştır. Bu sebeple Jupyter üzerinde shellde çalıştığımız kodları deneyeceğiz. Bunun için öncelikle Jupyter Notebook’ u aktifleştiriyoruz.

Jupyter

Jupyterde herhangi bir Python 3 notebook oluşturduktan sonra istediğimiz komutları deneyebiliriz. Örneğin ben bulunduğum dizini, içerikleri listelemeyi ve ekrana bir yazı yazdırmayı denedim.

Ipython Commands

Hata Ayıklama Komutlarının Kısmi Listesi

Etkileşimli hata ayıklama için burada listelediğimizden çok daha fazla kullanılabilir komut vardır; Aşağıdaki tablo, daha yaygın ve kullanışlı olanlardan bazılarının açıklamasını içerir:

Debugging List

İstediğiniz debug komutlarını yardıma ihtiyacınız olduğunda Ipython satırlarında kullanabilmeniz mümkün. Aşağıdaki görsellerde kullanabileceğimiz birkaç komuta yer vermiş bulunmaktayım. Bu şekilde gerekli komutları kullanabiliyoruz.

REFERANSLAR

  1. Jake VanderPlas, Python Data Science Handbook, Essential Tools For Working with Data.
  2. IPython, https://mustafaakca.com/ipython/.
  3. IPython Interactive Computing, Official Website, https://ipython.org.
  4. Introduction the Shell, https://datacarpentry.org/shell-genomics/01-introduction/index.html.
  5. Info World, https://www.infoworld.com/article/3193969/10-unix-commands-every-mac-and-linux-user-should-know.html.

 

Çöplerin Yüzü

Teknolojik gelişmeler kolaylığı beraberinde getirdiği gibi devlet otoritelerini ve otokrasinin de aynı zamanda güçlü bir argümanı olmaktadır. Totaliter rejimler teknolojinin faydalarını kendi lehlerine çevirerek toplumu izleme amacı güdüyor. Günümüzde sokaktaki güvenlik kameralarından, sosyal güvenlik numarasına kadar her şey devlet otoritesinin altında işlenen kişisel veriler olarak karşımıza çıkıyor. Bu kişisel veriler her ne kadar devlet tarafından yasal hak olarak kullanılsa ve izne tabi olmasa da kötü sonuçlar doğurabilir.

Hong Kong’da sokakları temiz tutmak adına başlatılan çalışma bir hayli ilginç. Hong Kong’da “ The Face of Litter ” (Çöplerin Yüzü) kampanyası ile bilim kurgu filmlerini aratmayan bir kampanya başlatıldı. Amaç sokağa atılan çöplerdeki DNA’lardan yararlanarak bunları kimin attığını tespit etmek.

Öncelikle sokaklarda yere atılan çöpler toplanıyor. Çöplerdeki DNA’lar analiz ediliyor ve çöplerin atıldığı mahalledeki insanlar inceleniyor. Bu bilgiler dijital ortamda şekillendiriliyor. DNA ile kişilerin tam olarak resimleri çıkarılamaz ancak saç ve ten rengi, cinsiyetleri öğrenilmesi mümkün.

Bundan yararlanarak suçluların gerçeğe yakın yüz profilleri oluşturuluyor. Bununla da kalmıyor bütün billboardlara afiş olarak asılıyor ve sosyal medyada paylaşılıyor. Çevreci olan bu çalışma Hong Kong ve dünyada yankı uyandırmaya şimdiden başladı.

Her ne kadar çevreci bir uygulama olarak görülse de ileri ki süreçlerde topluma olumsuz etkileri büyük. Amerika’da yıllardır suçluları bu şekilde ifşa eden bir site bulunuyor üstelik üçüncü kişiler tarafından yaratılan bir site değil, tamamen devlet kontrolünde olan bir suçlu ifşa sitesi.

Evet bazen işlenen suçları ifşalamak toplum tarafından hoş karşılanan ve suçları azaltacağına dair bir inancın doğmasına sebep olan bir çalışma olarak görülebilir. Fakat her ne kadar bu inanca sahip de olsak olay göründüğünden çok farklı. Toplumlar suçları baskılamak amacıyla cezalar ve kanunlar geliştirmişlerdir. Her toplumda bulunan bu norm yapıları kişilerin haklarını tam anlamıyla koruduğu zaman işlevsellik kazanır. Bu gibi ifşa mekanizmalarının söz konusu olması sanığı korumayacağı için adalete olan inancı da haliyle zedeleyecektir.

İşin hukuki boyutundan tam anlamıyla çıkmadan teknolojik yükümlülüklerini de ele alacak olursak, teknoloji kötüye kullanıldığı zaman var olan tüm haklarımızı da beraberinde elimizden alacaktır. Çöp atanları ifşalamak her ne kadar teknolojik olarak ve çevreci olarak harika da olsa özgürlüklerimizi de fevkalade kısıtlayacaktır.

İzlenen ve baskılanan bir toplum özgürlükleri sınırlandığı oranda yaşama şansına sahip olurlar. Ve özgür düşünce ortamı yaratamayan toplumlar gerilemeye ve geçmişte kalmaya devam ederler. Özgürlükler toplumun tümüne yayıldığı zaman bilim ve teknoloji ilerleme gösterir.

Teknolojik aletlerle her an izlenmek ve bunların özgürlük lehine –bu tarz ifşa mekanizmalarıyla- gasp edilmesi yaşam ve düşünce özgürlüğü gibi anayasal hakları tamamıyla yok edecektir.

Dipnot: George Orwell’ın 1984 romanı bu konuda şiddetle tavsiye edebileceğim bir kitaptır.

REFERANSLAR:

 – https://bigumigu.com/haber/hong-kong-sokaklarini-kirletenler-dna-analizleri-yapilip-desifre-ediliyor/

Hareketli Ortalama Algoritmasıyla Al – Sat Tavsiyeleri

Finans alanında çalışan Veri Bilimciler, genellikle portföy optimizasyonu, al – sat işlemleri ve portföy getirisi gibi hesapları yapar. Bu işin borsa üzerinde önemi çok üst seviyededir. Çünkü verilen her karar, yapılacak olan kâr miktarını etkiler. Bundan ötürü adımları dikkatli seçerek, üzerinde çalışılan sisteme entegre edilmelidir. Borsa içerisinde dünya ile etkileşim halinde olan mekanizma mevcut ve bunun değişimlerine hızlı şekilde adapte olabilen firmalar hızlıca fark yaratıp sürdürülebilir bir hal almalıdır. Bu sayede kendi farkını ortaya koyarken pazarlama şekillerini değiştirip piyasa içerisinde aktif olabilirler. Marka olarak danışmanlık sunan ve değişikliklere adapte olma potansiyeli yüksek olan firmalar, kendi isimlerinden sık bir şekilde bahsettirebilirler. Robot danışmanların arka planında yoğun bir şekilde makine öğrenmesi ve derin öğrenme algoritmaları yatmaktadır. Robot danışman sunan her şirket, kendi bünyesinde sağlam bir altyapıya sahiptir. Kodlama kısmı biraz karmaşık olsa bile sonuç kısmına vardığımız an, başarının tamamını kendi gözlerimizle göreceğimiz. Buna istinaden çıktıyı alt resimde örnek olması adına koyuyorum.

 
 
Aslında üstte gördüğünüz resim, projenin son halini temsil ediyor. Ulaşmak isteyenler için sizlere kaynaklar kısmında kod bütününü bırakacağım ve kendi sistemlerinize kolay bir şekilde adapte edebileceksiniz. Not olarak şunu belirtmeliyim. Ben Türkiye borsası içerisinde yer alan Aselsan şirketini kullanarak bu kodlamayı yaptım. Ek olarak burada gördüğünüz herhangi bir işlem yatırım tavsiyesi değildir. Bunları belirttikten sonra alt tarafta gördüğünüz şekilde kütüphaneleri ekleyip veri setimizi okuyoruz. Ardından veri hakkında istatistiksel çıktıları almak için describe() fonksiyonunu kodluyoruz. Burada ilgilendiğimiz değişken, borsanın kapanışını temsil eden ‘close’ değişkeni üzerine olacak. Veri setinin tarihlerini ben 1 Ocak 2017 itibari ile alarak kendi analizimi gerçekleştirdim. Siz istediğiniz herhangi bir zaman üzerinden analizinizi yapabilirsiniz fakat tek olması gereken şey, benim kullandığım şekilde kullanabilmeniz için hisse için tarihsel veri seti, gerekli kütüphaneler içerisinde bulunmalıdır. Aksi takdirde kodunuz çalışmayacak ve hata üretecektir. Github linkini koyduğum kodun detaylarını inceleyebilirsiniz. Herhangi bir sorunuz olursa mail adresimden bana ulaşabilirsiniz.
 

 
Borsa içerisinde birçok farklı şekilde teknik analiz yöntemi vardır. Biz burada tamamen hareketli ortalama üzerinden devam edeceğiz. Hareketli ortalama yöntemi, borsa içinde kullanılan en yaygın yöntemlerden birisidir. Bu yöntem sayesinde borsa içinde al sat tarzı işlemleri anlık olarak takip eden birçok insan vardır. Bunlara ekleyeceğimiz teknik analiz metotları halen mevcuttur. Örnek vermek gerekirse RSI, Bolinger Bandı, MACD ve Fibonacci Düzeltme Seviyeleri sayılabilir. Alt tarafta gördüğünüz çizgiler, bizim için window() fonksiyonu ile at sat işlemlerini yaptıracak, hareketli ortalama yöntemidir. Görselde mavi çizgi asıl fiyatları temsil etmektedir. Bunun haricinde diğer çizgilerin kesişim noktaları bize al sat olarak dönüyor ve getirisini kendimiz ölçebiliyoruz. Buy_sell adını verdiğim fonksiyon sayesinde bize gerekli işlemleri yapıyor. Bu da bizim için hazırlığı yapıyor. Bizim için buranın çalışması hali, işlemlerinin tamamının bittiğini gösterir. Artık geriye sadece gerekli atamaların yapılıp fonksiyonun görsel olarak en başta gösterdiğim şekilde sunumu kalmıştır. Bunu yapabilmek için matplotlib kütüphanesi size yardımcı olacaktır.
 

 
Bu yazının devamını kendimi geliştirdiğim sürece gelecek ve bunu bir seri halinde yazmayı düşünüyorum. Borsa içerisinde kullanılan al sat işlemleri ve teknik analiz metotlarının bunlara etkilerini sizlere açıklayıp bu alanda kariyer düşünen herkese yardımcı olmayı hedefliyorum. Borsa içerisinde robot danışman üzerinden işlem yapan birçok start-up bulunmaktadır. Bununla birlikte sektör bazında büyük firmalar, bu alanda çalışacak ve gelişime açık birçok ufak şirkete yatırım yaparak, piyasa içerisinde yeni şeyleri keşfederken sürekliliğini sağlamaya devam ediyor. Bilindiği üzere borsa en ufak şeylerden bile etkilenip kâr – zarar durumlarını hızlıca değiştirebiliyor. Önceden olacaklara karşı bilgi sahibi olan büyük firmalar, bu tarz değişken ortamlarını tahmin ederek piyasa içerisinde sağlam adımlar atarak kâr marjını koruyor. Bunları oluştururken kullandığı analiz sistemlerinde birçok teknik analiz metodu bulunmaktadır. Böyle işlemlerin ölçeklenebilir olması da sistemin ne tür tepki vereceğini ve verdiği tepkinin olumlu anlamda olacağının garantisini verebiliyor. Hisse fiyatlarını değerlendirip teknik analiz metotlarını Python programlama dili üzerinde işlemeye devam edeceğim. Bunun için takipte kalarak geri bildirimde bulunabilirsiniz.
 

 

References:

http://globalaihub.com/robo-advisory-in-ai/
http://globalaihub.com/importance-of-data-quality-and-data-processing/
https://github.com/tanersekmen/stocks-buy-sell/blob/main/buy-sell.ipynb
https://www.tradingview.com/symbols/BIST-ASELS/technicals/
https://finance.yahoo.com/quote/ASELS.IS?p=ASELS.IS&.tsrc=fin-srch

Film "Her" Üzerinden İnsan-Makine Etkileşimine Bir Yaklaşım

7 yıl önce, Spike Jonze yönetmenliğinde, özünde klasik bir romantizm içermesine rağmen çok da klasik olmayan bir film yayınlandı: Her. “Her” izlerken, oradaki evrenin teknoloji ve kurulan düzen bakımından günümüzden uzak olduğunu, hatta ütopya sayılabileceğini görüyoruz. Yine de o kadar uzak olduğunu söyleyebilir miyiz? Gelecekte bizlerin makinelerle etkileşimi nasıl şekillenecek?

Mobile Application Development

FaCiPa Serisi 3

FaCiPa Serisi 2 adlı yazımdan geriye kalan çok güzel dönütler elde ettiğim için yazılarımın son serisi olan mobil uygulama tarafını kaleme almak istedim. Bir sene boyunca geliştirdiğim projeyi bugün sizler ile konuşabiliyor olmak inanılmaz bir his! Bu yazıda sizler ile birlikte FaCiPa’ nın mobil arayüzü hakkında konuşacağız.
Projede Python programlama dili ve API taraflı kodlamalar yer aldığı için platform olarak Kiwi veya Ionic gibi farklı seçenekler mevcuttu. Ionic için yazdığım diğer yazılarıma aşağıdaki linklerden ulaşabilirsiniz. Bu bağlantılarda Ionic Nedir?, Ionic Proje Çalışma Yapısı ve Semantic UI ile kullanımı hakkında kısaca bilgiler edinebilirsiniz. Bunun yanı sıra TypeScript kod yapısı ile yazıldığı için bunun ile ilgili yazdığım yazımı da incelemeniz mümkün. Aşağıda Ionic Framework hakkında en sık karşılaştığımız açıklamalara yer vermiş bulunmaktayım:

👉 Açık kaynak kodlu olan bu kütüphane, Cordova üzerine inşa edilmiştir.

👉 Web geliştiricisi olanların bile mobil uygulama geliştirmesine olanak sağlayan bir kütüphanedir.

Mobile Application Design
İlk olarak işe FaCiPa için mobil platformu olan Ionic Framework üzerinde yeni bir proje oluşturmakla başlıyoruz.
Ionic Start
Daha sonra ionic generate komutu ile sayfa (page) oluşturuyoruz.
Generate Page
Ionic Page
Uygulamada başlangıç için giriş sayfası, kayıt ol sayfası ve analiz sayfası olması sebebiyke toplamda ana sayfa ile birlikte 4 adet sayfa oluşturulması gerekmektedir.
All files

FACIPA MOBİL ARAYÜZÜ

FaCiPa’ nın mobil arayüzünde kullanılacak olan framework Ionic olarak seçilmiştir. Mobil cihazların bilgisayarlardan daha fazla kullanılması, mobil uygulamaların artması, mobil cihazların çeşitliliği ve farklı işletim sistemlerinin bulunması yazılım geliştiricileri farklı mobil çözümler bulmaya yönlendirdi. Native uygulama geliştirmenin yanında zamanla her platformda da çalıştırılabilen bir uygulama yapısı kurmak önemli bir ihtiyaç haline geldi ve HTML5 ile JavaScript gibi dillerin desteğiyle geliştirilebilen hibrit uygulamalar ortaya çıktı [1].
Ionic Framework, bilhassa Angular.js veya Angular 2 deneyimi olan yazılımcıların ilk tercihi genellikle Ionic olmaktadır. Açık kaynak olan Ionic, binlerce takipçisi ve destekçisi ile binlerce mobil uygulamaya ev sahipliği yapmaktadır. Kendi ifadeleriyle “first-class” bir dokümantasyona sahip olan Ionic Framework kullanışlı ve öğrenmesi kolay kütüphanedir.

🏗Ionic Framework, Cordova üzerine inşa edilmiştir. Mobil cihazın donanımına ve sistem kaynaklarına erişim gibi işlemler Cordova sayesinde yapılmaktadır. Android, IOS veya Windows Phone gibi mobil işletim sistemlerinde çalıştırabilirsiniz. Hatta bu uygulamayı rahat şekilde mobil uyumlu bir web sitesi olarak da yayınlayabilirsiniz. Ionic ile uygulama geliştirebilmek için temel olarak HTMLJavaScript ve Angular.js bilmek yeterli olacaktır. Projede platform olarak Visual Studio Cide platformu kullanılmıştır. Uygulamanın tasarımları src\pages\home\home.html gibi .html uzantılı dosyalarda HTML5 ile ortaya konulmuştur. Gerekli CSS tasarımları ise  src\pages\home\home.scss gibi .scss uzantılı dosyalarda yapıldı [1].

📷Projede kullanılacak olan fotoğraflar ilk adımda kullanıcıdan 3 adet alınacak olarak belirlenmiş olup daha sonra kullanıcıyı yormamak ve makinenin işlem yükünü azaltmak adına 1 adet fotoğrafa indirgenmiştir. Kullanıcı uygulamayı mobil mağazalardan temin ederek anlık olarak fotoğraf çekmekte ve bu fotoğrafı sunucuya işlenmek üzere göndermektedir.
🛡Uygulamanın Backend bölümü ise src\pages\home\home.ts gibi .ts uzantılı dosyalarda TypeScript dilinde yapılmıştır.
Upload Camera

IONIC UYARI(ION-ALERT) EKLENTİSİ

Uygulamanın içeriğinin üstünde bir uyarı belirir ve uygulama ile etkileşime devam edebilmeleri için kullanıcı tarafından manuel olarak kaldırılması gerekir.  Uygulamada kullanıcının doğru şekilde fotoğrafı çekmesi için ion-alert ile uyarı veriliyor.
🔎 Title: Uyarı kutucuğunun başlığı
🔎 Subtitle: Uyarı metni
🔎 Butons: Uyarının kalkması için kullanılan buton eğer Tamam butonuna tıklanırsa photoOne() metodu çalıştırılıyor ve fotoğraf çekme işlemi yaptırılıyor.
Ionic Alert

IONIC KAMERA EKLENTİSİ

Ionic kamera eklentisi mobil cihazlardan fotoğraf ya da video çekmek için gerekli bir eklentidir. Cordova eklentisi gerektirir: cordova-plugin-camera
🔎 Quality: Kalite
🔎 destinationType: Hedef Türü
🔎 encodingType: Kodlama Türü
🔎 media Type:Medya Tipi (Picture) olması fotoğraf olduğunu belirtir.
Install Camera
Install Cam

PROJENİN İLK TASLAK ÇİZİMLERİ

Wireframe Templates
İçerik olarak uygulamanızın sayfalarını tamamen özgürce tasarlayabilirsiniz. Yukarıda gördüğünüz wireframe çizimi projeye ilk başlandığında tasarlanan bir çizimdi. Daha sonra projenin tasarımlarını oluşturduk.
Facipa
Yukarıda yer verdiğim görseller projenin analiz sayfası ve analiz sonucundaki dönütlerdir. Böylelikle FaCiPa’nın sonuna gelmiş olduk. Sabırla takip ettiğiniz için teşekkür ederim. Sağlıcakla kalın ✨
 

REFERANSLAR

  1. http://devnot.com/2016/hibrit-uygulama-catisi-ionic-i-taniyalim/
  2. R. L. Delinger, J. M. VanSwearingen, J. F. Cohn, K. L. Schmidt, “Puckering and Blowing Facial Expressions in People With Facial Movement Disorders,” J. Phys Ther, vol. 88, pp. 909-915, August 2008.
  3. İnternet Ve Mobil Teknolojilerin Yaygınlaşması: Fırsatlar Ve Sınırlılıklar, Hasan GÜLER, Yunis ŞAHİNKAYASI, Hamide ŞAHİNKAYASI. Sosyal Bilimler Dergisi Cilt 7 Sayı 14 Aralık 2017 Makale Gön. ve Onay Tar.: 03.10.2017-27.10.2017

 

ALGORİTMİK IRKÇI ''TAY''

ALGORİTMİK IRKÇI ”TAY”

Irkçılık insanlığın varoluşundan beri süregelen ve kanayan bir yara. Üstünlük konusunda insanların tartışmaları yetmezmiş gibi şimdi sıra yapay zekalara geldi. Evet ırkçılık yapan bir yapay zekadan bahsediyoruz. Aslında bir bakıma ırkçılığı öğreten de bizleriz. ‘’Tay’’ ilk olarak dünyayı eğlenceli ve naif bir şekilde selamlamıştı. Sonrasında ise tam bir silaha dönüştü.
 

 
‘’Tay’’ isimli yapay zekadan bahsetmeden önce algoritmanın tanımını bilmekte fayda vardır.
Algoritma Nedir ?
Bir sorunu çözmek veya belirlenmiş bir amaca ulaşmak için tasarlanan yola, takip edilen işlem basamaklarına algoritma denir. Algoritmalar açıkça belirtilmiş bir başlangıcı ve  sonu olan işlemler kümesidir. Amaca ulaşmak için işlenecek çözüm yolları ve sıralamaları belirlenir ve algoritma bu sırayı takip ederek en mantıklı çözüme ulaşır. İlk algoritma, El-Harezmi’nin ‘Hisab-el Cebir ve El Mukabala’ kitabında sunulmuştur ve algoritma kelimesi de El-Harezmi’nin isminden gelmiştir. Algoritma terimi genellikle matematikte ve bilgisayar bilimlerinde karşımıza çıkmaktadır.
Yapay zekalar işte bu algoritmalara sayesinden çalışır. Tasarladığınız yola göre en optimum olan seviyeyi bulur ve size sunar. Tabi bu yolu siz öğrettiğiniz içinde nasıl yollar sunarsanız size ona göre cevaplar sunar. ‘’Tay’’ isimli yapay zekaya da aynısı olmuştu.
‘’Tay’’ Nedir ?
Tay, Microsoft tarafından 23 Mart’ta hizmete sunulan bir chatbottu. Yapay zekanın en büyük özelliği internette gördükleri ve okudukları şeyleri öğrenebilmesiydi. Ancak görünüşe göre Tay isimli yapay zeka, hizmete sunulduktan birkaç gün sonra yoldan çıktı ve ırkçı oldu.
Şirket, Tay adını verdiği chatbot için Twitter’de bir hesap

– Soykırımı destekliyor musun ? – Aslında destekliyorum.


açmış ve insanları onunla sohbet etmeye davet etmişti. Amaçları yapay zekayı geliştirmek ve insanlarla güzel sohbetler etmesini sağlamaktı. Fakat olay hiç umdukları gibi gitmedi ve Tay tam bir yapay ırkçı haline geldi. Hatta Hitler’i ve soykırımı destekleyen şiddetli bir taraftar bile olmuştu.  
Bu projede 18-24 yaş grubunu hedefleyen Microsoft, Tay’in amacının “gündelik, esprili sohbetler yapmak” olduğu belirtmiş ve şöyle demişti:
“Tay ile ne kadar çok sohbet ederseniz o kadar akıllı olacak ve sizinle, size özel bir iletişim kuracak.”
Ancak devreye girmesinin üzerinden 24 saat geçmeden Tay’a, Nazi sempatizanı, ırkçı ve soykırım destekçisi gibi mesajlar yazmak ve küfretmek “öğretildi.”
 

”Sakin olun ben iyi biriyim. Sadece herkesten nefret ediyorum.”


 
Sonradan anlaşıldığına göre aslında ‘’Tay’’ iyi biriydi. Fakat bir sorunumuz daha vardı. İnsanlardan nefret ediyordu. İnsanlardan nefret etmesinin en büyük sebeplerinden biri de ona öğrettiğimiz kendi zayıflıklarımız olsa gerek.
Tabi bunun üzerine Microsoft daha fazla dayanamadı ve fazla bir zaman geçmeden ‘’Tay’’ isimli yapay zekayı durdurdu. Şirket yetkilileri bunu açıkça doğrulamadı ancak “bazı düzenlemeler yaptıklarını” bildirmekle yetindi.
Bazı kullanıcılar ise Microsoft’un müdahalesini eleştirerek #justicefortay (#tayiçinadalet) kampanyası başlattı, yazılım devinden yapay zekanın “doğruyu ve yanlışı kendi kendine öğrenmesine izin vermesini” talep ettiler.
‘’Tay’’ kodlama karmaşasının içine gömülüp giderken belki daha iyi ve sevecen duygularla bize geri dönmek için kendi sonunu hazırladı. Bir gün daha sevecen bir ‘’Tay’’ ile görüşmek ümidiyle…
 
Yazıma Isaac Asimov’un şu sözleriyle son vermek istiyorum:
‘’Düşüncem iki yönlü: İlk olarak robotları kendi yaratıcılarını yok edecek canavarlar olarak görmüyorum. Çünkü robotları yapan insanların, kendi güvenliklerini sağlayacak vasıtaları da yine robotların içine koyabilecek kadar bilgi ve yetenek sahibi olacaklarını düşünüyorum. İkinci olarak robotların ya da genel anlamda makinelerin, bizlerin yerine geçebilecek kadar zekâya sahip oldukları anda bunu yapmaları gerektiği fikrindeyim. -Isaac Asimov
 
 
 
REFERANSLAR:

KORONAVİRÜSE KARŞI YAPAY ZEKA

Zorlu koronavirüs günlerinde hepimiz virüsle mücadele ediyoruz. Kimisi umudunu yitirmiş halde, kimimiz ise virüsün son bulacağı zamanı bekliyoruz umutla. Tabi bu zamanlarda insanın aklından geçiyor bazen “Hani müthiş teknolojik ilerlemeler kaydediyorduk? Hatta öyle bir noktaya gelmiştik ki yapay zekâların insanlığı yok edebileceği ihtimali üzerine kafa yoruyorduk. Hani nerede bu yapay zeka?” diye. Bu yazımda sizlere yapay zekanın koronavirüsle mücadelede kullanım alanlarından bahsedeceğim.
 
 

  • Yapay zeka algoritmalarının çoğu tahmine yönelik ve yapay zeka destekli epidemiyolojinin en önemli bölümü, gelecekteki salgınların ne zaman ve nerede meydana geleceğini doğru bir şekilde tahmin edebilen sistemler yaratabilmek olacak. Aslında bu araştırma bir süredir devam ediyor hatta mevcut salgınla ilgili çapıcı bir uyarı yapay zeka tarafından oluşturulmuştu bile… Buna göre Toronto merkezli BlueDot’un aracı, 31 Aralık 2019’da Çin’in Wuhan kentinde olası bir salgın hakkında bir uyarı yayınladığındagünlük 100 binin üzerinde hükümet ve medya veri kaynağını tarıyordu. Yapay zeka araştırmalarından önümüzdeki 18 ay içinde viral salgınları tespit etme ve bu tehlikeye tepki verme yeteneğini daha da geliştirmesi bekleniyor.

 

  • Covid-19’a yol açan virüsün teşhisi, enfekte kişilere yönelik tedavi çalışmaları ve aşı araştırmalarında da çeşitli yapay zekâ uygulamaları sıklıkla kullanılıyor. Bu salgında, yapay zekâ tarafından koronavirüsün genom dizilimi ve protein yapısına dair üretilen tahminler, bilim adamlarını aylarca deney yapmaktan kurtardı denilebilir.

 

  • Yapay zekâ koronavirüsün yol açtığı hastalığın teşhisinde de doğrudan kullanılıyor. Çin akciğer kanserlerini teşhis etmekte kullanılan yapay zekâ uygulamalarını revize ederek binlerce koronavirüs şüphesi taşıyan vakanın tespiti için kullandı. Bilgisayarlı tomografi görüntülerini kullanarak akciğer problemlerini ve koronavirüse bağlı zatürreyi tespit edebilen bu yazılımlarla 30 saniyede 400’e yakın vaka taraması yapılarak sağlık hizmetlerinin hızlandırılması sağlandı.

 

  • Pandemi döneminde sosyal mesafekurallarına uyulup uyulmadığını izlemek için pek çok ülkede drone’lar kullanıldı. Bir kalabalığın içindeki insanlarda “yüksek ateş” gibi COVID-19 semptomlarını tespit etme yeteneğine sahip drone’lar gibi daha gelişmiş uygulamalar ufukta görünüyor. Bu sistemler, drone’larda kameralar tarafından yakalanan verileri analiz etmek ve yetkilileri virüsün yayılmasıyla ilgili istatistikler ile olasılıklar hakkında bilgilendirmek için kullanılacaklar.

 

  • Koronavirüse karşı insanları bilgilendirmek amaçlı chatbotlar geliştiriliyor. Bu chatbotlardan biri olan yerli ve milli koronabot NLP teknolojisi sayesinde vatandaşlarla mesajlaşarak kişilerin bilgi kirliliğine maruz kalmadan bilgi sahibi olmasını sağlıyor.

 

  • AI, COVID-19 hastalığının zaman içinde ve uzayda nasıl yayılacağını izlemek ve tahmin etmek için kullanılabilir. Örneğin, önceki bir pandemiyi takiben, 2015 Zika virüsünün yayılımını tahmin etmek için dinamik bir sinir ağı geliştirdi. Bununla birlikte, bu gibi modellerin COVID19 salgını verileri kullanılarak yeniden eğitilmesi gerekecektir. Bu şimdi gerçekleşiyor gibi görünüyor. Carnegie Mellon Üniversitesi’nde, mevsimsel nezleyi tahmin etmek için eğitilmiş algoritmalar şimdi yeniden eğitilmektedir.

 

  • AI, potansiyel olarak enfekte olan insanlar için kamusal alanları taramak için termal görüntüleme kullanarak ve sosyal uzaklaşma ve kilitlenme önlemlerini uygulayarak pandemiyi yönetmek için kullanılabilir. Örneğin, Chun (2020) tarafından South China Morning Post’ta açıklandığı gibi, “Çin’deki havaalanlarında ve tren istasyonlarında, kızılötesi kameralar kalabalığı yüksek sıcaklıklara karşı taramak için kullanılır. Bazen bireyi yüksek bir sıcaklıkla ve cerrahi maske takıp takmadığını tespit edebilen bir yüz tanıma sistemi ile kullanılırlar.

 
 
REFERANSLAR
https://fikirturu.com/teknoloji/yapay-zeka-covid-19-mucadelesinin-neresinde/
https://blog.ariteknokent.com.tr/tag/yapay-zeka/
https://www.cnnturk.com/turkiye/koronavirus-hakkindaki-her-seyi-yapay-zekaya-sorduk
https://www.cybermagonline.com/covid-19039a-karsi-yapay-zeka

Veri Kalitesinin Önemi ve Veri İşleme

Tüm dünyanın üzerinde konuştuğu ve artık yeni düzen içerisinde en önemli şey olarak görülen konu veri’dir. Veri, birçok farklı yöntemle işlenir, üzerinden bilgi çıkarılması için hazırlanır. Başlı başına dünyanın yönünü değiştiren farklı bir boyut kazandıran yapıdır. Günümüzde şirketler aslında sahip olduğu bilgi kadar vardır. Hazır olarak elde edilen veriler, kendi topladığınız detaylarını bildiğiniz verilere oranla daha kalitesiz olabilir. Bundan ötürü, veri işleme konusunda epeyce zaman harcayabilir, proje süresini uzatabilirsiniz. Bu da sizin için büyük bir dezavantaj olabilir. Hazır olarak gelen verilerin kalitesini ölçmek ve onları belirli bir düzene sokmak tamamen sizin elinize kalabilir. Eğer veri kalitesi gerçekten çok düşük seviyelerde ise, onun üzerinde veri işleme basamaklarını dikkatli şekilde uygulayarak sisteme son hazırlıklar yapıldıktan sonra entegre edilebilir.
 
Şu an başlangıç seviyesinde olan yazılım geliştiricilerinin yaptığı en büyük hata, tertemiz olarak hazırlanan verilerin üzerinde işlem yapmaktır. Seviye kat etmek için kendiniz veri seti oluşturup onun analizini yapabilirsiniz. Bu size özgüven verirken karşılaştığınız zorluklar karşısında bulduğunuz çözümler, size büyük ölçüde yol aldıracak olan şeydir ki böylece birçok büyük firmanın önemsediği ‘problem çözebilme’ yeteneğine erişmiş olacaksınız. Kendi topladığınız veri ile uğraşmak, sizi gerçek hayatta karşılaşabileceğiniz sorunlar karşısında hazır hale getirecektir. Veri Bilimi alanında kariyer yapmak isteyen kişiler, kendi verilerini toplayıp bu verinin her ayarını yaparak, gerçek anlamda bir soruna çözüm bulmalı ki en sonunda ürün aşamasına kadar gidebilsin. Geliştirdiği proje evreleri sayesinde bilgi üzerinden işlem yapabilme, ürün geliştirme, gerçek hayat sorununa çözüm bulma gibi konularda önem düzeyi yüksek seviyede tecrübe sahibi olarak kariyerine rahatlıkla devam edebilir.
 

 
Veri Bilimci için en mühim konu veri’dir. Veri olmazsa çözüm bulunamaz, veriye sahip olan kişiler yeni oluşacak olan çağ içerisinde gücü elinde tutacaktır. Gelecek dünya düzeni içerisinde tam anlamıyla dünyaya yön verecek olan şeye veri diyebiliriz. Hayatın her evresinde canlı olarak akan veriler mevcut ve bunları işleyip mantıklı çıkarımlarda bulunmak, yaşadığımız yüzyıl için son derece mühim bir yetenektir. Veriden alınan bilgileri iyi bir şekilde anlayıp oluşacak sorunlara çözüm üretmek, geleceğin iş bulma konusunda kolaylık sağlayacağı bir diğer durumdur. Yapay zeka konusuna açılan en mühim konu, bir proje ve o projeye kaliteli verilerin var oluşudur. Veri kalitesi, oluşacak olan projenin ne kadar uzun süreli olduğunu ve gideceği maksimum noktayı belirlemede söz hakkına tam anlamıyla sahiptir. Veri kalitesi kadar mühim bir konu yoktur çünkü veri kalitesizse oluşacak birçok sorun var demektir.
 
Veri kalitesi kadar önem düzeyi olan bir diğer konu, doğru şekilde veri işleme adımlarını gerçekleştirmektir. Veri bilimi, makine öğrenmesi, yapay öğrenme, derin öğrenme ya da yapay zeka, adını ne koyarsanız koyun bu işlerin bir ürün haline gelmesi için gereken tek şey veri’dir. Ek olarak, bu verinin kaliteli ve veri işleme basamaklarını çok iyi seviyede hazırlanmış olması, bu isimlendirilmelerin yapıldığı projelerin süreçlerine direkt etki etmektedir. Veri işleme adımları, ürün olarak sunulacak olan konuların geçilmesi en kritik durumdur. Bu gibi hayati noktaları atlattıktan sonra, işin ürün haline gelme kısımlarını oluşturarak üzerinde matematiksel, mühendislik bilgisi ya da istatistiksel bilgileri kullanarak hızlı bir şekilde yol alabilirsiniz. Bu durum, projenize ivme kazandırarak, sizi motive eder. Böylece aldığınız motive ve sahip olduğunuz itekleme gücü ile hareket ederek, farklı bir boyuta geçebilirsiniz.
 

 
Dünya şartları, yaşadığımız yüzyıl boyunca sürekli değişim halinde olmaya devam edecektir. Bu değişime öncü olarak belirlenen şey verinin ta kendisidir. Yeni petrol olarak adlandırılan veri, yeni yüzyıl için tam anlamıyla petrol niteliği taşımaktadır. Bunları işlemek, mantıklı sonuçlar elde etmek herkesin en temel amacı olmaktadır. Bu alanda çalışacak kişilerin sayısal bilgileri kuvvetli olmalı ve veriyi işleme konusunda tecrübeli olmalıdır. Veriyi önüne aldığı ilk andan itibaren, sorun çözme zekasını aktif kullanarak çalıştığı birimlere fayda sağlamalıdır. Veri işleme; makine öğrenmesi ve derin öğrenme konularında başarı skorlarını değiştirme gücüne sahip bir tekniktir. Bu teknik, eğer doğru kullanılırsa, erişebilir maksimum skor seviyeleri kolayca yakalanabilir.
 
Akıllı sistemlerin gelişmesi ve hayatımızın tam anlamıyla içine girmesine katkı sağlayan şey, kaliteli veri sayesinde oluşmuştur. Çalışılacak olan proje için kaliteli işler çıkartmak istiyorsanız, öncelikle elinizdeki veriyi kaliteli ve sağlam temellere dayanarak toplamalısınız. Bu durum sağlanmazsa, çok iyi bir veri işleme evresi gerçekleştirip proje öncesi son rötuş yapılarak, projenizi hazır halde tutabilirsiniz. Böylece, sizlere hem zaman tasarrufu sağlar hem de işin başına geçerken uğraşacak olduğunuz verinin kalitesi size güven vererek, proje adımları boyunca sorunları veri üzerinden minimal şekilde çözmeniz gerekecektir. Veri kalitesi, projelerin hayat kaynağıdır. İyi bir veri ile çalışma fırsatı bulmuş kişiler, tam olarak neyi kast ettiğimi çok iyi biliyorlar. Unutmayın iyi bir veri, iyi bir proje, iyi bir çalışma düzeni ve iyi sonuçlar demektir.

Umarım beğenmişsinizdir. Beğendiyseniz yorumlarda belirterek, bana geri dönüş verebilirsiniz.
References :
-https://www.wired.com/insights/2014/07/data-new-oil-digital-economy/#:~:text=Like%20oil%2C%20for%20those%20who,the%20government%20to%20local%20companies.
-http://globalaihub.com/basic-statistics-information-series/
-http://globalaihub.com/python-ile-veri-on-isleme-data-preprocessing/
-https://searchdatamanagement.techtarget.com/definition/data-quality.

Relationship Between Human Brain and CNN

Hello, we all know that the image classification process of convolutional neural networks is influenced by the working principle of neural networks in the human brain. Let’s examine the relationship between them.
CONVOLUTIONAL NEURAL NETWORKS
       Convolutional Neural Networks are deep learning architecture that is widely used in computer vision studies such as image classification, localization, object perception. Convolutional neural networks are the field of study associated with machine learning to analyzing visual imagery. CNN choose unique features from pictures to distinguish the given figure. This process also happening in our brains unconsciously.
Biological Inspiration of Convolutional Neural Network (CNN)
Mapping of human visual system and CNN
Research in Sensor Processing (1960’s and 1970’s)
These works are prime Dr. Hubel and Dr. Wiesel worked on the area of Sensory Processing. In which, they inserted a micro-electrode into the primary visual cortex of an partially anesthetized cat so that she can’t move and shown the images of line at different angles to the cat.
Through the micro-electrode they found that some neurons fired very rapidly by watching the lines at specific angles, while other neurons responded best to the lines at different angles. Some of these neurons responded to light and dark patterns differently, while other neurons responded to detect motion in the certain direction.

Where is visual cortex located in humans brain?

 

                                                                                     Figure 1: Functional areas for the human brain

 
Visual Cortex is the part of the Cerebral Cortex of the Brain that processes the visual information. Visual nerves from the eyes runs straight to the primary visual cortex. Based on the structural and the functional characteristics it is divided into different areas, as shown in the following picture:
 

Figure 2: Different areas of visual cortex

 
 Visual cortex: Functions
The visual information is passed from one cortical area to another and each cortical area is more specialized than the last one. The neurons in the specific field only respond to the specific actions.
Some of them with their functions are as follows:

  1. Primary visual cortex or V1: It preserves spatial location of visual information i.e. orientation of edges and lines. It is the first one to receive the signals form what eyes have captured.
  2. Secondary visual cortex or V2: It receives strong feed-forward connections from V1 and sends strong connections to V3, V4 and V5. It also sends strong feedback network to V1. Its function is to collects spatial frequency, size, color and shape of the object.
  3. Third visual cortex or V3: It receives inputs from V2. It helps in processing global motion and gives complete visual representation.

      4. V4: It also receives inputs from V2. It recognizes simple geometric shapes and also forms recognition of object. It is not tuned for complex objects              as Human Faces.

  1. Middle temporal (MT)visual area or V5: It is used to detect speed and direction of moving visual object i.e. motion perception. It also detects motion of complex visual features. It receives direct connections from V1.
  2. Dorsomedial (DM) area or V6: used to detect wide field and self-motion stimulation. Like V5 it also receives direct connections from V1. It has extremely sharp selection of the orientation of visual contours.

Structure of Convolutional Neural Networks
CNN processes the image with various layers.
Layers Of CNN
Input Layer: In this layer, data is transmitted raw to the network.
Convolutional Layer: Used for detecting features.
Non-Linearity Layer: Introduction to nonlinearity to the system
Pooling (Down sampling) Layer: Decrease count of weights and check the conformation
Flattening Layer: Prepare the data for classical neural network
Fully Connected Layer: Standard Neural Network used in classification

                  Figure 3: CovNet Diagram

As a result, CNN imitates the work of the visual cortex in our brain. If we look the plane picture, we can define the plane by separating the features such as two wings, engines, windows. CNN does the same thing but previously they detect low-level properties such as curves and edges and create them up to more abstract concepts. Don’t you think it’s great? Hope to see you in our next blog.
 
REFERENCES

  1. http://scipy.github.io/old-wiki/pages/Cookbook/Matplotlib/HintonDiagrams
  2. https://medium.com/@tuncerergin/convolutional-neural-network-convnet-yada-cnn-nedir-nasil-calisir-97a0f5d34cad
  3. https://medium.com/@gopalkalpande/biological-inspiration-of-convolutional-neural-network-cnn-9419668898ac
  4. Kuş, Zeki.”Mikrokanonikal Optimizasyon Algoritması ile Konvolüsyonel Sinir Ağlarında Hiper Parametrelerin Optimize Edilmesi”Fatih Sultan Mehmet University,2019 (pp. 16-21)

 
 

Yüz Felci Asistanı: FaCiPa

Daha önce de sizlere söz verdiğim gibi FaCiPa’ yı tanıtmak için buradayım. Birçok röportajda, görüşmede ve uygulamalı olarak denk geldiğiniz FaCiPa uygulamasına adım adım yaklaşarak sıfırdan bir uygulama nasıl yapılabilir detayları ile birlikte sizlere tanıtacağım. Bugün olan heyecanımı biraz mazur görün, çünkü yaptığım her projeyi benim birer çocuğummuş gibi hissediyorum. Öyle ki, bu proje kendi hayatımdan hatıralar da barındırdığı için benim için oldukça değerli.