Ey Rabbimiz eğer unutmuş ve yanılmışsak bizi sorumlu tutma.
Ey Rabbimiz, bizi doğru yola erdirdikten sonra kalplerimizi kaydırma, gönüllerimizi aç, işlerimizi kolaylaştır.
Allahım Bize kendine yakınlaşmayı kolaylaştır. Senden uzaklaştıracak
şeylere fırsat verme. Bizi sana muhtaç olma ve senden başkasına ihtiyaç
duymama hissiyle müstağni kıl....
Bize ibadet ve itaat için en kolay yolu nasib et. Gaflet ve
hatalarımızdan dolayı bizi hesaba çekme. Günlerimizi sana yakınlığa
vesile olacak ve rızanı kazandıracak amellerle geçirmeyi nasib eyle...
Allahım ! Dillerimizi ancak zikr-i ilahine bırak Kalblerimizi Zat-ı
ilahinden başkasına bağlama. Ruhlarımızı sana yakınlığın latif
rüzgarıyla ferahlandır, gönüllerimizi sevginle doldur. iç dünyamıza
kullarına karşı iyi niyetler yerleştir.Nefislerimizi ilmin cihetine
yönelt...
Bizi temizi alan kirliyi bırakan, afiyetin kadrini bilip şükreden ve kendisine vekil olman için
senin kefilliğine razı olan kullarından eyle. Bizleri azametini tanımaya muvaffak kıl...
....
Resûlullah (sas) Hazretleri ashabına şöyle buyuruyor:
-Allahü Teâlâ'ya günahsız dille duâ edin!
Diyorlar ki:
-Yâ Resûlallah, günahsız dilimiz yoktur, nasıl günahsız dille dua edeceğiz?
Şöyle açıklar günahsız dille dua etmeyi:
-Sizin diliniz kendiniz hakkında günahlıdır, ama başkaları hakkında günahlı değildir.
Öyle olunca siz başkaları hakkında günahsız olan dilinizle dua edin, onlar da sizin hakkınızda günahsız olan dilleriyle dua etsinler. Böylece günahsız ağızlarla birbirinize dua etmiş, makbul duaları almış sayılırsınız...
Dua eder dualarınızı bekleriz Özellikle vav çizmek için sandalcı çavuşluğunu bırakan ihtiyar için
Pamuk ipliğinden biraz daha sağlam tek bağ: düşünce birliği. O da rüzgarın her an tehdit ettiği bir kandil. Düşünce birliği, düşünen insanlar arasında olur. İnsanların kaçta kaçı düşünür? Düşünenlerin kaçta kaçı karşılaşır ve açılır birbirine. -- Cemil Meriç
Cumartesi, Mayıs 21, 2016
Cumartesi, Nisan 16, 2016
Poincare Plot Feature Extraction 1
Nasettin hocaya sormuşlar hocam sizin bir icadınız varmı ?
hoca ;
Feyiz kaynağımız Nasrettin hocamızdan çok şeyler öğrenmdiğimizi blog'umuzu takip edenler bilir.
Bizimde naçizane bir icadımız oldu. Zaman serisi tipindeki veriler için bir öznitelik çıkarma metodu. Aslında EEG verileri için kullandıkda
Yazıya okuduysanız işimizi görmüş bir öznitelik çıkarma olarak görünüyor. Fakat tabii ki genelleştirmek için kesinlikle yetersiz. Aradan epey bir vakit geçti, hep bir bakayım diyorum bir türlü vakit bulamıyorduk. Bu günlerde biraz vakit bulunca ucundan kıyısında anlatmaya ve kodu pythona çevirmeye başladık.
Öncelikle Zaman serisi tipindeki veriler çok yaygın ve çok çeşitli. Bu yüzden envai çeşit öznitelik çıkarma metodlarıda mevcut elbette. Bir kısmından bahsetmiştik
Konuya geçelim denemeler yapmak için önce seriler oluşturalım.
resimlerden çizilmiş bu serileri görünüşleri ile ayrıştırabiliyoruz. Bu haliyle kullanımı pek mümkün değildir. Elbette sabit bir genişlikteki veriyi seçip kullanabiliriz fakat verinin seçeceğimiz kısmına göre veri bir ileri veya geri gitmek bile veri vektörünü nerdeyse tamamen değiştirir.
Poicare Plot adını fransız matematikçi H. Poincare den alan bir metoddur. Basitçe anlatırsak
noktalarının çizilmesidir.
Yukardaki serilerin Poincare Plot metoduyla çizimlerini görelim
belki bir parça daha kolay ayrıştırılacak halde . Bu haliyle kullanımını görmekteyiz. Mesela tıp alanında kalp atım hızı değişkenliği - Heart Rate Variability - analizlerinde kullanılıyor
İnternette ufak bir aramayla pek çok makaleye ve çalışmaya rastlaya bilirsiniz
bir örnek verip geçiyoruz.
Biz burdakilerden farklı metodla bu grafik üzerinden öznitelik çıkarmayı deneyeceğiz. İlk aşamada noktalar arasında vektöreler oluşturacağız. Vektör büyüklüğü ve yönü üzerinden histogramlar çıkaracağız. Sonrasında bir birini takip eden vektörler üzerinden iki boyutlu histogram çıkaracağız.
Yukardaki kadarıyla kodu
adresinden IPython notebook olarak inceleyebilirsiniz.
Şimdilik bu kadarını yazalımbırakalım. Devamını yazmaya kudretimiz ve dahi şevkimiz olursa devam edecek İnşallah
hoca ;
Karla ekmek yemeği icat ettim ama sonra bende beğenmedim bıraktımdemiş.
Feyiz kaynağımız Nasrettin hocamızdan çok şeyler öğrenmdiğimizi blog'umuzu takip edenler bilir.
Bizimde naçizane bir icadımız oldu. Zaman serisi tipindeki veriler için bir öznitelik çıkarma metodu. Aslında EEG verileri için kullandıkda
Yapay Sinir Ağları ile Epilepsi İçin Otomatik EEG analizi
Yazıya okuduysanız işimizi görmüş bir öznitelik çıkarma olarak görünüyor. Fakat tabii ki genelleştirmek için kesinlikle yetersiz. Aradan epey bir vakit geçti, hep bir bakayım diyorum bir türlü vakit bulamıyorduk. Bu günlerde biraz vakit bulunca ucundan kıyısında anlatmaya ve kodu pythona çevirmeye başladık.
Öncelikle Zaman serisi tipindeki veriler çok yaygın ve çok çeşitli. Bu yüzden envai çeşit öznitelik çıkarma metodlarıda mevcut elbette. Bir kısmından bahsetmiştik
Zihin Egzersizleri 2
Konuya geçelim denemeler yapmak için önce seriler oluşturalım.
resimlerden çizilmiş bu serileri görünüşleri ile ayrıştırabiliyoruz. Bu haliyle kullanımı pek mümkün değildir. Elbette sabit bir genişlikteki veriyi seçip kullanabiliriz fakat verinin seçeceğimiz kısmına göre veri bir ileri veya geri gitmek bile veri vektörünü nerdeyse tamamen değiştirir.
Poicare Plot adını fransız matematikçi H. Poincare den alan bir metoddur. Basitçe anlatırsak
X1, X2,... Xn
şeklindeki bir zaman serisinin 2 boyutlu bir koordinat sisteminde sırayla
(X1, X2 ) , (X2, X3 ) , (X3, X4) , .... , (Xn-1, Xn )
noktalarının çizilmesidir.
Yukardaki serilerin Poincare Plot metoduyla çizimlerini görelim
belki bir parça daha kolay ayrıştırılacak halde . Bu haliyle kullanımını görmekteyiz. Mesela tıp alanında kalp atım hızı değişkenliği - Heart Rate Variability - analizlerinde kullanılıyor
İnternette ufak bir aramayla pek çok makaleye ve çalışmaya rastlaya bilirsiniz
bir örnek verip geçiyoruz.
Poincare Plot Used As Confirmative Tool In Diagnosis Of Left Ventricular Diastolic Dysfunction For Diabetic Patients With And Without Myocardial Ischemia
Biz burdakilerden farklı metodla bu grafik üzerinden öznitelik çıkarmayı deneyeceğiz. İlk aşamada noktalar arasında vektöreler oluşturacağız. Vektör büyüklüğü ve yönü üzerinden histogramlar çıkaracağız. Sonrasında bir birini takip eden vektörler üzerinden iki boyutlu histogram çıkaracağız.
Yukardaki kadarıyla kodu
github.com/birolkuyumcu/Poincare-Plot
adresinden IPython notebook olarak inceleyebilirsiniz.
Şimdilik bu kadarını yazalımbırakalım. Devamını yazmaya kudretimiz ve dahi şevkimiz olursa devam edecek İnşallah
Etiketler:
Kaos Teorisi,
programlama,
python,
yapay zeka
Cuma, Nisan 08, 2016
Bizden Haberler
Epeydir bir şey yazamıyorum. Aslında yazacak çok şey çıkıyor. Vakit bulup toparlayıp yazarım dedikçe zamanla yitip gidiyor. Bütün bütün kaybolmadan işaret taşı nevinden bir kaç satır karalıyalım dedik.
İlk olarak kitapdan bahsedelim. Kitabın ikinci baskısına geçileceği bildirildi. Memleketimizde çokda yaygın olmayan bir konudaki kitabın ikinci baskıya gitmesi bence güzel bir gelişme. Alanlara, tanıtanlara ve yayılmasına yardımcı olanlara burdan teşekkür ederim.
Geçen sene oldukça yoğun geçti aslında. Yılınbaşında Tübitak Desteği için başvurulan bir proje içindeydik. Proje konusu aşağı yukarı "nöro marketing" üzerineydi. Nöro marketing beyin dalgalarının anlamdırılması esasına dayanan bir alan. Beyin dalagalarının anlamlandırılması zaten uygulama alanı çok geniş bir alan. Bunun pazarlama amaçlı kullanılarak ticari kazanç elde edilmesi üzerine bir projeydi. Bilimum bürokratik işlem ve alınan danışmanlık hizmeteri sonunda proje sunum aşamasına geldi. İlk aşamada 2 hakem atandı değişik üniversitelerden. Farklı tarihlerde ayrı ayrı sunum yapıldı. Aradan bir kaç ay geçince muhtemelen hakemlerin farklı görüşlerinden yeni 2 hakem daha atandı. Onlarada ayrı ayrı sunum yapıldı. Aradan epey bir zaman geçtikten sonra projenin kabul görmediğini öğrendik malesef.
Yılın son 6 ayında bu sefer bilgisayarlı görü alanında bir projeye dışardan yardımcı olduk.
IHA görüntüleri üzerine bir Ar-Ge projesi idi.
Gerek yukarda bahsettiklerim gerekse bu tür projelerle uğraşanlardan dinleiklerime istinaden memleketimizdeki Ar-Ge projelerindeki problemler hakkında en azından başlık olarak bir şeyleyler karalayalım. Uygun bir imkan bulursak genişletilmiş versiyonunuda yazarız
* Ekip nasıl kurulur ? : İstenen nitelikde insan bulamama çünkü yok yetişmemiş. Olmayan nitelikleri ve ilaveten "ağzıyla kuş da tutsun " şeklinde ilanlarla heveslileri kaçırmak. Hevesliler kaçınca geriye hallederiz cilerin kalması. Hallederizle hiç bir şeyin hallolmayacağı. Şaş kaza hevesli , Kısmen nitelikli insanında bütün işin üzerine yıkılması ile geldiğine pişman edilmesi.
*Plan Nasıl Yapılır : Ekip yok, Ekipman yok, Veri yok. Beklenenlerin teknik olabilirliği meçhul. Zaman kısıtlaması evler şenlik, dünyada eşi olmayan çalışmayı 6 ayda çıkarmak istenir... Buyrun cenaze planına...
*Akademik Danışma veya Danışamama : Projenize uygun yeterlilikte danışmanı nerden bulursunuz. Eş dost tanık diye adı yazılanlar. Bulduğunuz danışman ne derece vakit ayırabilir. Adamın işi başından aşkındır, ip ucu nevinden ufak yönlendirmeler ancak yapar. İp ucunu takip edecek dedektif yok. Kimisi olabildiğince teorik kalır. Şuralarda daha kısa bir yol olabilir araştıralım der. projenin kısıtlamalarına bakmaz İş gücü çıkmaz sokaklarda gezer durur.
*Devlet Desteğimi , Kösteğimi : hibe desetği olmadığı sürece bence "Projenin teknik olabilirliği" dışında ıvır zıvırla uğraşmaması gerekirken. Bilimum bürokrasiyi önünüze yığması. Kabul red kriterlerinin net olmamması. Fuzuliden günümüze proje sundum tanıdık değil deyu almadılar anlayışının devam ediyor olması. Yurt dışında başarılı olmuş projelerin çoğunluğu memleketimizde olsa destek alamıyacak oluşu...
*Yatırımcı Melek mi ? : Yurt dışında başarılı olmuş projelerin çoğunluğu memleketimizde olsa yatırımcı bulamıyacağı gerçeği. Yurt dışında yatırımın fikre ve fikri gerçekleştireceği düşünülen ekibe yapılırken. Memleketimizde yatırımcı hazır sofraya ortak olma şeklinde yapılır. Yatırımcı arıyan, fikre ve ekibe, hazır sofra sorarlar.
*Ar-Ge Nedir : Gerek ekipden biri olarak, gerek devlet olarak gerek yatırımcı olarak, Ar-Ge nin ne olduğunu farkında olmadığımızın farkındamıyız ? Araştırma ve Geliştirme ; Araştırma ve geliştirme işini araştırmadan yapabilrimiyiz ? Nasıl planlaya biliriz şu kadar adam saatte biter diye. Gittiğimiz yönün doğru olduğunu ve isteğiğimiz sonucu vereceğine nasıl emin olabiliriz. Emin oluyorsa bu zaten araştırma değildirki !. Bu durumda hazır sofranın - iş modeli- olmasının imkanı varmıdır.?
Haberlere devam edelim
mbed ile embeded konusuna bakdığımı söylemiştim. Başka bir tür kart ile yine ufak bir çalışmam oldu.
Nesnelerin interneti IoT kavramı bunca popülerken bakmamış olmamız bir eksiklik olurdu. Ardunio bazlı wireless bağlantısı kurabilen mini bir board. Eklenmiş olan düğmeye basınca
ardesine bir sayaç değeri yolluyor. Yazılımcıların çekinmemesi gereken bir alan diye düşünüyorum. C / C++ biliyorsanız, yabancılık çekmiyorsunuz.
Son olarak da Derin öğrenme konularına değinelim. En az IoT kadar popüler olmaya aday bir konu. Bu konuda çalışabilmek için benim emektar diz üstü bilgisayarımı devredip yeniledim. bir Toshiba i7 ve NVDIA grafik kartlı bilgisayar aldım. Elbette yeterli değil ama konu üzerinde denemeler yapabilecek sevyede bir imkan sağlıyor.
İlla Linux da kullanın derin öğrenme kütüphaneleri şak diye kuruluyor masalına bende inanıp bazı denemeler yaptım. Sonucusu bilgisayarın göçmesiyle sonuçlanan 3 denemeden sonra vaz geçtim. İlk olarak Linuxda söylendiği gibi her şey güllük gülistanlık değil. İkinci olarak Linux komut satırı handikapından kurtulmamış. Daha doğrusu kurtulmak istemiyor. Her problemde karşınıza bir kamyon komut satırı işler düşüyor. sonuçda garanti değil bu arada.
"X problemini çözmek için şu şu komutları yazın. "
Bilmem kaçıncı aşamada biri hata veriyor ortada kalıyorsunuz Geri nasıl alınacağıda meçhul.
İlerde bir daha denermiyim bilmiyorum ama Windows da da pek ala idare edebiliyorum şimdilik. Caffe yi mxneti theanoyu kurdum. Caffe de eğitim denemeleri yaptım . caffe ve mxnette hazır modelleri kullandım. Tabii bu arada el mahkum pythona başladım.
Derin öğrenmede genelde bütün yollar Python 'a çıkıyor. Rahmetli İsmail Arı zamanında söylüyorduda dudak büküyorduk. Akademik camia matlabdan nedendir bilinmez pythona göç etmişler. Heme her konuda python kütüphanesi bulabiliyorsunuz. Keza Derin öğrenme kütüphaneleride çekirdiği C++ da yazılsada kullanımı python tercih edilmiş durumda. Bizde python öğrenmeye başladık.
Pythona dil olarak her şey serbest bir dil yapısında tip tanımlama yok. Bu her ne kadar özgürlük gibi görünsede bence eksiklik. C / C++ da bir fonksiyonun prototipi size iyi kötü nasıl kullanacağınızı anlatır. şu şu şu tipte verileri yollayacağım şu tipde bana sonuç dönecek vs... Pythonda en azınmdan benim için hiç bir şey ifade etmiyor. Devasa kütüphaneleri olan bir sistem ama dökümante edilmiş hatta örneklenmiş değilse kullanamazsınız. Güzel tarafı ise kütüphanelerin kurulumu için bir sistemi var pip Pek çok - dikkat her demiyorum - kütüphane için çalışıyor. Paket kurulumunda bir problem yoksa tek satırla koda dahil edilebiliyor.
Pythonda bir başka problemde hangi versiyonun kullanılacağı problemi 2.x mi 3.x mi Uzun uzun araştırmaya gerek yok. Hali hazırdaki kütüphane desetği yüzünden 2.x i tercih edin. Python kurarken pek çok kütüphanenin hazır olarak bulunduğu dağıtımları tercih etmeniz sizin için iyi olacaktır.
Python Deneme from bluekid on Vimeo.
python + openCv + sklearn
IDE olarak önerilerim.
Yazıyı çok uzatmışız umarım okuyan çıkar. Bizden haberler şimdilik bu kadar.
Günün anlam ve önemine istinaden Kandiliniz , Cumanız, Üç aylarınız maddi manevi hayırlara vesile olsun İnşallah
İlk olarak kitapdan bahsedelim. Kitabın ikinci baskısına geçileceği bildirildi. Memleketimizde çokda yaygın olmayan bir konudaki kitabın ikinci baskıya gitmesi bence güzel bir gelişme. Alanlara, tanıtanlara ve yayılmasına yardımcı olanlara burdan teşekkür ederim.
Geçen sene oldukça yoğun geçti aslında. Yılınbaşında Tübitak Desteği için başvurulan bir proje içindeydik. Proje konusu aşağı yukarı "nöro marketing" üzerineydi. Nöro marketing beyin dalgalarının anlamdırılması esasına dayanan bir alan. Beyin dalagalarının anlamlandırılması zaten uygulama alanı çok geniş bir alan. Bunun pazarlama amaçlı kullanılarak ticari kazanç elde edilmesi üzerine bir projeydi. Bilimum bürokratik işlem ve alınan danışmanlık hizmeteri sonunda proje sunum aşamasına geldi. İlk aşamada 2 hakem atandı değişik üniversitelerden. Farklı tarihlerde ayrı ayrı sunum yapıldı. Aradan bir kaç ay geçince muhtemelen hakemlerin farklı görüşlerinden yeni 2 hakem daha atandı. Onlarada ayrı ayrı sunum yapıldı. Aradan epey bir zaman geçtikten sonra projenin kabul görmediğini öğrendik malesef.
Yılın son 6 ayında bu sefer bilgisayarlı görü alanında bir projeye dışardan yardımcı olduk.
IHA görüntüleri üzerine bir Ar-Ge projesi idi.
Gerek yukarda bahsettiklerim gerekse bu tür projelerle uğraşanlardan dinleiklerime istinaden memleketimizdeki Ar-Ge projelerindeki problemler hakkında en azından başlık olarak bir şeyleyler karalayalım. Uygun bir imkan bulursak genişletilmiş versiyonunuda yazarız
* Ekip nasıl kurulur ? : İstenen nitelikde insan bulamama çünkü yok yetişmemiş. Olmayan nitelikleri ve ilaveten "ağzıyla kuş da tutsun " şeklinde ilanlarla heveslileri kaçırmak. Hevesliler kaçınca geriye hallederiz cilerin kalması. Hallederizle hiç bir şeyin hallolmayacağı. Şaş kaza hevesli , Kısmen nitelikli insanında bütün işin üzerine yıkılması ile geldiğine pişman edilmesi.
*Plan Nasıl Yapılır : Ekip yok, Ekipman yok, Veri yok. Beklenenlerin teknik olabilirliği meçhul. Zaman kısıtlaması evler şenlik, dünyada eşi olmayan çalışmayı 6 ayda çıkarmak istenir... Buyrun cenaze planına...
*Akademik Danışma veya Danışamama : Projenize uygun yeterlilikte danışmanı nerden bulursunuz. Eş dost tanık diye adı yazılanlar. Bulduğunuz danışman ne derece vakit ayırabilir. Adamın işi başından aşkındır, ip ucu nevinden ufak yönlendirmeler ancak yapar. İp ucunu takip edecek dedektif yok. Kimisi olabildiğince teorik kalır. Şuralarda daha kısa bir yol olabilir araştıralım der. projenin kısıtlamalarına bakmaz İş gücü çıkmaz sokaklarda gezer durur.
*Devlet Desteğimi , Kösteğimi : hibe desetği olmadığı sürece bence "Projenin teknik olabilirliği" dışında ıvır zıvırla uğraşmaması gerekirken. Bilimum bürokrasiyi önünüze yığması. Kabul red kriterlerinin net olmamması. Fuzuliden günümüze proje sundum tanıdık değil deyu almadılar anlayışının devam ediyor olması. Yurt dışında başarılı olmuş projelerin çoğunluğu memleketimizde olsa destek alamıyacak oluşu...
*Yatırımcı Melek mi ? : Yurt dışında başarılı olmuş projelerin çoğunluğu memleketimizde olsa yatırımcı bulamıyacağı gerçeği. Yurt dışında yatırımın fikre ve fikri gerçekleştireceği düşünülen ekibe yapılırken. Memleketimizde yatırımcı hazır sofraya ortak olma şeklinde yapılır. Yatırımcı arıyan, fikre ve ekibe, hazır sofra sorarlar.
*Ar-Ge Nedir : Gerek ekipden biri olarak, gerek devlet olarak gerek yatırımcı olarak, Ar-Ge nin ne olduğunu farkında olmadığımızın farkındamıyız ? Araştırma ve Geliştirme ; Araştırma ve geliştirme işini araştırmadan yapabilrimiyiz ? Nasıl planlaya biliriz şu kadar adam saatte biter diye. Gittiğimiz yönün doğru olduğunu ve isteğiğimiz sonucu vereceğine nasıl emin olabiliriz. Emin oluyorsa bu zaten araştırma değildirki !. Bu durumda hazır sofranın - iş modeli- olmasının imkanı varmıdır.?
Haberlere devam edelim
mbed ile embeded konusuna bakdığımı söylemiştim. Başka bir tür kart ile yine ufak bir çalışmam oldu.
Nesnelerin interneti IoT kavramı bunca popülerken bakmamış olmamız bir eksiklik olurdu. Ardunio bazlı wireless bağlantısı kurabilen mini bir board. Eklenmiş olan düğmeye basınca
ardesine bir sayaç değeri yolluyor. Yazılımcıların çekinmemesi gereken bir alan diye düşünüyorum. C / C++ biliyorsanız, yabancılık çekmiyorsunuz.
Son olarak da Derin öğrenme konularına değinelim. En az IoT kadar popüler olmaya aday bir konu. Bu konuda çalışabilmek için benim emektar diz üstü bilgisayarımı devredip yeniledim. bir Toshiba i7 ve NVDIA grafik kartlı bilgisayar aldım. Elbette yeterli değil ama konu üzerinde denemeler yapabilecek sevyede bir imkan sağlıyor.
İlla Linux da kullanın derin öğrenme kütüphaneleri şak diye kuruluyor masalına bende inanıp bazı denemeler yaptım. Sonucusu bilgisayarın göçmesiyle sonuçlanan 3 denemeden sonra vaz geçtim. İlk olarak Linuxda söylendiği gibi her şey güllük gülistanlık değil. İkinci olarak Linux komut satırı handikapından kurtulmamış. Daha doğrusu kurtulmak istemiyor. Her problemde karşınıza bir kamyon komut satırı işler düşüyor. sonuçda garanti değil bu arada.
"X problemini çözmek için şu şu komutları yazın. "
Bilmem kaçıncı aşamada biri hata veriyor ortada kalıyorsunuz Geri nasıl alınacağıda meçhul.
İlerde bir daha denermiyim bilmiyorum ama Windows da da pek ala idare edebiliyorum şimdilik. Caffe yi mxneti theanoyu kurdum. Caffe de eğitim denemeleri yaptım . caffe ve mxnette hazır modelleri kullandım. Tabii bu arada el mahkum pythona başladım.
Derin öğrenmede genelde bütün yollar Python 'a çıkıyor. Rahmetli İsmail Arı zamanında söylüyorduda dudak büküyorduk. Akademik camia matlabdan nedendir bilinmez pythona göç etmişler. Heme her konuda python kütüphanesi bulabiliyorsunuz. Keza Derin öğrenme kütüphaneleride çekirdiği C++ da yazılsada kullanımı python tercih edilmiş durumda. Bizde python öğrenmeye başladık.
Pythona dil olarak her şey serbest bir dil yapısında tip tanımlama yok. Bu her ne kadar özgürlük gibi görünsede bence eksiklik. C / C++ da bir fonksiyonun prototipi size iyi kötü nasıl kullanacağınızı anlatır. şu şu şu tipte verileri yollayacağım şu tipde bana sonuç dönecek vs... Pythonda en azınmdan benim için hiç bir şey ifade etmiyor. Devasa kütüphaneleri olan bir sistem ama dökümante edilmiş hatta örneklenmiş değilse kullanamazsınız. Güzel tarafı ise kütüphanelerin kurulumu için bir sistemi var pip Pek çok - dikkat her demiyorum - kütüphane için çalışıyor. Paket kurulumunda bir problem yoksa tek satırla koda dahil edilebiliyor.
Pythonda bir başka problemde hangi versiyonun kullanılacağı problemi 2.x mi 3.x mi Uzun uzun araştırmaya gerek yok. Hali hazırdaki kütüphane desetği yüzünden 2.x i tercih edin. Python kurarken pek çok kütüphanenin hazır olarak bulunduğu dağıtımları tercih etmeniz sizin için iyi olacaktır.
wiki.python.org/moin/PythonDistributionsBen Anacondayı yı tercih ettim. Hatta şöyle bir çalışmada yaptım
Python Deneme from bluekid on Vimeo.
python + openCv + sklearn
IDE olarak önerilerim.
- pyCharm
- VS 'nun python eklentisi
- Spyder - Anacondanın içinde geliyor -
Yazıyı çok uzatmışız umarım okuyan çıkar. Bizden haberler şimdilik bu kadar.
Günün anlam ve önemine istinaden Kandiliniz , Cumanız, Üç aylarınız maddi manevi hayırlara vesile olsun İnşallah
Cuma, Ocak 01, 2016
Caffe for Windows
Caffe bir derin öğrenme kütüphanesi ve uygulaması. Derin öğrenme yazılarımızın üçüncüsünde kısaca bahsetmiştik.
Caffe hali hazırda görüntü tanıma üzerine çalışma yapacaklar için en oturmuş ve en hızlı kütüphane. Üç şekilde kullanma imkanına sahibiz. komut satırı, python, matlab. Nedendir bilinmez python dili epey bir revaçta. Derin öğrenme yazılarımızın dördücüsünde görebileceğiniz gibi çoğu kütüphane ya tamamen python ile yada hız faktörü yüzünden çekirdek kısmı C++ yazılıp kullanımını pythona üzerinden yapmışlar. Python bilmeyen biri için buna malesef demek zorundayım. İnşallah ilerde en azından böyle Caffe gibi çekirdeği C++ yazılmış kütüphaneler için doğru düzgün bir C / C++ arabirimi yazsınlar. Beklemek yerine elbette bizimde bir taraftan python öğrenmeye çalışmamız gerekiyor. Caffe için biz bu sıkıntıyı komut satırı kullanımı ile aşmayı planlıyoruz.
Derin Öğrenme kütüphanelerinin genel ikinci sıkınıtısı genel olarak Windows desteği olmaması. Bence bir başka hatada bu. Akademik camiada makale için bir şeyler yapılacaksa elbette windows la muhatp olmak zorunda olmayabilirsiniz. Fakat Ticari bir faaliyete girilecekse, windows işletim sistemini dışlamak müşteri portföyünüzü küçültmek anlamına gelir.
Caffe de resmi windows dağıtımı yok malesef. Resmi dağıtım dışı bazı çalışmalar var
Caffeyi kullanmak için ilk etapta bu linklerden birine müracaat edin. Yada Daha Önce derlenmiş bir paket bulun. Biz derlemek için İlk alternatifi kullandık. Linki verilen siteden zip olarak indirip harddiskte bir dizine açtık.
CMake ile kaydettiğimiz dizine gelin ve orda derlemek için bir dizin oluşturun derleyiciyi seçin. Önce Configure sonra Generate ile önce gereken indirmeleri internetten kendisi otomatik yapacaktır. en sonda derlemek için seçtiğiniz derleyiciye göre -solution file - derleme projelerini oluşturacaktır.
Visual Studio ile biz bu dosyayı açtık ver derlmeye başlattık. Cuda kodlarıda içerdiğinden derleme işlemi epey bir uzun sürüyor. İşlemin sonunda çalıştırılabilir dosyaları elde ederiz.
isim adının peşine -d olanlar debug olarak derlenmiş olanlar. Burda en önemli dosya elebette caffe.exe . Derleyemediysenizde canınızı sıkmayın bizden temin edebilirsiniz. Windowsun nimetlerinden.
Peki Nasıl kullanacağız ?
Önce resmi sayfadan CommandLine kısmını okumanızı öneririm.
genel kullanımı
şeklinde komutlar { train , test ,device_query, time } dan oluşuyor parametreler ile birlikte
caffe ile komut satrından pek çok işlemi yapabiliyorsunuz. Mesela Grafik işlemcinizin durumunu sorgulamak için
dediğinizde
yukardaki gibi bir ekran gelir Elbette CUDA destekli bir GPU olması lazım.
train komutu eğitim için için kullanılır. Caffede Eğitim işlemi için elbette verilere ve bu verilerin üzerinde eğitim için kullanılacağı model dosyasına ihtiyaç vardır. Model dosyası prototxt denen bir formatta tutuluyor. text bir dosya ve okunabilir bir yapı
İlk etapda böyle bir model dosyasını oluşturmak zor olacağından hali hazırda test edilmiş ve kullanılmış model dosyalarının kendi verilerimize göre güncellenip uygulanması öneriliyor.
Her halükarda bu konuda bir şeyler öğrenmemiz gerekiyor. bulabildiğim açıklamalar şunlar
Veri dosyamızı nasıl vereceğimize gelirsek. Caffe , LMDB, levelDB , HDF5 gibi data veri dosya formatlarından okuma yapabiliyor. Böyle bir imkanınız yoksa doğrudan görüntü dosyasınıda kendisi okuyup kullanabiliyor. Nerden ne şekilde okunacağını model dosaysında belirtmeniz gerekiyor.
Mesela MNIST için levelDB formatındaki bir veriyi okutmak için model dosyasında
yazılıyor. Doğrudan Görüntü dosyasını kullanmak isteseydik. Her satırda Görüntü dosyasının yolu ve adını tutan sonunada ait olduğu sınıfı gösteren bir formatta text dosyası oluşturmamız gerekiyordu
gibi
Sonrasında Model proto dosyasında bu text dosyayı verileri okumak için kullanmasını bildirirdik
bakınız
gibi. aynı şeyleri test verisi içinde yapmamız gerekiyor. Eğitim test verileri olmaksınızın bizi yanıltabilir. bakınız
Eğitim esansında kullanılacak parametreler teker teker parametre olarak mümkün olduğu gibi yine prototxt formatında bir solver dosyası olarakda vermek mümkün.
mesela yukardaki model dosyası için
biraz eski bir kaynak ama burdan aratıp bazı şeyleri öğrenmeniz mümkün
Solver dosyamızı da ayarladıktan sonra şu komutu verip
çalışmasını izleyip
sistemin eğitilmesini bekliyoruz. Caffe uzantısı ".caffemodel" olarak eğittiği modeli kaydeder.
Eğitim Bitti peki biz bu eğitilmiş modeli nasıl kullanacağız. Bu konuda OpenCv yardımımıza koşuyor. OpenCv 3.0 dan itibaren contrib kısmında DNN diye bir modül var. OpenCv kurarken contib modülünü dahil edip derlediyseniz - kitapta derlemeyi anlattım - kullanabilirsiniz. İlaveten model prototxt dosyasının kullanım için hazırlanmış versiyonu lazım genelde deploy ön adı ile sağlıyorlar. Çünkü normal dosyada veri girişi için dosya kullanılıyor. OpenCv nin sağladığı bu kolaylıkla OpenCv ve bahsettiğimiz DNN modülünü derlediğiniz her sistemde eğitilmiş model dosyası ve deploy protxt dosyası ile çalıştırabilirsiniz.
Bizde yukarda gösterdiğimiz gibi mnist verisi için bir eğitim yaptık ve daha önce OpenCv KNN ile yazdığımız programa DNN ekledik.
KNN ile % 97.6 olan başarı caffe ile yaptığımız bu eğitim ile %99.3 e yükseldi.
Şimdilik yazacaklarımız bu kadar sorularınız olursa bildiğimiz kadarıyla cevaplamaya çalışırız.
Mnist with Deep Neural Network from bluekid on Vimeo.
Caffe hali hazırda görüntü tanıma üzerine çalışma yapacaklar için en oturmuş ve en hızlı kütüphane. Üç şekilde kullanma imkanına sahibiz. komut satırı, python, matlab. Nedendir bilinmez python dili epey bir revaçta. Derin öğrenme yazılarımızın dördücüsünde görebileceğiniz gibi çoğu kütüphane ya tamamen python ile yada hız faktörü yüzünden çekirdek kısmı C++ yazılıp kullanımını pythona üzerinden yapmışlar. Python bilmeyen biri için buna malesef demek zorundayım. İnşallah ilerde en azından böyle Caffe gibi çekirdeği C++ yazılmış kütüphaneler için doğru düzgün bir C / C++ arabirimi yazsınlar. Beklemek yerine elbette bizimde bir taraftan python öğrenmeye çalışmamız gerekiyor. Caffe için biz bu sıkıntıyı komut satırı kullanımı ile aşmayı planlıyoruz.
Derin Öğrenme kütüphanelerinin genel ikinci sıkınıtısı genel olarak Windows desteği olmaması. Bence bir başka hatada bu. Akademik camiada makale için bir şeyler yapılacaksa elbette windows la muhatp olmak zorunda olmayabilirsiniz. Fakat Ticari bir faaliyete girilecekse, windows işletim sistemini dışlamak müşteri portföyünüzü küçültmek anlamına gelir.
Caffe de resmi windows dağıtımı yok malesef. Resmi dağıtım dışı bazı çalışmalar var
Caffeyi kullanmak için ilk etapta bu linklerden birine müracaat edin. Yada Daha Önce derlenmiş bir paket bulun. Biz derlemek için İlk alternatifi kullandık. Linki verilen siteden zip olarak indirip harddiskte bir dizine açtık.
- Öncesinde yapmanız gerekenler
- Cuda desteği olan bir derleyiciyi kurun Visual Studio gibi
- Cuda ve CuDNN kütüphanelerini indirip kurun - NVIDIA sitelerinden -
- halen kurulu değilse CMake i kurun
CMake ile kaydettiğimiz dizine gelin ve orda derlemek için bir dizin oluşturun derleyiciyi seçin. Önce Configure sonra Generate ile önce gereken indirmeleri internetten kendisi otomatik yapacaktır. en sonda derlemek için seçtiğiniz derleyiciye göre -solution file - derleme projelerini oluşturacaktır.
Visual Studio ile biz bu dosyayı açtık ver derlmeye başlattık. Cuda kodlarıda içerdiğinden derleme işlemi epey bir uzun sürüyor. İşlemin sonunda çalıştırılabilir dosyaları elde ederiz.
isim adının peşine -d olanlar debug olarak derlenmiş olanlar. Burda en önemli dosya elebette caffe.exe . Derleyemediysenizde canınızı sıkmayın bizden temin edebilirsiniz. Windowsun nimetlerinden.
Peki Nasıl kullanacağız ?
Önce resmi sayfadan CommandLine kısmını okumanızı öneririm.
genel kullanımı
caffe
şeklinde komutlar { train , test ,device_query, time } dan oluşuyor parametreler ile birlikte
caffe ile komut satrından pek çok işlemi yapabiliyorsunuz. Mesela Grafik işlemcinizin durumunu sorgulamak için
caffe device_query -gpu 0
dediğinizde
yukardaki gibi bir ekran gelir Elbette CUDA destekli bir GPU olması lazım.
train komutu eğitim için için kullanılır. Caffede Eğitim işlemi için elbette verilere ve bu verilerin üzerinde eğitim için kullanılacağı model dosyasına ihtiyaç vardır. Model dosyası prototxt denen bir formatta tutuluyor. text bir dosya ve okunabilir bir yapı
İlk etapda böyle bir model dosyasını oluşturmak zor olacağından hali hazırda test edilmiş ve kullanılmış model dosyalarının kendi verilerimize göre güncellenip uygulanması öneriliyor.
Her halükarda bu konuda bir şeyler öğrenmemiz gerekiyor. bulabildiğim açıklamalar şunlar
Veri dosyamızı nasıl vereceğimize gelirsek. Caffe , LMDB, levelDB , HDF5 gibi data veri dosya formatlarından okuma yapabiliyor. Böyle bir imkanınız yoksa doğrudan görüntü dosyasınıda kendisi okuyup kullanabiliyor. Nerden ne şekilde okunacağını model dosaysında belirtmeniz gerekiyor.
Mesela MNIST için levelDB formatındaki bir veriyi okutmak için model dosyasında
yazılıyor. Doğrudan Görüntü dosyasını kullanmak isteseydik. Her satırda Görüntü dosyasının yolu ve adını tutan sonunada ait olduğu sınıfı gösteren bir formatta text dosyası oluşturmamız gerekiyordu
gibi
Sonrasında Model proto dosyasında bu text dosyayı verileri okumak için kullanmasını bildirirdik
bakınız
gibi. aynı şeyleri test verisi içinde yapmamız gerekiyor. Eğitim test verileri olmaksınızın bizi yanıltabilir. bakınız
Eğitim esansında kullanılacak parametreler teker teker parametre olarak mümkün olduğu gibi yine prototxt formatında bir solver dosyası olarakda vermek mümkün.
mesela yukardaki model dosyası için
# net : Eğitimde kullanılacak model dosyasının adı
net: "alpha_train_text.prototxt"
# test_iter geri besleme öncesi kaç ke ağın ileri besleyeceği.böyle bir solver dosyası kullanılıyor. yukarda # peşinden gelen açıklma satırları ile açıklamaya çalıştım. YSA parametreleri için YSA üzerine bir şeyler okumanız lazım...
test_iter: 25
# test_interval: Test verisi ile yapılacak kontrolün aralığı mesela 300 iterasyonda bir
test_interval: 300
# Yapa Sinir ağı parametreleri öğrenme hızı vs...
base_lr: 0.001
momentum: 0.7
weight_decay: 0.0005
# Öğrenme hızı ile ilgili parametreler
lr_policy: "inv"
gamma: 0.0001
power: 0.75
# her 100 iterasyonda durumu gösteriyor.
display: 100
# En çok kaç iterasyona kadar çalışacağı
max_iter: 1500
# arada eğitilmiş model saklanacakmı ve kaç iterasyonda bir
snapshot: 100
snapshot_prefix: "alpha"
# Caffenin çalışma modu CPU yada GPU
solver_mode: GPU
biraz eski bir kaynak ama burdan aratıp bazı şeyleri öğrenmeniz mümkün
http://www.faqs.org/faqs/ai-faq/neural-nets/
Solver dosyamızı da ayarladıktan sonra şu komutu verip
caffe train -solver lenet_solver.prototxt
çalışmasını izleyip
sistemin eğitilmesini bekliyoruz. Caffe uzantısı ".caffemodel" olarak eğittiği modeli kaydeder.
Eğitim Bitti peki biz bu eğitilmiş modeli nasıl kullanacağız. Bu konuda OpenCv yardımımıza koşuyor. OpenCv 3.0 dan itibaren contrib kısmında DNN diye bir modül var. OpenCv kurarken contib modülünü dahil edip derlediyseniz - kitapta derlemeyi anlattım - kullanabilirsiniz. İlaveten model prototxt dosyasının kullanım için hazırlanmış versiyonu lazım genelde deploy ön adı ile sağlıyorlar. Çünkü normal dosyada veri girişi için dosya kullanılıyor. OpenCv nin sağladığı bu kolaylıkla OpenCv ve bahsettiğimiz DNN modülünü derlediğiniz her sistemde eğitilmiş model dosyası ve deploy protxt dosyası ile çalıştırabilirsiniz.
Bizde yukarda gösterdiğimiz gibi mnist verisi için bir eğitim yaptık ve daha önce OpenCv KNN ile yazdığımız programa DNN ekledik.
KNN ile % 97.6 olan başarı caffe ile yaptığımız bu eğitim ile %99.3 e yükseldi.
Şimdilik yazacaklarımız bu kadar sorularınız olursa bildiğimiz kadarıyla cevaplamaya çalışırız.
Mnist with Deep Neural Network from bluekid on Vimeo.
Perşembe, Aralık 31, 2015
Derin Öğrenme 4
Geçen yazımızda konuyu bitirmiştik ama yeni gelişmeler çıktı. Bu gelişmelerden en önemlisi Google'ın kendi geliştirdiği sistemi açık kaynak olarak yayınlamasıydı. Pek çok büyük firma derin öğrenme üzerine hazırladıkları kütüphanelerini açık kaynak kodlu yayınladılar. Aslında henüz oturmamış bir alan ve bu alanda baskın bir kütüphane yok. Bu yüzden bende en azından genel kullanılan diğer kütüphaneleri listeleyim istedim.
1) TensorFlow : Google ın yayınladığı açık kaynak kodlu bir kütüphane. Derin öğrenme konusunda Tensor terimini çok duyacaksınız. Tensor çok boyutlu veri matrisleridir.
Bu kütüphane ile tensörlerin akışı ile yapay öğrenme metodları gerçekleştiriliyor. Tıpkı caffe deki gibi çekirdek kütüphane c++ ile yazılmış olsada, ana kullanım Python üzerinden yapılabiliyor. Lisansı ticari kullanıma uygun. Bence bir başka eksi yön windows desteği yok malesef.
2) The VELES : Bu kütüphanede Samsung firmasının geliştirmiş olduğu derin öğrenme kütüphanesidir. Pythonda geliştirilmiş ve GPU için hem CUDA hem OpenCL desteği var.
Lisansı yine ticari kullanıma uygun.
3) Computational Network Toolkit (CNTK) : Bu kütüphanede Microsoft'un C++ temelli geliştirdiği yine açık kaynak kodlu kütüphane. Benim gibi C++ kullanan kişiler için bir avantaj elbette. Microsoft ne derece arkasında duracak bilemiyorum. Malesef halen beta statüsünde duruyor.
4) Intel® Deep Learning Framework : Intel firmasının geliştirmiş olduğu yine C++ temelli bir kütüphane C API kullanılarak çağrılıyor. hem CPU hemde GPU desteği var fakat GPU için OpenCl temelli kodlama yapılmış.
5) Theano : Python da yazılmış çok genel bir kütüphane doğrudan derin öğrenme için kullanıldığı gibi üzerine yazılmış keras veya lasagne gibi kütüphanelerle de kullanabiliyorsunuz. pyCuda ile GPU kullanarak çalışmasını hızlandırabiliyor.
6) MXNet : C++ temelli bir kütüphane. Hemen hepsinde olduğu gibi C++ ile değil. Python,R, Julia gibi diller üzerinden kullanabiliyoruz. Windows için hazır paketleri var.
7) warp-ctc : C temelli bir kütüphane. Baidu nun ürünü Torch üzerinden kullanılacak şekilde düşünülmüş. Ses tanıma üzerine çalışmışlar
Bu liste böyle uzuyor gidiyor. Bu tür kütüphaneler ,dökümanlar ve kitaplar gibi kaynakların listelendiği aşağıdaki linke bir göz atın.
1) TensorFlow : Google ın yayınladığı açık kaynak kodlu bir kütüphane. Derin öğrenme konusunda Tensor terimini çok duyacaksınız. Tensor çok boyutlu veri matrisleridir.
Bu kütüphane ile tensörlerin akışı ile yapay öğrenme metodları gerçekleştiriliyor. Tıpkı caffe deki gibi çekirdek kütüphane c++ ile yazılmış olsada, ana kullanım Python üzerinden yapılabiliyor. Lisansı ticari kullanıma uygun. Bence bir başka eksi yön windows desteği yok malesef.
2) The VELES : Bu kütüphanede Samsung firmasının geliştirmiş olduğu derin öğrenme kütüphanesidir. Pythonda geliştirilmiş ve GPU için hem CUDA hem OpenCL desteği var.
Lisansı yine ticari kullanıma uygun.
3) Computational Network Toolkit (CNTK) : Bu kütüphanede Microsoft'un C++ temelli geliştirdiği yine açık kaynak kodlu kütüphane. Benim gibi C++ kullanan kişiler için bir avantaj elbette. Microsoft ne derece arkasında duracak bilemiyorum. Malesef halen beta statüsünde duruyor.
4) Intel® Deep Learning Framework : Intel firmasının geliştirmiş olduğu yine C++ temelli bir kütüphane C API kullanılarak çağrılıyor. hem CPU hemde GPU desteği var fakat GPU için OpenCl temelli kodlama yapılmış.
5) Theano : Python da yazılmış çok genel bir kütüphane doğrudan derin öğrenme için kullanıldığı gibi üzerine yazılmış keras veya lasagne gibi kütüphanelerle de kullanabiliyorsunuz. pyCuda ile GPU kullanarak çalışmasını hızlandırabiliyor.
6) MXNet : C++ temelli bir kütüphane. Hemen hepsinde olduğu gibi C++ ile değil. Python,R, Julia gibi diller üzerinden kullanabiliyoruz. Windows için hazır paketleri var.
7) warp-ctc : C temelli bir kütüphane. Baidu nun ürünü Torch üzerinden kullanılacak şekilde düşünülmüş. Ses tanıma üzerine çalışmışlar
Bu liste böyle uzuyor gidiyor. Bu tür kütüphaneler ,dökümanlar ve kitaplar gibi kaynakların listelendiği aşağıdaki linke bir göz atın.
Cumartesi, Kasım 07, 2015
Derin Öğrenme 3
Bir önceki yazımızda kabaca çalışma sisteminden bahsetmiştik. Bu yazımızda pratik olarak neler yapabileceğimize bakalım.
Sitemizi takip ediyorsanız görmüşsünüzdür. eskiden beri pratik uygulamalara ağırlık vermişizdir. klasik YSA kütüphanesi olan FANN 'ın pek çok değişik alanda kullanarak gösterdik. Genel kullanım aslında aynı.
Sıfırdan bir derin öğrenme sistemi yazmak çoğumuz için mümkün değildir. Gerekli de değildir. Hali hazırda pek çok kişi tarafından geliştirilmekte olan uygun kütüphanneler mevcuttur. Bunları kullanmak hem daha sağlıklı hemde daha kolaydır. Tekerleği icat edilecek yer var edilmeyecek yer var ... Bizim görüşümüz kendinize en yakın gördüğünüz ve gelişmesi devam eden bir kütüphaneyi seçmektir. Sonrasında çalışmalarımızı bu sistemi öğrenmek ve uygulamak üzerine harcaya biliriz. Biz bir kaç tanesinden bahsedelim.
Berkley Üniversitesi tarafından geliştirilmiş bir sistemdir Caffe . Açık kaynak kodlu, ticari kullanıma uygun ve GPU destekli bir yapıdır. Temelde C++ olarak yazılmıştır. Hiç program yazmadan Komut satırından çalıştırılan programlarla ve google 'ın -Protocol Buffers - Google's data interchange format - ile yazılmış model yapıları ile eğitip kullanabiliyorsunuz.
mesela bakınız.
NVDIA'nın DIGITS ürünü ilede GUI üzerinden kullanabiliyorsunuz.
Pek çok araştırma gurubu tarafından kullanılan bir sistem olan Caffe bizimde tercihimizdir.
Matlab ve python destekleride vardır. Caffe için en büyük eksiklik şimdilik windows desteğinin pek iyi olmaması. Resmi bir windows versiyonu yok. Fakat bu konuda değişik çalışmlar var
Sonuncusunda çalıştırılabilir bir versiyonunda var
Caffenin bizim açımızdan diğer bir avatajı da OpenCv 3.0 ile birlikte Caffede eğitilmiş olan modelleri kullanma imkanına sahib olmamızdır. Mesela bir önceki yazımızdaki video yu Caffe de eğitilmiş "bvlc_googlenet.caffemodel" modeliye yazdık. Caffe de eğitilmiş modellerede ulaşabiliyorsunuz.
OpenCv de Derin Öğrenme sistemlerine ulaşmak için OpenCv 3.0 'ı contrib eklemeleri ile birlikte kurmalısınız. -Kitabımızda anlatmıştık - Bu kısımda dnn modülünde bahsettiğimiz özellikler var.
Dökümantasyonu ;
Bizim bahsettiğimiz dışında da başka kütüphaneler var elbette. Burdan detaylı bir listeye ulaşabilirsiniz. Listenin olduğu site deeplearning.net de genel konu ile ilgili açıklamalara ve bağlantılara ulaşabilirsiniz.
Bütün yazdıklarımızı toparlarsak. Pratik bir çalışma yapmak istediğimizde
1) Hazırda geliştirilmiş sistemlerden biri tercih edip öğrenmemiz gerekiyor. Bizim önerimiz Caffe
2) Büyük işlemgücü gerektiğinden en azından CUDA destekli bir NVDIA grafik kartlı bir bilgisayar edinin. Daha teferruatlı açıklama için bakınız ; deep-learning-hardware-guide
3) Bol miktarda veri istediğinden ; sabır ve zaman - mümkünse ekip oluşturup işi paylaşmak -
4) Bütün her şey hazır olup eğitim denemelerine başlandığında eğitim işleminin uzun olması yüzünden zaman.
Listedende anlaşılacağı üzere orjinal bir çalışma için ; İnsan para ve zaman gerekiyor...
Evet bir yazı dizimizinde böylece sonuna geldik. Bir başlangıç yapabilmek adına gerekenlerden bahsettiğimizi umuyorum. Umarım birilerine bir faydası dokunur. Her türlü soru , öneri ve eleştirilerinizi bekeleriz...
Sitemizi takip ediyorsanız görmüşsünüzdür. eskiden beri pratik uygulamalara ağırlık vermişizdir. klasik YSA kütüphanesi olan FANN 'ın pek çok değişik alanda kullanarak gösterdik. Genel kullanım aslında aynı.
- Uygulanacak bir alan bul.
- Verileri topla.
- Sistemi eğit.
- Eğitilmiş sistemi kullan.
Sıfırdan bir derin öğrenme sistemi yazmak çoğumuz için mümkün değildir. Gerekli de değildir. Hali hazırda pek çok kişi tarafından geliştirilmekte olan uygun kütüphanneler mevcuttur. Bunları kullanmak hem daha sağlıklı hemde daha kolaydır. Tekerleği icat edilecek yer var edilmeyecek yer var ... Bizim görüşümüz kendinize en yakın gördüğünüz ve gelişmesi devam eden bir kütüphaneyi seçmektir. Sonrasında çalışmalarımızı bu sistemi öğrenmek ve uygulamak üzerine harcaya biliriz. Biz bir kaç tanesinden bahsedelim.
Torch
Torch aslında genel bir Yapay Öğrenme kütüphanesi ve Geçmişi epey eski hatta bir vakitler üzerine yazılmış görüntü işleme kısmıyla birlikte çıkmıştı Torch Vision diye biz de bahsetmiştik. Torch Vison pek gelişmesede ana kütütüphane olan Torch çok gelişti. Ana kütüphane C de yazılmış olsada, Lua destekli olarak epey revaçta bir kullanıma sahip. GPU desteği zaten derin öğrenme sistemlerinin olmazsa olmazı. Açık kaynak kodlu ve ticari kullanımada uygun bir lisans yapısı var.Caffe
Berkley Üniversitesi tarafından geliştirilmiş bir sistemdir Caffe . Açık kaynak kodlu, ticari kullanıma uygun ve GPU destekli bir yapıdır. Temelde C++ olarak yazılmıştır. Hiç program yazmadan Komut satırından çalıştırılan programlarla ve google 'ın -Protocol Buffers - Google's data interchange format - ile yazılmış model yapıları ile eğitip kullanabiliyorsunuz.
mesela bakınız.
- caffe.berkeleyvision.org/gathered/examples/imagenet.html
- caffe.berkeleyvision.org/gathered/examples/mnist.html
- caffe.berkeleyvision.org/tutorial/interfaces.html
- Kullanımı hakkında sunum
NVDIA'nın DIGITS ürünü ilede GUI üzerinden kullanabiliyorsunuz.
Pek çok araştırma gurubu tarafından kullanılan bir sistem olan Caffe bizimde tercihimizdir.
Matlab ve python destekleride vardır. Caffe için en büyük eksiklik şimdilik windows desteğinin pek iyi olmaması. Resmi bir windows versiyonu yok. Fakat bu konuda değişik çalışmlar var
Sonuncusunda çalıştırılabilir bir versiyonunda var
Caffenin bizim açımızdan diğer bir avatajı da OpenCv 3.0 ile birlikte Caffede eğitilmiş olan modelleri kullanma imkanına sahib olmamızdır. Mesela bir önceki yazımızdaki video yu Caffe de eğitilmiş "bvlc_googlenet.caffemodel" modeliye yazdık. Caffe de eğitilmiş modellerede ulaşabiliyorsunuz.
OpenCv de Derin Öğrenme sistemlerine ulaşmak için OpenCv 3.0 'ı contrib eklemeleri ile birlikte kurmalısınız. -Kitabımızda anlatmıştık - Bu kısımda dnn modülünde bahsettiğimiz özellikler var.
Dökümantasyonu ;
docs.opencv.org/master/d6/d0f/group__dnn.htmlÖrnek Program ;
github.com/Itseez/opencv_contrib/blob/master/modules/dnn/samples/caffe_googlenet.cppDökümantasyondaan görülebileceği gibi hali hazırda çalışmasada eğitilmiş Torch modelleri içinde üzerinde çalışılıyor.
Bizim bahsettiğimiz dışında da başka kütüphaneler var elbette. Burdan detaylı bir listeye ulaşabilirsiniz. Listenin olduğu site deeplearning.net de genel konu ile ilgili açıklamalara ve bağlantılara ulaşabilirsiniz.
Bütün yazdıklarımızı toparlarsak. Pratik bir çalışma yapmak istediğimizde
1) Hazırda geliştirilmiş sistemlerden biri tercih edip öğrenmemiz gerekiyor. Bizim önerimiz Caffe
2) Büyük işlemgücü gerektiğinden en azından CUDA destekli bir NVDIA grafik kartlı bir bilgisayar edinin. Daha teferruatlı açıklama için bakınız ; deep-learning-hardware-guide
3) Bol miktarda veri istediğinden ; sabır ve zaman - mümkünse ekip oluşturup işi paylaşmak -
4) Bütün her şey hazır olup eğitim denemelerine başlandığında eğitim işleminin uzun olması yüzünden zaman.
Listedende anlaşılacağı üzere orjinal bir çalışma için ; İnsan para ve zaman gerekiyor...
Evet bir yazı dizimizinde böylece sonuna geldik. Bir başlangıç yapabilmek adına gerekenlerden bahsettiğimizi umuyorum. Umarım birilerine bir faydası dokunur. Her türlü soru , öneri ve eleştirilerinizi bekeleriz...
Pazar, Kasım 01, 2015
Derin Öğrenme 2
İlk yazımızda temel bazı gerçeklerden bahsetmiştim. Bu kurallardan "Derin öğrenme" için yapabileceğimiz çıkarımlar şunlar. "Derin öğrenmeyi" öğrenip kullanabilmeliyizki geri kalmayalım. Hayranı olup kalmayalım ki derin öğrenmenin eksikliklerini ve diğer gelişmeleri görebilelim. Uygulamanın gerekliliklerine göre en uygun olan metodun seçiminde nesnel - objektif - olabilelim.
"Derin öğrenme" muğlak bir terim çünkü rivayetler muhtelif ; Benim anladığım kadarıyla
Bütün bunları detaylıca anlatmam pek mümkün - haddimde - değil. Gereklide değil zaten. Olabildiğince pratik anlatmaya çalışalım. Klasik metodlarda Veriden bilgiye geçişte aşamalar aşağıdaki gibidir.
Ham veri genellikle bir öznitelik çıkarma 1 - feature extraction - aşamasından geçer. Öznitelik çıkarma aşamasınında genel bir metodu yoktu. Vakti zamanında Anderw Ng nin bir konuşmasından bir parça yayınlamıştık. - İzlemediyseniz tavsiye ederim izleyin - Derin öğrenme algoritmalarında hiyerarşik dönüşümlerle bu işlevide yerine getiriliyor. Biraz daha somutlaştıralım.
Derin öğrenme algoritmalarının içinde en bilineni belkide 'Convolutional neural networks' - CNN - dur. Mesela derin öğrenme dendiğinde ilk akla gelen örneklerden olan görüntü sınıflandırma problemlerinde CNN kullanıldığını görürüz. CNN aslında gelişmiş bir Yapay sinir Ağıdır. Normal ileri beslemeli sinir ağı öncesi bir anlamda öznitelik çoğaltma ve özetleme katmalarıda içererek , Öznitelik çıkarma işlevini içine almışdır.
Bu metodun iç yapısında Convolutional katmanları ile ile öznitelikler çıkarılır ve çoğaltılır. Bu katman aslında görüntü işleme pek çok işlem için de kullandığımız basit filtreleme işlemidir.
Pool katmanları ile çoğalan öznitelikler basit işlemle küçültülür.
üzerinde işlem yapılan kısımın, max pooling ile en büyüğü , min pooling ile en küçüğü ve median pooling ile ortalaması alınarak özetlenmiş olur.
Bu katmanlar değişik kombinasyonlarlar ve değişik parametrelerle sıralanarak ,
bir öznitelik çıkarma işlevi yapılmış oluyor. Öznitelik çıkarma işlevi de bir anlamda öğreniliyor.
YSA ksımında ise girdi sayısının ve katman sayısının büyüklüğü sebebiyle klasik metodlarla eğitimi pek kolay değildir. Bu yüzden gerek öğrenememe -under fitting - gerekse ezberleme - over fitting - problemleri 2 için modern çözümler ve kullanılmaktadır.
Mesela ; Dropout diye tabir edilen bir yöntem var. Ağ içindeki bazı bağlantıların kaldırılmasıyla eğitim performansı artırıyor.
Mesela ; aktivasyon klasik fonksiyonları yerine - ReLu - Rectified Linear Unit kullanımı gibi.
Ezeberleme problemi için tek başına metodlar işe yaramaz. Bahsedilen büyüklükteki bir ağ yapısı normal bir veri setini kolaylıkla ezberler. Bu yüzden devasa büyüklükte ve genişlikte veri setleri oluşturulur.
Derin denecek kadar çok katmanlı bir yapıda ve devasa büyüklükteki bir veri seti için yine devasa bir işlem gücü gerekiyor olması süpriz olmaz sanırım. İşlem gücü için genel çözüm GPU kullanımıdır. Günümüzde NVDIA bu işte en öndedir. Çünkü CUDA 3 ile yıllardır bu iş üzerine emek vermişti.
İnşallah kafanızda derin öğrenme ile ilgili kabacada olsa somut bir şeyler oluşturabilmişizdir.
DeepNN from bluekid on Vimeo.
Üstteki video da Derin öğrenme ile eğitilmiş bir sınıflandırıcının kullanıldığı basit bir örnek hazırladık diyerek bu yazıyı sonlandıralım.
Devam edecek İnşallah....
Görüş ve önerilerinizi bekleriz....
Notlar;
1) Bir parça bu yazımızda bahsetmiştik bakabilirsiniz.
2) YSA lar ve eğitim konusunda bu yazımızda birşeyler anlatmıştık
3) 2008 de bahsetmişiz. bakınız
"Derin öğrenme" muğlak bir terim çünkü rivayetler muhtelif ; Benim anladığım kadarıyla
çok sayıda katmandan oluşan hiyerarşik dönüşümlerle verilerin anlamdırıldığı -öğrenildiği- metodlar topluluğu.diyebiliriz. Yapay öğrenmenin bir dalı diyede bahsedilir. Günümüzde başarılı olmuş bu metodların ortak noktası çok katmanlı olmalarıdır. Anlayabildiğim kadarıyla bir birinden farklı pek çok metodu içerdiğinden, bu genel isim tercih ediliyor. Bu metodlardan bazılarının isimleri verelim ; - kusura bakmayın mecburen ingilizce vereceğiz -
- Deep neural networks
- Deep belief networks
- Convolutional neural networks
- Deep Boltzmann Machines
- Recurrent Neural Network
Bütün bunları detaylıca anlatmam pek mümkün - haddimde - değil. Gereklide değil zaten. Olabildiğince pratik anlatmaya çalışalım. Klasik metodlarda Veriden bilgiye geçişte aşamalar aşağıdaki gibidir.
Ham veri genellikle bir öznitelik çıkarma 1 - feature extraction - aşamasından geçer. Öznitelik çıkarma aşamasınında genel bir metodu yoktu. Vakti zamanında Anderw Ng nin bir konuşmasından bir parça yayınlamıştık. - İzlemediyseniz tavsiye ederim izleyin - Derin öğrenme algoritmalarında hiyerarşik dönüşümlerle bu işlevide yerine getiriliyor. Biraz daha somutlaştıralım.
Derin öğrenme algoritmalarının içinde en bilineni belkide 'Convolutional neural networks' - CNN - dur. Mesela derin öğrenme dendiğinde ilk akla gelen örneklerden olan görüntü sınıflandırma problemlerinde CNN kullanıldığını görürüz. CNN aslında gelişmiş bir Yapay sinir Ağıdır. Normal ileri beslemeli sinir ağı öncesi bir anlamda öznitelik çoğaltma ve özetleme katmalarıda içererek , Öznitelik çıkarma işlevini içine almışdır.
Bu metodun iç yapısında Convolutional katmanları ile ile öznitelikler çıkarılır ve çoğaltılır. Bu katman aslında görüntü işleme pek çok işlem için de kullandığımız basit filtreleme işlemidir.
Pool katmanları ile çoğalan öznitelikler basit işlemle küçültülür.
üzerinde işlem yapılan kısımın, max pooling ile en büyüğü , min pooling ile en küçüğü ve median pooling ile ortalaması alınarak özetlenmiş olur.
Bu katmanlar değişik kombinasyonlarlar ve değişik parametrelerle sıralanarak ,
bir öznitelik çıkarma işlevi yapılmış oluyor. Öznitelik çıkarma işlevi de bir anlamda öğreniliyor.
YSA ksımında ise girdi sayısının ve katman sayısının büyüklüğü sebebiyle klasik metodlarla eğitimi pek kolay değildir. Bu yüzden gerek öğrenememe -under fitting - gerekse ezberleme - over fitting - problemleri 2 için modern çözümler ve kullanılmaktadır.
Mesela ; Dropout diye tabir edilen bir yöntem var. Ağ içindeki bazı bağlantıların kaldırılmasıyla eğitim performansı artırıyor.
Mesela ; aktivasyon klasik fonksiyonları yerine - ReLu - Rectified Linear Unit kullanımı gibi.
Ezeberleme problemi için tek başına metodlar işe yaramaz. Bahsedilen büyüklükteki bir ağ yapısı normal bir veri setini kolaylıkla ezberler. Bu yüzden devasa büyüklükte ve genişlikte veri setleri oluşturulur.
Derin denecek kadar çok katmanlı bir yapıda ve devasa büyüklükteki bir veri seti için yine devasa bir işlem gücü gerekiyor olması süpriz olmaz sanırım. İşlem gücü için genel çözüm GPU kullanımıdır. Günümüzde NVDIA bu işte en öndedir. Çünkü CUDA 3 ile yıllardır bu iş üzerine emek vermişti.
İnşallah kafanızda derin öğrenme ile ilgili kabacada olsa somut bir şeyler oluşturabilmişizdir.
DeepNN from bluekid on Vimeo.
Üstteki video da Derin öğrenme ile eğitilmiş bir sınıflandırıcının kullanıldığı basit bir örnek hazırladık diyerek bu yazıyı sonlandıralım.
Devam edecek İnşallah....
Görüş ve önerilerinizi bekleriz....
Notlar;
1) Bir parça bu yazımızda bahsetmiştik bakabilirsiniz.
2) YSA lar ve eğitim konusunda bu yazımızda birşeyler anlatmıştık
3) 2008 de bahsetmişiz. bakınız
Pazar, Ekim 25, 2015
Derin Öğrenme 1
Yapay Zeka ile ilgili konuları takip ediyorsanız, muhakak rastlamışsınızdır. Bu günlerin moda kavramı derin öğrenme - Deep Learning - Gün geçmiyorki filan konuda, falan konuda derin öğrenme uygulandı şöyle başarılıydı böyle başarılıydı haberleri duymayalım. Dünayanın en büyük en parlak şirketleri ekipler kurup bu konu üzerinde çalışıyorlar. Dünyanın en iyi üniversitelerinde araştırma gurupları var.
Kısaca derin örğenme tarafına doğru güçlü bir rüzgar var. Bütün bunlar yapay zekanın bütün hedeflerine derin öğrenme ile ha ulaştık ha ulaşacağız hissiyatı veriliyor. Doğrudan konu hakkında konuşmadan önce giriş niteliğinde temel bazı konulardan bahsetmek istiyorum.
Bilim ve teknolojinin de bir tarihi var. Bilim ve Teknolojik gelişmelerde yıllara göre ilerlemeler görünür.
Bilim ve teknolojide gelişmeler her zaman aynı hızda gitmez. Aslında coğu zaman ortalama bir hızda gelişmeler olur. Ama bazen bir buluş bir yenilik ile gelişme hızı eski hızına göre yıllar sürecek seviyeye bir kaç ayda ulaşılır. Böyle parlak yenilikler pek çok insanın gözlerini kamaştırır. Olmadık beklentilere girilir. Bir örnek verelim. Günümüz yapay zeka çalışmalarına 1956 yılında 1 başlandı. Gelişmelerin gidişatından, 1960'lı yılllarda "Bilgisayarlar on yıl içinde insanlar kadar akıllı olacaklar " diyenler çıktı. Ne mutluki ! yıllar geçmesine rağmen ortada böyle bir gelişme olmadı. :)
Keza gelişmeler her zaman aynı yönde de olmadı. Mesela kütüphanemdeki en eski Yapay Zeka kitabının 2 tarihi 1991 ve içindeki konular Mantıklsal akıl yürütme, Doğal Dil İşleme, Uzman Sistemler, Robot bilim şeklinde sıralanıyordu. Güncel bir kitabın çok değişik konulardan bahsedeceği barizdir. Yani bazı zamanlarda bazı alanlar çok öne çıkıyor, pek çok insan bu alanda çalışıyor. Sonra bir başka alanda bir gelişme oluyor, ve o alanda çalışmalar çoğalıyor.
Yukardaki grafikdeki gibi A ve D diye iki metod bulunmuş. A metodu gelişerek A1 ve A2 diye geçerliliğini korumuş. D metodu D1 ve D2 diye gelişmiş ama. İlk etapta gelişme olmamış hatta D1 hali hazırda terk edilmiş. D2 metodundan uzun zaman sonra D21 , D22, D23 metodları geliştirilmiş halen güncelliğini koruyor. Grafik ve isimler farazide olsa Bilmin pek çok alanında ve elbetteki Yapay zeka araştırmalrında benzeri durumlar olmaktadır.
Bütün bunlardan anlamamız gereken şeyler nelerdir.
Yapay Öğrenmede, motodların performanslarını ölçmek için veri setleri oluşturulmuştur. Yapay öğrenmede hali hazırda pek çok metod vardır. Metodlardaki gelişme bu listelerde daha iyi - kesinlik anlamında - sonuçlarla ispatlanmaktadır. Derin öğrenme metodlarının uygulandığı sonuçlar günümüzde bu listelerin üst sıralarını oluşturmaktadır.
Yapay Öğrenmede pek çok metod var dedik. Peki metodlar arasında nasıl seçim yapabiliriz. Biraz da bu işin temellerine bakalım.
Mühedislikte tek önemli olan şey kesinlik değildir. Şöyle örnekleyelim ; Bir uygulama yazmaya çalıştığımızı düşünün. Bölme işleminde virgülden sonra 1000 basamak hesaplayan bir metodun kesinliği virgülden sonra 3 basamak hesaplayana göre daha iyidir. Lakin pek çok iş için 3 basamaklık bir hassasiyet yeterlidir.
Bir başka konuda uygulamanın alanı ve ortaya çıkan verinin yapısıdır. Her meotod her çeşit veriye uygulanamayabilir. Uygulamanın gerektirdiği kısıtlamalar olabilir. Mesela her metodun ortak bir noktası olan eğitim aşamasının hızı, Uygulamanın anlık eğitime ihtiyaç duyması ile bazı metodların eğitim aşamasının çok uzun olması sebebiyle kullanışsız olabilir.
Genel olarak şunu söylemek isterim. Bir uygulamada sayılsal 3 ve algoritmik bir çözüm varsa hesaplama süresi çok uzun değilse onu kullanın. Bu mümkün değilse Uygulamanızın şartlarına göre olan bir araştırma yapın seçiminiz ona göre yapın.
Yazıda epey uzamış sizleri daha fazla sıkmak istemiyorum. Bu kadar temel girizgah Derin öğrenme konusuna daha akılcı bakmanızı sağlayacağını umarak. Derin öğrenme konusundaki aşağıdaki videoya bakmanızı önereceğim. Bu video Ankarada Derin Öğrenme Etkinliği ndeki Ferhat Kurt tarafından yapılan konuşmadır.
Daha yeni başladık :) devam edecek...
Not :
1) Aslında çalışmalar daha önceden başlansada Yapay Zeka adı bu yılda toplanınan bir kongrede verildi.
2) Kitap İletişim yayınlarından - cep üniversitesi serisinden- çıkmış ve 1991 yılında okumuşum hey gidi günler hey...
3) Numerical Analysis , Türkçede Sayısal Çözümleme diye geçiyor.
Kısaca derin örğenme tarafına doğru güçlü bir rüzgar var. Bütün bunlar yapay zekanın bütün hedeflerine derin öğrenme ile ha ulaştık ha ulaşacağız hissiyatı veriliyor. Doğrudan konu hakkında konuşmadan önce giriş niteliğinde temel bazı konulardan bahsetmek istiyorum.
Bilim ve teknolojinin de bir tarihi var. Bilim ve Teknolojik gelişmelerde yıllara göre ilerlemeler görünür.
Bilim ve teknolojide gelişmeler her zaman aynı hızda gitmez. Aslında coğu zaman ortalama bir hızda gelişmeler olur. Ama bazen bir buluş bir yenilik ile gelişme hızı eski hızına göre yıllar sürecek seviyeye bir kaç ayda ulaşılır. Böyle parlak yenilikler pek çok insanın gözlerini kamaştırır. Olmadık beklentilere girilir. Bir örnek verelim. Günümüz yapay zeka çalışmalarına 1956 yılında 1 başlandı. Gelişmelerin gidişatından, 1960'lı yılllarda "Bilgisayarlar on yıl içinde insanlar kadar akıllı olacaklar " diyenler çıktı. Ne mutluki ! yıllar geçmesine rağmen ortada böyle bir gelişme olmadı. :)
Yukardaki grafikdeki gibi A ve D diye iki metod bulunmuş. A metodu gelişerek A1 ve A2 diye geçerliliğini korumuş. D metodu D1 ve D2 diye gelişmiş ama. İlk etapta gelişme olmamış hatta D1 hali hazırda terk edilmiş. D2 metodundan uzun zaman sonra D21 , D22, D23 metodları geliştirilmiş halen güncelliğini koruyor. Grafik ve isimler farazide olsa Bilmin pek çok alanında ve elbetteki Yapay zeka araştırmalrında benzeri durumlar olmaktadır.
Bütün bunlardan anlamamız gereken şeyler nelerdir.
- Gelişmelerde devrim niteliğinde ilerlemelere vesile olan modelleri takip etmemiz, öğrenip uygulayabilmemiz lazım ki geri kalmış olmayalım.
- Bahsettiğimiz modele mucizevi bir hayranlıkla bağlanıp kalmamalıyızki. Bir başka metod çıkış yaptığında afallayıp kalmayalım. Çünkü yeni bir metdo bulabilmek, hali hazırdakinin eksikliklerini görebilmekle başlar....
Yapay Öğrenmede, motodların performanslarını ölçmek için veri setleri oluşturulmuştur. Yapay öğrenmede hali hazırda pek çok metod vardır. Metodlardaki gelişme bu listelerde daha iyi - kesinlik anlamında - sonuçlarla ispatlanmaktadır. Derin öğrenme metodlarının uygulandığı sonuçlar günümüzde bu listelerin üst sıralarını oluşturmaktadır.
Yapay Öğrenmede pek çok metod var dedik. Peki metodlar arasında nasıl seçim yapabiliriz. Biraz da bu işin temellerine bakalım.
Mühedislikte tek önemli olan şey kesinlik değildir. Şöyle örnekleyelim ; Bir uygulama yazmaya çalıştığımızı düşünün. Bölme işleminde virgülden sonra 1000 basamak hesaplayan bir metodun kesinliği virgülden sonra 3 basamak hesaplayana göre daha iyidir. Lakin pek çok iş için 3 basamaklık bir hassasiyet yeterlidir.
Bir başka konuda uygulamanın alanı ve ortaya çıkan verinin yapısıdır. Her meotod her çeşit veriye uygulanamayabilir. Uygulamanın gerektirdiği kısıtlamalar olabilir. Mesela her metodun ortak bir noktası olan eğitim aşamasının hızı, Uygulamanın anlık eğitime ihtiyaç duyması ile bazı metodların eğitim aşamasının çok uzun olması sebebiyle kullanışsız olabilir.
- Yabancı dildeki şöyle tabirler var. "No Silver Bullet" ve "No free lunch" . İşin özü "armut piş ağzıma düş" durumu hiç bir yerde olmadığı gibi Yapay öğrenmede de yoktur. "Falan diye bir metod çıkmış her şey bunu kullanmak lazımdır " anlayışı yanlışdır.
Genel olarak şunu söylemek isterim. Bir uygulamada sayılsal 3 ve algoritmik bir çözüm varsa hesaplama süresi çok uzun değilse onu kullanın. Bu mümkün değilse Uygulamanızın şartlarına göre olan bir araştırma yapın seçiminiz ona göre yapın.
Yazıda epey uzamış sizleri daha fazla sıkmak istemiyorum. Bu kadar temel girizgah Derin öğrenme konusuna daha akılcı bakmanızı sağlayacağını umarak. Derin öğrenme konusundaki aşağıdaki videoya bakmanızı önereceğim. Bu video Ankarada Derin Öğrenme Etkinliği ndeki Ferhat Kurt tarafından yapılan konuşmadır.
Daha yeni başladık :) devam edecek...
Not :
1) Aslında çalışmalar daha önceden başlansada Yapay Zeka adı bu yılda toplanınan bir kongrede verildi.
2) Kitap İletişim yayınlarından - cep üniversitesi serisinden- çıkmış ve 1991 yılında okumuşum hey gidi günler hey...
3) Numerical Analysis , Türkçede Sayısal Çözümleme diye geçiyor.
Pazartesi, Ekim 19, 2015
DLL Cehennemi
DLL ingilizce "Dynamic Link Library" teriminin baş harlerinden oluşur. Windows işletim sisteminde. Dinamik kullanılan kütüphane dosyaları için oluşturulmuş bir dosya formatıdır. Bu tip kütüphaneler çalışma zamanında hafızaya yüklenip gereken kısımlar çağrılarak çalıştırılır.
Bilgisayar dünyasında pek çok dil var. Her biri için birden fazla değişik derleyicilere sahip. Her ne kadar belli kuralları da olsa bu çeşitlilik pek çok zaman probleme sebep olmaktadır. Hatta tecrübeyle sabittir ki aynı dilde aynı derleyicinin değişik versiyonları arasında bile problemler görülebilmektedir.
Yazımızın başlığı DLL Cehennemi terminolojiye de girmiştir. DLL Hell . Bu yüzden programlamada genellikle kullanacağım dinamik kütüphaneleri derlemeye çalışırım. Yada aynı derleryici versiyonunda derlenmiş olanları bulmaya gayret ederim. Çünkü ne zaman, nerde probleme sebep olacağı belli olmaz. Sonra bir bakmışsınız boşyere çabalayıp durmuşsunuz.
Neyse geçenlerde Volkan kardeş picproje formundaki bir "Çizgi izleyen sanal robot " yarışmasından bahsetti. Uğraşmak istediğinden bahsetti , benden de bir bakmamı rica etti. Anladığım kadarıyla Çizgi izleyen robotun, gömülü yazılımcılar camiasında fiyakalı bir yeri var. Şimdi bahsedeceğimiz yarışmada basit bir simulatörle robot yapmadan bu işe girişe biliyorsunuz.
Yanlız küçük ! bir ayrıntı varmış. simulatörde algoritmanızı çalıştırmak için bir dll yazmanız gerekiyor. Bir başka küçük ayrıntıda simulatör Delphi ile yazılmış olması. Bizim de bunu kendi kullandığımız dilde yani C de yazmamız lazım.
Neyse biraz ricadan biraz da merak saikiyle DLL cehennemine daldık.
İlk aklıma gelen Delphi üzerinde çalışması gerektiğinden Borland C ile olacağına kanaat getirdim. Önce internette BorladC nin ücretsiz versiyonunu aradım. IDE olarak tabii ki emektar CodeBlock ile.
Neyse BorlandC ile yaptığım ilk denemelerden oluşan DLL ler doğrudan çakılıp kaldı. Neden olduğuna dair hiç bir fikrimde yok. Hata mesajı olmayınca nereye bakacağınızıda bilemiyorsunuz. Alınan hatanın önemli bir ip ucu olduğunu unutmayın.
İkinci denememizi mingw32 ile yaptık. Denememiz sonrasında "Algo? Yordamina ulasilamiyor" hata mesajına muhatap olduk. İlginçdir bahsi geçen fonksiyon vardı orda.
Windows için çok faydalı bir uygulama var. "Dependency Walker" bu programla exe dosyaların ihtiyaç duyduğu DLL leri listelerken. DLL içindeki yordamların adlarınıda görebiliyorsunuz.
ordan bakınca bizim "Algo1" yordamı "Algo1@24" olmuş olduğunu gördüm.
sebebini araştırdım. "Decorated Names" diye bir kavrama ulaştık. Değişik derleyiciler değişik şekilde yordamların ismini değiştiriyor. Bu problemden kurtulmak içinde Tanımlama dosyası - def- oluşturup.
linker için de def komutuyla def file bildirilir.
Bütün bu işlemleri bir çırpıda anlattığıma bakmayın epey bir araştırma gerekti. Ve en nihayetinde Artık simulatörden çağrılabilen DLL dosayasını oluşturabildik.
LineFollowerRobot from bluekid on Vimeo.
Basit de bir algoritma yazdık yukardada videosunu koyduk.
İlgilenirseniz koduda burdan indirebilirsiniz.
Bilgisayar dünyasında pek çok dil var. Her biri için birden fazla değişik derleyicilere sahip. Her ne kadar belli kuralları da olsa bu çeşitlilik pek çok zaman probleme sebep olmaktadır. Hatta tecrübeyle sabittir ki aynı dilde aynı derleyicinin değişik versiyonları arasında bile problemler görülebilmektedir.
Yazımızın başlığı DLL Cehennemi terminolojiye de girmiştir. DLL Hell . Bu yüzden programlamada genellikle kullanacağım dinamik kütüphaneleri derlemeye çalışırım. Yada aynı derleryici versiyonunda derlenmiş olanları bulmaya gayret ederim. Çünkü ne zaman, nerde probleme sebep olacağı belli olmaz. Sonra bir bakmışsınız boşyere çabalayıp durmuşsunuz.
Neyse geçenlerde Volkan kardeş picproje formundaki bir "Çizgi izleyen sanal robot " yarışmasından bahsetti. Uğraşmak istediğinden bahsetti , benden de bir bakmamı rica etti. Anladığım kadarıyla Çizgi izleyen robotun, gömülü yazılımcılar camiasında fiyakalı bir yeri var. Şimdi bahsedeceğimiz yarışmada basit bir simulatörle robot yapmadan bu işe girişe biliyorsunuz.
Yanlız küçük ! bir ayrıntı varmış. simulatörde algoritmanızı çalıştırmak için bir dll yazmanız gerekiyor. Bir başka küçük ayrıntıda simulatör Delphi ile yazılmış olması. Bizim de bunu kendi kullandığımız dilde yani C de yazmamız lazım.
Neyse biraz ricadan biraz da merak saikiyle DLL cehennemine daldık.
İlk aklıma gelen Delphi üzerinde çalışması gerektiğinden Borland C ile olacağına kanaat getirdim. Önce internette BorladC nin ücretsiz versiyonunu aradım. IDE olarak tabii ki emektar CodeBlock ile.
Neyse BorlandC ile yaptığım ilk denemelerden oluşan DLL ler doğrudan çakılıp kaldı. Neden olduğuna dair hiç bir fikrimde yok. Hata mesajı olmayınca nereye bakacağınızıda bilemiyorsunuz. Alınan hatanın önemli bir ip ucu olduğunu unutmayın.
İkinci denememizi mingw32 ile yaptık. Denememiz sonrasında "Algo? Yordamina ulasilamiyor" hata mesajına muhatap olduk. İlginçdir bahsi geçen fonksiyon vardı orda.
Windows için çok faydalı bir uygulama var. "Dependency Walker" bu programla exe dosyaların ihtiyaç duyduğu DLL leri listelerken. DLL içindeki yordamların adlarınıda görebiliyorsunuz.
ordan bakınca bizim "Algo1" yordamı "Algo1@24" olmuş olduğunu gördüm.
sebebini araştırdım. "Decorated Names" diye bir kavrama ulaştık. Değişik derleyiciler değişik şekilde yordamların ismini değiştiriyor. Bu problemden kurtulmak içinde Tanımlama dosyası - def- oluşturup.
linker için de def komutuyla def file bildirilir.
Bütün bu işlemleri bir çırpıda anlattığıma bakmayın epey bir araştırma gerekti. Ve en nihayetinde Artık simulatörden çağrılabilen DLL dosayasını oluşturabildik.
LineFollowerRobot from bluekid on Vimeo.
Basit de bir algoritma yazdık yukardada videosunu koyduk.
İlgilenirseniz koduda burdan indirebilirsiniz.
Salı, Eylül 22, 2015
OpenCv Görüntü İşleme ve Yapay Öğrenme
Yazılım sektörünün ülke için büyük bir fırsat olduğu kanaatindeyim. Çünkü sektörün en büyük gerekliliği yetişmiş insan gücü. İstenen kalifiyede olmasada, yetiştirilebilecek insan potansiyeline fazlasıyla sahip bir ülkeyiz.
Hali hazırda yazılım sektöründe çalışmalar çoğunlukla web, veritabanı ve daha yeni yeni mobil üzerinden yürüyor. Yazılımcılarımızın hemen hepsi bu konularda çalışıyorlar. Dolayısıyla bu konularda bilgi ve tecrübe kazanabiliyorlar. Oysa tıpkı sanayide olduğu gibi kazanç ile yapılan işin gelişmişlik seviyesi ile doğru orantılıdır.
Yazılım sektörünün gelişkinliği şüphesiz ki yapay zeka alanındaki ilerlemelerle ölçülüyor. Akıllı cihazlar, tamamen otomatik yada daha az insan denetimi gerektiren makinalar içeriklerinde yapay zeka algoritmalarıda barındıran yazılımlardır. Türkiye şartlarında çalışma alanınız değişmese bile daha zeki web sayfaları daha akıllı veritabanları, yada mobil uygulamaları sizlerin çalışmalarınızı daha kıymetli yapacağı aşikardır.
Yapay Zeka uygulamalarının en büyük alanlarından biride Bilgisayarlı Görü - Computer Vision - dür. Temelde Görüntü işleme metodları ilaveten Yapay Öğrenme - Machine Learning - algoritmaları içeren bir alandır. Bu alanda ülkemizde akademik olarak pek çok çalşmanın yapıldığı halde malesef ticari çalışmaya pek rastlanamamaktadır.
OpenCv Bilgisayarlı görü alanında dünyada yaygın olarak kullanılan bir kütüphanedir. Bu kitapla OpenCv yi sizlere tanıtmak. Bu vesileyle , Bilgisayarlı Görü alanında çalışmalar yapma ufkunuzu bir nebze olsun açmayı umuyoruz.
Uzun bir zaman sonra nihayet kitap çalışmamızı tamamladık. Kitabımız Level Kitapdan çıkıyor. Bana verilen bilgiye göre önümüzdeki ayın başında dağıtıma başlanacak.
Not : Web sitesi
Pazar, Haziran 28, 2015
Yapay Sinir Ağları ile Deprem Tahmini
Depremler yaşadığımız dünyanın bir gerçeği. Yeryüzü sıvı bir mağma tabakasının üzerinde İnce bir tabaka. Dünyamız bu oynak yapısına ilaveten sabitte durmuyor. Dünya kendi etrafında açısal olarak saatte 15 derece, çizgisel olarak - ekvatorda - saatte 1670 km hızla dönmektedir. Kendi etrafındaki hızının dışında Dünyamız güneşin etrafında da ortalama saatte 107 000 km hızla hareket eder. Hızı güneşe yaklaştıkça artar uzaklaştıkça düşer. Böyle dinamik bir yapı içinde bir yeryüzünde yaşıyoruz. Yeryüzündeki tabaklarda kırılmalar çökmeler kaymalar yani depremler sürekli olmaktadır. Bunların büyüklüğüne görede can ve mal kayıpları yaşanmaktadır.
Depremler dünyaının yapısı gereği dedik. İnsanoğlu bu konuda yıllardır araştırmalar yapıyor yeryüzü tabakalarını inceleyip. Deprem riski olan kısımları bilebiliyor. Keza deperem riskini oluşturan oynak tabakalarıda yani fay hatların belirliyor. Ülkemiz bu açıdan şanslı değil.
Keza yukarda belirttiğimiz koşullar içerisinde deterministik bir model kurup, depremlerin önceden tahminide pek mümkün görünmüyor. ( malum Kelebek etkisi )
Gelişmiş ülkelerde " Deprem öldürmez bina öldürür" tabirine paralel . Bulundukları risk bölgesine uygun sağlamlıkta binalar yapılarak. Deprem anında oluşacak bina hasarı dolayısıyla mal ve can kaybını en aza indirgemeyi başarmış bulunuyorlar.
Ülkemizdeki durum ise pek iç açıcı değil.
Gölcük depremi sonrası ilk heyecanla bir sonraki depreme olan hazırlık anlayışı kaybolup gitti.
Ülkemizin en büyük en kalabalık şehri olan İstanbul ve civarında büyük bir deperem bekleniyor.
Haritalar çıkarılıyor. Neler olabileceği biliniyor.
Ama yapılaşma olabiliğince hoyratsızlığı ve akılsızlığı ile devam ediyor. Neyse konuyu vicdan sahibi idarecilerimize havale edip konumuza dönelim.
Deterministik bir tahmin pek mümkün görünmüyor demiştim. Aynı zamanda "kainatta tesadüfe tesadüf edilmez" kanaatindeyim. Yani bir şekilde deprem öncesi ortaya çıkan fiziksel olaylar etkiler üzerinden deprem tahminin de mümkün olacağını düşünüyorum. 1
Nitekim Ülkemizde de gölcük depremi sonraı ilk heyecanla çalışmalar yapıldı. Mesela
Proje ne durumda bilemiyorum ama, bu çalışmada ilk günkü heyacanıyla gitmiyor görünüyor.
ana sayfasındaki kayaç gerginlik izleme istasyonlarından toplamda 16 tanesinden sadece
6 tanesi aktif olarak görünüyor.
Keza Deprem tahmin ligide açılmış. Hali hazırda aktif olarak görünmüyor.
Böyle bilimsel bir çalışma dışında, tahmin çalışmalarında bulunan şahıs bazlı projeler de var. Basit bir aratmayla onlara ulaşabilirsiniz. Bu çalışmaları küçümsemek istemiyorum. Meşhur bir ata sözümüz vardır. "Bin bilsende Bir bilene danış " Evet bu şahısların bilimsel alt yapıları olmaya bilir. Bin şeyi bilmeye bilirler. Ama bildikleri bir şey gerçek de olabilir. Böyle kişilerin mümkünse bilimsel altyapısı olan kişilerle birlikte işleri yürütüp. Çözümlerinin gerçekden çözüm olup olmadığını öylese daha rasyonel ve kullanışlı hale nasıl getirileceğini çözmeleri lazım. Öteki türlü yaptıklarının bir anlamı kalmıyor.
Benim şahsen tanıştığım bir çalışmayla devam edeyim
İlk olarak - 2013 de - FannTool vesilesiyle tanıştığım birinden bahsetmek istiyorum. Bu arkadaşımız Japonyada yaşayan bir İtalyan. Yapay Sinir Ağları ile Deprem tahmini üzerine çalıştığını söyledi. Tahmin sistemi Gezegen sistemindeki yerçekimi etkileri ile deprem tahmini. Fikir olarak çokda yeni değil. Yine bir itayan olan Raffaele Bendandi bu yönde çalışmaları olmuş. Keza bu yönde şöyle bir çalışma da yapılmış
1) Ayın çekim gücü ile oluşan Gel - Git etkisini hepimiz biliriz. Sular üzerinde gözle görünür olan bu etki aslında her tarafta mevcuttur.
2) Bir yerdeki belli büyüklüğü geçen deprem sayısı ile deprem büyüküğü arasında empirik bir formül vardır. Gutenberg–Richter_law diye adlandırlan bu formüle göre, Büyük deprem beklentisi, bir önceki büyük deprem üzerinden geçen süre ile ilişkili. Keza buna göre İstabulda büyük deprem beklentisi var. İşin içinde kendine benzerlik ve fraktallarda var bakınız
3) Yerçekimi etkisinin ayın ve diğer gezengenlerin konumlarına göre değişmesi ve Deprem beklentisinin yüksek olduğu fay hatlarında tetikleme ihtimali olabilir....
Konuyu dağıtmayayım
Marconun çalışmaları hesaplama bazlı değilde Yapay Sinir Ağı temelli olarak yürüyor. Başlangıçda FannTool ile başladığı çalışmalara şidide kendi yazdığı kendi problemini baz alan kod üzerinde yürütüyor.
Çeşitli vesilelerle yazışmalarımız sürdü, ve sürüyor. Yukarda bahsettiğim gibi, Şahıs bazlı bir çalışma yürüttüğü için aynı şeyleri ona da anlattım. Çalışmanın bilimsel olabilmesi için ilk etapta test edilmesi gereğinden bahsettim. Sonuçda YSA ve benzeri Yapay Zeka metodları ile hemen her şey arasında ilişki kurulabilir. test etmeksizin kurulan ilişkinin bir anlamı olmayacağından bahsettim. 2 Sağolsun tavsiyemize uydu ve sistemini ve çalışmalarını yayınlamaya başladı.
Bu çalışmalara
Bu yaynınlar sonuncunda kendisi ile iletişime geçenler olmuş. Bir NPO -Non Profit Organization - Kar amacı gütmeyen kuruluş oluşturmayı planlıyor.
Türkiye gibi deprem bölgesi ülkemizden de , konudan anlayan, ilgili ve dahi bilgililerden, bu yazdıklarımızı okuyacak birileri olur mu ?
Nihayetinde ilgilenilecek bir konu olduğuna karar verip, iletişime geçmek isteyen çıkar mı ? bilemiyorum.
Ben burdan bu vesileyle duyurup üzerimden sorumluğuluğu atmak isterim...
"Bilmeyenler bilenlere anlatsın" ....
Not :
Dip Not : Kitap çalışması başka çalışmalar dereken epeydir yazmıyordum, başka özleyen varmı bilmem ama ben özlemişim.
Depremler dünyaının yapısı gereği dedik. İnsanoğlu bu konuda yıllardır araştırmalar yapıyor yeryüzü tabakalarını inceleyip. Deprem riski olan kısımları bilebiliyor. Keza deperem riskini oluşturan oynak tabakalarıda yani fay hatların belirliyor. Ülkemiz bu açıdan şanslı değil.
Keza yukarda belirttiğimiz koşullar içerisinde deterministik bir model kurup, depremlerin önceden tahminide pek mümkün görünmüyor. ( malum Kelebek etkisi )
Gelişmiş ülkelerde " Deprem öldürmez bina öldürür" tabirine paralel . Bulundukları risk bölgesine uygun sağlamlıkta binalar yapılarak. Deprem anında oluşacak bina hasarı dolayısıyla mal ve can kaybını en aza indirgemeyi başarmış bulunuyorlar.
Ülkemizdeki durum ise pek iç açıcı değil.
Gölcük depremi sonrası ilk heyecanla bir sonraki depreme olan hazırlık anlayışı kaybolup gitti.
Ülkemizin en büyük en kalabalık şehri olan İstanbul ve civarında büyük bir deperem bekleniyor.
Haritalar çıkarılıyor. Neler olabileceği biliniyor.
Ama yapılaşma olabiliğince hoyratsızlığı ve akılsızlığı ile devam ediyor. Neyse konuyu vicdan sahibi idarecilerimize havale edip konumuza dönelim.
Deterministik bir tahmin pek mümkün görünmüyor demiştim. Aynı zamanda "kainatta tesadüfe tesadüf edilmez" kanaatindeyim. Yani bir şekilde deprem öncesi ortaya çıkan fiziksel olaylar etkiler üzerinden deprem tahminin de mümkün olacağını düşünüyorum. 1
Nitekim Ülkemizde de gölcük depremi sonraı ilk heyecanla çalışmalar yapıldı. Mesela
Kayaç Gerginlik İzleme Yöntemi ile Deprem Tahmini Projesi
Proje ne durumda bilemiyorum ama, bu çalışmada ilk günkü heyacanıyla gitmiyor görünüyor.
ana sayfasındaki kayaç gerginlik izleme istasyonlarından toplamda 16 tanesinden sadece
6 tanesi aktif olarak görünüyor.
Keza Deprem tahmin ligide açılmış. Hali hazırda aktif olarak görünmüyor.
Böyle bilimsel bir çalışma dışında, tahmin çalışmalarında bulunan şahıs bazlı projeler de var. Basit bir aratmayla onlara ulaşabilirsiniz. Bu çalışmaları küçümsemek istemiyorum. Meşhur bir ata sözümüz vardır. "Bin bilsende Bir bilene danış " Evet bu şahısların bilimsel alt yapıları olmaya bilir. Bin şeyi bilmeye bilirler. Ama bildikleri bir şey gerçek de olabilir. Böyle kişilerin mümkünse bilimsel altyapısı olan kişilerle birlikte işleri yürütüp. Çözümlerinin gerçekden çözüm olup olmadığını öylese daha rasyonel ve kullanışlı hale nasıl getirileceğini çözmeleri lazım. Öteki türlü yaptıklarının bir anlamı kalmıyor.
Benim şahsen tanıştığım bir çalışmayla devam edeyim
İlk olarak - 2013 de - FannTool vesilesiyle tanıştığım birinden bahsetmek istiyorum. Bu arkadaşımız Japonyada yaşayan bir İtalyan. Yapay Sinir Ağları ile Deprem tahmini üzerine çalıştığını söyledi. Tahmin sistemi Gezegen sistemindeki yerçekimi etkileri ile deprem tahmini. Fikir olarak çokda yeni değil. Yine bir itayan olan Raffaele Bendandi bu yönde çalışmaları olmuş. Keza bu yönde şöyle bir çalışma da yapılmış
The definitive analysis of the Bendandi's methodologyperformed with a specific softwareYerçekimi etkisinin deprem tetikleme mümkünatı için de bir iki laf edeyim
1) Ayın çekim gücü ile oluşan Gel - Git etkisini hepimiz biliriz. Sular üzerinde gözle görünür olan bu etki aslında her tarafta mevcuttur.
2) Bir yerdeki belli büyüklüğü geçen deprem sayısı ile deprem büyüküğü arasında empirik bir formül vardır. Gutenberg–Richter_law diye adlandırlan bu formüle göre, Büyük deprem beklentisi, bir önceki büyük deprem üzerinden geçen süre ile ilişkili. Keza buna göre İstabulda büyük deprem beklentisi var. İşin içinde kendine benzerlik ve fraktallarda var bakınız
3) Yerçekimi etkisinin ayın ve diğer gezengenlerin konumlarına göre değişmesi ve Deprem beklentisinin yüksek olduğu fay hatlarında tetikleme ihtimali olabilir....
Konuyu dağıtmayayım
Marconun çalışmaları hesaplama bazlı değilde Yapay Sinir Ağı temelli olarak yürüyor. Başlangıçda FannTool ile başladığı çalışmalara şidide kendi yazdığı kendi problemini baz alan kod üzerinde yürütüyor.
Çeşitli vesilelerle yazışmalarımız sürdü, ve sürüyor. Yukarda bahsettiğim gibi, Şahıs bazlı bir çalışma yürüttüğü için aynı şeyleri ona da anlattım. Çalışmanın bilimsel olabilmesi için ilk etapta test edilmesi gereğinden bahsettim. Sonuçda YSA ve benzeri Yapay Zeka metodları ile hemen her şey arasında ilişki kurulabilir. test etmeksizin kurulan ilişkinin bir anlamı olmayacağından bahsettim. 2 Sağolsun tavsiyemize uydu ve sistemini ve çalışmalarını yayınlamaya başladı.
Bu çalışmalara
Marco Franzini worksburdan ulaşabilirsiniz.
Bu yaynınlar sonuncunda kendisi ile iletişime geçenler olmuş. Bir NPO -Non Profit Organization - Kar amacı gütmeyen kuruluş oluşturmayı planlıyor.
Türkiye gibi deprem bölgesi ülkemizden de , konudan anlayan, ilgili ve dahi bilgililerden, bu yazdıklarımızı okuyacak birileri olur mu ?
Nihayetinde ilgilenilecek bir konu olduğuna karar verip, iletişime geçmek isteyen çıkar mı ? bilemiyorum.
Ben burdan bu vesileyle duyurup üzerimden sorumluğuluğu atmak isterim...
"Bilmeyenler bilenlere anlatsın" ....
Not :
- Mesela ; Deprem öncesi çeşitli hayvanlarda görünün huzursuluk ve davranış değişiklikleri. Bilgisayarlı görü uygulamaları ile gözlemlenip, Uyarı sistemi kurulabilir. Niçin olmasın...
- Her şey ezberlenebilir ama öğrenilebilir değildir. Bakınız YSA Büyü Değildir yazısı
Dip Not : Kitap çalışması başka çalışmalar dereken epeydir yazmıyordum, başka özleyen varmı bilmem ama ben özlemişim.
Perşembe, Mayıs 14, 2015
MNIST El Yazısı Rakam Veri seti 2
Bu konuda yazdığım bir önceki yazım da oluşturduğum kodlar için bir GUI hazırladım.
Program da GUI kütüphanesi olarak Qt kullanıldı.
OpenCv nin ML kısmında KNN metoduyla sistemi eğittim. K = 5 kullanıldı.
Programla ufak bir video hazırladım.
Digit Recogtion for the MNIST database of handwritten digits from bluekid on Vimeo.
Program da GUI kütüphanesi olarak Qt kullanıldı.
OpenCv nin ML kısmında KNN metoduyla sistemi eğittim. K = 5 kullanıldı.
Programla ufak bir video hazırladım.
Digit Recogtion for the MNIST database of handwritten digits from bluekid on Vimeo.
Pazar, Mayıs 03, 2015
Yapay Zeka ve Görüntü işleme günleri 1
Yapay Zeka ve Görüntü işleme günlerinden izlenimlerimi aktaracağım.
Öncelikle Organizasyonu gerçekleşterene teşekkürler. Benimde ilgi alanım olan konularda böyle kıymetli konuşmacıları başka bir şekilde dinleme şansı bulmazdım.
Organizasyonun olduğu salonda gayet güzel. Sabah geldiğimde umduğumun çok ötesinde bir katılımcı görmekde beni fazlasıyla memnun etti. Keza tanıdık bir sima - kemalcan - görmekde iyi oluyor. Aslında gelmek isteyen pek çok kişi vardı, ben daha çok tandık sima bulurum diye umuyordum ama malesef olmadı :( kısmet...
Gelelim konuşmacılarımııza
Metin Sezgin hoca, yeni kullanıcı arayüzüz geliştirme çalışması içinde. İnsan davranış kalıplarının keşfi ile daha zeki Bilgisayar Kullanıcı Arabirimi geliştirmeyle uğraşıyorlar. Hatta patent başvurularıda varmış. Anlatımlarıda interaktif di. Pek çok açıdan zihin açıcı ve yenilik dolu bir konuşma olsada benim şahsi fikrim Beyin bilgisayar arayüzleri daha ümit vadediyor....
Nazlı İKİZLER CİNBİŞ hoca konuşmasında değişik şekilde kaydedilimiş görüntü ve videolardan "İnsan Hareketlerinin Tanınması" konusundaki çalışmalardan bahsetti. Konu çok genişdi ve teknik ip uçları dışında pek bir şey anlayamadık. Başlıca anlaşılan şey pek çok veri seti üzerini uzun uzun çalışmalar yapılmış olması...
Fatoş Yarman Vural hoca "Bilgisayar Ne Kadar Görür?" konulu konuşmasıyla bizi hayran etti. Bir konu bu kadar mı sade ve anlaşılır anlatılır ? Kendi yaptığı çalışmalardan da bahsetti. Bunlardan biride "Osmanlı arşivlerinin transkripti" imiş . Yarım kaldığını söyleyi talebe arkadaşlara devam etmelerini tavsiye etti. Sözlerinide "Yapılacak daha çok şey var çok çalışmak gerek çook" diye bitirdi Sonunda soru olarak Yapay zekanın tehlikeli olup olmadığı soruldu. Ve klasik cevabı aldık ; "Teknoloji iyiyede kötüyede kullanılabilir." Haddim olmayarak benim ufak bir itirazım var. bu klasik açıklama Bir bıçakla ekmekde kesebilirsin bir insanıda yaralayabilirsin. birini yarayabilirsin diye bıçak yapılmasınmı. şeklinde vuzuha kavuşturuluyor. Benim itirazım şu biz neyi keseceğene kendisi karar verecek bıçak icat etmeye çalışıyorsak evet bu iş tehlikelidir. değilse klasik açıklama geçerlidir.
Umut Çinar beyin sunumu başında konu dışındaydı. Sadede geldiği zaman güzel oldu. Keşke baştaki kısımlara hiç girmeyip asıl konusunu daha geniş anlatsaydı. Çünkü gerçek anlamda pratik tecrübe sahibi hem teknik hemde girişimcilik ve onun hayata geçirilmesi anlamında....
Selim Temizer hoca da çok sade anlaşılır ve de eğlenceli şekilde bir Yapay Zeka girişdersi verdi. Yapay Öğrenme kısmını biraz daha açsaydı daha iyi olurdu sanki.
Uğur Yayan beyde daha çok robotik üzerine bir şeyler anlattı.Aslında sektörden gelen konuşmacalardan ben kendi adıma daha pratik şeyler ve tecrübe aktarımı bekliyorum....
Son konuşmacı gelemedi yarına erteleneceği duyruldu. Bakalım Yarın neler olacak heycanla bekliyoruz.
Öncelikle Organizasyonu gerçekleşterene teşekkürler. Benimde ilgi alanım olan konularda böyle kıymetli konuşmacıları başka bir şekilde dinleme şansı bulmazdım.
Organizasyonun olduğu salonda gayet güzel. Sabah geldiğimde umduğumun çok ötesinde bir katılımcı görmekde beni fazlasıyla memnun etti. Keza tanıdık bir sima - kemalcan - görmekde iyi oluyor. Aslında gelmek isteyen pek çok kişi vardı, ben daha çok tandık sima bulurum diye umuyordum ama malesef olmadı :( kısmet...
Gelelim konuşmacılarımııza
Metin Sezgin hoca, yeni kullanıcı arayüzüz geliştirme çalışması içinde. İnsan davranış kalıplarının keşfi ile daha zeki Bilgisayar Kullanıcı Arabirimi geliştirmeyle uğraşıyorlar. Hatta patent başvurularıda varmış. Anlatımlarıda interaktif di. Pek çok açıdan zihin açıcı ve yenilik dolu bir konuşma olsada benim şahsi fikrim Beyin bilgisayar arayüzleri daha ümit vadediyor....
Nazlı İKİZLER CİNBİŞ hoca konuşmasında değişik şekilde kaydedilimiş görüntü ve videolardan "İnsan Hareketlerinin Tanınması" konusundaki çalışmalardan bahsetti. Konu çok genişdi ve teknik ip uçları dışında pek bir şey anlayamadık. Başlıca anlaşılan şey pek çok veri seti üzerini uzun uzun çalışmalar yapılmış olması...
Fatoş Yarman Vural hoca "Bilgisayar Ne Kadar Görür?" konulu konuşmasıyla bizi hayran etti. Bir konu bu kadar mı sade ve anlaşılır anlatılır ? Kendi yaptığı çalışmalardan da bahsetti. Bunlardan biride "Osmanlı arşivlerinin transkripti" imiş . Yarım kaldığını söyleyi talebe arkadaşlara devam etmelerini tavsiye etti. Sözlerinide "Yapılacak daha çok şey var çok çalışmak gerek çook" diye bitirdi Sonunda soru olarak Yapay zekanın tehlikeli olup olmadığı soruldu. Ve klasik cevabı aldık ; "Teknoloji iyiyede kötüyede kullanılabilir." Haddim olmayarak benim ufak bir itirazım var. bu klasik açıklama Bir bıçakla ekmekde kesebilirsin bir insanıda yaralayabilirsin. birini yarayabilirsin diye bıçak yapılmasınmı. şeklinde vuzuha kavuşturuluyor. Benim itirazım şu biz neyi keseceğene kendisi karar verecek bıçak icat etmeye çalışıyorsak evet bu iş tehlikelidir. değilse klasik açıklama geçerlidir.
Umut Çinar beyin sunumu başında konu dışındaydı. Sadede geldiği zaman güzel oldu. Keşke baştaki kısımlara hiç girmeyip asıl konusunu daha geniş anlatsaydı. Çünkü gerçek anlamda pratik tecrübe sahibi hem teknik hemde girişimcilik ve onun hayata geçirilmesi anlamında....
Selim Temizer hoca da çok sade anlaşılır ve de eğlenceli şekilde bir Yapay Zeka girişdersi verdi. Yapay Öğrenme kısmını biraz daha açsaydı daha iyi olurdu sanki.
Uğur Yayan beyde daha çok robotik üzerine bir şeyler anlattı.Aslında sektörden gelen konuşmacalardan ben kendi adıma daha pratik şeyler ve tecrübe aktarımı bekliyorum....
Son konuşmacı gelemedi yarına erteleneceği duyruldu. Bakalım Yarın neler olacak heycanla bekliyoruz.
Cumartesi, Nisan 25, 2015
YAZGİG'15 Yapay Zeka ve Görüntü İşleme Günleri
YAZGİG'15 : Yapay Zeka ve Görüntü İşleme Günleri
yapayzekavegoruntuislemegunleri.com
Ankara Üniversitesindeki aynı isimli bir öğrenci topluluğunun ön ayak olduğu bir etkinlik.
Önümüzdeki hafta sonu gerçekleştirilecek yani ; 2-3 Mayıs 2015
Nedense programı halen belli olmamakla birlikte katılacak Konuşmacılar şöyle bildirilmiş.
Etkinlikte görüşmek üzre....
Not : Ben yazı yazdıktan sonra etkinlik programı belli oldu
http://yapayzekavegoruntuislemegunleri.com/etkinlik-programi/
yapayzekavegoruntuislemegunleri.com
Ankara Üniversitesindeki aynı isimli bir öğrenci topluluğunun ön ayak olduğu bir etkinlik.
Önümüzdeki hafta sonu gerçekleştirilecek yani ; 2-3 Mayıs 2015
Nedense programı halen belli olmamakla birlikte katılacak Konuşmacılar şöyle bildirilmiş.
Prof. Dr. Fatoş VuralMemleketimizde malesef böyle konularda bir şeyler dinleyebileceğiniz fazla imkan bulunmamaktadır. Bu yüzden çok önemli bir işiniz yoksa bu etkinliği kaçırmamanızı tavsiye ediyorum. Bizde İnşallah dinlemeye gideceğiz.
Dr. Zafer Arıcan
Yrd. Doç. Dr. Selim Temizer
Ümit Alkuş
Yrd. Doç. Dr. Sanem Sarıel
Yrd. Doç. Dr. Ahmet Yazıcı
Doç. Dr. Uluç Saranlı
Yrd. Doç. Dr. Sevgi Zübeyde
Prof. Dr. Abdülkadir Erden
Yrd. Doç. Dr. Nazlı İkizler Cinbiş
Doç. Dr. Metin Sezgin
Etkinlikte görüşmek üzre....
Not : Ben yazı yazdıktan sonra etkinlik programı belli oldu
http://yapayzekavegoruntuislemegunleri.com/etkinlik-programi/
Pazar, Nisan 19, 2015
Çoğu zaman göremesekde

Çoğu zaman bilemesekde önümüze düşen gölge bizim gölgemizdir. Güneşe sırtımızı dönmüşüzdür.
Çoğu zaman göremesekde her zaman bir çıkış vardır. Başka bir açıdan bakamadığımızdan göremiyoruzdur.
Çoğu zaman anlayamasakda gönlümüzdeki sıkıntıyı "Müsebbibü’l-Esbab"* dan başka giderip "itminanı kalbi"** , "inşirahı sadrı"*** verebilecek yoktur...
Rabbimiz dünyadada ahirettede bizlere iyilik ve güzellikler ver. Gönlümüze ferahlık ver. Çıkışları görecek feraset ver.
amin
Not :
Çizgi Hasan Aycın
* : 1. Lema
** : Ra'd 28
*** : İnşirah
Pazar, Nisan 12, 2015
MNIST El Yazısı Rakam Veri seti
Kitap taslağını bitirdikten ve düzenlemesi için arkdaşa teslim ettikten sonra geçtiğimiz ve bu hafta sonu kendime meşgale aradım.
Kitap için yazdığım son konu ML yapay öğrenme kısmıydı. Bu örneği biraz geliştirip bu camiada epey bir bilinen MNIST verisetine uygulamaya karar verdim.
MNIST El yazısı rakamlar toplanmış ve etiketlenmiş bir veri setidir. Her rakam görüntüsü 28x28 lik ebata getirilmiştir.
Yani verimiz 28x28= 784 piksel değeri ve birde etiket değeri
Veri setinin orjinal sitesi
http://yann.lecun.com/exdb/mnist/
Fakat Biz Kaggle da açılmış yarışma kısmına katıldık
Eğtim verisi için İlk satırda sütun başlıkları var ilk sutun etiket değeri sonraki 784 sutunda sırasıyla piksel değerlerini tutuyor.
Test verisinin tek farkı ilk sutun olan etiketlerin olmaması...
İlk etapta piksel değerlerinde bir ön işleme veya ekstra öznitelik çıkarım işlemleri yapmadan doğrudan kullanarak Yapay Öğrenme metodlarımızın performansını görelim dedik.
Eğitim verisinin yarısını eğitim ve geri kalanını test için kullandık. Sonuçlar %83 - %95 arasında değişti. En iyi sonucu KNN K = 5 ile ve bütün eğitim setini kullanarak elde ettim.
Birde boyumuzun ölçüsünü alalım dedik. Eğittimiz modellerle Yarışmanın test verileri - test.csv- için tahmin listesi oluşturup gönderdik. Burda sonuçlar daha aşağı değerlere düşüyor. Bizim şu andaki en iyi derecemiz.
Aldığımız boy ölçüsü oldukça kısa oldu. Sebeplerine gelirsek
1) Veriler üzerinde ekstra bir ön işleme ve öznitelik yapmamış olmamız. Verilerimizde piksel değerleri var ama Rakamın yazıldığı pikseller devamlı değişmektedir. Çünkü rakamın yazılış konumu büyüklüğü dönüklüğü keza tarzı değişiyor. Haliyle bunuları dikkate almadan bu verileri ham haliyle vermek sistemin performansınıaşağı çekiyor.
2) Her modelin eğitiminde performansı etkileyecek parametre ayarları vardır. Aynı metodu bile kullansanız bazı parametrelerdeki ince ayarlar sistemin performansını artırabilir. Biz ise bu tür ayarlarada kalkışmadık henüz.
3) DeepLearning etkisi: Yakın zamanların gözde kavramı dünyanın saygın üniversiteleri. En büyük şirketleri bu konuda araştırma gurupları kurdular. Hali hazırda pek çok kütüphanede oluşturuldu. Bu kütüphaneleri kullananlar. Listelerde üst sıralara oturuyorlar. Bu da sıralamda bizi daha aşağıda tutuyor.
Sıralama listesinde ilk 48 kişi %99 başarıya ulaşıyor. şimdi burda ufak bir itirazım var. Yukardaki resimler veritabanından seçilmiştir. Şahsi fikrim böyle bir başarı saçmadır....
Detaylı bilgiyi bu konu hakkında inşallah - vakit ayırabilirsem - yazacağım yazıya bırakalım.
Kitap için yazdığım son konu ML yapay öğrenme kısmıydı. Bu örneği biraz geliştirip bu camiada epey bir bilinen MNIST verisetine uygulamaya karar verdim.
MNIST El yazısı rakamlar toplanmış ve etiketlenmiş bir veri setidir. Her rakam görüntüsü 28x28 lik ebata getirilmiştir.
Yani verimiz 28x28= 784 piksel değeri ve birde etiket değeri
Veri setinin orjinal sitesi
http://yann.lecun.com/exdb/mnist/
Fakat Biz Kaggle da açılmış yarışma kısmına katıldık
www.kaggle.com/c/digit-recognizerBu sayfada veriler 2 tane csv dosyası olarak veriliyor.
Eğtim verisi için İlk satırda sütun başlıkları var ilk sutun etiket değeri sonraki 784 sutunda sırasıyla piksel değerlerini tutuyor.
Test verisinin tek farkı ilk sutun olan etiketlerin olmaması...
İlk etapta piksel değerlerinde bir ön işleme veya ekstra öznitelik çıkarım işlemleri yapmadan doğrudan kullanarak Yapay Öğrenme metodlarımızın performansını görelim dedik.
Eğitim verisinin yarısını eğitim ve geri kalanını test için kullandık. Sonuçlar %83 - %95 arasında değişti. En iyi sonucu KNN K = 5 ile ve bütün eğitim setini kullanarak elde ettim.
Birde boyumuzun ölçüsünü alalım dedik. Eğittimiz modellerle Yarışmanın test verileri - test.csv- için tahmin listesi oluşturup gönderdik. Burda sonuçlar daha aşağı değerlere düşüyor. Bizim şu andaki en iyi derecemiz.
0.92343Başarı Sıra Listesi için bakınız
www.kaggle.com/c/digit-recognizer/leaderboardSıralamadaki yerimiz değişiyor. Daha iyi dereceye sahip tahminler geldikçe sırlamada aşağılara düşüyorsunuz.
Aldığımız boy ölçüsü oldukça kısa oldu. Sebeplerine gelirsek
1) Veriler üzerinde ekstra bir ön işleme ve öznitelik yapmamış olmamız. Verilerimizde piksel değerleri var ama Rakamın yazıldığı pikseller devamlı değişmektedir. Çünkü rakamın yazılış konumu büyüklüğü dönüklüğü keza tarzı değişiyor. Haliyle bunuları dikkate almadan bu verileri ham haliyle vermek sistemin performansınıaşağı çekiyor.
2) Her modelin eğitiminde performansı etkileyecek parametre ayarları vardır. Aynı metodu bile kullansanız bazı parametrelerdeki ince ayarlar sistemin performansını artırabilir. Biz ise bu tür ayarlarada kalkışmadık henüz.
3) DeepLearning etkisi: Yakın zamanların gözde kavramı dünyanın saygın üniversiteleri. En büyük şirketleri bu konuda araştırma gurupları kurdular. Hali hazırda pek çok kütüphanede oluşturuldu. Bu kütüphaneleri kullananlar. Listelerde üst sıralara oturuyorlar. Bu da sıralamda bizi daha aşağıda tutuyor.
Sıralama listesinde ilk 48 kişi %99 başarıya ulaşıyor. şimdi burda ufak bir itirazım var. Yukardaki resimler veritabanından seçilmiştir. Şahsi fikrim böyle bir başarı saçmadır....
Detaylı bilgiyi bu konu hakkında inşallah - vakit ayırabilirsem - yazacağım yazıya bırakalım.
Kaydol:
Kayıtlar (Atom)











































